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

IS-ISの経路集約

目次

IS-ISの経路集約

IS-ISはレベル1とレベル2の2階層でエリアを分けます。ところがエリアを分けただけでは、IPの経路は減りません。レベル1エリアの中にあるプレフィックスは、レベル1とレベル2の両方を持つルータ(L1L2ルータ)を通ってレベル2へ出て行き、ドメイン全体に配られます。エリアが10個あってそれぞれに100本のプレフィックスがあれば、レベル2には1,000本が並びます。

経路集約は、その出口で連続したプレフィックスを1本にまとめる操作です。この記事では、集約を誰がどこで行い、LSPの中身がどう変わり、何が見えなくなるのかを、RFCの規定とIOS XRの実機で確認します。

なぜ集約するのか

RFC 1195は、この仕組みをHierarchical Abbreviation of IP Reachability Information(IP到達性情報の階層的な省略)と呼んで3.2で規定しています。

プレフィックスが減ると、次の3つが同時に軽くなります。

効くところ理由
LSDBの大きさLSPに載る項目が減る。全ルータが持つデータベースが小さくなる
フラッディング量エリア内でプレフィックスが増減しても、集約の外側ではLSPを作り直さない
経路計算SPFそのものはルータ間の接続で決まるが、計算後にRIBへ入れるプレフィックスの数が減る

3つ目は特に、エリア内の変化を外へ伝えないことが効きます。集約の内側で1本が上下しても、集約を出しているルータのLSPは変わらないので、ドメインの他のルータは何も知らずに済みます。

集約はL1L2ルータが自分のLSPで行う

OSPFのarea rangeはエリア境界ルータ(ABR)がType 3 LSAを1本にまとめる設定ですが、IS-ISには「エリアの範囲」という独立した設定はありません。L1L2ルータが自分のレベル2 LSPに載せるIP到達性の項目を置き換えるという形になります。RFC 1195の書き方もそのとおりです。

これは集約アドレスの手動設定によって行われる。各レベル2ルータには、レベル2 LSPで広告するための[IPアドレス, サブネットマスク, メトリック]の項目を1つ以上設定できる。

置き換えの判定は範囲だけで決まります。

設定したアドレスは、IPアドレスとサブネットマスクだけに基づいてレベル1 LSP由来の到達可能アドレス項目を置き換える。ある設定アドレスがレベル1 LSPから得たアドレスを置き換えるかどうかの判定に、メトリック値は考慮しない

集約の範囲に入る構成プレフィックスは、そのルータのレベル2 LSPから消えます。エリアの外からは集約1本しか見えません。

メトリックは自動では決まらない

集約したプレフィックスのメトリックは、構成経路から機械的に導かれるものではありません。RFC 1195は集約アドレスと一緒にメトリックも設定するとしています。

手動で設定したレベル2アドレスについては、レベル2 LSPで広告するメトリック値も手動で設定する

集約しない項目は違います。こちらは計算されます。

レベル2 LSPで広告するメトリック値は、対応するレベル1 LSPで広告されたメトリック値に、そのレベル2ルータからレベル1ルータまでの距離を足したものから計算される。

IOS XR 26.1.1(XRd)には、集約のメトリックを設定する構文がありません。 summary-prefixに続けて書けるのはadv-unreachable / algorithm / explicit / level / partition-repair / tagで、metric% Invalid input detectedになります。RFCが「設定する」としている値を、この実装は自分で決めます

決め方はCiscoが明記しています。IS-IS設定ガイドにはこうあります。

集約を広告するのに使うメトリックは、より具体的な経路すべてのうち最小のメトリックである。

最小を採るのは、集約が実際より遠く見えるのを避けるためです。集約の中に近い宛先と遠い宛先が混ざっているとき、遠いほうに合わせると近い宛先への経路選択まで悪くなります。後半のラボでは、構成の1本だけを重くしてこの規則を確かめます。

集約が隠すもの

集約の利点はそのまま裏返しの危険になります。構成プレフィックスが1本でも残っていれば、集約は出続けます。

