IS-ISのLSPとリンクステートデータベース
IS-ISの各ルータは、自分の隣接とプレフィックスをLSP(Link State PDU)にまとめてドメイン全体に配ります。全ルータのLSPを集めたものがリンクステートデータベース(LSDB)で、経路計算はこれだけを材料に行われます。
この記事では、LSPの一生(生成・周期更新・分割・新旧判定・失効・パージ)をISO/IEC 10589:2002の規定で確認し、IOS XRの実機とキャプチャーで裏づけます。LSPヘッダーの各フィールドはIS-ISパケットの種類とヘッダーフォーマットで解説しています。
LSP IDの3つの要素
LSP IDは8バイトで、show isis databaseではSystem IDがホスト名に置き換わってR2.00-00のように表示されます。
| 要素 | 意味 |
|---|---|
| System ID(6バイト) | 発信元のルータ。NETの0020.0200.2002の部分 |
| Pseudonode ID(1バイト) | 00ならルータ自身のLSP。01以上はDISが疑似ノードのために作るLSP(DISと疑似ノード) |
| LSP Number(1バイト) | 1つに収まらないときの分割番号。00から始まる |
1つに収まらないときはLSP Numberを変えて分割する
LSP 1つの上限は、受信側が表2のReceiveLSPBufferSize=1492バイト、生成側が管理パラメータoriginatingL1LSPBufferSize / originatingL2LSPBufferSize(7.3.4.2)です。IOS XRではこれがlsp-mtu(既定1492)です。
収まらないときは、同じSystem IDでLSP Numberだけを変えた複数のLSPに分けます(7.3.4.1)。各LSPは別々に配られ、別々に寿命を持ち、決定プロセスだけが同じ発信元のものとしてまとめて読みます。
ただしLSP Number 0だけは特別です。7.3.4.3は次の4つを「LSP Number 0に載っているときだけ意味がある」と定め、エリアアドレスは0番以外に置いてはならないとしています。
- LSP Database Overloadビット(OL)
- IS Typeフィールド
- エリアアドレス
- Attachedフラグ(ATT)
隣接やプレフィックスはどの番号に載ってもかまいません。
自分のlsp-mtuはTLV 14(LSP Buffer Size、9.8)で相手に伝えます。IOS XRのshow isis database detailのLSP MTU:がこの値で、隣接と一致しないと%ROUTING-ISIS-4-LSP_MTU_MISMATCHを記録します。7.3.4.2のNOTE 24は「一貫して設定しなければ一部の隣接が初期化に失敗する」と述べており、本来はそろえる値です。
LSPの一生
生成と再生成
起動時に自分のLSPをシーケンス番号1から作り(7.3.16.1)、隣接のUp/Downなど内容が変わるたびに番号を1つ進めて作り直します(7.3.6)。生成時のRemaining Lifetime(残り寿命)はMaxAge=1200秒です(7.3.16.3、表2)。
内容が変わらなくても、maximumLSPGenerationInterval(既定900秒)ごとに作り直します。このときも番号は進みます(7.3.5)。IOS XRではlsp-refresh-interval(900秒)とmax-lsp-lifetime(1200秒)が対応します。7.3.21は「MaxAgeはmaximumLSPGenerationIntervalより大きくなければならない」と定めており、残り寿命が0になる前に必ず新版が届く関係になっています。実際の周期は10.1のジッタ(25%)で短くなります。
受け取った側は新旧をどう判定するか
同じLSP IDのLSPを受け取ったときの規則です(7.3.16)。
- シーケンス番号が大きいほうが新しい(7.3.16.1)
- 番号が同じで片方の残り寿命が0なら、0のほう(パージ)が新しい(7.3.16.3)
- 番号が同じでチェックサムが違う(LSP confusion)なら、受信側は失効したものとして扱い、発信元は番号を進めて出し直す(7.3.16.2)
再起動したルータは番号1から始めますが、ドメインには再起動前の自分のLSP(もっと大きい番号)が残っています。7.3.16.1は「自分より大きい番号の自分のLSPを受け取ったら、その番号の次の値で作り直す」と定めており、これで古いコピーが置き換わります。
失効とパージ
残り寿命は保持している各ルータが減らし続け(7.3.16.3)、発信元が消えると0になります。0になったLSPの扱いは7.3.16.4のとおりです。
- a) 全回線にSRMフラグを立てる(=寿命0のLSPをフラッディングする)
- b) ヘッダーだけを残す
- c)
ZeroAgeLifetime(60秒、表2)が経ったらヘッダーも消す
これがパージで、送るのは発信元ではなく寿命0を検出したルータです。RFC 6232は、パージ元のSystem IDを載せるTLV 13(Purge Originator Identification)を定義しています。
届いたことをどう確認するか
ポイントツーポイント回線では、受け取った側がPSNPで応答します(7.3.17)。応答が来るまで、送った側はminimumLSPTransmissionInterval(5秒)ごとに同じLSPを送り直します(7.3.15.5)。
CSNPはデータベース全体の目次で、受け取った側は相手に無いLSPや相手より新しいLSPを送ります(7.3.15.2)。IOS XRは隣接がUpになったときにポイントツーポイント回線でもCSNPを送るので、再起動直後の同期はこれで進みます。
IOS XRでの設定
RP/0/RP0/CPU0:R1(config-isis)# max-lsp-lifetime ?
<1-65535> Maximum LSP lifetime in seconds, default is 1200
RP/0/RP0/CPU0:R1(config-isis)# lsp-refresh-interval ?
<1-65535> LSP refresh time in seconds, default is 900
RP/0/RP0/CPU0:R1(config-isis)# lsp-mtu ?
<128-8979> Max LSP size in bytes, default is 1492
RP/0/RP0/CPU0:R1(config-isis)# lsp-gen-interval ?
initial-wait Initial delay before generating an LSP in milliseconds, default is 50
secondary-wait Secondary delay before generating an LSP in milliseconds, default is 200
maximum-wait Maximum delay before generating an LSP in milliseconds, default is 5000| コマンド | 規格上の対応 | 既定 |
|---|---|---|
max-lsp-lifetime | MaxAge(生成時の残り寿命) | 1200秒 |
lsp-refresh-interval | maximumLSPGenerationInterval(周期再生成) | 900秒 |
lsp-mtu | originatingL1LSPBufferSize / originatingL2LSPBufferSize | 1492バイト |
lsp-gen-interval | minimumLSPGenerationInterval(再生成のホールドダウン) | 50 / 200 / 5000ミリ秒 |
実機での検証
検証環境
R1 — R2 — R3を直列にし、全台をエリア49.0001のlevel-2-only、全リンクをpoint-to-pointにします。キャプチャーはR1 — R2間で取ります。
| ルータ | NET | Lo0 | リンク |
|---|---|---|---|
| R1 | 49.0001.0010.0100.1001.00 | 1.1.1.1/32 | Gi0/0/0/0 10.1.2.1 |
| R2 | 49.0001.0020.0200.2002.00 | 2.2.2.2/32 | Gi0/0/0/0 10.1.2.2 / Gi0/0/0/1 10.2.3.2 |
| R3 | 49.0001.0030.0300.3003.00 | 3.3.3.3/32 | Gi0/0/0/0 10.2.3.3 |
検証のSTEP
| STEP | 操作 | 狙い |
|---|---|---|
| 0 | 既定のまま | LSP ID・シーケンス番号・残り寿命の基準 |
| 1 | 全台をmax-lsp-lifetime 120 / lsp-refresh-interval 60に | 周期再生成を短時間で観測する |
| 2 | 全台をlsp-mtu 300にし、R2にLoopbackを40個追加 | 分割と、0番にしか載らない情報 |
| 3 | R2のIS-ISプロセスを再起動 | 再起動後のシーケンス番号の付け直し |
| 4 | R3のリンクをshutdown | 失効とパージ |
| 5 | すべて元に戻す(最終状態) | STEP 0と同じ |
STEP 1〜4のあいだ、寿命と周期は120秒 / 60秒に短縮したままです。
既定の状態(STEP 0)
RP/0/RP0/CPU0:R1#show isis database detail
Thu Sep 10 00:19:12.100 UTC
IS-IS 1 (Level-2) Link State Database
LSPID LSP Seq Num LSP Checksum LSP Holdtime/Rcvd ATT/P/OL
R1.00-00 * 0x00000009 0x27ee 1102 /* 0/0/0
Area Address: 49.0001
LSP MTU: 1492
NLPID: 0xcc
IP Address: 1.1.1.1
Hostname: R1
Metric: 0 IP 1.1.1.1/32
Metric: 10 IP 10.1.2.0/24
Metric: 10 IS R2.00
R2.00-00 0x00000008 0xdb8e 1136 /1200 0/0/0
Area Address: 49.0001
LSP MTU: 1492
NLPID: 0xcc
IP Address: 2.2.2.2
Hostname: R2
Metric: 0 IP 2.2.2.2/32
Metric: 10 IP 10.1.2.0/24
Metric: 10 IP 10.2.3.0/24
Metric: 10 IS R1.00
Metric: 10 IS R3.00
R3.00-00 0x00000008 0x833b 1130 /1200 0/0/0
Area Address: 49.0001
LSP MTU: 1492
NLPID: 0xcc
IP Address: 3.3.3.3
Hostname: R3
Metric: 0 IP 3.3.3.3/32
Metric: 10 IP 10.2.3.0/24
Metric: 10 IS R2.00
Total Level-2 LSP count: 3 Local Level-2 LSP count: 1LSP Holdtime/Rcvdは「残り寿命 / 受け取ったときの残り寿命」で、他ルータのLSPは1200から減っています。LSP MTU: 1492がTLV 14の値で、エリアアドレス・ホスト名・プレフィックス・隣接はすべてLSP Number 0に載っています。
周期再生成を短くして観測する(STEP 1)
全台に次を入れます。
router isis 1
is-type level-2-only
net 49.0001.0010.0100.1001.00
log adjacency changes
lsp-refresh-interval 60
max-lsp-lifetime 120
address-family ipv4 unicast
!
interface Loopback0
passive
address-family ipv4 unicast
!
!
interface GigabitEthernet0/0/0/0
point-to-point
address-family ipv4 unicast
!
!
!RP/0/RP0/CPU0:R1#show isis database
Thu Sep 10 00:26:02.022 UTC
IS-IS 1 (Level-2) Link State Database
LSPID LSP Seq Num LSP Checksum LSP Holdtime/Rcvd ATT/P/OL
R1.00-00 * 0x00000010 0x19f5 84 /* 0/0/0
R2.00-00 0x0000000f 0xcd95 111 /120 0/0/0
R3.00-00 0x0000000f 0x7542 101 /120 0/0/0
Total Level-2 LSP count: 3 Local Level-2 LSP count: 1Rcvdが120になりました。周期再生成はキャプチャーで見ます。
5 12.763427000 52:54:00:04:48:22 L2 LSP, LSP-ID: 0010.0100.1001.00-00, Sequence: 0x0000000a, Lifetime: 120s
9 24.906175000 52:54:00:37:ed:c9 L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x00000009, Lifetime: 120s
15 36.921958000 52:54:00:37:ed:c9 L2 LSP, LSP-ID: 0030.0300.3003.00-00, Sequence: 0x00000009, Lifetime: 120s
24 64.707754000 52:54:00:04:48:22 L2 LSP, LSP-ID: 0010.0100.1001.00-00, Sequence: 0x0000000b, Lifetime: 120s
30 82.683185000 52:54:00:37:ed:c9 L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x0000000a, Lifetime: 120s
32 85.780073000 52:54:00:37:ed:c9 L2 LSP, LSP-ID: 0030.0300.3003.00-00, Sequence: 0x0000000a, Lifetime: 120s
41 114.783032000 52:54:00:04:48:22 L2 LSP, LSP-ID: 0010.0100.1001.00-00, Sequence: 0x0000000c, Lifetime: 120s
48 134.674146000 52:54:00:37:ed:c9 L2 LSP, LSP-ID: 0030.0300.3003.00-00, Sequence: 0x0000000b, Lifetime: 120s
51 138.134809000 52:54:00:37:ed:c9 L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x0000000b, Lifetime: 120s
59 166.219193000 52:54:00:04:48:22 L2 LSP, LSP-ID: 0010.0100.1001.00-00, Sequence: 0x0000000d, Lifetime: 120sR1のLSP(0010.0100.1001.00-00)はNo.5、24、41、59と約50〜52秒ごとに流れ、そのたびにシーケンス番号が0x0aから1つずつ進み、残り寿命は120に戻っています。lsp-refresh-interval 60にジッタが掛かった間隔です。
ISO 10589 ISIS Link State Protocol Data Unit
PDU length: 90
Remaining lifetime: 120
LSP-ID: 0010.0100.1001.00-00
Sequence number: 0x0000000b
Checksum: 0x23f0 [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)R2はこれをPSNPで応答します。
ISO 10589 ISIS Partial Sequence Numbers Protocol Data Unit
PDU length: 35
Source-ID: 0020.0200.2002
Source-ID-Circuit: 00
LSP entries (t=9, l=16)
Type: 9
Length: 16
LSP Entry
LSP Sequence Number: 0x0000000b
Remaining Lifetime: 119
LSP checksum: 0x23f0
LSP-ID: 0010.0100.1001.00-00受け取ったLSPのシーケンス番号・残り寿命・チェックサムが入っています(7.3.17)。このキャプチャーではすべてのLSPが0.5秒以内に応答されており、7.3.15.5の再送は起きていません。
LSPを分割させる(STEP 2)
3台すべてをlsp-mtu 300にし、R2に172.16.1.1/32〜172.16.40.1/32のLoopbackを40個追加してIS-ISに入れます。
R2.00-00 0x00000013 0x7815 119 /120 0/0/0
Area Address: 49.0001
LSP MTU: 300
NLPID: 0xcc
IP Address: 2.2.2.2
Hostname: R2
Metric: 0 IP 2.2.2.2/32
Metric: 10 IP 10.1.2.0/24
Metric: 10 IP 10.2.3.0/24
Metric: 0 IP 172.16.1.1/32
Metric: 0 IP 172.16.2.1/32
Metric: 0 IP 172.16.3.1/32
Metric: 0 IP 172.16.4.1/32
Metric: 0 IP 172.16.5.1/32
Metric: 0 IP 172.16.6.1/32
Metric: 0 IP 172.16.7.1/32
Metric: 0 IP 172.16.8.1/32
Metric: 0 IP 172.16.9.1/32
Metric: 0 IP 172.16.10.1/32
Metric: 0 IP 172.16.11.1/32
Metric: 10 IS R1.00
Metric: 10 IS R3.00
R2.00-01 0x00000004 0x51e4 119 /120 0/0/0
Metric: 0 IP 172.16.12.1/32
Metric: 0 IP 172.16.13.1/32
Metric: 0 IP 172.16.14.1/32
Metric: 0 IP 172.16.15.1/32
Metric: 0 IP 172.16.16.1/32
Metric: 0 IP 172.16.17.1/32
Metric: 0 IP 172.16.18.1/32
Metric: 0 IP 172.16.19.1/32
Metric: 0 IP 172.16.20.1/32
Metric: 0 IP 172.16.21.1/32
Metric: 0 IP 172.16.22.1/32
Metric: 0 IP 172.16.23.1/32
Metric: 0 IP 172.16.24.1/32
Metric: 0 IP 172.16.25.1/32
Metric: 0 IP 172.16.26.1/32
Metric: 0 IP 172.16.27.1/32
Metric: 0 IP 172.16.28.1/32
Metric: 0 IP 172.16.29.1/32
Metric: 0 IP 172.16.30.1/32
Metric: 0 IP 172.16.31.1/32
Metric: 0 IP 172.16.32.1/32
R2.00-02 0x00000002 0x258f 73 /120 0/0/0
Metric: 0 IP 172.16.33.1/32
Metric: 0 IP 172.16.34.1/32
Metric: 0 IP 172.16.35.1/32
Metric: 0 IP 172.16.36.1/32
Metric: 0 IP 172.16.37.1/32
Metric: 0 IP 172.16.38.1/32
Metric: 0 IP 172.16.39.1/32
Metric: 0 IP 172.16.40.1/32R2のLSPがR2.00-00・R2.00-01・R2.00-02の3つになりました。新しく作られた01と02は番号1から始まるため(7.3.6)、00より番号が小さくなっています。エリアアドレス・LSP MTU・NLPID・ホスト名はR2.00-00にしかなく、プレフィックスと隣接は3つに分かれています。ホスト名のTLV 137はRFC 5301上どのLSPに載せてもよいものですが、IOS XRは0番に置いています。
3台に順番に入れたため、全台に入り終わるまでの十数秒だけlsp-mtuの不一致がログに残っています。そろった後は出ていません。
RP/0/RP0/CPU0:Sep 10 00:27:00.330 UTC: isis[1003]: %ROUTING-ISIS-4-LSP_MTU_MISMATCH : ISIS (1): The Level-2 LSP MTU on R1 (300) does not match ours (1492)
RP/0/RP0/CPU0:Sep 10 00:27:11.515 UTC: isis[1003]: %ROUTING-ISIS-4-LSP_MTU_MISMATCH : ISIS (1): The Level-2 LSP MTU on R3 (300) does not match ours (1492) IS-ISプロセスを再起動する(STEP 3)
R2でprocess restart isisを実行します。キャプチャーはR1 — R2間とR2 — R3間の両方で取ります。
RP/0/RP0/CPU0:Sep 10 00:31:01.841 UTC: sysmgr_control[68720]: %OS-SYSMGR-4-PROC_RESTART_NAME : User cisco (con0_RP0_CPU0) requested a restart of process isis at 0/RP0/CPU0
RP/0/RP0/CPU0:Sep 10 00:31:03.105 UTC: isis[1003]: %ROUTING-ISIS-5-PM_HA_ROLE_CHG : ISIS (1): ISIS HA role change: Active
RP/0/RP0/CPU0:Sep 10 00:31:03.106 UTC: isis[1003]: %ROUTING-ISIS-5-PM_ISSU_ROLE_CHG : ISIS (1): ISIS ISSU role change: Primary
RP/0/RP0/CPU0:Sep 10 00:31:04.508 UTC: isis[1003]: %ROUTING-ISIS-6-INFO_STARTUP_START : ISIS (1): Cold controlled start beginning
RP/0/RP0/CPU0:Sep 10 00:31:14.284 UTC: isis[1003]: %ROUTING-ISIS-5-ADJCHANGE : ISIS (1): Adjacency to 49.0001.0010.0100.1001 (GigabitEthernet0/0/0/0) (L2) Up, New adjacency
RP/0/RP0/CPU0:Sep 10 00:31:14.939 UTC: isis[1003]: %ROUTING-ISIS-5-ADJCHANGE : ISIS (1): Adjacency to R3 (GigabitEthernet0/0/0/1) (L2) Up, New adjacency
RP/0/RP0/CPU0:Sep 10 00:31:16.897 UTC: isis[1003]: %ROUTING-ISIS-6-INFO_STARTUP_FINISH : ISIS (1): Cold controlled start completed 20 44.051592000 52:54:00:37:ed:c9 L2 CSNP, Source-ID: 0020.0200.2002.00, Start LSP-ID: 0000.0000.0000.00-00, End LSP-ID: ffff.ffff.ffff.ff-ff
21 44.054704000 52:54:00:04:48:22 L2 LSP, LSP-ID: 0010.0100.1001.00-00, Sequence: 0x00000017, Lifetime: 119s
22 44.054937000 52:54:00:04:48:22 L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x00000014, Lifetime: 65s
23 44.055037000 52:54:00:04:48:22 L2 LSP, LSP-ID: 0020.0200.2002.00-01, Sequence: 0x00000005, Lifetime: 60s
24 44.055138000 52:54:00:04:48:22 L2 LSP, LSP-ID: 0020.0200.2002.00-02, Sequence: 0x00000004, Lifetime: 79s
25 44.055228000 52:54:00:04:48:22 L2 LSP, LSP-ID: 0030.0300.3003.00-00, Sequence: 0x00000015, Lifetime: 102s
26 44.558208000 52:54:00:37:ed:c9 L2 PSNP, Source-ID: 0020.0200.2002.00
27 45.051568000 52:54:00:37:ed:c9 L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x00000015, Lifetime: 120s
28 45.051825000 52:54:00:37:ed:c9 L2 LSP, LSP-ID: 0020.0200.2002.00-01, Sequence: 0x00000006, Lifetime: 120s
29 45.051973000 52:54:00:37:ed:c9 L2 LSP, LSP-ID: 0020.0200.2002.00-02, Sequence: 0x00000006, Lifetime: 120s
30 45.052076000 52:54:00:37:ed:c9 L2 LSP, LSP-ID: 0030.0300.3003.00-00, Sequence: 0x00000016, Lifetime: 120s| No. | 送信 | 内容 |
|---|---|---|
| 20 | R2 → R1 | 再起動したR2がCSNPを送る |
| 21〜25 | R1 → R2 | R1がCSNPに無いLSPを送る。この中に再起動前のR2自身のLSP(R2.00-00の0x14、01の0x05、02の0x04)が含まれる |
| 26 | R2 → R1 | R2がPSNPで応答 |
| 27〜29 | R2 → R1 | R2が自分のLSPを 0x15・0x06・0x06 で出し直す |
R2は再起動後に番号1から始めましたが、R1から届いた古い自分のLSPの番号(0x14)の次の0x15で作り直しています(7.3.16.1)。付け直したLSPはR2 — R3間にも同時に流れています(isis-lsp-restart-r2r3.pcapのNo.17〜20)。
ISO 10589 ISIS Link State Protocol Data Unit
PDU length: 245
Remaining lifetime: 65
LSP-ID: 0020.0200.2002.00-00
Sequence number: 0x00000014
Checksum: 0x7616 [correct]
[Checksum Status: Good]
Type block(0x03): Partition Repair:0, Attached bits:0, Overload bit:0, IS type:3ISO 10589 ISIS Link State Protocol Data Unit
PDU length: 244
Remaining lifetime: 120
LSP-ID: 0020.0200.2002.00-00
Sequence number: 0x00000015
Checksum: 0x127e [correct]
[Checksum Status: Good]
Type block(0x07): Partition Repair:0, Attached bits:0, Overload bit:1, 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
.... .1.. = Overload bit: Set
.... ..11 = Type of Intermediate System: Level 2 (3)No.27ではOverloadビットが1です。IOS XRは再起動直後の自分のLSPにOLビットを立て、収束後に下ろします。OLビットは別記事で解説します。
R2.00-00 0x00000018 0x0889 85 /120 0/0/0
Area Address: 49.0001
LSP MTU: 300
NLPID: 0xcc
IP Address: 2.2.2.2
Hostname: R2
Metric: 0 IP 2.2.2.2/32
Metric: 10 IP 10.1.2.0/24
Metric: 10 IP 10.2.3.0/24
Metric: 0 IP 172.16.1.1/32
Metric: 0 IP 172.16.2.1/32
Metric: 0 IP 172.16.3.1/32
Metric: 0 IP 172.16.4.1/32
Metric: 0 IP 172.16.5.1/32
Metric: 0 IP 172.16.6.1/32
Metric: 0 IP 172.16.7.1/32
Metric: 0 IP 172.16.8.1/32
Metric: 0 IP 172.16.9.1/32
Metric: 0 IP 172.16.10.1/32
Metric: 0 IP 172.16.11.1/32
Metric: 0 IP 172.16.12.1/32
Metric: 0 IP 172.16.13.1/32
R2.00-01 0x00000008 0xb255 96 /120 0/0/0
Metric: 0 IP 172.16.14.1/32
Metric: 0 IP 172.16.15.1/32
Metric: 0 IP 172.16.16.1/32
Metric: 0 IP 172.16.17.1/32
Metric: 0 IP 172.16.18.1/32
Metric: 0 IP 172.16.19.1/32
Metric: 0 IP 172.16.20.1/32
Metric: 0 IP 172.16.21.1/32
Metric: 0 IP 172.16.22.1/32
Metric: 0 IP 172.16.23.1/32
Metric: 0 IP 172.16.24.1/32
Metric: 0 IP 172.16.25.1/32
Metric: 0 IP 172.16.26.1/32
Metric: 0 IP 172.16.27.1/32
Metric: 0 IP 172.16.28.1/32
Metric: 0 IP 172.16.29.1/32
Metric: 0 IP 172.16.30.1/32
Metric: 0 IP 172.16.31.1/32
Metric: 0 IP 172.16.32.1/32
Metric: 0 IP 172.16.33.1/32
Metric: 0 IP 172.16.34.1/32
R2.00-02 0x00000008 0x824d 87 /120 0/0/0
Metric: 0 IP 172.16.35.1/32
Metric: 0 IP 172.16.36.1/32
Metric: 0 IP 172.16.37.1/32
Metric: 0 IP 172.16.38.1/32
Metric: 0 IP 172.16.39.1/32
Metric: 0 IP 172.16.40.1/32
Metric: 10 IS R1.00
Metric: 10 IS R3.00再起動前はR2.00-00にあった隣接(IS R1.00 / IS R3.00)がR2.00-02に移っています。0番に固定されるのは7.3.4.3の4項目だけで、隣接をどの番号に載せるかは実装しだいです。
LSPを失効させる(STEP 4)
R3のGi0/0/0/0をshutdownします。R3のLSPを更新できるルータが居なくなるので、R1とR2が持つR3のLSPは残り寿命が0まで減ります。
RP/0/RP0/CPU0:R2#show isis spf-log
Thu Sep 10 00:38:59.882 UTC
IS-IS 1 Level 2 IPv4 Unicast Route Calculation Log
Capacity: 210, Size: 5
Time Total Trig.
Timestamp Type (ms) Nodes Count First Trigger LSP Triggers
------------ ----- ----- ----- ----- -------------------- ----------------------
--- Thu Sep 10 2026 ---
00:31:16.812 FSPF 0 3 22 R1.00-00 CONFIG NEWNODE NEWLSP OVLSET LINKGOOD PREFIXGOOD AREAADDR IPADDR
00:31:17.799 FSPF 1 3 2 R1.00-00 LINKGOOD
00:31:18.960 FSPF 0 3 1 R2.00-00 OVLCLR
00:37:22.534 FSPF 1 3 2 R2.00-02 DELADJ LINKBAD
00:38:37.166 FSPF 0 3 6 0030.0300.3003.00-00 DELNODE LSPEXPIRY LINKBAD PREFIXBAD AREAADDR IPADDRR2は00:37:22に隣接のホールドタイム切れ(DELADJ)を検出し、75秒後の00:38:37にR3のLSPが失効(LSPEXPIRY)しています。隣接が落ちてもR3のLSPはすぐには消えず、残り寿命が尽きるまでデータベースに残ります。
15 41.415615000 52:54:00:37:ed:c9 L2 LSP, LSP-ID: 0030.0300.3003.00-00, Sequence: 0x0000001d, Lifetime: 120s
16 41.993613000 52:54:00:04:48:22 L2 PSNP, Source-ID: 0010.0100.1001.00
66 161.408694000 52:54:00:37:ed:c9 L2 LSP, LSP-ID: 0030.0300.3003.00-00, Sequence: 0x0000001d, Lifetime: 0s
67 161.912900000 52:54:00:04:48:22 L2 PSNP, Source-ID: 0010.0100.1001.00No.15はR2がR3のLSP(残り寿命120)をR1へ転送したもので、No.66(残り寿命0)まではちょうど120秒です。R2の手元で寿命が0になった瞬間に、寿命0のLSPを送り出しています(7.3.16.4 a)。
ISO 10589 ISIS Link State Protocol Data Unit
PDU length: 40
Remaining lifetime: 0
LSP-ID: 0030.0300.3003.00-00
Sequence number: 0x0000001d
[Checksum: [missing]]
[Checksum Status: Not present]
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)
Purge Originator ID (t=13, l=7)
Type: 13
Length: 7
Number of System IDs: 1
System ID: 0020.0200.2002
Hostname (t=137, l=2)
Type: 137
Length: 2
Hostname: R2PDU length: 40しかなく、R3の隣接やプレフィックスは載っていません(7.3.16.4 b)。シーケンス番号は0x1dのまま、Remaining lifetime: 0です。チェックサムは元のLSP(No.15の0xf164)と別の値ですが、7.3.16.4のNOTE 36のとおり寿命0のLSPでは検証されません(tsharkも[missing]と表示します)。残っているTLVは、パージ元R2を示すTLV 13とそのホスト名(TLV 137)です。
RP/0/RP0/CPU0:R1#show isis database
Thu Sep 10 00:38:43.619 UTC
IS-IS 1 (Level-2) Link State Database
LSPID LSP Seq Num LSP Checksum LSP Holdtime/Rcvd ATT/P/OL
R1.00-00 * 0x00000020 0x911a 108 /* 0/0/0
R2.00-00 0x0000001e 0xfb8f 95 /120 0/0/0
R2.00-01 0x0000000e 0xa65b 94 /120 0/0/0
R2.00-02 0x0000000f 0x7055 89 /120 0/0/0
0030.0300.3003.00-00 0x0000001d 0xc04f 0 (53)/* 0/0/0
Total Level-2 LSP count: 5 Local Level-2 LSP count: 1R3のLSPは0 (53)/*で、括弧内の53秒が過ぎるとヘッダーも消えます(7.3.16.4 c、ZeroAgeLifetime=60秒)。R3.00-00ではなく0030.0300.3003.00-00と表示されるのは、ホスト名のTLV 137が本体と一緒に捨てられたためです。
0030.0300.3003.00-00 0x0000001d 0xc04f 0 (53)/* 0/0/0
Purge Originator: 0020.0200.2002 R2
Hostname: R2
Total Level-2 LSP count: 5 Local Level-2 LSP count: 1Purge OriginatorとHostnameはパージ元R2のもので、R3の情報は残っていません。経路表からもR3の3.3.3.3/32が消えています(2.2.2.2/32と10.2.3.0/24のあいだにあった行)。
RP/0/RP0/CPU0:R1#show route isis
Thu Sep 10 00:38:42.537 UTC
i L2 2.2.2.2/32 [115/10] via 10.1.2.2, 00:07:24, GigabitEthernet0/0/0/0
i L2 10.2.3.0/24 [115/20] via 10.1.2.2, 00:07:24, GigabitEthernet0/0/0/0
i L2 172.16.1.1/32 [115/10] via 10.1.2.2, 00:07:24, GigabitEthernet0/0/0/0元に戻す(STEP 5)
R3のリンクを戻し、STEP 1〜2の設定(タイマー・lsp-mtu・Loopback)を削除すると初期状態に戻ります(STEP 0と5の..._run.txtが一致)。
RP/0/RP0/CPU0:R1#show isis database
Thu Sep 10 00:42:42.685 UTC
IS-IS 1 (Level-2) Link State Database
LSPID LSP Seq Num LSP Checksum LSP Holdtime/Rcvd ATT/P/OL
R1.00-00 * 0x00000022 0xf408 1046 /* 0/0/0
R2.00-00 0x00000022 0xa7a8 1067 /1200 0/0/0
R3.00-00 0x00000023 0x4d56 1033 /1199 0/0/0
Total Level-2 LSP count: 3 Local Level-2 LSP count: 1検証Configおよびshow結果
各STEPで3台から次の種類を取得しています。検証Configはこの..._run.txtです(最終状態はSTEP 5)。
| ファイル | 内容 |
|---|---|
..._show.txt | show 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-log / 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) |
..._debug.txt | STEP 0のR1のみ。LSP関連コマンドのCLIヘルプ |
STEP 0:既定の状態
| ルータ | show出力 | syslog | running-config |
|---|---|---|---|
| R1 | show | log | run |
| R2 | show | log | run |
| R3 | show | log | run |
STEP 0のR1にはCLIヘルプを取得したdebugもあります。
STEP 1:全台をmax-lsp-lifetime 120 / lsp-refresh-interval 60に
| ルータ | show出力 | syslog | running-config |
|---|---|---|---|
| R1 | show | log | run |
| R2 | show | log | run |
| R3 | show | log | run |
STEP 2:全台をlsp-mtu 300にしR2にLoopbackを40個追加
| ルータ | show出力 | syslog | running-config |
|---|---|---|---|
| R1 | show | log | run |
| R2 | show | log | run |
| R3 | show | log | run |
STEP 3:R2のIS-ISプロセスを再起動
| ルータ | show出力 | syslog | running-config |
|---|---|---|---|
| R1 | show | log | run |
| R2 | show | log | run |
| R3 | show | log | run |
STEP 4:R3のリンクをshutdown
| ルータ | show出力 | syslog | running-config |
|---|---|---|---|
| R1 | show | log | run |
| R2 | show | log | run |
| R3 | show | log | run |
STEP 5:すべて元に戻す(最終状態)
| ルータ | show出力 | syslog | running-config |
|---|---|---|---|
| R1 | show | log | run |
| R2 | show | log | run |
| R3 | show | log | run |
キャプチャーファイルは次の4本です。isis-lsp-restart-r2r3.pcap以外はR1 — R2間です。
周期再生成(STEP 1)のキャプチャー(isis-lsp-refresh.pcap) をダウンロード
プロセス再起動(STEP 3、R1 — R2間)のキャプチャー(isis-lsp-restart.pcap) をダウンロード
プロセス再起動(STEP 3、R2 — R3間)のキャプチャー(isis-lsp-restart-r2r3.pcap) をダウンロード
失効とパージ(STEP 4)のキャプチャー(isis-lsp-purge.pcap) をダウンロード
参考
| 標準 | タイトル | 概要 |
|---|---|---|
| ISO/IEC 10589:2002(第2版) | Intermediate System to Intermediate System intra-domain routeing information exchange protocol | IS-IS本体の仕様。本記事が参照したのは、分割を定める7.3.4、周期再生成の7.3.5、イベント駆動の再生成の7.3.6、再送間隔の7.3.15.5、CSNP受信時の動作の7.3.15.2、新旧判定・寿命・失効の7.3.16、PSNPによる確認応答の7.3.17、MaxAgeとZeroAgeLifetimeを説明する7.3.21、TLV 14を定める9.8、ジッタの10.1、アーキテクチャ定数の表2。 |
| RFC 6232 | Purge Originator Identification TLV for IS-IS | パージしたルータのSystem IDを載せるTLV 13を定義。 |
| RFC 5301 | Dynamic Hostname Exchange Mechanism for IS-IS | ホスト名を載せるTLV 137を定義。非疑似ノードLSPのどのフラグメントに載せてもよい。 |
| RFC 1195 | Use of OSI IS-IS for Routing in TCP/IP and Dual Environments | IPの経路を運ぶTLV 128などを定義。 |
| RFC 1142 | OSI IS-IS Intra-domain Routing Protocol | ISO 10589のDraft Proposal(1990年)を再公開したもの。現在はHistoric。ISO/IEC 10589の代わりに参照してはいけません(RFC 7142)。 |
| RFC 7142 | Reclassification of RFC 1142 to Historic | 参照すべきはISO/IEC 10589:2002 第2版であることを述べている。 |