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

IS-ISのDISと疑似ノード(Pseudonode)

目次

IS-ISのDISと疑似ノード(Pseudonode)

ブロードキャストのセグメントでは代表を1台選びます。これがDIS(Designated Intermediate System)です。OSPFのDRに相当しますが、似ているのは「代表を選ぶ」という発想だけです。

DISの中心の仕事は、疑似ノード(Pseudonode)というLSDB上の架空のノードを代表して作ることです。疑似ノードの目的、DISの選出、OSPFのDRとの違いを実機で確かめます。

LAN IIHのPriorityとLAN IDのフィールドはIS-ISパケットの種類とヘッダーフォーマットで解説しています。

疑似ノードは何のためにあるのか

ブロードキャストのセグメントを素直に表現するとn台のフルメッシュになり、リンク数は n(n−1)/2 本です。10台なら45本で、台数とともに急増します。

ISO/IEC 10589:2002の3.6.7はセグメントそのものを1つのノードとみなすと定めています。

ブロードキャストサブネットワークにn台の中間システムが接続されているとき、そのブロードキャストサブネットワーク自体が疑似ノードとみなされる。疑似ノードはn台のそれぞれにリンクを持ち、各ISは(他のIS全部への n−1 本ではなく)疑似ノードへの1本のリンクだけを持つ。

リンクはn本に減ります。7.2.3は各ルータは疑似ノードへのリンクだけを報告し、疑似ノードのLSPはDISが代表して作ると定めています。

DISの本質はこれです。「LANという架空のノードのLSPを代筆する」役割です。

疑似ノードLSPのメトリックは0

疑似ノードを通ると「R2→疑似ノード」と「疑似ノード→R3」の2本を通るため、コストを二重に数える危険があります。

規格は疑似ノードLSPのメトリックをすべて0にすることで解決しています。7.2.3の脚注が理由です。

疑似ノードへのリンクによって既にメトリックが割り当てられているため、これらは0の値に設定される。疑似ノードLSPに0以外のメトリックを割り当てると、実際の値を倍にする効果を持つ。

コストを払うのは「ルータ→疑似ノード」の向きだけで、セグメントを1ホップとして正しく数えられます。

DISの選出

選出規則はISO/IEC 10589:2002の8.4.5にあります。

LAN Designated Intermediate SystemはLAN上の特定の集合の中で優先度がもっとも高い中間システムであり、同点の場合は数値としてもっとも大きいMAC送信元SNPAアドレスによって決着する。

順序条件
1優先度がもっとも高いIS。IOS XRの既定値は64で、0〜127の範囲で設定できる
2同点ならSNPA(MACアドレス)が数値としてもっとも大きいIS

同規格はUpの隣接が1つ以上あるまでは自分をDISと宣言してはならないとも定めています。受信できない機器が自分をDISだと思い込むのを防ぐためです。

DISはレベルごとに別々に選ばれます。別のルータになれば疑似ノードも2つ立ちます。

OSPFのDRとの違い

設計は次の3点で違います。

観点OSPFのDRIS-ISのDIS
バックアップBDRがいる。DR障害時に即座に昇格する存在しない。ISO/IEC 10589にバックアップDISという概念は無く、落ちたらその場で選び直す
優先度を上げたとき奪わない(非プリエンプティブ)。既存のDRが残る奪う(プリエンプティブ)。7.2.3が「より優先度の高い中間システムがその機能を引き継いだため」辞任すると明記している
隣接の張り方DR / BDRとだけ完全な隣接になる全員と隣接を張る。畳んでいるのはLSDBの表現だけで、隣接そのものは減らさない

疑似ノードはLSDB上の表現であって、隣接の数を減らすものではありません。4台のLANでは各ルータが3つの隣接を持ちます。

IIHを送受信するたびに選出をやり直す(8.4.5)ので、BDRのような仕組みが要りません。

実機での検証

検証環境

4台を1つのブロードキャストセグメント(10.1.0.0/24)に接続します。全台が同じエリア49.0001でlevel-1-2、point-to-pointは書きません。

ルータNETSNPA(MACアドレス)
R149.0001.0010.0100.1001.005254.00a3.a6fa
R249.0001.0020.0200.2002.005254.0075.d9dc
R349.0001.0030.0300.3003.005254.003a.d413
R449.0001.0040.0400.4004.005254.0089.cc01

優先度は全台64なので、SNPAが最大のR1がDISになります。

検証のSTEP

