Skip to main content

Implementation in microPython of SCHC as specified in RFC 8724

Project description

microSCHC

In a nutshell

Implementation in microPython of SCHC as specified in RFC 8724 [1].

License

MIT License, Copyright (c) 2022 Orange, by Quentin Lampin

Installing microSCHC

Releases of microSCHC are available on PyPI. To install microSCHC, run

pip install microschc

Latest (pre-release) microSCHC versions can be built from source using hatch and installed using the wheel (.whl) file generated in the dist/ folder.

build:

hatch build -t wheel

installation:

pip install dist/microschc-<version>-py3-none-any.whl

microSCHC, developpement plan

microSCHC aims at implementing the SCHC Compression/Decompression (C/D) and Fragmentation/Reassembly (F/R) routines described in RFC 8724 [1].

The initial focus of this effort is on the Compression/Decompression (C/D) routines and parsers for typical IoT protocol stacks, i.e. based on IPv6 [2], UDP [3], CoAP [4], lwM2M.

Current features:

  1. Parsers

    • IPv4
    • IPv6
    • UDP
    • CoAP (partial test coverage: options missing)
    • CoAP over UDP over IPv6 stack parser
    • lwM2M ( when not using CoAP options, i.e. CoAP payloads) --> postponed to after full SCHC C/D implementation
  2. Matching Operators (MO)

    • equal
    • ignore
    • MSB(x)
    • match-mapping
  3. Compression/Decompression Actions (CDA)

    1. Compression

      • not-sent
      • value-sent
      • mapping-sent
      • LSB
      • compute-* (e.g. UDP-checksum)
      • devIID
      • AppIID
    2. Decompression counteparts

      • not-sent
      • value-sent
      • mapping-sent
      • LSB
      • [-] compute-* (e.g. UDP-checksum)
        • UDP Checksum
        • UDP Length
        • IPv6 Payload Length
        • IPv4 Payload Length
      • devIID
      • AppIID
  4. Rules

    • rule data model
    • rule matching algorithm
    • YANG model interpreter
  5. Compression

    • field (left-)packet
    • field residues concatenation
    • length of variable length field encoding
    • packet compression
  6. Context Management

    • Definition & implementation of custom SCHC Context (not specified in RFCs)
  • [1] "RFC 8724 SCHC: Generic Framework for Static Context Header Compression and Fragmentation" , A. Minaburo et al.
  • [2] "RFC 8200 Internet Protocol, Version 6 (IPv6) Specification, S. Deering et al."
  • [3] "RFC 768 User Datagram Protocol, J. Postel"
  • [4] "RFC 7252 The Constrained Application Protocol (CoAP), Z. Shelby et al."

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

microschc-0.16.0-py3-none-any.whl (32.5 kB view details)

Uploaded Python 3

File details

Details for the file microschc-0.16.0-py3-none-any.whl.

File metadata

  • Download URL: microschc-0.16.0-py3-none-any.whl
  • Upload date:
  • Size: 32.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for microschc-0.16.0-py3-none-any.whl
Algorithm Hash digest
SHA256 83b703b6185908d1f3650cc9905119f7d48b89287d1d1b145cbecd5b08095227
MD5 a9631ab81486fb08f596d4f368702669
BLAKE2b-256 75f4b2d154f06ac6b7e99857ce99a362feaade32090fdb15b68e5e9163c42b30

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page