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

OSI カプセル化 (P2)

Status: draft

CLNP / ES-IS / IS-IS に共通する OSI ネットワーク層のカプセル化と、NSAP アドレス型の補足です (M7)。定義は crates/wpg-protocols/src/osi.rs、サンプルは templates/protocols/l2/dot3-llc-osi.wpg.yaml にあります。

到達経路

下位レイヤ選択子上位レイヤ
llcDSAP / SSAP 0xfePDU 先頭の NLPID オクテットで判別
pppprotocol 0x0023 (RFC 1377)同上

OSI の PDU の前には「次は何か」を示す番号がなく、PDU 自身の先頭オクテット NLPID (ISO/IEC TR 9577) が種類を表します (0x81 CLNP、0x82 ES-IS、0x83 IS-IS)。そのため llc と ppp はペイロードの先頭 8 ビットを覗いて (Binding::peek) 次のレイヤを決めます。専用の定義はこの peek の表に登録されています: CLNP (0x81) と ES-IS (0x82) は CLNP / ES-IS、IS-IS (0x83) は IS-IS を参照。それ以外の NLPID (ISO 8473 の非活性サブセット 0x00 など) と、定義に対して短すぎる PDU は汎用 PDU osi (NLPID + 残りの不透明なバイト列) としてデコードされます。

ビルド時は llc の上に osi または専用 PDU (clnp、esis_ish、isis_l1_lan_hello など) を積むだけで、DSAP / SSAP は Auto で 0xfe になります。PPP の protocol も同様に Auto で 0x0023 になります。

NSAP 型

  • nsap 型の値はアドレス本体 (1..=20 オクテット) で、ワイヤ上では OSI の慣例どおり 1 オクテットの長さ指示子が前に付きます。長さ指示子は合成時に自動で書かれ、解析時に読まれます。
  • 表記は 49.0001.1921.6800.1001.00 のような 16 進 (. と空白は無視、0x 接頭辞可)。
  • GUI のフィールドエディタは入力中の NSAP を AFI / エリア / System ID (6 オクテット) / NSEL に分解して表示します (8 オクテット未満のアドレスは分解しません)。
  • ジェネレータ range は System ID 部分を増分します (例 49.0001.1921.6800.1001.00-49.0001.1921.6800.1004.00)。

制約

  • osi の NLPID は Auto ではありません。
  • NLPID 0x81 / 0x82 / 0x83 の PDU は (十分な長さがあれば) 常に CLNP / ES-IS / IS-IS としてデコードされるため、これらを載せた汎用 osi レイヤは専用のプロトコルとして読み戻されます。

自動生成リファレンス

このページのプロトコルのフィールドリファレンス (定義から自動生成):

llc · ppp · osi · clnp · esis_ish · isis_l1_lan_hello