- レイヤ: L3 (ネットワーク)
- ヘッダ: 可変長
- 最終宛先:
segments_left が 0 でない間は、segment_list の要素 0 が下位レイヤの疑似ヘッダの宛先アドレスを置き換えます (RFC 8200 §8.1)
- 補足: SRv6 SRH / SR-MPLS (P2)
| 下位レイヤ | 判別フィールド | 値 |
ipv6 | next_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット | 4 (0x04) |
ipv6_hopopts | next_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット | 4 (0x04) |
ipv6_route | next_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット | 4 (0x04) |
ipv6_srh | next_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット | 4 (0x04) |
ipv6_frag | next_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット | 4 (0x04) |
ipv6_dstopts | next_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット | 4 (0x04) |
| フィールド | 型 | 既定値 | Auto | 説明 |
next_header | uint(8) | 253 | 次レイヤのプロトコル番号 (「次レイヤ」参照) | この拡張ヘッダに続くヘッダのプロトコル番号 (Auto)。 |
hdr_ext_len | uint(8) | | ヘッダの長さ (64 ビットワード単位) (-1) | この拡張ヘッダの長さ (8 バイト単位、先頭 8 バイトを除く。Auto)。 |
routing_type | enum(8) | 4 (segment_routing) | | ルーティングヘッダ種別 (例: 2 = Mobile IPv6、4 = SRH)。 |
segments_left | uint(8) | 1 | | Segments Left: 次に向かうセグメントのセグメントリスト上の位置。最後のセグメントで 0。 |
last_entry | uint(8) | | segment_list の要素数 (-1) | Last Entry: セグメントリスト最後の要素の位置 (= セグメント数 - 1、Auto)。 |
flags | uint(8) | 0 | | フラグ (RFC 8754 では未定義。0)。 |
tag | uint(16) | 0 | | Tag: パケットをクラスやグループで分類するための値 (0 = 未使用)。 |
segment_list | list<ipv6> — last_entry * 16 + 16 オクテット | 2 要素 | | セグメントリスト (SID) を経路の逆順で: 要素 0 が最後のセグメント、最後の要素が最初のセグメント。Segments Left が 0 でない間は、上位層チェックサムの宛先に要素 0 を使用。 |
tlvs | tlv — グループ先頭から hdr_ext_len * 8 + 8 オクテットまで | | | 省略可能な TLV (8 ビット型、8 ビット長): Pad1、PadN、HMAC (HMAC 値は手動)。ヘッダは Pad1 で 8 オクテットの倍数まで自動で詰める。 |
padding | padding(8) | | | 拡張ヘッダを 8 バイトの倍数に揃えるゼロパディング (Pad1、Auto)。 |
| 値 | 名前 |
| 4 (0x04) | segment_routing |
- タイプ 8 ビット、長さ 8 ビット。
- 長さは値の部分だけを数えます。
- 未知のタイプは値をオクテット列のまま保持します。
| タイプ値 | 名前 | 値のフィールド | 説明 |
| 0 (0x00) | pad1 | (タイプのみ。長さと値なし) | |
| 4 (0x04) | padn | padding | |
| 5 (0x05) | hmac | d, reserved, hmac_key_id, hmac | |
| フィールド | 型 | 既定値 | Auto | 説明 |
padding | bytes — PDU の残りすべて | | | |
| フィールド | 型 | 既定値 | Auto | 説明 |
d | uint(1) | 0 | | |
reserved | uint(15) | 0 | | |
hmac_key_id | uint(32) | 1 | | |
hmac | bytes — PDU の残りすべて | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | | |
次レイヤは next_header で判別します。このフィールドが Auto のときは、上に積んだプロトコルの値を書き込みます。
next_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット