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

IS-ISのフラッディングとLSDB同期

目次

IS-ISのフラッディングとLSDB同期

IS-ISの経路計算は、全ルータが同じリンクステートデータベース(LSDB)を持っていることを前提にしています。1台でも古い情報を持っていれば、そのルータだけ違う経路を選び、ループやブラックホールになります。

その一致を保つのがフラッディング(LSPを配る)とSNP(Sequence Numbers PDU、持ち物を突き合わせる)です。この記事では、受け取ったLSPをどう扱うか、SRM/SSNという2つのフラグが何をしているか、そしてポイントツーポイントとブロードキャストで仕組みがどう変わるかを、ISO/IEC 10589:2002の規定とIOS XRのキャプチャーで確認します。

LSPそのものの一生(生成・周期更新・分割・失効)はIS-ISのLSPとリンクステートデータベースで解説しています。

フラッディングの基本規則

7.3.14.1は基本の仕組みをこう定めています。「各Intermediate systemは、受け取った相手を除くすべての隣接するIntermediate systemへ伝搬する。重複は検出して捨てる」。

受け取った回線に送り返さないので、リンクが環状につながっていても同じLSPが回り続けません。重複検出は新旧判定(7.3.16)が兼ねていて、すでに持っているものと同じLSPが届いたら伝搬せずに終わります。

受け取ったLSPをどう扱うか

7.3.15.1 e)は、受信したLSPをデータベースの内容と比べて3つに分岐させます。

受け取ったLSP動作
新しいデータベースへ保存し、受信回線以外のすべてにSRMを立てる。受信回線のSRMは落とす
同じ受信回線のSRMを落とす(=これが確認応答になる)
古い受信回線にSRMを立てる。手元の新しいものを送り返し、受信回線のSSNは落とす

「新しい」と「同じ」では、受信回線がブロードキャストでない場合にかぎり受信回線のSSNを立てます。ポイントツーポイントで確認応答のPSNPが返るのはこの規定によるもので、ブロードキャストでは立てません。

「古いものが届いたら新しいものを送り返す」のがフラッディングの自己修復です。遅れているルータがいると、隣接から自動的に最新版が押し戻されます。

新旧の判定はシーケンス番号→残り寿命0→チェックサムの順で、IS-ISのLSPとリンクステートデータベースで解説しています。

SRMフラグとSSNフラグ

7.3.15は、LSPごと・回線ごとに2つのフラグを持つと定めています。

フラグ意味落ちる契機
SRM(Send Routeing Message)そのLSPをその回線に送る必要があるブロードキャストは送信した時点。ポイントツーポイントはLSPかSNPを受け取ったとき
SSN(Send Sequence Numbers)そのLSPの情報をPSNPに載せる必要があるPSNPを送信した時点

この落ち方の違いが、そのまま媒体ごとの動作の違いになります。ポイントツーポイントではSRMが立ったままだとminimumLSPTransmissionInterval(5秒)ごとに再送され(7.3.15.5)、相手からPSNPが返って初めて止まります。確認応答が無ければ送り続けるわけです。

規格はSRMを立ててはいけない場合も定めています。シーケンス番号が0のLSPと、externalDomainが真の回線です。またLSPが回線のdataLinkBlockSizeより大きい場合は伝搬せずlSPTooLargeToPropagateを上げます。

フラグ自体は実装内部の状態で、show isis databaseのような一覧には出ません。ただしIOS XRはisisプロセスの内部トレースに記録しており、show isis trace all | include UPD_LSP_SET_SRMどのLSPにどの回線のSRMを立てたかを後から読み出せます。この記事のラボではこれを使って規格の記述を確かめます。

媒体でSNPの使い方が変わる

CSNP(Complete Sequence Numbers PDU)はLSDB全体の目次、PSNP(Partial Sequence Numbers PDU)はその一部です。どちらもTLV 9(LSP Entries)にLSPのID・シーケンス番号・残り寿命・チェックサムを並べます。

