メインコンテンツへスキップ
  1. ネットワーク 記事一覧/
  2. IS-IS記事一覧/

IS-ISパケットの種類とヘッダーフォーマット

目次

IS-ISパケットの種類とヘッダーフォーマット

IS-ISは、ネイバーの発見からLSDBの同期までを専用のパケットでやり取りします(プロトコル全体の流れはIS-ISとはで解説しています)。ISO/IEC 10589ではこれらをPDU(Protocol Data Unit)と呼びますが、本記事ではIPの用語に合わせて「パケット」と書きます。

IS-ISのパケットには、OSPFと比べたときに際立つ特徴があります。ヘッダーが非常に短く、中身のほとんどがTLV(Type-Length-Value)であるという点です。全パケット共通のヘッダーはわずか8バイトで、その後ろにパケット種別ごとの固定部と、可変長のTLVが並びます。

本記事では、9種類あるパケットの役割と、共通ヘッダーの各フィールド、そしてTLVという仕組みを、実機(Cisco IOS XR)のキャプチャで確認しながら解説します。9種類すべてを実際に観測できたので、それぞれのtshark出力を載せています。

IS-ISパケットが使うアドレスとカプセル化

IS-ISのパケットはIPに載らず、イーサネットフレームのペイロードとして直接運ばれます。カプセル化の詳細はIS-ISとはで解説していますが、本記事で必要になるのは次の3点です。

