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 にあります。
到達経路
| 下位レイヤ | 選択子 | 上位レイヤ |
|---|---|---|
llc | DSAP / SSAP 0xfe | PDU 先頭の NLPID オクテットで判別 |
ppp | protocol 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レイヤは専用のプロトコルとして読み戻されます。
自動生成リファレンス
このページのプロトコルのフィールドリファレンス (定義から自動生成):