項目ポイントツーポイントブロードキャスト
CSNP隣接の初期化時だけ(7.3.15.3 b)DISがcompleteSNPInterval(既定10秒)ごとに送る
PSNP受け取ったLSPの確認応答非DISが不足を要求する(partialSNPIntervalごと)
届かないとき5秒ごとに再送(7.3.15.5)次の定期CSNPで気づく

ポイントツーポイントに定期CSNPが要らないのは、1つずつPSNPで確認できるからです。相手は1台しかいないので、送った・届いたを個別に管理すれば足ります。

一方ブロードキャストは相手が複数で、1台ずつ確認応答を取ると台数分のPSNPが飛び交います。そこでDISが目次(CSNP)を定期的に配り、足りない側が気づいてPSNPで要求する形にしています。DISと疑似ノードはIS-ISのDISと疑似ノードで解説しています。

実機での検証

検証環境

R1 — R2 をpoint-to-point、R2 — R3 — R4 をブロードキャストのLANにします。全台を同じエリア49.0001level-2-onlyにし、1つのラボで両方の媒体を見られるようにしました。LANを3台にしたのは、DISではないルータを2台つくって非DISの動きを見るためです。

ルータNETLo0リンク
R149.0001.0010.0100.1001.001.1.1.1/32Gi0/0/0/0 10.1.2.1(p2p)
R249.0001.0020.0200.2002.002.2.2.2/32Gi0/0/0/1 10.1.2.2(p2p)/ Gi0/0/0/0 10.2.0.2(LAN)
R349.0001.0030.0300.3003.003.3.3.3/32Gi0/0/0/0 10.2.0.3(LAN)
R449.0001.0040.0400.4004.004.4.4.4/32Gi0/0/0/0 10.2.0.4(LAN)

検証のSTEP

STEP操作確かめること
0既定・安定状態p2pにCSNPが流れないこと、LANでDISが定期CSNPを出すこと
1R1にLoopback1(172.16.1.1/32)を追加LSPがR1→R2→LANと伝わる順序と、受け取った回線には返さないこと
2R1 — R2をshutdown → R1にLoopback2を追加 → no shutdown隣接復活時のCSNPで不足を検出し、同期する流れ
3すべて元に戻す(最終状態)STEP 0と同じ

STEP 0:p2pに定期CSNPは流れない

何も変えずに、両方のリンクを10分ずつキャプチャーしました。PDUの内訳です。

PDUp2p(R1 — R2)LAN(R2 — R3 — R4)
IIH139342
LSP34
CSNP069
PSNP30

p2pにCSNPは1つも流れず、LANにPSNPは1つも流れていません。CSNPをポイントツーポイントでは初期化時にしか送らないこと(7.3.15.3 b)と、不足が無いかぎり非DISがPSNPを出さないことが、そのまま数に出ています。

LANのCSNP 69個はすべてDISのR2が送ったもので、間隔は7.5〜10.0秒(平均8.8秒)でした。completeSNPIntervalの既定10秒より短めに散るのは、10.1が求めるジッターによるものです。

p2p側では、この10分の間に流れたLSPと、それに続くPSNPが対になっています。

STEP 0 p2p:tshark -n -t ad -r isis-flooding-step0-p2p.pcap -Y 'isis.type==20 or isis.type==27'
    7 2026-09-10 20:07:10.374921 52:54:00:ed:a5:21 → 09:00:2b:00:00:05 ISIS LSP 80 L2 LSP, LSP-ID: 0020.0200.2002.01-00, Sequence: 0x00000006, Lifetime:  1200s
    8 2026-09-10 20:07:10.879176 52:54:00:fa:e5:1c → 09:00:2b:00:00:05 ISIS PSNP 52 L2 PSNP, Source-ID: 0010.0100.1001.00
   17 2026-09-10 20:07:42.394397 52:54:00:ed:a5:21 → 09:00:2b:00:00:05 ISIS LSP 107 L2 LSP, LSP-ID: 0040.0400.4004.00-00, Sequence: 0x00000007, Lifetime:  1200s
   18 2026-09-10 20:07:42.898614 52:54:00:fa:e5:1c → 09:00:2b:00:00:05 ISIS PSNP 52 L2 PSNP, Source-ID: 0010.0100.1001.00
  141 2026-09-10 20:16:27.922463 52:54:00:ed:a5:21 → 09:00:2b:00:00:05 ISIS LSP 130 L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x00000009, Lifetime:  1200s
  142 2026-09-10 20:16:28.426389 52:54:00:fa:e5:1c → 09:00:2b:00:00:05 ISIS PSNP 52 L2 PSNP, Source-ID: 0010.0100.1001.00