項目内容
カプセル化イーサネット(IEEE 802.3)+ LLC(DSAP/SSAP = 0xFE、Control = 0x03
宛先MACアドレスブロードキャストリンクでは01:80:C2:00:00:14(AllL1ISs)/01:80:C2:00:00:15(AllL2ISs)。ポイントツーポイントとして動作するリンクでは09:00:2B:00:00:05
IS-ISの開始共通ヘッダー先頭の0x83(Intradomain Routeing Protocol Discriminator)

この3つのマルチキャストMACアドレスは、いずれもISO/IEC 10589:2002の表9(ISO 8802サブネットワーク用のアーキテクチャ定数)に載っています。ただし同じ表の中でも位置づけが違います01:80:C2:00:00:14(AllL1ISs)と01:80:C2:00:00:15(AllL2ISs)はIS-IS自身がLAN IIHの宛先として使うものですが、09:00:2B:00:00:05は表の説明が「AllIntermediateSystems — ISO 9542が使う『All Intermediate Systems』」となっており、IS-ISではなくES-IS(ISO 9542)のアドレスです。イーサネット上でIS-ISをpoint-to-pointとして動かしたときにこのアドレスが使われるのは実装上の取り決めで、ISO/IEC 10589がそう規定しているわけではありません。

本記事の検証ではブロードキャストリンクとポイントツーポイントリンクの両方を使うため、3つすべてを実際に観測できました

パケットの種類

IS-ISのパケットは3つのカテゴリに分かれ、それぞれレベルやリンク種別ごとに番号が振られています。ISO/IEC 10589:2002の9.4が列挙しているのは、次の9種類だけです。

カテゴリパケットPDU Type役割
HelloLAN Level 1 IIH15ブロードキャストリンクでレベル1の隣接を確立・維持する
HelloLAN Level 2 IIH16ブロードキャストリンクでレベル2の隣接を確立・維持する
HelloPoint-to-Point IIH17ポイントツーポイントリンクで隣接を確立・維持する。レベルは中のCircuit typeで示す
Link StateLevel 1 LSP18レベル1のリンク状態を配布する
Link StateLevel 2 LSP20レベル2のリンク状態を配布する
Sequence NumberLevel 1 CSNP24レベル1のLSDBにあるLSPの一覧を見せる
Sequence NumberLevel 2 CSNP25レベル2のLSDBにあるLSPの一覧を見せる
Sequence NumberLevel 1 PSNP26レベル1で足りないLSPを要求する/受信を確認する
Sequence NumberLevel 2 PSNP27レベル2で足りないLSPを要求する/受信を確認する

OSPFと対応づけると次のようになります。

OSPFIS-IS
Hello(Type 1)IIH(15 / 16 / 17)
DBD(Type 2)CSNP(24 / 25)
LSR(Type 3)PSNP(26 / 27)
LSU(Type 4)LSP(18 / 20)
LSAck(Type 5)PSNP(26 / 27)

IS-ISはPSNPが2つの役割を兼ねます。足りないLSPの要求(OSPFのLSR)と、受け取ったLSPの確認応答(OSPFのLSAck)の両方です。この2つの顔はPSNP(PDU Type 26 / 27)で実際のキャプチャを並べて確認します。またOSPFはHelloが1種類なのに対し、IS-ISはリンク種別とレベルでHelloが3種類に分かれる点が異なります。

19という番号のPDUは存在しません。ISO/IEC 10589:2002が定義するPDUは9.4に挙がっている上表の9種類だけで、レベル1 LSPの18とレベル2 LSPの20の間にある19には何も割り当てられていません。

共通ヘッダーのフォーマット

9種類すべてのパケットが、先頭に同じ8バイトのヘッダーを持ちます。各フィールドはすべて1バイトです。

フィールド長さ内容
Intradomain Routeing Protocol Discriminator1バイトIS-ISであることを示す固定値0x83(二進10000011、10進131)。ISO/IEC 10589:2002の表2にアーキテクチャ定数IntradomainRouteingPDとして載っており、値そのものはISO/TR 9577(ネットワーク層プロトコル識別子の登録)で割り当てられたもの
Length Indicator1バイト固定ヘッダーの長さ(バイト)。TLVは含まない
Version/Protocol ID Extension1バイト1
ID Length1バイトこのルーティングドメインで使うSystem IDの長さ。0は6バイトを意味する18は実際のバイト数、255は長さ0。それ以外の値は不正
PDU Type1バイト下位5ビット(ビット1〜5)がパケットの種類(15〜27)。上位3ビット(ビット6〜8)は予約で、送信時は0、受信時は無視する
Version1バイト1
Reserved1バイト未使用。0で送り、受信時は無視する
Maximum Area Addresses1バイトこのISのエリアで許されるエリアアドレスの数。1254が有効値で、0は受信時に3として扱われる

ID LengthMaximum Area Addressesは、0が「0個」ではなく既定値(6バイト/3個)を意味する点に注意が必要です。実機の出力でもここは0になります。

なおISO/IEC 10589:2002の9.1は、PDU内のオクテットを1から数え、オクテット内のビットを1〜8で数える(ビット1が最下位)と定めています。上表の「ビット1〜5」「ビット6〜8」はこの数え方によるものです。

Length Indicatorはパケットの種類によって値が変わります。共通ヘッダーの8バイトに、種別ごとの固定部の長さを足したものだからです。本記事で観測した値は次のとおりでした。

パケットLength Indicator内訳(共通8バイト+固定部)
LAN IIH(15 / 16)278 + Circuit type 1 + Source ID 6 + Holding Time 2 + PDU Length 2 + Priority 1 + LAN ID 7
Point-to-Point IIH(17)208 + Circuit type 1 + Source ID 6 + Holding Time 2 + PDU Length 2 + Local Circuit ID 1
LSP(18 / 20)278 + PDU Length 2 + Remaining Lifetime 2 + LSP ID 8 + Sequence Number 4 + Checksum 2 + Type block 1
CSNP(24 / 25)338 + PDU Length 2 + Source ID 7 + Start LSP ID 8 + End LSP ID 8
PSNP(26 / 27)178 + PDU Length 2 + Source ID 7

TLVという仕組み

共通ヘッダーとパケット種別ごとの固定部の後ろには、TLV(Type-Length-Value)が並びます。

要素長さ内容
Type1バイトそのTLVが何を表すかを示す番号
Length1バイトValueの長さ(バイト)
Value可変長中身

Lengthが1バイトなので、1つのTLVが運べるValueは最大255バイトです。それより多くの情報を載せる場合は、同じTypeのTLVを繰り返します。ISO/IEC 10589:2002は各PDUの説明で「受信したPDUの中に認識できないCODEがあれば無視する」と定めており、LSPについてはさらに「無視したうえでそのまま変更せずに中継する」としています(9.8)。知らないTLVがあってもフラッディングが壊れないのはこのためです。

ISO/IEC 10589:2002はこの並びをVARIABLE LENGTH FIELDS(可変長フィールド)と呼び、先頭1バイトを「Type」ではなくCODEと表記します(9.5〜9.13)。規格の本文には「TLV」も「CLV」も出てきませんが、IETFやベンダーの資料では「TLV」が定着しているため、本記事もTLVで統一します。

この設計により、IS-ISは新しい情報を運びたくなったらTLVを追加するだけで済みます。ヘッダーのフォーマットを変える必要がないため、IPv6対応(RFC 5308)やMPLSトラフィックエンジニアリング、セグメントルーティングといった拡張が、いずれもTLVの追加だけで実現されてきました。主要なTLVの一覧はIS-ISの主要TLVで解説します。

実際、本記事のキャプチャに出てくるTLVのうち規格本体が定義しているのは一部だけです。ISO/IEC 10589:2002が定義するCODEは11014で、それ以外はすべてIETFが後から足したものです。

TLV名称出典
1Area AddressesISO/IEC 10589:2002
6IS Neighbours(6バイトMACアドレス)ISO/IEC 10589:2002。LAN IIHにしか現れない
8PaddingISO/IEC 10589:2002
9LSP EntriesISO/IEC 10589:2002。CSNPとPSNPが使う
14originatingLSPBufferSizeISO/IEC 10589:2002
129Protocols SupportedRFC 1195
132IP Interface AddressRFC 1195
137Dynamic HostnameRFC 5301
211Restart SignalingRFC 5306
240Point-to-Point Adjacency StateRFC 5303

実機での検証

検証環境

9種類すべてのパケットを観測するため、ブロードキャストリンクとポイントツーポイントリンクの両方を含む構成にしました。LANでしか流れないパケット(PDU Type 15・16・24)があるため、どちらか片方だけの構成では9種類が揃いません。

ルータNETis-type接続
R149.0001.0010.0100.1001.00level-1LANのみ
R249.0001.0020.0200.2002.00(既定=level-1-2)LANのみ
R349.0001.0030.0300.3003.00(既定=level-1-2)LAN + R4へのP2P
R449.0002.0040.0400.4004.00(既定=level-1-2)R3へのP2Pのみ

R1・R2・R3は同じエリア49.0001のブロードキャストセグメント(10.1.0.0/24)に接続し、R3とR4の間だけをpoint-to-pointにしています。R4は別エリア49.0002なので、R3–R4間はレベル2の隣接になります。

LAN側のインタフェースにはpoint-to-pointを書きません。これがこの検証の肝で、既定のブロードキャスト動作にすることでDISが選出され、LAN IIHとCSNPが流れるようになります。

STEP 0:R3の show isis neighbors
RP/0/RP0/CPU0:R3#show isis neighbors
Tue Sep  8 14:42:19.720 UTC

IS-IS 1 neighbors:
System Id      Interface        SNPA           State Holdtime Type IETF-NSF
R1             Gi0/0/0/0        5254.0026.ffa1 Up    26       L1   Capable 
R2             Gi0/0/0/0        5254.004c.38a4 Up    22       L1L2 Capable 
R4             Gi0/0/0/1        *PtoP*         Up    29       L2   Capable 

Total neighbor count: 3

同じGi0/0/0/0の上に3本ではなく2本の隣接が並んでいるのは、R1がレベル1のみ、R2がレベル1-2だからです。SNPA欄に注目すると、LAN側の2本には相手のMACアドレスが入り、P2P側は*PtoP*と表示されます。ブロードキャストリンクでは相手を特定するのにMACアドレス(SNPA=Subnetwork Point of Attachment)が要るのに対し、ポイントツーポイントでは相手が1台しかいないため不要、という違いがそのまま出ています。

show isis interface briefを見ると、この違いがもう1段はっきりします。

STEP 0:R3の show isis interface brief
RP/0/RP0/CPU0:R3#show isis interface brief
Tue Sep  8 14:42:19.560 UTC

IS-IS 1 Interfaces
    Interface      All     Adjs    Adj Topos  Adv Topos  CLNS   MTU    Prio  
                   OK    L1   L2    Run/Cfg    Run/Cfg                L1   L2
-----------------  ---  ---------  ---------  ---------  ----  ----  --------
Lo0                Yes    -    -      0/0        1/1     No       -    -    -
Gi0/0/0/0          Yes    2*   1*     1/1        1/1     Up    1497   64   64
Gi0/0/0/1          Yes    0    1      1/1        1/1     Up    1497    -    -

LAN側のGi0/0/0/0にはPrio64と入り、P2P側のGi0/0/0/1-です。優先度はDISを選ぶためのものなので、DISが存在しないポイントツーポイントリンクには値がありません。隣接数に付いている*は、このルータがそのレベルのDISであることを示します。R3はレベル1・レベル2の両方でDISになりました。

この64という既定値は、ISO/IEC 10589:2002の管理情報定義にあるl1IntermediateSystemPriority / l2IntermediateSystemPriorityの既定値と一致します。DISの選出規則(同規格8.4.5)は「優先度がもっとも高いIS、同点ならMACアドレスが数値としてもっとも大きいほう」で、実際に3台のMACアドレス(R1 5254.0026.ffa1、R2 5254.004c.38a4、R3 5254.0084.f661)のうち最大のR3がDISになっています。DISの選出と疑似ノードの詳細はDISと疑似ノードで解説します。本記事ではLAN IIHにPriorityLAN IDというフィールドがあることまでを扱います。

検証のSTEP

STEP操作
0初期状態
14台同時にprocess restart isis(LAN・P2Pの両方をキャプチャ)
2R1だけprocess restart isis(LANをキャプチャ)
3LAN側の3台にhello-padding disableを投入
4hello-paddingを元に戻す(最終状態)

キャプチャはLANセグメント(R3–SW間)とR3–R4リンクの2か所で取得しました。

キャプチャSTEP観測できたパケット
isis-packet-lan.pcap1LAN L1 IIH(15)、LAN L2 IIH(16)、L1 LSP(18)、L2 LSP(20)、L1 CSNP(24)、L2 CSNP(25)
isis-packet-p2p.pcap1P2P IIH(17)、L2 LSP(20)、L2 CSNP(25)、L2 PSNP(27)
isis-packet-lan-resync.pcap2L1 PSNP(26)ほか
isis-packet-padding.pcap3パディングの有無でIIHの長さが変わる様子

STEP 1で8種類が取れましたが、L1 PSNP(26)だけが出ませんでした。4台を同時に再起動したためLSDBがフラッディングだけで揃ってしまい、「足りないLSPを要求する」場面が生まれなかったためです。そこでSTEP 2ではR1だけを再起動し、他の3台が動いたままの状態でR1にLSDBを取り直させました。これでDISが定期送信するCSNPに対してR1が要求を返し、L1 PSNPを観測できています。

観測できたPDU種別は、次のコマンドで機械的に確認できます。

キャプチャに含まれるPDU種別
$ for f in isis-packet-lan.pcap isis-packet-p2p.pcap isis-packet-lan-resync.pcap; do
>   tshark -r $f -n -V 2>/dev/null | grep -oE "PDU Type: [A-Za-z0-9 -]+ \([0-9]+\)"
> done | sort | uniq -c
  40 PDU Type: L1 CSNP (24)
 214 PDU Type: L1 HELLO (15)
  30 PDU Type: L1 LSP (18)
   1 PDU Type: L1 PSNP (26)
  41 PDU Type: L2 CSNP (25)
 161 PDU Type: L2 HELLO (16)
  36 PDU Type: L2 LSP (20)
  13 PDU Type: L2 PSNP (27)
  45 PDU Type: P2P HELLO (17)

9種類すべてが並びました。以降、それぞれの中身を見ていきます。

IIH(PDU Type 15 / 16 / 17)

IIH(IS-IS Hello)は隣接の確立と維持に使うパケットで、リンク種別とレベルで3種類に分かれます

パケットPDU Type使われる場面
LAN Level 1 IIH15ブロードキャストリンクのレベル1
LAN Level 2 IIH16ブロードキャストリンクのレベル2
Point-to-Point IIH17ポイントツーポイントリンク(レベルは中のCircuit typeで示す)

ブロードキャストリンクではレベルごとに別のパケットを使い、ポイントツーポイントでは1種類のパケットの中でレベルを示す、という違いがあります。

LAN Level 1 IIH(PDU Type 15)

R1(level-1)がLANへ送ったIIHです。宛先MACが01:80:c2:00:00:14(AllL1ISs)になっています。

No.3 LAN Level 1 IIH(R1 → AllL1ISs)tshark -V
ISO 10589 ISIS InTRA Domain Routeing Information Exchange Protocol
    Intradomain Routing Protocol Discriminator: ISIS (0x83)
    Length Indicator: 27
    Version/Protocol ID Extension: 1
    ID Length: 0
    000. .... = Reserved: 0x0
    ...0 1111 = PDU Type: L1 HELLO (15)
    Version: 1
    Reserved: 0
    Maximum Area Addresses: 0
ISIS HELLO
    .... ..01 = Circuit type: Level 1 only (0x1)
    0000 00.. = Reserved: 0x00
    SystemID {Sender of PDU}: 0010.0100.1001
    Holding timer: 30
    PDU length: 1497
    .100 0000 = Priority: 64
    0... .... = Reserved: 0
    SystemID {Designated IS}: 0030.0300.3003.01
    Protocols Supported (t=129, l=1)
        Type: 129
        Length: 1
        NLPID: IP (0xcc)
    Area address(es) (t=1, l=4)
        Type: 1
        Length: 4
        Area address (3): 49.0001
    IP Interface address(es) (t=132, l=4)
        Type: 132
        Length: 4
        IPv4 interface address: 10.1.0.1
    IS Neighbor(s) (t=6, l=12)
        Type: 6
        Length: 12
        IS Neighbor: 52:54:00:4c:38:a4
        IS Neighbor: 52:54:00:84:f6:61
    Padding (t=8, l=255)
        Type: 8
        Length: 255
上のtshark出力のパケット(No.3 LAN Level 1 IIH)のpcapをダウンロード

共通ヘッダーの8バイトが、共通ヘッダーのフォーマットの表そのままに並んでいます。ID Length: 0Maximum Area Addresses: 0はどちらも「既定値」の意味で、0個ではありません。PDU Type...0 1111と5ビットで展開され、上位3ビットが000. .... = Reservedとして別に表示されている点にも注目してください。

共通ヘッダーの後ろに続く固定部は、ISO/IEC 10589:2002の9.5で次のように定義されています。

フィールド長さこの出力での値内容
Reserved/Circuit Type1バイト0x1下位2ビットが送信元の扱えるレベル。1=レベル1のみ、2=レベル2のみ、3=レベル1とレベル2の両方。0は予約値で、指定されていたらPDU全体を破棄する。上位6ビットは予約
Source IDID Lengthバイト(既定6)0010.0100.1001送信元ルータのSystem ID
Holding Time2バイト30この秒数だけIIHが届かなければ隣接を落とす
PDU Length2バイト1497ヘッダーを含むPDU全体の長さ(バイト)
Reserved/Priority1バイト64下位7ビットがLANレベル1 DISになるための優先度。値が大きいほうが優先。ビット8は予約
LAN IDID Length + 1バイト0030.0300.3003.01DISのSystem IDと、DISが割り当てる1バイトの番号

R1はis-type level-1なのでCircuit typeLevel 1 only (0x1)になっています。ISO/IEC 10589:2002の注記55が「LAN Level 1 IIHのCircuit Typeは13でなければならない」と定めているとおりの値です。

LAN IDに入っているのはR1自身ではなくR3のSystem IDです0030.0300.3003.01)。ISO/IEC 10589:2002の9.5は、LAN IDを「DISのSystem IDに、DISが割り当てた1バイトを付けたもの。DISのIIHからコピーする」と定めています。DISでないR1は、R3が送ってきたLAN IDをそのまま載せ返しているわけです。末尾の.01がDISの付けた番号で、この値がshow isis databaseに現れる疑似ノードLSPR3.01-00の正体でもあります。