STEP操作狙い
0初期状態DISの選出結果と疑似ノードLSPの中身
1R3の優先度を100にするプリエンプション。MACが最小のR3がDISを奪えるか
2R2の優先度をレベル2だけ110にするレベル別のDIS。同じLANに疑似ノードが2つ立つか
3R3のLANインタフェースをshutdown再選出。バックアップが無いことの確認
4優先度とshutdownを元に戻す(最終状態)初期状態と同じ

IOS XRの次の2つのコマンドを使います。

コマンド見えるもの
show isis trace all | include ELECTDIS_RUN_ELECTION / DIS_TRIGGER_ELECTION / DIS_ELECTION_RESULT_*。選出そのもの
show isis trace all | include PSEUDOLOCAL_PSEUDO_BUILD_START → LOCAL_PSEUDO_NARROW_LINK_ADD → LOCAL_PSEUDO_BUILD_END。疑似ノードLSPを組み立てる過程

show isis traceは重大度で選び、allは4000行近いので| includeで絞ります(| include DISはDIST_に当たるので使えません)。

初期状態のDIS(STEP 0)

STEP 0:R1の show isis interface GigabitEthernet0/0/0/0(抜粋)
  Level-1                   
    Adjacency Count:        3
    Adjacency Flaps:        0
    LAN ID:                 R1.01
    Priority (Local/DIS):   64/64
    Next LAN IIH in:        1 s
    LSP Pacing Interval:    33 ms
    PSNP Entry Queue Size:  0
    Hello Interval:         10 s
    Hello Multiplier:       3
  Level-2                   
    Adjacency Count:        3
    Adjacency Flaps:        0
    LAN ID:                 R1.01
    Priority (Local/DIS):   64/64

LAN ID: R1.01が両レベルとも同じで、R1が両レベルのDISです。Priority (Local/DIS): 64/64は「自分の優先度/DISの優先度」です。

Adjacency Count: 3のとおり、疑似ノードがあっても隣接の数は減りません。

疑似ノードLSPの中身