LSPの約0.5秒後にPSNPが返っており、3組とも同じ形です。これがポイントツーポイントの確認応答で、これが返るまでSRMは落ちません。

STEP 0のp2p側キャプチャー(10分)をダウンロード

STEP 0のLAN側キャプチャー(10分)をダウンロード

STEP 1:受け取った回線には送り返さない

R1にLoopback1(172.16.1.1/32)を追加し、IS-ISで広告させました。

STEP 1のR1(show running-configから抜粋)
interface Loopback1
 ipv4 address 172.16.1.1 255.255.255.255
!
router isis 1
 is-type level-2-only
 net 49.0001.0010.0100.1001.00
 log adjacency changes
 address-family ipv4 unicast
 !
 interface Loopback0
  passive
  address-family ipv4 unicast
  !
 !
 interface Loopback1
  passive
  address-family ipv4 unicast
  !
 !
 interface GigabitEthernet0/0/0/0
  point-to-point
  address-family ipv4 unicast
  !
 !
!

両方のリンクを同時にキャプチャーし、mergecapで1つに束ねたものです。R2は2つのインタフェースでMACアドレスが違うので、どちら側へ送ったかが送信元MACで分かります。

STEP 1:tshark -n -t ad -r isis-flooding-step1-both.pcap -Y 'isis.type==20 or isis.type==27'
   12 2026-09-10 20:37:48.833480 52:54:00:fa:e5:1c → 09:00:2b:00:00:05 ISIS LSP 119 L2 LSP, LSP-ID: 0010.0100.1001.00-00, Sequence: 0x0000000b, Lifetime:  1200s
   13 2026-09-10 20:37:48.836933 52:54:00:e7:1e:24 → 01:80:c2:00:00:15 ISIS LSP 119 L2 LSP, LSP-ID: 0010.0100.1001.00-00, Sequence: 0x0000000b, Lifetime:  1200s
   15 2026-09-10 20:37:49.337207 52:54:00:ed:a5:21 → 09:00:2b:00:00:05 ISIS PSNP 52 L2 PSNP, Source-ID: 0020.0200.2002.00
MACアドレスどこ
52:54:00:fa:e5:1cR1のGi0/0/0/0(p2p)
52:54:00:ed:a5:21R2のGi0/0/0/1(p2p)
52:54:00:e7:1e:24R2のGi0/0/0/0(LAN)

R1が20:37:48.833480にLSP(0010.0100.1001.00-00、シーケンス0x0000000b)をp2pへ送り、R2が3.5ミリ秒後20:37:48.836933同じLSP-IDとシーケンス番号のままLANへ送っています。そしてp2pに同じLSPが再び現れることはありません。受け取った回線を除いて伝搬する、という7.3.14.1の規定どおりです。

その0.5秒後の20:37:49.337207に、R2がp2pへPSNPを返しています。LANへの中継が3.5ミリ秒だったのに対し、確認応答は500ミリ秒待ってからです。伝搬は即座に、確認応答はまとめて、という作りになっています。

宛先MACも媒体で違います。p2pは09:00:2b:00:00:05、LANは01:80:c2:00:00:15(AllL2ISs)です。

上のtshark出力のキャプチャー(両リンクを結合したもの)をダウンロード

R2の内部トレースには、このときの判断がそのまま残っています。

