Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

IPv6 Segment Routing Header (ipv6_srh)

  • レイヤ: L3 (ネットワーク)
  • ヘッダ: 可変長
  • 最終宛先: segments_left が 0 でない間は、segment_list の要素 0 が下位レイヤの疑似ヘッダの宛先アドレスを置き換えます (RFC 8200 §8.1)
  • 補足: SRv6 SRH / SR-MPLS (P2)

下位レイヤからの到達

下位レイヤ判別フィールド値
ipv6next_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット4 (0x04)
ipv6_hopoptsnext_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット4 (0x04)
ipv6_routenext_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット4 (0x04)
ipv6_srhnext_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット4 (0x04)
ipv6_fragnext_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット4 (0x04)
ipv6_dstoptsnext_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット4 (0x04)

フィールド

フィールド型既定値Auto説明
next_headeruint(8)253次レイヤのプロトコル番号 (「次レイヤ」参照)この拡張ヘッダに続くヘッダのプロトコル番号 (Auto)。
hdr_ext_lenuint(8)ヘッダの長さ (64 ビットワード単位) (-1)この拡張ヘッダの長さ (8 バイト単位、先頭 8 バイトを除く。Auto)。
routing_typeenum(8)4 (segment_routing)ルーティングヘッダ種別 (例: 2 = Mobile IPv6、4 = SRH)。
segments_leftuint(8)1Segments Left: 次に向かうセグメントのセグメントリスト上の位置。最後のセグメントで 0。
last_entryuint(8)segment_list の要素数 (-1)Last Entry: セグメントリスト最後の要素の位置 (= セグメント数 - 1、Auto)。
flagsuint(8)0フラグ (RFC 8754 では未定義。0)。
taguint(16)0Tag: パケットをクラスやグループで分類するための値 (0 = 未使用)。
segment_listlist<ipv6> — last_entry * 16 + 16 オクテット2 要素セグメントリスト (SID) を経路の逆順で: 要素 0 が最後のセグメント、最後の要素が最初のセグメント。Segments Left が 0 でない間は、上位層チェックサムの宛先に要素 0 を使用。
tlvstlv — グループ先頭から hdr_ext_len * 8 + 8 オクテットまで省略可能な TLV (8 ビット型、8 ビット長): Pad1、PadN、HMAC (HMAC 値は手動)。ヘッダは Pad1 で 8 オクテットの倍数まで自動で詰める。
paddingpadding(8)拡張ヘッダを 8 バイトの倍数に揃えるゼロパディング (Pad1、Auto)。

routing_type

値名前
4 (0x04)segment_routing

tlvs

  • タイプ 8 ビット、長さ 8 ビット。
  • 長さは値の部分だけを数えます。
  • 未知のタイプは値をオクテット列のまま保持します。
タイプ値名前値のフィールド説明
0 (0x00)pad1(タイプのみ。長さと値なし)
4 (0x04)padnpadding
5 (0x05)hmacd, reserved, hmac_key_id, hmac

tlvs › padn

フィールド型既定値Auto説明
paddingbytes — PDU の残りすべて

tlvs › hmac

フィールド型既定値Auto説明
duint(1)0
reserveduint(15)0
hmac_key_iduint(32)1
hmacbytes — 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 のときは、上に積んだプロトコルの値を書き込みます。

値プロトコル備考
0 (0x00)ipv6_hopopts
4 (0x04)ipv4
6 (0x06)tcp
17 (0x11)udp
41 (0x29)ipv6
43 (0x2b)ipv6_route
44 (0x2c)ipv6_frag
46 (0x2e)rsvp
47 (0x2f)gre
58 (0x3a)icmpv6
60 (0x3c)ipv6_dstopts
88 (0x58)eigrp
89 (0x59)ospfv3
112 (0x70)vrrpv3_ipv6
115 (0x73)l2tpv3
132 (0x84)sctp
143 (0x8f)ethernet2

next_header = 43 (0x2b) のときのペイロードの 16 ビット目から 8 ビット

値プロトコル
4 (0x04)ipv6_srh
(その他の値)ipv6_route

制約

レベル規則
警告routing_type が 4

サンプルテンプレート