もう1つLAN IIHに固有なのが、TLV 6(IS Neighbours)です。ここにはR1が「このLAN上で見えている」IS-ISルータのMACアドレスが並びます(R2の52:54:00:4c:38:a4とR3の52:54:00:84:f6:61)。相手が自分を見えていることをこのTLVで確かめるのが、ブロードキャストリンクにおける双方向性の確認方法です。ポイントツーポイントのIIHにこのTLVは現れません。

LAN Level 2 IIH(PDU Type 16)

同じLANにR2(level-1-2)が送ったレベル2のIIHです。宛先MACは01:80:c2:00:00:15(AllL2ISs)になります。

No.8 LAN Level 2 IIH(R2 → AllL2ISs)tshark -V
ISO 10589 ISIS InTRA Domain Routeing Information Exchange Protocol
    Intradomain Routing Protocol Discriminator: ISIS (0x83)
    Length Indicator: 27
    Version/Protocol ID Extension: 1
    ID Length: 0
    000. .... = Reserved: 0x0
    ...1 0000 = PDU Type: L2 HELLO (16)
    Version: 1
    Reserved: 0
    Maximum Area Addresses: 0
ISIS HELLO
    .... ..11 = Circuit type: Level 1 and 2 (0x3)
    0000 00.. = Reserved: 0x00
    SystemID {Sender of PDU}: 0020.0200.2002
    Holding timer: 30
    PDU length: 1497
    .100 0000 = Priority: 64
    0... .... = Reserved: 0
    SystemID {Designated IS}: 0030.0300.3003.01