R2の isis プロセスのトレース(添付のstep1_r2_trace.txtから該当LSPの4行を時刻順に抜粋)
Sep 10 11:37:48.835 isis/1/upd 0/RP0/CPU0 t4290  isis_upd_lsp_acceptance:1105                             UPD_LSP_ACCEPT_NEW_NEWER Upd Type: LSP L2 0010.0100.1001.00-00 Gi0/0/0/1
Sep 10 11:37:48.835 isis/1/upd 0/RP0/CPU0 t4290  isis_upd_lsp_set_all_srm:1252                            UPD_LSP_SET_SRM Upd Type: LSP L2 0010.0100.1001.00-00 Gi0/0/0/0
Sep 10 11:37:49.335 isis/1/upd 0/RP0/CPU0 t4290  isis_upd_lsp_send_psnp_walker:2235                       UPD_PSNP_SEND_ENTRY L2 Gi0/0/0/1 0010.0100.1001.00-00
Sep 10 11:37:49.335 isis/1/std 0/RP0/CPU0 t4290  isis_upd_psnp_send:2167                                  UPD_PSNP_SEND_SUMMARY L2 Gi0/0/0/1

7.3.15.1 e)の「新しい」分岐が3つの動作に分かれて現れています。

トレース意味対応するパケット
UPD_LSP_ACCEPT_NEW_NEWER ... Gi0/0/0/1p2pで受け取り、手元より新しいと判定上のNo.12
UPD_LSP_SET_SRM ... Gi0/0/0/0SRMを立てた回線として挙がるのは 受信回線ではない Gi0/0/0/0 だけ上のNo.13
UPD_PSNP_SEND_ENTRY ... Gi0/0/0/1受信回線にPSNPを送る(SSNの結果)上のNo.15

SRMが立った回線としてLAN側のGi0/0/0/0だけが挙がり、受信したGi0/0/0/1は挙がりません。フラグはshowの表には出ませんが、その操作はこうして観測できます。

STEP 2:隣接が戻るときだけCSNPが流れる

R1 — R2をshutdownし、切り離した状態でR1にLoopback2(172.16.2.1/32)を追加してから、no shutdownで戻しました。切り離している間の両者のデータベースです。

リンクダウン中のLSDB(上:R1、下:R2)
RP/0/RP0/CPU0:R1#show isis database
Thu Sep 10 11:47:20.598 UTC