STEP 0:R1の show isis database detail(抜粋)
R1.01-00              0x00000008   0xb492        636  /*            0/0/0
  Metric: 0          IS R4.00
  Metric: 0          IS R3.00
  Metric: 0          IS R2.00
  Metric: 0          IS R1.00
R2.00-00              0x00000006   0x8090        619  /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.0.0/24
  Metric: 10         IS R1.01

前半が疑似ノードLSPR1.01-00で、4台すべてを列挙し、メトリックはすべて0です。

後半のR2自身のLSPには、ISへの参照がMetric: 10 IS R1.01の1行しかありません。7.2.3の「疑似ノードへの1本だけを報告する」がそのまま出ています。

R2からR3へのコストは 10 + 0 = 10 です。疑似ノードLSPのメトリックが10なら20になり、2倍を数えてしまいます。

優先度でDISを奪う(STEP 1)

R3の優先度を100に上げます。R3はSNPAが最小なので、優先度だけでDISを奪えるかがはっきりします。

STEP 1:R3に投入した設定
router isis 1
 interface GigabitEthernet0/0/0/0
  priority 100
STEP 1:R1の show isis database(Level-1)
IS-IS 1 (Level-1) Link State Database
LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime/Rcvd  ATT/P/OL
R1.00-00            * 0x00000007   0x24d2        1100 /*            0/0/0
R1.01-00              0x00000009   0x9aef        0 (1099)/*         0/0/0
R2.00-00              0x00000008   0xa228        1100 /1200         0/0/0
R3.00-00              0x00000007   0x257b        1099 /1200         0/0/0
R3.01-00              0x00000001   0x60a9        1099 /1200         0/0/0
R4.00-00              0x00000008   0xa3d0        1100 /1200         0/0/0

旧DISの疑似ノードLSPR1.01-00はHoldtimeが0(パージ)で、R3.01-00がシーケンス番号0x00000001で、生まれたばかりの状態で現れます。

これはISO/IEC 10589:2002の7.2.3が定める動作です。

中間システムがDIS を辞任するとき、その疑似ノードLSPのRemaining Lifetimeをゼロに設定してネットワーク全体のパージを開始しなければならない。

優先度が最小のMACを覆したことと、交代が疑似ノードLSPの作り直しを伴うことが確認できます。

キャプチャで見る交代

STEP 1:R2–SW間のキャプチャに現れたLSP(抜粋)
  No type   LSP-ID                    life seq
  23 L1 LSP 0010.0100.1001.01-00         0 0x00000008
  24 L2 LSP 0010.0100.1001.01-00         0 0x00000008
  ...
  41 L1 LSP 0030.0300.3003.01-00      1200 0x00000001
  43 L2 LSP 0030.0300.3003.01-00      1199 0x00000001

旧DISの疑似ノード0010.0100.1001.01-00がlife=0でパージされ、新DISの0030.0300.3003.01-00がseq=1で生まれています。

プリエンプション時(STEP 1)のキャプチャー(isis-dis-preempt.pcap) をダウンロード

traceに残る再選出

STEP 1:R1の show isis trace all | include ELECT(抜粋)
Sep  9 06:51:42.059 isis/1/det ... isis_dis_run_election:778      DIS_ELECTION_RESULT_DIS_EXISTS L1 Gi0/0/0/0
Sep  9 06:51:42.059 isis/1/det ... isis_dis_run_election:778      DIS_ELECTION_RESULT_DIS_EXISTS L2 Gi0/0/0/0
Sep  9 06:51:43.049 isis/1/det ... isis_dis_trigger_election:964  DIS_TRIGGER_ELECTION L1 Gi0/0/0/0 0030.0300.3003
Sep  9 06:51:43.049 isis/1/det ... isis_dis_trigger_election:964  DIS_TRIGGER_ELECTION L2 Gi0/0/0/0 0030.0300.3003

DIS_TRIGGER_ELECTIONの末尾の0030.0300.3003(R3)は、R3のIIHを引き金にR1が選出をやり直した記録です。R3のcommit(06:51:41)の2秒後です。

新DISのR3側には疑似ノードLSPを組み立てる過程が残っています。

STEP 1:R3の show isis trace all | include PSEUDO(抜粋)
Sep  9 06:51:42.103 isis/1/lsp ... LOCAL_PSEUDO_BUILD_START L1 Gi0/0/0/0 Node Num: 1
Sep  9 06:51:42.103 isis/1/std ... LOCAL_PSEUDO_NARROW_LINK_ADD L1 Gi0/0/0/0 Node Num: 1 0030.0300.3003.00
Sep  9 06:51:42.103 isis/1/std ... LOCAL_PSEUDO_NARROW_LINK_ADD L1 Gi0/0/0/0 Node Num: 1 0010.0100.1001.00
Sep  9 06:51:42.103 isis/1/std ... LOCAL_PSEUDO_NARROW_LINK_ADD L1 Gi0/0/0/0 Node Num: 1 0020.0200.2002.00
Sep  9 06:51:42.103 isis/1/std ... LOCAL_PSEUDO_NARROW_LINK_ADD L1 Gi0/0/0/0 Node Num: 1 0040.0400.4004.00
Sep  9 06:51:42.103 isis/1/lsp ... LOCAL_PSEUDO_BUILD_END L1 Gi0/0/0/0 Node Num: 1 1

NARROW_LINK_ADDが4回(LAN上の4台)並び、疑似ノードLSPが「全員へのリンク」として組み立てられる様子が記録されています。

レベルごとに別のDIS(STEP 2)

優先度はレベル別に設定できます。R2のレベル2だけを110に上げます。

STEP 2:R2に投入した設定
router isis 1
 interface GigabitEthernet0/0/0/0
  priority 110 level 2
STEP 2:R1の show isis interface GigabitEthernet0/0/0/0(抜粋)
  Level-1                   
    Adjacency Count:        3
    Adjacency Flaps:        0
    LAN ID:                 R3.01
    Priority (Local/DIS):   64/100
  Level-2                   
    Adjacency Count:        3
    Adjacency Flaps:        0
    LAN ID:                 R2.01
    Priority (Local/DIS):   64/110

レベル1のDISはR3(100)、レベル2のDISはR2(110)に分かれます。

同じLANに疑似ノードが2つ立ちます。

STEP 2:R1の show isis database
IS-IS 1 (Level-1) Link State Database
LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime/Rcvd  ATT/P/OL
R1.00-00            * 0x00000007   0x24d2        839  /*            0/0/0
R1.01-00              0x00000009   0x9aef        0 (838)/*          0/0/0
R2.00-00              0x00000008   0xa228        839  /1200         0/0/0
R3.00-00              0x00000007   0x257b        838  /1200         0/0/0
R3.01-00              0x00000001   0x60a9        838  /1200         0/0/0
R4.00-00              0x00000008   0xa3d0        839  /1200         0/0/0

 Total Level-1 LSP count: 6     Local Level-1 LSP count: 1

IS-IS 1 (Level-2) Link State Database
LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime/Rcvd  ATT/P/OL
R1.00-00            * 0x0000000f   0xfa2b        1097 /*            0/0/0
R1.01-00              0x00000009   0x9aef        0 (838)/*          0/0/0
R2.00-00              0x0000000f   0x807e        1096 /1200         0/0/0
R2.01-00              0x00000001   0xd556        1096 /1200         0/0/0
R3.00-00              0x0000000d   0x0acf        1097 /1200         0/0/0
R4.00-00              0x0000000e   0x8d24        1097 /1200         0/0/0

レベル1にはR3.01-00、レベル2にはR2.01-00があり、1本のLANがレベルごとに違う疑似ノードで表現されます(IS-ISのレベル1とレベル2)。

レベル2のR3.01-00は消えています。辞任はレベルごとに起こります。

レベル別DISへの分割時(STEP 2)のキャプチャー(isis-dis-level.pcap) をダウンロード

DISが落ちたとき(STEP 3)

レベル1のDISであるR3のLANインタフェースを落とします。

STEP 3:R3に投入した設定
interface GigabitEthernet0/0/0/0
 shutdown
STEP 3:R1の show isis interface GigabitEthernet0/0/0/0(抜粋)
  Level-1                   
    Adjacency Count:        2
    LAN ID:                 R1.01
    Priority (Local/DIS):   64/64
  Level-2                   
    Adjacency Count:        2
    LAN ID:                 R2.01
    Priority (Local/DIS):   64/110

レベル1のDISはR1に移ります。残る3台はレベル1の優先度が64なので、SNPA最大のR1です。レベル2のDISはR2のままです。

STEP 3:R1の show isis database(Level-1)
IS-IS 1 (Level-1) Link State Database
LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime/Rcvd  ATT/P/OL
R1.00-00            * 0x00000008   0xfb3e        1092 /*            0/0/0
R1.01-00              0x0000000a   0xe651        1092 /*            0/0/0
R2.00-00              0x0000000a   0x7894        1093 /1200         0/0/0
R3.00-00              0x00000007   0x257b        594  /1200         0/0/0
R3.01-00              0x00000001   0xe16c        0 (1092)/*         0/0/0
R4.00-00              0x0000000a   0x793d        1093 /1200         0/0/0

R3.01-00がパージされ、R1.01-00が復活しています。

バックアップは用意されていません。残った3台がその場で選出をやり直してR1に決まります。

隣接が落ちたことはログに残ります。

STEP 3:R1の show isis adjacency-log(Level 1、末尾)
07:00:00.552  R3              Gi0/0/0/0          u -> d  Holdtime expired
                                                         IPv4 Unicast Down

STEP 4で優先度とshutdownを戻すと、DISはR1(両レベル)に戻ります。

再選出時(STEP 3)のキャプチャー(isis-dis-reelect.pcap) をダウンロード

検証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 adjacency-log / show isis trace all | include ELECT / show isis trace all | include PSEUDO / 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)

最終状態は4台とも優先度が既定の64で、priorityとshutdownを外した状態です。

STEP 0:初期状態

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

STEP 1:R3の優先度を100にする

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

STEP 2:R2の優先度をレベル2だけ110にする

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

STEP 3:R3のLANインタフェースをshutdown

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

STEP 4:優先度とshutdownを元に戻す(最終状態)

ルータshow出力syslogrunning-config
R1showlogrun
R2showlogrun
R3showlogrun
R4showlogrun
キャプチャーファイルは次の3本です。

プリエンプション時(STEP 1)のキャプチャー(isis-dis-preempt.pcap) をダウンロード

レベル別DISへの分割時(STEP 2)のキャプチャー(isis-dis-level.pcap) をダウンロード

再選出時(STEP 3)のキャプチャー(isis-dis-reelect.pcap) をダウンロード

参考

標準タイトル概要
ISO/IEC 10589:2002(第2版)Intermediate System to Intermediate System intra-domain routeing information exchange protocolIS-IS本体の仕様。本記事が参照したのは、DISと疑似ノードを定義する3.6.6 / 3.6.7、疑似ノードの扱いとメトリック0を定める7.2.3、疑似ノードLSPの生成を定める7.3.8、LSPのパージを定める7.3.16.4、DISの選出を定める8.4.5、LAN IIHのPriorityとLAN IDを定義する9.5 / 9.6、管理パラメータの既定値を定める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 Historic参照すべきはISO/IEC 10589:2002 第2版であることを述べている。
RFC 1195Use of OSI IS-IS for Routing in TCP/IP and Dual EnvironmentsIPの経路を運ぶための拡張。

関連記事