上のtshark出力のパケット(No.8 LAN Level 2 IIH)のpcapをダウンロード

フィールドの構成はLAN Level 1 IIH(15)とまったく同じで、ISO/IEC 10589:2002も9.6で9.5と同じ図を再掲しています。違うのはPDU Typeの番号と宛先MACアドレス、そしてPriorityLAN IDが指すのがレベル2のDISであることだけです。Length Indicatorも同じ27になっています。

R2はlevel-1-2なのでCircuit typeLevel 1 and 2 (0x3)です。R1の0x1と見比べると、is-typeの設定がそのままこのビットになっていることが分かります。

なおレベル1とレベル2でDISは別々に選ばれますが、この検証ではどちらもR3が選ばれたため、LAN IDはレベル1のIIHと同じ0030.0300.3003.01になっています。

Point-to-Point IIH(PDU Type 17)

R3がR4へ送ったIIHです。宛先MACは09:00:2b:00:00:05です。

No.2 Point-to-Point IIH(R3 → R4)tshark -V
ISO 10589 ISIS InTRA Domain Routeing Information Exchange Protocol
    Intradomain Routing Protocol Discriminator: ISIS (0x83)
    Length Indicator: 20
    Version/Protocol ID Extension: 1
    ID Length: 0
    000. .... = Reserved: 0x0
    ...1 0001 = PDU Type: P2P HELLO (17)
    Version: 1
    Reserved: 0
    Maximum Area Addresses: 0
ISIS HELLO
    .... ..11 = Circuit type: Level 1 and 2 (0x3)
    0000 00.. = Reserved: 0x00
    SystemID {Sender of PDU}: 0030.0300.3003
    Holding timer: 30
    PDU length: 1497
    Local circuit ID: 0
    Point-to-point Adjacency State (t=240, l=15)
        Type: 240
        Length: 15
        Adjacency State: Up (0)
        Extended Local circuit ID: 0x00000005
        Neighbor SystemID: 0040.0400.4004
        Neighbor Extended Local circuit ID: 0x00000004
上のtshark出力のパケット(No.2 Point-to-Point IIH)のpcapをダウンロード

ISO/IEC 10589:2002の9.7が定義する固定部は次のとおりで、LAN IIHとは最後の1フィールドだけが違います

フィールド長さLAN IIH(15 / 16)Point-to-Point IIH(17)
Reserved/Circuit Type1バイトありあり
Source IDID Lengthバイトありあり
Holding Time2バイトありあり
PDU Length2バイトありあり
Reserved/Priority1バイトありなし
LAN IDID Length + 1バイトありなし
Local Circuit ID1バイトなしあり。このルータが回線を作ったときに割り当てた1バイトの識別子

Length IndicatorがLAN IIHの27に対してP2P IIHは20で、差の7バイトがちょうどPriority(1バイト)とLAN ID(7バイト)を足してLocal Circuit ID(1バイト)を引いた値です。ポイントツーポイントリンクにはDISが要らないため、DISのための2つのフィールドが丸ごと無くなっています。DISが存在するかどうかが、そのままヘッダーの形の違いになっているわけです。

Circuit type0x3(レベル1と2の両方)ですが、実際にはR3とR4はエリアが違うためレベル2の隣接しか成立しません。Circuit typeは「自分が扱えるレベル」を宣言するもので、成立するレベルはエリアIDとの組み合わせで決まります(レベル1とレベル2を参照してください)。

キャプチャに現れるTLV 240(Point-to-Point Adjacency State)はISO/IEC 10589には無いTLVです。同規格のポイントツーポイント隣接は2ウェイハンドシェイクで、相手からIIHが届けば隣接を上げてしまい、「相手が自分を認識しているか」までは確かめません。これを3ウェイにする拡張がRFC 5303で、TLV 240はそこで定義されたものです。Neighbor SystemID: 0040.0400.4004が「私はあなた(R4)のIIHを受け取っています」を意味し、R4はこれを見て初めて隣接をUpにします。