エリアの中で172.16.1.0/24が落ちても、172.16.0.0/22はそのまま広告されます。外のルータはその/22へパケットを送り続け、パケットは集約を出しているルータまで到達して、そこで行き先を失います。

集約しても、集約したルータ自身は構成プレフィックスを知ったままです。変わるのは広告する内容だけで、自分の経路表には具体的な経路が残ります。そのため、実在する宛先へのパケットは普通に転送されます。

これを受け止めるのが破棄経路です。集約を設定したルータは、集約プレフィックス宛の経路をNull0へ向けて自分のRIBに入れます。届かなくなった宛先のパケットは、集約を出しているルータまで来てそこで捨てられます。ループにはならず、送信元にはICMPの到達不能が返ります。

エリアの出口が複数あるときは、全部の出口で同じ集約を設定します。 1台でも集約していないルータが残ると、そのルータは構成プレフィックスを広告し続けます。受け取る側はより長く一致するほうを使うので、集約した出口のほうがメトリックが小さくても、トラフィックは集約していない出口へ寄ります。

集約はアドレス設計と一体です。エリアごとに連続した範囲を割り当てていなければ、そもそもまとめられません。同じ範囲のプレフィックスが複数のエリアに散っていると、どのエリアからも同じ集約が出て、宛先と無関係なエリアへパケットが吸い込まれます。

なお、IS-IS本体を定めるISO/IEC 10589:2002(第2版)はIPプレフィックスを運ぶ仕組み自体を持たないため、集約も規定していません。IPの経路をIS-ISで運ぶ拡張(RFC 1195)の側の話になります。

実機での検証

検証環境

エリア49.0001にR1・R2・R3を置き、R1だけをlevel-1にします。R2とR3はlevel-1-2で、別エリア49.0002level-2-onlyなR4につながります。R1にLoopback1〜4(172.16.0.1/24172.16.3.1/24)を置き、これを集約の対象にしました。まとめると172.16.0.0/22になります。

ルータエリアIS Typeループバックリンク
R149.0001level-1Lo0 1.1.1.1/32 / Lo1〜Lo4 172.16.0〜3.1/24Gi0/0/0/0 10.1.2.1(R2へ、metric 10)/ Gi0/0/0/1 10.1.3.1(R3へ、metric 20)
R249.0001level-1-2Lo0 2.2.2.2/32Gi0/0/0/0 10.1.2.2 / Gi0/0/0/1 10.2.4.2(R4へ)
R349.0001level-1-2Lo0 3.3.3.3/32Gi0/0/0/0 10.1.3.3 / Gi0/0/0/1 10.3.4.3(R4へ)
R449.0002level-2-onlyLo0 4.4.4.4/32Gi0/0/0/0 10.2.4.4 / Gi0/0/0/1 10.3.4.4

集約を設定するのはR2だけで、R3は集約しないまま残します。 R4から見ると、同じエリアの同じ経路について「まとめた側」と「まとめていない側」が同時に見えるので、違いがそのまま読み取れます。

検証のSTEP

STEP操作確かめること
0既定(集約なし)R2とR3のレベル2 LSPに構成4本が載ること
1R2に172.16.0.0/22の集約を設定R2のLSPから構成4本が消えて集約1本になること。メトリックの値
2R1のLo1のメトリックを50にする集約のメトリックが何を継ぐか
3R1のLo1をIS-ISから外すR2の集約は出続け、R3側だけが3本に減ること
4R1のLo2〜Lo4も外すR2の集約が消えること
5すべて元に戻す(最終状態)STEP 0と一致

STEP 0:集約しないと構成がそのまま出る

別エリアのR4から見た経路表です。

STEP 0 R4:show route isis
RP/0/RP0/CPU0:R4#show route isis
Sat Sep 12 01:48:54.621 UTC