IS-IS 1 (Level-2) Link State Database
LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime/Rcvd  ATT/P/OL
R1.00-00            * 0x0000000d   0x6199        1158 /*            0/0/0
R2.00-00              0x0000000b   0x5d2e        923  /1200         0/0/0
R2.01-00              0x00000008   0x02d1        353  /1200         0/0/0
R3.00-00              0x00000009   0x3a85        1011 /1200         0/0/0
R4.00-00              0x00000009   0xbad9        558  /1200         0/0/0

 Total Level-2 LSP count: 5     Local Level-2 LSP count: 1

RP/0/RP0/CPU0:R2#show isis database
Thu Sep 10 11:47:25.809 UTC

IS-IS 1 (Level-2) Link State Database
LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime/Rcvd  ATT/P/OL
R1.00-00              0x0000000b   0xa225        622  /1200         0/0/0
R2.00-00            * 0x0000000c   0xf54d        1112 /*            0/0/0
R2.01-00              0x00000008   0x02d1        348  /*            0/0/0
R3.00-00              0x00000009   0x3a85        1005 /1200         0/0/0
R4.00-00              0x00000009   0xbad9        552  /1200         0/0/0

 Total Level-2 LSP count: 5     Local Level-2 LSP count: 1

この出力はR1側R2側として添付しています。食い違いは両方向に出ています。R1は自分のLSPを0x0000000dまで進めていますが、R2が持つR1のコピーは0x0000000bのままです。逆にR2は自分のLSPを0x0000000cにしていますが、R1が持つコピーは0x0000000bです。互いに相手より新しい情報と、相手より古い情報を同時に抱えた状態になります。

リンクを戻した直後のp2pです。

STEP 2 p2p:tshark -n -t ad -r isis-flooding-step2-p2p.pcap -Y 'isis.type==20 or isis.type==25 or isis.type==27'
   25 2026-09-10 20:47:43.258357 52:54:00:fa:e5:1c → 09:00:2b:00:00:05 ISIS CSNP 132 L2 CSNP, Source-ID: 0010.0100.1001.00, Start LSP-ID: 0000.0000.0000.00-00, End LSP-ID: ffff.ffff.ffff.ff-ff
   26 2026-09-10 20:47:43.261362 52:54:00:ed:a5:21 → 09:00:2b:00:00:05 ISIS LSP 130 L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x0000000d, Lifetime:  1199s
   27 2026-09-10 20:47:43.765201 52:54:00:fa:e5:1c → 09:00:2b:00:00:05 ISIS PSNP 52 L2 PSNP, Source-ID: 0010.0100.1001.00
   28 2026-09-10 20:47:44.258382 52:54:00:fa:e5:1c → 09:00:2b:00:00:05 ISIS LSP 131 L2 LSP, LSP-ID: 0010.0100.1001.00-00, Sequence: 0x0000000f, Lifetime:  1199s
   29 2026-09-10 20:47:44.258599 52:54:00:fa:e5:1c → 09:00:2b:00:00:05 ISIS LSP 80 L2 LSP, LSP-ID: 0020.0200.2002.01-00, Sequence: 0x00000008, Lifetime:   330s
   30 2026-09-10 20:47:44.258728 52:54:00:fa:e5:1c → 09:00:2b:00:00:05 ISIS LSP 107 L2 LSP, LSP-ID: 0030.0300.3003.00-00, Sequence: 0x00000009, Lifetime:   987s
   31 2026-09-10 20:47:44.258970 52:54:00:fa:e5:1c → 09:00:2b:00:00:05 ISIS LSP 107 L2 LSP, LSP-ID: 0040.0400.4004.00-00, Sequence: 0x00000009, Lifetime:   534s
   32 2026-09-10 20:47:44.261847 52:54:00:ed:a5:21 → 09:00:2b:00:00:05 ISIS PSNP 52 L2 PSNP, Source-ID: 0020.0200.2002.00
   34 2026-09-10 20:47:44.347718 52:54:00:ed:a5:21 → 09:00:2b:00:00:05 ISIS CSNP 132 L2 CSNP, Source-ID: 0020.0200.2002.00, Start LSP-ID: 0000.0000.0000.00-00, End LSP-ID: ffff.ffff.ffff.ff-ff
   35 2026-09-10 20:47:44.762934 52:54:00:ed:a5:21 → 09:00:2b:00:00:05 ISIS PSNP 100 L2 PSNP, Source-ID: 0020.0200.2002.00
   38 2026-09-10 20:47:55.692508 52:54:00:ed:a5:21 → 09:00:2b:00:00:05 ISIS LSP 80 L2 LSP, LSP-ID: 0020.0200.2002.01-00, Sequence: 0x00000009, Lifetime:  1200s
   39 2026-09-10 20:47:56.197774 52:54:00:fa:e5:1c → 09:00:2b:00:00:05 ISIS PSNP 52 L2 PSNP, Source-ID: 0010.0100.1001.00
   40 2026-09-10 20:47:59.270912 52:54:00:ed:a5:21 → 09:00:2b:00:00:05 ISIS LSP 107 L2 LSP, LSP-ID: 0040.0400.4004.00-00, Sequence: 0x0000000a, Lifetime:  1200s
   41 2026-09-10 20:47:59.775063 52:54:00:fa:e5:1c → 09:00:2b:00:00:05 ISIS PSNP 52 L2 PSNP, Source-ID: 0010.0100.1001.00

再同期は次の順で進みます。

  1. 20:47:43.258357 R1がCSNPを送る(No.25)。開始LSPIDが0000.0000.0000.00-00、終了がffff.ffff.ffff.ff-ffで、データベース全体を1つで表す目次です
  2. 20:47:43.261362 R2がそのCSNPを見て、自分のLSPが相手では古いと気づき、0x0000000dを送り返します(No.26)。CSNPに載っていた番号より新しいものを送る、7.3.15.2 c)の動作です
  3. 20:47:44.258382R1が4つのLSPをまとめて送出します(No.28〜31)。ポイントツーポイント回線が起動したときは全LSPにSRMを立てる、という7.3.17の規定によるものです。R2自身のLSP(0020.0200.2002.00-00)だけが含まれていないのは、その直前にR2から新しいコピーを受け取ったためです
  4. 20:47:44.347718 R2もCSNPを送ります(No.34)

この7分のキャプチャーでp2pに流れたCSNPはNo.25とNo.34の2個だけです。以降、定期的なCSNPは1つも流れていません。

STEP 2のp2p側キャプチャー(7分)をダウンロード

STEP 2のLAN側キャプチャー(7分)をダウンロード

STEP 3:元に戻す

Loopback1とLoopback2をIS-ISと設定の両方から外しました。4台ともrunning-configはSTEP 0と一致しています。

検証Configおよびshow結果

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

ファイル内容
..._show.txtshow version / show interface description / show route と、show isis 系一式(interface / neighbors detail / database detail / topology / adjacency-log / spf-log / lsp-log / statistics
..._log.txtそのSTEPの範囲だけに絞ったshow logging。各STEPの開始時にlogmsgでマーカーを入れ、その時刻をshow logging startに指定して取得したもの
..._run.txtそのSTEP時点のshow running-config(=そのSTEPの検証Config)
..._trace.txtshow isis trace allをフラッディング関連のイベントで絞ったもの(UPD_LSP_ACCEPT / UPD_LSP_SET_SRM / UPD_SNP_ENTRY / UPD_CSNP / UPD_PSNP
step2_..._linkdown.txtSTEP 2でリンクを切り離している間のR1とR2のshow isis database。復旧前の食い違いを残したもの

STEP 0:初期状態

ルータshow出力syslogrunning-configtrace
R1showlogruntrace
R2showlogruntrace
R3showlogruntrace
R4showlogruntrace

STEP 1:R1にLoopback1(172.16.1.1/32)を追加

ルータshow出力syslogrunning-configtrace
R1showlogruntrace
R2showlogruntrace
R3showlogruntrace
R4showlogruntrace

STEP 2:R1 — R2をshutdown → Loopback2を追加 → no shutdown

ルータshow出力syslogrunning-configtrace
R1showlogruntrace
R2showlogruntrace
R3showlogruntrace
R4showlogruntrace

STEP 3:すべて元に戻す(最終状態)

ルータshow出力syslogrunning-configtrace
R1showlogruntrace
R2showlogruntrace
R3showlogruntrace
R4showlogruntrace

参考

標準タイトル概要
ISO/IEC 10589:2002(第2版)Intermediate System to Intermediate System intra-domain routeing information exchange protocolIS-IS本体の仕様。本記事が参照したのは、フラッディングの基本を定める7.3.14.1、受信時の動作の7.3.14.2、SRM / SSNフラグを定義する7.3.15、3分岐の7.3.15.1、CSNPの送出条件の7.3.15.3、PSNPの7.3.15.4、再送間隔の7.3.15.5、確認応答の7.3.17
RFC 1195Use of OSI IS-IS for Routing in TCP/IP and Dual EnvironmentsIPの経路を運ぶための拡張。
RFC 1142OSI IS-IS Intra-domain Routing ProtocolISO 10589のDraft Proposal(1990年)を再公開したもの。現在はHistoric。ISO/IEC 10589の代わりに参照してはいけません(RFC 7142)。
RFC 7142Reclassification of RFC 1142 to Historic参照すべきはISO/IEC 10589:2002 第2版であることを述べている。

関連記事