ブロードキャストリンクでは、この役割をTLV 6(IS Neighbours)のMACアドレス一覧が果たします。リンク種別によって双方向性の確認方法が違う、というのがIIHを3種類に分けている理由のひとつです。

LSP(PDU Type 18 / 20)

LSPは自身のリンク状態を配布するパケットで、レベル1が18、レベル2が20です。

Level 1 LSP(PDU Type 18)

R1が自分のレベル1 LSPを送ったところです。

No.96 Level 1 LSP(R1 → AllL1ISs)tshark -V
ISO 10589 ISIS Link State Protocol Data Unit
    PDU length: 90
    Remaining lifetime: 1200
    LSP-ID: 0010.0100.1001.00-00
    Sequence number: 0x00000003
    Checksum: 0x2ad2 [correct]
    [Checksum Status: Good]
    Type block(0x01): Partition Repair:0, Attached bits:0, Overload bit:0, IS type:1
        0... .... = Partition Repair: Not supported
        .000 0... = Attachment: 0
            .0.. .... = Error metric: Not set
            ..0. .... = Expense metric: Not set
            ...0 .... = Delay metric: Not set
            0... .... = Default metric: Not set
        .... .0.. = Overload bit: Not set
        .... ..01 = Type of Intermediate System: Level 1 (1)
    Area address(es) (t=1, l=4)
        Type: 1
        Length: 4
        Area address (3): 49.0001
    Originating neighbor buffer size (t=14, l=2)
        Type: 14
        Length: 2
        Neighbor originating buffer size: 1492
    Protocols supported (t=129, l=1)
        Type: 129
        Length: 1
        NLPID: IP (0xcc)
    IP Interface address(es) (t=132, l=4)
        Type: 132
        Length: 4
        IPv4 interface address: 1.1.1.1
    Hostname (t=137, l=2)
        Type: 137
        Length: 2
        Hostname: R1
    IP Internal reachability (t=128, l=24)
        Type: 128
        Length: 24
        IPv4 prefix: 1.1.1.1/32
            ..00 0000 = Default Metric: 0
上のtshark出力のパケット(No.96 Level 1 LSP)のpcapをダウンロード

共通ヘッダーの後ろは、ISO/IEC 10589:2002の9.8で次のように定義されています。

フィールド長さこの出力での値内容
PDU Length2バイト90ヘッダーを含むPDU全体の長さ
Remaining Lifetime2バイト1200このLSPが期限切れとみなされるまでの秒数
LSP IDID Length + 2バイト0010.0100.1001.00-00Source ID(6バイト)+Pseudonode ID(1バイト)+LSP Number(1バイト)
Sequence Number4バイト0x00000003LSPのシーケンス番号
Checksum2バイト0x2ad2Source IDからLSPの末尾までの内容に対するチェックサム
P / ATT / LSPDBOL / IS Type1バイト0x01下の表のとおり4つの情報が1バイトに詰め込まれている

LSP IDの3つの部分がそのままshow isis databaseLSPID欄の表記になります。0010.0100.1001.00-00のうち、.00がPseudonode ID、-00がLSP Numberです。Pseudonode IDが00以外のLSPは疑似ノードのもので、この検証ではDISのR3が出す0030.0300.3003.01-00がそれにあたります。

最後の1バイトは、show isis databaseATT/P/OL欄に出る値の実体です。

ビット名称この出力での値意味
ビット8P0セットされていれば、このルータが分割修復(Partition Repair)のオプション機能に対応している
ビット7〜4ATT00004ビットあり、メトリックの種類ごとに1ビット割り当てられている。ビット4がDefault、ビット5がDelay、ビット6がExpense、ビット7がError。セットされていれば、そのメトリックで他エリアに到達できることを示す
ビット3LSPDBOL01ならLSDBがオーバーロード状態。このビットが立ったLSPの発信元は、他のISへの経路計算で経由地として使われない
ビット1〜2IS Type011=レベル1 IS、3=レベル2 IS。02は未使用

ATTが4ビットある点は、ATT/P/OLという表示や「ATTビット」という言い方からは読み取れません。上のtshark出力がAttachment: 0の下にError metric / Expense metric / Delay metric / Default metricの4つを展開しているのが、この定義がそのまま現れたものです。現在のIPネットワークではDefaultメトリックしか使われないため実質1ビットで、showが表示するATTもビット4のDefaultメトリック用のものです。

R1はlevel-1なのでIS typeLevel 1 (1)、他エリアへの出口を持たないのでATTはすべて0です。レベル1-2のR2・R3のレベル1 LSPではATTが立ちます(レベル1とレベル2を参照してください)。

TLVにはOriginating neighbor buffer size (t=14)が入っています。これはISO/IEC 10589:2002が定義するCODE 14(originatingLSPBufferSize)で、値の1492は同規格の表2にあるアーキテクチャ定数RecieveLSPBufferSize=1492と一致します。

Level 2 LSP(PDU Type 20)

R3が送ったレベル2のLSPです。

No.133 Level 2 LSP(R3 → AllL2ISs)tshark -V
ISO 10589 ISIS Link State Protocol Data Unit
    PDU length: 137
    Remaining lifetime: 1200
    LSP-ID: 0030.0300.3003.00-00
    Sequence number: 0x00000006
    Checksum: 0xb0ed [correct]
    [Checksum Status: Good]
    Type block(0x03): Partition Repair:0, Attached bits:0, Overload bit:0, IS type:3
        0... .... = Partition Repair: Not supported
        .000 0... = Attachment: 0
            .0.. .... = Error metric: Not set
            ..0. .... = Expense metric: Not set
            ...0 .... = Delay metric: Not set
            0... .... = Default metric: Not set
        .... .0.. = Overload bit: Not set
        .... ..11 = Type of Intermediate System: Level 2 (3)
    Area address(es) (t=1, l=4)
        Type: 1
        Length: 4
        Area address (3): 49.0001
    Hostname (t=137, l=2)
        Type: 137
        Length: 2
        Hostname: R3
    IP Internal reachability (t=128, l=60)
        Type: 128
        Length: 60
        IPv4 prefix: 1.1.1.1/32
            ..00 1010 = Default Metric: 10
上のtshark出力のパケット(No.133 Level 2 LSP)のpcapをダウンロード

ヘッダーのフォーマットはレベル1 LSPと同じです(ISO/IEC 10589:2002の9.9)。違うのはPDU Typeが20であることと、IS typeLevel 2 (3)になっていることです。R3はlevel-1-2なので、同じルータがレベル1 LSP(IS type = 1)とレベル2 LSP(IS type = 3)を別々に出していることになります。

