静的コンテキストヘッダー圧縮(SCHC、シックと発音)は、LPWANネットワークの一般的な圧縮メカニズムです。 IETFで標準化されています。
この実装は、SCHCをCOAP/UDP/IPv6ヘッダーに適用しますが、他のタイプのフィールドに拡張できます。
このドキュメントでは、{{id.toutain-lpwan-ipv6-static-context-hc}}および{{id.toutain-lpwan-coap-static-context-hc}で定義された汎用圧縮/減圧プロセスの適用について説明します。
現時点では、実装はアップリンクとダウンリンクのみでテストされており、デバイス(dev)からインフラストラクチャのLPWANコンプレッサー/減圧装置(SC)に通信し、SCHC C/Dの上で単純なCOAPサーバーを実行しています。デバイスの実装はPythonでWritenです。現在、LORAにPYCOM APIを使用しており、Sigfoxに簡単に適応できます。
COAP/UDP/IPv6パケットはデバイスによって生成され、デバイスはこのパケットを解析してヘッダーフィールドの各値を取得し、デバイスはこのパケット形式に一致する圧縮ルールを検索します。パケットのヘッダー形式と値に一致するコンテキストにルールがある場合、ヘッダーフィールドは、そのルールで指定された圧縮/減圧アクション(CDA)を使用して圧縮され、圧縮パケットは空中にインフラストラクチャC/Dに送信されます。
受領時に、圧縮されたパケットはインフラストラクチャC/Dによって解析され、ルール識別子(最初のバイト)、各後続のヘッダーフィールド(ルールで指定)およびペイロードを描きます。最後に、LCはルールに記載されているように、ヘッダーを減圧します。その後、COAPメッセージが処理され、回答が必要な場合、応答が圧縮され、それを減圧したデバイスに送り返されます。
この目的のために、デバイスはLOPYモジュールに実装され、LORAを介して送信でき、Micropythonで簡単にプログラムできます。インフラストラクチャC/sは、投稿メッセージで生の圧縮パケットLPWANペイロードフレームを受信するHTTPサーバーによってnode.jsを使用して実装されます。答えは、この投稿メッセージの承認に含まれています。
圧縮と減圧を実装するには、さまざまなクラスが必要です。
Recemngt.py SCHCコンテキストを維持するルールマネージャークラスを定義します。
ルールマネージャーインスタンスは、ルールマネーガー()に電話をかけて作成されます
RM = RuleManager()
次に、addRuleメソッドを使用してルールを追加できます。
RM.addRule(rule_coap0)
RM.addRule(rule_coap1)
ルールは、次の形式を使用してoin jsonを定義されています。
rule_coap0 = {"ruleid" : 0,
"content" : [["IPv6.version", 1, "bi", 6, "equal", "not-sent"],
["IPv6.trafficClass", 1, "bi", 0x00, "equal", "not-sent"]] }
ルールは、2つの要素のリスト(辞書)で構成されています。
Roolidはルール番号を定義します。
コンテンツには、次のようなフィールド説明の配列が含まれています。
メソッドFindRuleFromid(RoolID)は、RoolIDに対応するルールを返します。
メソッドFindRuleFrompkt(ヘッダー、方向)は、最初の引数に含まれるヘッダーフィールドリストに対応するルールを返します。この値は、一般に、クラスパーサーで行われたパケットヘッダーの解析から得られます。 2番目の引数は、「UP」、「DW」、または「BI」のいずれかで、デバイスの観点からの方向を示します。
両方の方法について、ルールが見つからない場合、何も返されません。