i L2 1.1.1.1/32 [115/20] via 10.2.4.2, 00:12:07, GigabitEthernet0/0/0/0
i L2 2.2.2.2/32 [115/10] via 10.2.4.2, 00:12:07, GigabitEthernet0/0/0/0
i L2 3.3.3.3/32 [115/10] via 10.3.4.3, 00:12:07, GigabitEthernet0/0/0/1
i L2 10.1.2.0/24 [115/20] via 10.2.4.2, 00:12:07, GigabitEthernet0/0/0/0
i L2 10.1.3.0/24 [115/30] via 10.3.4.3, 00:12:07, GigabitEthernet0/0/0/1
i L2 172.16.0.0/24 [115/20] via 10.2.4.2, 00:12:07, GigabitEthernet0/0/0/0
i L2 172.16.1.0/24 [115/20] via 10.2.4.2, 00:12:07, GigabitEthernet0/0/0/0
i L2 172.16.2.0/24 [115/20] via 10.2.4.2, 00:12:07, GigabitEthernet0/0/0/0
i L2 172.16.3.0/24 [115/20] via 10.2.4.2, 00:12:07, GigabitEthernet0/0/0/0

172.16.0.0/24から172.16.3.0/24までの4本が、そのまま別エリアまで届いています。メトリックの20は、R2からR1までの10にR4からR2までの10を足した値です。RFC 1195が「レベル1のメトリックに、レベル2ルータからレベル1ルータまでの距離を足す」と定めているとおりになっています。

STEP 1:R2に集約を設定する

R2に1行入れました。level 2でレベル2側だけに効かせています。

R2に投入した設定
router isis 1
 address-family ipv4 unicast
  summary-prefix 172.16.0.0/22 level 2

R4のデータベースです。

STEP 1 R4:show isis database detail
RP/0/RP0/CPU0:R4#show isis database detail
Sat Sep 12 02:06:41.494 UTC

IS-IS 1 (Level-2) Link State Database
LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime/Rcvd  ATT/P/OL
R2.00-00              0x0000000b   0x2aa0        1058 /1200         0/0/0
  Area Address:   49.0001
  LSP MTU:        1492
  NLPID:          0xcc
  IP Address:     2.2.2.2
  Hostname:       R2
  Metric: 10         IS-Extended R4.00
  Metric: 10         IP-Extended 1.1.1.1/32
  Metric: 0          IP-Extended 2.2.2.2/32
  Metric: 30         IP-Extended 3.3.3.3/32
  Metric: 10         IP-Extended 10.1.2.0/24
  Metric: 30         IP-Extended 10.1.3.0/24
  Metric: 10         IP-Extended 10.2.4.0/24
  Metric: 40         IP-Extended 10.3.4.0/24
  Metric: 10         IP-Extended 172.16.0.0/22
R3.00-00              0x00000009   0x6561        983  /1200         0/0/0
  Area Address:   49.0001
  LSP MTU:        1492
  NLPID:          0xcc
  IP Address:     3.3.3.3
  Hostname:       R3
  Metric: 10         IS-Extended R4.00
  Metric: 20         IP-Extended 1.1.1.1/32
  Metric: 30         IP-Extended 2.2.2.2/32
  Metric: 0          IP-Extended 3.3.3.3/32
  Metric: 30         IP-Extended 10.1.2.0/24
  Metric: 20         IP-Extended 10.1.3.0/24
  Metric: 40         IP-Extended 10.2.4.0/24
  Metric: 10         IP-Extended 10.3.4.0/24
  Metric: 20         IP-Extended 172.16.0.0/24
  Metric: 20         IP-Extended 172.16.1.0/24
  Metric: 20         IP-Extended 172.16.2.0/24
  Metric: 20         IP-Extended 172.16.3.0/24