ATTがすべて0なのは、レベル2 LSPではATTを使わないためです。ATTは「レベル1のエリアから見て、このルータが他エリアへの出口である」ことを伝えるビットなので、レベル1のLSPにしか意味がありません。

CSNP(PDU Type 24 / 25)

CSNPは、自分のLSDBに入っているLSPの一覧を相手に見せるパケットです。

Level 1 CSNP(PDU Type 24)

DISであるR3が、LANへ定期的に送っているレベル1のCSNPです。

No.4 Level 1 CSNP(R3 → AllL1ISs)tshark -V
ISO 10589 ISIS InTRA Domain Routeing Information Exchange Protocol
    Intradomain Routing Protocol Discriminator: ISIS (0x83)
    Length Indicator: 33
    Version/Protocol ID Extension: 1
    ID Length: 0
    000. .... = Reserved: 0x0
    ...1 1000 = PDU Type: L1 CSNP (24)
    Version: 1
    Reserved: 0
    Maximum Area Addresses: 0
ISO 10589 ISIS Complete Sequence Numbers Protocol Data Unit
    PDU length: 99
    Source-ID: 0030.0300.3003
    Source-ID-Circuit: 00
    Start LSP-ID: 0000.0000.0000.00-00
    End LSP-ID: ffff.ffff.ffff.ff-ff
    LSP entries (t=9, l=64)
        Type: 9
        Length: 64
        LSP Entry
            LSP Sequence Number: 0x00000005
            Remaining Lifetime: 1159
            LSP checksum: 0x26d4
        LSP-ID: 0010.0100.1001.00-00
        LSP Entry
            LSP Sequence Number: 0x00000006
            Remaining Lifetime: 1197
            LSP checksum: 0xae16
        LSP-ID: 0020.0200.2002.00-00
        LSP Entry
            LSP Sequence Number: 0x00000007
            Remaining Lifetime: 1197
            LSP checksum: 0xf7f7
        LSP-ID: 0030.0300.3003.00-00
        LSP Entry
            LSP Sequence Number: 0x00000005
            Remaining Lifetime: 1158
            LSP checksum: 0x0417
        LSP-ID: 0030.0300.3003.01-00
上のtshark出力のパケット(No.4 Level 1 CSNP)のpcapをダウンロード

CSNPの固定部は、ISO/IEC 10589:2002の9.10で次のように定義されています。

