3.1. LOWPAN_IPHC エンコーディング形式
このセクションでは、IPv6 ヘッダーがどのように圧縮されるかを記述する LOWPAN_IPHC エンコーディングの形式を指定します。エンコーディングは、基本エンコーディングの場合は 2 オクテット、追加のコンテキストエンコーディングが存在する場合は 3 オクテットの長さになります。完全に省略されていない IPv6 ヘッダーフィールドは、LOWPAN_IPHC の直後に、フィールドが部分的に省略されている場合は圧縮形式で、またはそのまま(literally)配置されます。
3.1.1. 基本形式
0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| 0 | 1 | 1 | TF |NH | HLIM |CID|SAC| SAM | M |DAC| DAM |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
Figure 2: LOWPAN_IPHC base Encoding
TF: トラフィッククラス、フローラベル: [RFC3168] で指定されているように、8 ビットの IPv6 トラフィッククラスフィールドは、2 ビットの明示的ふくそう通知(ECN)と 6 ビットの DiffServ コードポイント(DSCP)の 2 つのフィールドに分割されます。
00: ECN + DSCP + 4 ビットパディング + フローラベル (4 バイト)01: ECN + 2 ビットパディング + フローラベル (3 バイト)、DSCP は省略されます。10: ECN + DSCP (1 バイト)、フローラベルは省略されます。11: トラフィッククラスとフローラベルは省略されます。
NH: 次のヘッダー:
0: 次のヘッダーの完全な 8 ビットがインラインで伝送されます。1: 次のヘッダーフィールドは圧縮され、次のヘッダーは LOWPAN_NHC を使用してエンコードされます(セクション 4.1 で説明)。
HLIM: ホップ制限:
00: ホップ制限フィールドはインラインで伝送されます。01: ホップ制限フィールドは圧縮され、ホップ制限は 1 です。10: ホップ制限フィールドは圧縮され、ホップ制限は 64 です。11: ホップ制限フィールドは圧縮され、ホップ制限は 255 です。
CID: コンテキスト識別子拡張:
0: 追加の 8 ビットコンテキスト識別子拡張は使用されません。送信元アドレス圧縮(SAC)または宛先アドレス圧縮(DAC)のいずれかでコンテキストベースの圧縮が指定されている場合、コンテキスト 0 が使用されます。1: 追加の 8 ビットコンテキスト識別子拡張フィールドが宛先アドレスモード(DAM)フィールドの直後に続きます。
SAC: 送信元アドレス圧縮
0: 送信元アドレス圧縮はステートレス圧縮を使用します。1: 送信元アドレス圧縮は、ステートフルなコンテキストベースの圧縮を使用します。
SAM: 送信元アドレスモード:
SAC=0 の場合:
00: 128 ビット。完全なアドレスがインラインで伝送されます。01: 64 ビット。アドレスの最初の 64 ビットが省略されます。これらのビットの値は、ゼロでパディングされたリンクローカルプレフィックスです。残りの 64 ビットはインラインで伝送されます。10: 16 ビット。アドレスの最初の 112 ビットが省略されます。最初の 64 ビットの値は、ゼロでパディングされたリンクローカルプレフィックスです。続く 64 ビットは0000:00ff:fe00:XXXXであり、XXXXはインラインで伝送される 16 ビットです。11: 0 ビット。アドレスは完全に省略されます。アドレスの最初の 64 ビットは、ゼロでパディングされたリンクローカルプレフィックスです。残りの 64 ビットは、セクション 3.2.2 で指定されているように、カプセル化ヘッダー(例:802.15.4 または IPv6 送信元アドレス)から計算されます。
SAC=1 の場合:
00: 未指定アドレス、::01: 64 ビット。アドレスは、コンテキスト情報とインラインで伝送される 64 ビットを使用して派生します。コンテキスト情報でカバーされるビットは常に使用されます。コンテキスト情報でカバーされない IID ビットは、対応するインラインで伝送されるビットから直接取得されます。残りのビットはゼロです。10: 16 ビット。アドレスは、コンテキスト情報とインラインで伝送される 16 ビットを使用して派生します。コンテキスト情報でカバーされるビットは常に使用されます。コンテキスト情報でカバーされない IID ビットは、0000:00ff:fe00:XXXXで与えられる 16 ビットから IID へのマッピング内の対応するビットから直接取得されます。ここで、XXXXはインラインで伝送される 16 ビットです。残りのビットはゼロです。11: 0 ビット。アドレスは完全に省略され、コンテキスト情報とカプセル化ヘッダー(例:802.15.4 または IPv6 送信元アドレス)を使用して派生します。コンテキスト情報でカバーされるビットは常に使用されます。コンテキスト情報でカバーされない IID ビットは、セクション 3.2.2 で指定されているように、カプセル化ヘッダーから計算されます。残りのビットはゼロです。
M: マルチキャスト圧縮
0: 宛先アドレスはマルチキャストアドレスではありません。1: 宛先アドレスはマルチキャストアドレスです。
DAC: 宛先アドレス圧縮
0: 宛先アドレス圧縮はステートレス圧縮を使用します。1: 宛先アドレス圧縮は、ステートフルなコンテキストベースの圧縮を使用します。
DAM: 宛先アドレスモード:
M=0 かつ DAC=0 の場合、このケースは SAC=0 と一致しますが、宛先アドレス用です:
00: 128 ビット。完全なアドレスがインラインで伝送されます。01: 64 ビット。アドレスの最初の 64 ビットが省略されます。これらのビットの値は、ゼロでパディングされたリンクローカルプレフィックスです。残りの 64 ビットはインラインで伝送されます。10: 16 ビット。アドレスの最初の 112 ビットが省略されます。最初の 64 ビットの値は、ゼロでパディングされたリンクローカルプレフィックスです。続く 64 ビットは0000:00ff:fe00:XXXXであり、XXXXはインラインで伝送される 16 ビットです。11: 0 ビット。アドレスは完全に省略されます。アドレスの最初の 64 ビットは、ゼロでパディングされたリンクローカルプレフィックスです。残りの 64 ビットは、セクション 3.2.2 で指定されているように、カプセル化ヘッダー(例:802.15.4 または IPv6 宛先アドレス)から計算されます。
M=0 かつ DAC=1 の場合:
00: 予約済み。01: 64 ビット。アドレスは、コンテキスト情報とインラインで伝送される 64 ビットを使用して派生します。コンテキスト情報でカバーされるビットは常に使用されます。コンテキスト情報でカバーされない IID ビットは、対応するインラインで伝送されるビットから直接取得されます。残りのビットはゼロです。10: 16 ビット。アドレスは、コンテキスト情報とインラインで伝送される 16 ビットを使用して派生します。コンテキスト情報でカバーされるビットは常に使用されます。コンテキスト情報でカバーされない IID ビットは、0000:00ff:fe00:XXXXで与えられる 16 ビットから IID へのマッピング内の対応するビットから直接取得されます。ここで、XXXXはインラインで伝送される 16 ビットです。残りのビットはゼロです。11: 0 ビット。アドレスは完全に省略され、コンテキスト情報とカプセル化ヘッダー(例:802.15.4 または IPv6 宛先アドレス)を使用して派生します。コンテキスト情報でカバーされるビットは常に使用されます。コンテキスト情報でカバーされない IID ビットは、セクション 3.2.2 で指定されているように、カプセル化ヘッダーから計算されます。残りのビットはゼロです。
M=1 かつ DAC=0 の場合:
00: 128 ビット。完全なアドレスがインラインで伝送されます。01: 48 ビット。アドレスの形式はffXX::00XX:XXXX:XXXXです。10: 32 ビット。アドレスの形式はffXX::00XX:XXXXです。11: 8 ビット。アドレスの形式はff02::00XXです。
M=1 かつ DAC=1 の場合:
00: 48 ビット。この形式は、[RFC3306] および [RFC3956] で定義されているユニキャストプレフィックスベースの IPv6 マルチキャストアドレスと一致するように設計されています。マルチキャストアドレスの形式はffXX:XXLL:PPPP:PPPP:PPPP:PPPP:XXXX:XXXXです。ここで、X はインラインで伝送されるニブルであり、この形式で表示される順序になります。P はプレフィックス自体をエンコードするために使用されるニブルを示します。L はプレフィックス長をエンコードするために使用されるニブルを示します。プレフィックス情報 P および L は、指定されたコンテキストから取得されます。01: 予約済み10: 予約済み11: 予約済み
3.1.2. コンテキスト識別子拡張
この仕様では、パケットを圧縮するノードとそれを展開する必要があるノード(複数可)の間で概念的なコンテキストが共有されることを期待しています。コンテキストがどのように共有および維持されるかは範囲外です。コンテキスト情報内にどのような情報が含まれるかは範囲外です。不明および/または無効なコンテキストへの応答アクションは範囲外です。仕様では、ノードが最大 16 個のコンテキストを使用できるようにしています。送信元アドレスをエンコードするために使用されるコンテキストは、宛先アドレスをエンコードするために使用されるコンテキストと同じである必要はありません。
LOWPAN_IPHC エンコーディングの CID フィールドが '1' に設定されている場合、DAM ビットの後、インラインで伝送される IPv6 ヘッダーフィールドの前に、追加のオクテットが LOWPAN_IPHC エンコーディングを拡張します。追加のオクテットは、IPv6 送信元および/または宛先アドレスが圧縮されるときに使用されるコンテキストのペアを識別します。コンテキスト識別子は各アドレスに対して 4 ビットで、最大 16 個のコンテキストをサポートします。コンテキスト 0 はデフォルトのコンテキストです。エンコーディングを図 3 に示します。
0 1 2 3 4 5 6 7
+---+---+---+---+---+---+---+---+
| SCI | DCI |
+---+---+---+---+---+---+---+---+
Figure 3: LOWPAN_IPHC Encoding
SCI: 送信元コンテキスト識別子。 IPv6 送信元アドレスがステートフルに圧縮されるときに使用されるプレフィックスを識別します。
DCI: 宛先コンテキスト識別子。 IPv6 宛先アドレスがステートフルに圧縮されるときに使用されるプレフィックスを識別します。