R4.00-00            * 0x00000008   0xb25c        861  /*            0/0/0
  Area Address:   49.0002
  LSP MTU:        1492
  NLPID:          0xcc
  IP Address:     4.4.4.4
  Hostname:       R4
  Metric: 10         IS-Extended R2.00
  Metric: 10         IS-Extended R3.00
  Metric: 0          IP-Extended 4.4.4.4/32
  Metric: 10         IP-Extended 10.2.4.0/24
  Metric: 10         IP-Extended 10.3.4.0/24

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

R2のLSPから構成4本が消え、172.16.0.0/22の1行だけになりました。 メトリックは10です。集約していないR3のLSPには4本がそのまま残っているので、同じエリアの同じ経路が、集約した側とそうでない側の両方から広告されている状態になります。

集約を設定したR2自身の経路表も変わります。

STEP 1 R2:show route 172.16.0.0/22
RP/0/RP0/CPU0:R2#show route 172.16.0.0/22
Sat Sep 12 02:06:11.017 UTC

Routing entry for 172.16.0.0/22
  Known via "isis 1", distance 115, metric 10 (summary), type manual summary
  Installed Sep 12 02:04:19.948 for 00:01:51
  Routing Descriptor Blocks
    directly connected, via Null0
      Route metric is 10
  No advertising protos. 

type manual summaryと表示され、次ホップはNull0です。R2は自分が広告した/22宛のパケットを、より具体的な経路に当たらなければここで捨てます。

R2が持っている経路そのものは変わりません。

STEP 1 R2:show route isis
RP/0/RP0/CPU0:R2#show route isis
Sat Sep 12 02:06:10.843 UTC

i L1 1.1.1.1/32 [115/10] via 10.1.2.1, 00:35:12, GigabitEthernet0/0/0/0
i L1 3.3.3.3/32 [115/30] via 10.1.2.1, 00:32:09, GigabitEthernet0/0/0/0
i L2 4.4.4.4/32 [115/10] via 10.2.4.4, 00:29:24, GigabitEthernet0/0/0/1
i L1 10.1.3.0/24 [115/30] via 10.1.2.1, 00:35:12, GigabitEthernet0/0/0/0
i L1 10.3.4.0/24 [115/40] via 10.1.2.1, 00:32:09, GigabitEthernet0/0/0/0
i su 172.16.0.0/22 [115/10] via 0.0.0.0, 00:01:50, Null0
i L1 172.16.0.0/24 [115/10] via 10.1.2.1, 00:35:12, GigabitEthernet0/0/0/0
i L1 172.16.1.0/24 [115/10] via 10.1.2.1, 00:35:12, GigabitEthernet0/0/0/0
i L1 172.16.2.0/24 [115/10] via 10.1.2.1, 00:35:12, GigabitEthernet0/0/0/0
i L1 172.16.3.0/24 [115/10] via 10.1.2.1, 00:35:12, GigabitEthernet0/0/0/0

i suの行がNull0向きの集約で、その下に構成4本(i L1)がそのまま残っています。集約が変えるのは「何を広告するか」だけで、「何を知っているか」は変えません。 R2は172.16.1.5宛のパケットを、より長く一致する/24に従ってR1へ送ります。捨てるのは、どの構成にも当たらないアドレスだけです。

R4の経路表では、集約と構成が同時に見えます。

STEP 1 R4:show route isis
RP/0/RP0/CPU0:R4#show route isis
Sat Sep 12 02:06:40.367 UTC

i L2 1.1.1.1/32 [115/20] via 10.2.4.2, 00:29:53, GigabitEthernet0/0/0/0
i L2 2.2.2.2/32 [115/10] via 10.2.4.2, 00:29:53, GigabitEthernet0/0/0/0
i L2 3.3.3.3/32 [115/10] via 10.3.4.3, 00:29:53, GigabitEthernet0/0/0/1
i L2 10.1.2.0/24 [115/20] via 10.2.4.2, 00:29:53, GigabitEthernet0/0/0/0
i L2 10.1.3.0/24 [115/30] via 10.3.4.3, 00:29:53, GigabitEthernet0/0/0/1
i L2 172.16.0.0/22 [115/20] via 10.2.4.2, 00:02:20, GigabitEthernet0/0/0/0
i L2 172.16.0.0/24 [115/30] via 10.3.4.3, 00:02:20, GigabitEthernet0/0/0/1
i L2 172.16.1.0/24 [115/30] via 10.3.4.3, 00:02:20, GigabitEthernet0/0/0/1
i L2 172.16.2.0/24 [115/30] via 10.3.4.3, 00:02:20, GigabitEthernet0/0/0/1
i L2 172.16.3.0/24 [115/30] via 10.3.4.3, 00:02:20, GigabitEthernet0/0/0/1

/22はR2経由でメトリック20、/24の3本はR3経由で30です。R4が172.16.1.5へ送るときに使うのは、メトリックの小さい/22ではなく、より長く一致する/24のほうです。 集約する側としない側が混在すると、トラフィックは集約していない側へ寄ります。

STEP 2:構成のメトリックを変えても集約は動かない

R1のLoopback1(172.16.0.0/24)のメトリックを50にしました。これでR3経由のこの経路は80(20+50+10)になります。

STEP 2 R4:show route isis
RP/0/RP0/CPU0:R4#show route isis
Sat Sep 12 02:09:25.603 UTC

i L2 1.1.1.1/32 [115/20] via 10.2.4.2, 00:32:38, GigabitEthernet0/0/0/0
i L2 2.2.2.2/32 [115/10] via 10.2.4.2, 00:32:38, GigabitEthernet0/0/0/0
i L2 3.3.3.3/32 [115/10] via 10.3.4.3, 00:32:38, GigabitEthernet0/0/0/1
i L2 10.1.2.0/24 [115/20] via 10.2.4.2, 00:32:38, GigabitEthernet0/0/0/0
i L2 10.1.3.0/24 [115/30] via 10.3.4.3, 00:32:38, GigabitEthernet0/0/0/1
i L2 172.16.0.0/22 [115/20] via 10.2.4.2, 00:05:05, GigabitEthernet0/0/0/0
i L2 172.16.0.0/24 [115/80] via 10.3.4.3, 00:02:29, GigabitEthernet0/0/0/1
i L2 172.16.1.0/24 [115/30] via 10.3.4.3, 00:05:05, GigabitEthernet0/0/0/1
i L2 172.16.2.0/24 [115/30] via 10.3.4.3, 00:05:05, GigabitEthernet0/0/0/1
i L2 172.16.3.0/24 [115/30] via 10.3.4.3, 00:05:05, GigabitEthernet0/0/0/1

R3経由の172.16.0.0/24が80に上がりました。/22 のほうは20のままです。集約の中身は60(R2から見た値)/10/10/10になったので、集約が継いだのは最小の10です。先頭の構成(172.16.0.0/24)でも最大値でもありません。

STEP 3:構成が1本消えても、集約側のLSPは作り直されない

R1のLoopback1をIS-ISから外しました。エリアの中では経路が1本消えたことになります。

STEP 1 R4:show isis database
RP/0/RP0/CPU0:R4#show isis database
Sat Sep 12 02:06:41.375 UTC

IS-IS 1 (Level-2) Link State Database
LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime/Rcvd  ATT/P/OL
R2.00-00              0x0000000b   0x2aa0        1058 /1200         0/0/0
R3.00-00              0x00000009   0x6561        983  /1200         0/0/0
R4.00-00            * 0x00000008   0xb25c        861  /*            0/0/0

 Total Level-2 LSP count: 3     Local Level-2 LSP count: 1
STEP 3 R4:show isis database
RP/0/RP0/CPU0:R4#show isis database
Sat Sep 12 02:12:02.877 UTC

IS-IS 1 (Level-2) Link State Database
LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime/Rcvd  ATT/P/OL
R2.00-00              0x0000000b   0x2aa0        736  /1200         0/0/0
R3.00-00              0x0000000b   0xa1a0        1060 /1200         0/0/0
R4.00-00            * 0x00000008   0xb25c        539  /*            0/0/0

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

2つを見比べてください。R2のLSPはシーケンス番号もチェックサムも0x0000000b / 0x2aa0のままです。STEP 2のメトリック変更とSTEP 3の経路削除という2回の変化があったのに、R2はLSPを作り直していません。集約していないR3は0x00000009から0x0000000bへ2回上がっています。

エリアの外から見て、集約の内側の変化はLSPの再生成すら起こしていないということです。これが集約でフラッディングが減る仕組みそのものになります。

STEP 4:構成が全部消えると集約も消える

R1のLoopback2〜4も外し、集約に入る経路を0本にしました。

STEP 4 R4:show route isis
RP/0/RP0/CPU0:R4#show route isis
Sat Sep 12 02:14:39.283 UTC

i L2 1.1.1.1/32 [115/20] via 10.2.4.2, 00:37:52, GigabitEthernet0/0/0/0
i L2 2.2.2.2/32 [115/10] via 10.2.4.2, 00:37:52, GigabitEthernet0/0/0/0
i L2 3.3.3.3/32 [115/10] via 10.3.4.3, 00:37:52, GigabitEthernet0/0/0/1
i L2 10.1.2.0/24 [115/20] via 10.2.4.2, 00:37:52, GigabitEthernet0/0/0/0
i L2 10.1.3.0/24 [115/30] via 10.3.4.3, 00:37:52, GigabitEthernet0/0/0/1

172.16で始まる行がすべて消えました。R2の破棄経路も一緒に消えます。

STEP 4 R2:show route 172.16.0.0/22
RP/0/RP0/CPU0:R2#show route 172.16.0.0/22
Sat Sep 12 02:14:09.154 UTC

% Network not in table

summary-prefixの設定は残したままですが、範囲に入る経路が1本も無ければ集約は広告されません。破棄経路も、集約を広告している間だけ存在します。

STEP 5:元に戻す

Loopback1〜4をIS-ISへ戻し、R2の集約も外しました。4台のrunning-configはSTEP 0と一致し、R2・R3のLSPもSTEP 0と同じ内容に戻っています。

検証Configおよびshow結果

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

ファイル内容
..._show.txtshow version / show interface description / show route と、show isis 系一式(interface brief / neighbors / database detail / topology / route / adjacency-log / spf-log / lsp-log / statistics)、show route 172.16.0.0/22
..._log.txtそのSTEPの範囲だけに絞ったshow logging。各STEPの開始時にlogmsgでマーカーを入れ、その時刻をshow logging startに指定して取得したもの
..._run.txtそのSTEP時点のshow running-config(=そのSTEPの検証Config)

STEP 0:初期状態(集約なし)

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

STEP 1:R2に172.16.0.0/22の集約を設定

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

STEP 2:R1のLo1のメトリックを50に

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

STEP 3:R1のLo1をIS-ISから外す

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

STEP 4:R1のLo2〜Lo4も外す

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

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

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

参考

標準タイトル概要
RFC 1195Use of OSI IS-IS for Routing in TCP/IP and Dual EnvironmentsIPの経路をIS-ISで運ぶための拡張。集約を規定しているのは 3.2「Hierarchical Abbreviation of IP Reachability Information」。集約アドレスとメトリックを手動で設定すること、置き換えの判定にメトリックを考慮しないこと、集約しない項目のメトリックはレベル1のメトリックとレベル2ルータまでの距離の和から計算されることを定めている。
RFC 5305IS-IS Extensions for Traffic Engineeringwideメトリック。この検証で使っているTLV 135(Extended IP Reachability)を定義している。
Cisco IS-IS設定ガイド(IOS XE 17.x)Customizing IS-IS for Your Network Design集約のメトリックについて「より具体的な経路すべてのうち最小のメトリック」と明記している。RFC 1195が手動設定としている値を、実装がどう決めているかの根拠。
Cisco ASR 9000 Routing Command ReferenceIS-IS CommandsIOS XRのsummary-prefixコマンドの一覧。本記事で使ったlevelのほか、adv-unreachable / algorithm / explicit / partition-repair / tagが並ぶ。メトリックを指定する引数は無い(本記事の検証機 XRd 26.1.1 で確認)。
ISO/IEC 10589:2002(第2版)Intermediate System to Intermediate System intra-domain routeing information exchange protocolIS-IS本体の仕様。IPプレフィックスを運ぶ仕組みを持たないため、経路集約も規定していない

関連記事