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 counterparts

      • 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.3-py3-none-any.whl (32.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: microschc-0.16.3-py3-none-any.whl
  • Upload date:
  • Size: 32.7 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 2cfcc6bec7f0e28de17ec54a330f9279782554cef116664140face3a0b1dcaf8
MD5 7c6d13fc09865691b92d87fd55dedbd7
BLAKE2b-256 a3b448857945e6bfa902470bf7e32e983b8780fa4bb753f8be2360c0f72bd457

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