libschc は、IETF によって草案された、静的コンテキスト ヘッダー圧縮の C 実装です。これは、小型の低電力マイクロコントローラーがエンドツーエンドの IPv6 接続を行えるようにするために、低電力ワイド エリア ネットワークで使用されるヘッダー圧縮技術です。このリポジトリには、圧縮メカニズムと断片化メカニズムの両方が含まれています。 SCHC に関する詳細については、https://datatracker.ietf.org/doc/draft-ietf-lpwan-ipv6-static-context-hc/ を参照してください。
実装と構成の詳細については、ドキュメントと評価文書を参照してください。
libschc は、部分的に VLAIO、FWO、imec のサポートを受けて開発されました。これは、欧州連合の Horizon 2020 PortForward プロジェクト用に開発された IoT ミドルウェア スタックの一部でもあり、オープン スタンダード ベースのセンサーとクラウドの接続を提供するために、特に LwM2M がこのライブラリと統合されました。
この実装は進行中の作業であるため、いくつかの制限事項に留意する必要があります。
このライブラリは、制約のあるデバイスだけでなく、より強力なサーバー側デバイスでも使用できるように設計されています。その結果、メモリの割り当てやメモリを大量に消費する計算が回避されます。 8 ビット マイクロプロセッサでは固定小数点演算が使用されますが、いくつかの最適化が可能です。したがって、ルールは 8 ビット配列で構成され、すべてのデバイスで利用できます。多くの MCU にはメモリ管理ユニット (MMU) が装備されていないため、メモリの断片化が発生し、パフォーマンスが低下するため、動的なメモリ割り当ては省略されます。ただし、ネットワーク ゲートウェイの場合は、大量のメモリの事前割り当てを避けるために、いくつかの機能に対して動的メモリ割り当てを実装する必要があります。
現在の実装は RFC 8724 (https://datatracker.ietf.org/doc/html/rfc8724/) に基づいていますが、いくつかの機能が欠けています。それらのほとんどは、このリポジトリのissues
の下にリストされています。
このライブラリは動作しますが、まだ実験段階であることに注意してください。
フォルダーの例には、基本的な圧縮と断片化の両方の例が提供されています。フラグメンテーションの例ではタイマー ライブラリを使用しているため、ご使用のプラットフォームに適合させる必要があります (フラグメンテーションとサンプル フォルダーを参照)。
libschc にはデュアルライセンスがあります。 GNU General Public License バージョン 3 (「ライセンス」) はオープン ソース ライセンスです。ライセンスに準拠する場合を除き、これらのファイルを使用することはできません。ライセンスのコピーは https://www.gnu.org/licenses/gpl-3.0.nl.html で入手できます。
ライセンスに基づく許可と制限を規定する特定の言語については、ライセンスを参照してください。
非オープンソース ライセンスについては、https://imec.flintbox.com/#technologies/36dfa28f-bf48-4a34-8c29-4439fc41d563 をご覧ください。
©著作権 2018-2023、Bart Moons [email protected]、imec、およびゲント大学