フィールド長さこの出力での値内容
PDU Length2バイト99ヘッダーを含むPDU全体の長さ
Source IDID Length + 1バイト0030.0300.3003 + 00このSNPを出したルータのSystem ID(末尾の1バイトは00
Start LSP IDID Length + 2バイト0000.0000.0000.00-00このCSNPが対象とする範囲の最初のLSP ID
End LSP IDID Length + 2バイトffff.ffff.ffff.ff-ffこのCSNPが対象とする範囲の最後のLSP ID

Start LSP-ID0000...End LSP-IDffff...で、取りうるLSP IDの全範囲を対象にしています。これが「Complete(完全)」の意味です。ISO/IEC 10589:2002の7.3.15は、1つのCSNPに入りきらないときは複数のCSNPに分けてよいが、それらの範囲は連続していて、取りうるLSP IDの全域を覆わなければならないとしています。そのうえで「範囲に含まれるはずのLSP IDがCSNPに載っていないことは、そのLSPについてまったく情報を持っていないことを意味する」と定めており、だからこそ受け取った側は「相手に無いLSP」を検出できます。

中身の一覧はTLV 9(LSP Entries)で運ばれ、1エントリはRemaining Lifetime(2バイト)・LSP ID(8バイト)・LSP Sequence Number(4バイト)・Checksum(2バイト)の16バイトです。4エントリ×16バイト=64バイトで、Length: 64と一致します。

エントリの並び順にも注目してください。0010.0100.1001.00-000020.0200.2002.00-000030.0300.3003.00-000030.0300.3003.01-00LSP IDの昇順になっています。ISO/IEC 10589:2002がそう定めているためで、受信側が差分を効率よく突き合わせられるようにするためです。

4つ目の0030.0300.3003.01-00疑似ノードLSPです。Pseudonode IDが01になっており、DISであるR3がこのLANを1つのノードとして表現するために出しているものです。ブロードキャストリンクがあるとLSDBにこの種類のLSPが増えます(詳細はDISと疑似ノードで解説します)。

Level 2 CSNP(PDU Type 25)

こちらはポイントツーポイントリンクで観測したレベル2のCSNPです。

No.12 Level 2 CSNP(R3 → R4)tshark -V
ISO 10589 ISIS Complete Sequence Numbers Protocol Data Unit
    PDU length: 51
    Source-ID: 0030.0300.3003
    Source-ID-Circuit: 00
    Start LSP-ID: 0000.0000.0000.00-00
    End LSP-ID: ffff.ffff.ffff.ff-ff
    LSP entries (t=9, l=16)
        Type: 9
        Length: 16
        LSP Entry
            LSP Sequence Number: 0x00000002
            Remaining Lifetime: 1200
上のtshark出力のパケット(No.12 Level 2 CSNP)のpcapをダウンロード

フォーマットはレベル1 CSNPと同じです。違うのは送られる頻度でした。

リンク種別CSNPの送信本記事のキャプチャでの観測数
ブロードキャストDISが定期的にマルチキャストする169秒で19回(約10秒間隔)
ポイントツーポイント隣接の確立時など必要なときだけ164秒で2回

ISO/IEC 10589:2002の7.3.15は「LANレベル1のDISはレベル1のCSNPの完全なセットをAllL1ISsへ、レベル2のDISはレベル2のCSNPをAllL2ISsへ、定期的にマルチキャストする」と定めています。送信間隔の既定値は同規格の管理パラメータcompleteSNPInterval=10秒で、観測した約10秒間隔と一致します。

ブロードキャストリンクではDISが「これがLSDBの全体だ」と言い続けることで同期を保ち、ポイントツーポイントリンクでは相手が1台しかいないので必要なときだけ交換する、という設計の違いです。

PSNP(PDU Type 26 / 27)

PSNPは、足りないLSPの要求と、受け取ったLSPの確認応答の両方に使われます。この2つの顔を、実際のキャプチャで並べて見ます。

Level 1 PSNP(PDU Type 26)— 要求としてのPSNP

STEP 2でR1だけを再起動したときに観測したものです。空のLSDBで起動したR1が、DISの送ってきたCSNPを見て「持っていないLSP」を要求しています。

No.67 Level 1 PSNP(R1 → AllL1ISs)tshark -V
ISO 10589 ISIS InTRA Domain Routeing Information Exchange Protocol
    Intradomain Routing Protocol Discriminator: ISIS (0x83)
    Length Indicator: 17
    Version/Protocol ID Extension: 1
    ID Length: 0
    000. .... = Reserved: 0x0
    ...1 1010 = PDU Type: L1 PSNP (26)
    Version: 1
    Reserved: 0
    Maximum Area Addresses: 0
ISO 10589 ISIS Partial Sequence Numbers Protocol Data Unit
    PDU length: 51
    Source-ID: 0010.0100.1001
    Source-ID-Circuit: 00
    LSP entries (t=9, l=32)
        Type: 9
        Length: 32
        LSP Entry
            LSP Sequence Number: 0x00000000
            Remaining Lifetime: 925
            LSP checksum: 0x0000
        LSP-ID: 0020.0200.2002.00-00
        LSP Entry
            LSP Sequence Number: 0x00000000
            Remaining Lifetime: 926
            LSP checksum: 0x0000
        LSP-ID: 0030.0300.3003.00-00
上のtshark出力のパケット(No.67 Level 1 PSNP)のpcapをダウンロード

LSP Sequence NumberLSP checksumがどちらも0になっている点が決定的です。これは「このLSP IDについて、私は何も持っていない」という意味で、受け取ったR2とR3は自分のLSPを送り返します。要求としてのPSNPの姿です。

Level 2 PSNP(PDU Type 27)— 確認応答としてのPSNP

同じPSNPでも、こちらはポイントツーポイントリンクでR3がR4のLSPを受け取ったことを知らせているものです。

No.14 Level 2 PSNP(R3 → R4)tshark -V
ISO 10589 ISIS Partial Sequence Numbers Protocol Data Unit
    PDU length: 35
    Source-ID: 0030.0300.3003
    Source-ID-Circuit: 00
    LSP entries (t=9, l=16)
        Type: 9
        Length: 16
        LSP Entry
            LSP Sequence Number: 0x00000001
            Remaining Lifetime: 1200
            LSP checksum: 0x6e56
        LSP-ID: 0040.0400.4004.00-00
上のtshark出力のパケット(No.14 Level 2 PSNP)のpcapをダウンロード

今度はLSP Sequence Number: 0x00000001LSP checksum: 0x6e56実際の値が入っています。「あなたが送ってきたこのシーケンス番号・このチェックサムのLSPを、確かに受け取りました」という確認応答です。

同じPDU Type、同じTLV 9でありながら、載っている値が0かどうかで意味が変わるわけです。これがIS-ISで「PSNPはOSPFのLSRとLSAckの両方を兼ねる」と言われる理由です。

CSNPとPSNPのヘッダーの違い

PSNPの固定部(ISO/IEC 10589:2002 9.12)は、CSNPから範囲指定の2フィールドを取り除いただけの形です。

フィールドCSNP(24 / 25)PSNP(26 / 27)
PDU Lengthありあり
Source IDありあり
Start LSP IDありなし
End LSP IDありなし
TLV 9(LSP Entries)ありあり
Length Indicatorの値3317

差の16バイトがStart LSP IDEnd LSP ID(8バイト×2)です。範囲を示すフィールドが無いことが、そのまま「部分的(Partial)」の意味になっています。CSNPは「この範囲について自分が持っているのはこれで全部」と宣言するので、載っていないLSP IDは「持っていない」ことを意味します。対してPSNPは範囲を宣言しないため、そこに並んでいるLSPについてだけ述べていることになります。同じTLV 9を使いながらCSNPとPSNPで意味が変わるのは、この1点の違いによるものです。

IIHのパディング

IIHには、フレームを大きく埋めるパディング(TLV 8)が付きます。リンクの両端でMTUが食い違っている場合に隣接を成立させないための仕組みで、OSPFがDBDのMTUフィールドで行っているチェックに相当します。

ISO/IEC 10589:2002の規定は具体的で、8.2.3(ポイントツーポイント)と8.4.2(ブロードキャスト)が、IIHをmaxsize − 1バイト以上になるまでパディングすると定めています。maxsizeは次の値の最大値です。

内容
dataLinkBlocksizeその回線で送れるブロックの大きさ(=実質的にMTU)
originatingL1LSPBufferSize自分が出すレベル1 LSPの最大サイズ。既定値はRecieveLSPBufferSize1492
originatingL2LSPBufferSize同じくレベル2 LSPの最大サイズ(ポイントツーポイントのみ)

maxsizeちょうど」ではなく「maxsize − 1以上」なのは、同規格が注記しているとおり、可能ならばmaxsizeまで埋めるが、PDU長がすでにmaxsize − 1ならパディングの余地が無く、その必要も無いためです(TLVはCODEとLENGTHで最低2バイトを要するので、残り1バイトには何も入れられません)。

両端で同時に無効にすれば隣接は落ちません。パディングはMTUの一致を確かめるための仕組みであって、隣接の成立条件そのものではないためです。落ちるのは片側だけで無効にしてMTUが食い違っている場合で、その動作は隣接関係の確立と状態遷移で解説しています。

STEP 3では、LAN側の3台すべてにhello-padding disableを投入して前後を比べました。

STEP 3:パディングを無効にする設定(R1・R2・R3)
router isis 1
 interface GigabitEthernet0/0/0/0
  hello-padding disable

IOS XRのhello-paddingには4つの選択肢があります。

hello-padding のオプション(XRd 26.1.1)
RP/0/RP0/CPU0:R1(config-isis-if)#hello-padding ?
  adaptive   Enable hello-padding till neighbor confirms adjacency up
  always     Always enable hello-padding
  disable    Disable hello-padding
  sometimes  Enable hello-padding during adjacency formation only

投入前のIIHは、フレーム長1514バイト(PDU長1497バイト)でした。

STEP 3以前:パディングありのIIH(tshark -V 抜粋)
Frame 1: 1514 bytes on wire (12112 bits), 1514 bytes captured (12112 bits)
    PDU length: 1497
    Padding (t=8, l=255)
        Type: 8
        Length: 255
上のtshark出力のパケット(No.5 パディングありのIIH)のpcapをダウンロード

このパケットにはPadding (t=8)が6個入っていました。l=255が5個とl=149が1個で、TLVヘッダー2バイトずつを加えると(255+2)×5 + (149+2) = 1436バイトです。

投入後は同じIIHが78バイトまで縮みます。

STEP 3:パディングを無効にしたIIH(tshark -V 抜粋)
Frame 1: 78 bytes on wire (624 bits), 78 bytes captured (624 bits)
ISIS HELLO
    .... ..01 = Circuit type: Level 1 only (0x1)
    SystemID {Sender of PDU}: 0010.0100.1001
    Holding timer: 30
    PDU length: 61
    .100 0000 = Priority: 64
    SystemID {Designated IS}: 0030.0300.3003.01
    Protocols Supported (t=129, l=1)
    Restart Signaling (t=211, l=3)
    Area address(es) (t=1, l=4)
    IP Interface address(es) (t=132, l=4)
    IS Neighbor(s) (t=6, l=12)
上のtshark出力のパケット(No.16 パディングを無効にしたIIH)のpcapをダウンロード

PDU長が1497バイトから61バイトになりました。差の1436バイトがちょうど上で数えたパディングの量と一致します。Padding (t=8)が消えただけで、残りのTLVは同じです。

キャプチャ全体でIIHのフレーム長を数えると、設定投入の前後で分布がはっきり分かれます。

IIHのフレーム長パケット数状態
1514バイト32パディングあり(STEP 3の設定投入前)
78バイト80パディングなしのレベル1 IIH
72バイト66パディングなしのレベル2 IIH

レベル1のIIHが6バイト長いのは、TLV 6(IS Neighbours)にLAN上の隣接ルータのMACアドレスが載るためです。この検証ではレベル1の隣接が2つ、レベル2の隣接が1つあり、その差の1つ分(6バイト)がそのまま出ています。

3台すべてで同時に無効化したため、前半で述べたとおり隣接は落ちていません。パディングを止めると帯域は節約できます(1514バイト×3台が72〜78バイトになる)が、リンクの両端でMTUが食い違っていても隣接が成立してしまうというトレードオフがあります。IIHは通るのにLSPだけが落ちる、という発見しにくい故障につながるため、片側だけで無効にするのは避けるべきです。

検証Configおよびshow結果

各STEPで4台すべてから、次の3種類をルータごとに分けて取得しています。検証Configはこの..._run.txtです(最終状態はSTEP 4のもの)。

ファイル内容
..._show.txtshow version / show interface description / show route / show route isis / show isis / show isis hostname / show isis interface / show isis interface brief / show isis neighbors / show isis neighbors detail / show isis database / show isis database detail / show isis topology / show isis adjacency / show isis adjacency detail / show isis spf-log / show isis lsp-log / show isis statistics / show cef
..._log.txtそのSTEPの範囲だけに絞ったshow logging(STEP 0のみ起動時からの全履歴)
..._run.txtそのSTEP時点のshow running-config(=そのSTEPの検証Config)

最終状態のConfigは、LAN側の3台(R1・R2・R3)のGi0/0/0/0point-to-pointを書かず、R3–R4間のGi0/0/0/1Gi0/0/0/0にだけpoint-to-pointを書いたものです。hello-padding disableはSTEP 4で外してあります。

STEP 0:初期状態

ルータshow出力syslogrunning-config
R1showlogrun
R2showlogrun
R3showlogrun
R4showlogrun

STEP 1:4台同時にprocess restart isis

ルータshow出力syslogrunning-config
R1showlogrun
R2showlogrun
R3showlogrun
R4showlogrun

STEP 2:R1だけprocess restart isis

ルータshow出力syslogrunning-config
R1showlogrun
R2showlogrun
R3showlogrun
R4showlogrun

STEP 3:LAN側の3台にhello-padding disableを投入

ルータshow出力syslogrunning-config
R1showlogrun
R2showlogrun
R3showlogrun
R4showlogrun

STEP 4:hello-paddingを元に戻す(最終状態)

ルータshow出力syslogrunning-config
R1showlogrun
R2showlogrun
R3showlogrun
R4showlogrun

キャプチャーファイルは次の4本です。

LANセグメントのキャプチャー(isis-packet-lan.pcap) をダウンロード

R3–R4リンクのキャプチャー(isis-packet-p2p.pcap) をダウンロード

R1のみ再起動時(STEP 2)のキャプチャー(isis-packet-lan-resync.pcap) をダウンロード

パディング無効化時(STEP 3)のキャプチャー(isis-packet-padding.pcap) をダウンロード

参考

標準タイトル概要
ISO/IEC 10589:2002(第2版)Intermediate System to Intermediate System intra-domain routeing information exchange protocolIS-IS本体の仕様。本記事が参照したのは、PDUの種類を列挙する9.4、各PDUのフォーマットを定義する9.5〜9.13、一般的な符号化規則の9.1、アーキテクチャ定数の表2表9、パディングを規定する8.2.3 / 8.4.2、DISの選出を規定する8.4.5、CSNPの範囲を規定する7.3.15、管理パラメータの既定値を定める11.3
RFC 1142OSI IS-IS Intra-domain Routing ProtocolISO 10589のDraft Proposal(1990年)を再公開したもの。現在はHistoric。ISO/IEC 10589の代わりに参照してはいけません(RFC 7142)。
RFC 7142Reclassification of RFC 1142 to HistoricRFC 1142をHistoricへ再分類した文書。参照すべきはISO/IEC 10589:2002 第2版であることを述べている。
RFC 1195Use of OSI IS-IS for Routing in TCP/IP and Dual EnvironmentsIPの経路を運ぶためのTLV(128 / 129 / 132など)を追加した拡張。
RFC 5301Dynamic Hostname Exchange Mechanism for IS-ISSystem IDにホスト名を対応づけるTLV 137。
RFC 5303Three-Way Handshake for IS-IS Point-to-Point AdjacenciesポイントツーポイントIIHに載るTLV 240を定義。ISO/IEC 10589のポイントツーポイント隣接は2ウェイであり、このTLVは規格本体には無い。
RFC 5306Restart Signaling for IS-ISグレースフルリスタート用のTLV 211。
RFC 5308Routing IPv6 with IS-ISIPv6の経路を運ぶためのTLV。TLVの追加だけで拡張できる例。
ISO/TR 9577Protocol identification in the network layer共通ヘッダー先頭の0x83(ネットワーク層プロトコル識別子)の割り当て元。原典は参照していません(ISO/IEC 10589:2002の表2の記載によります)。

関連記事