IS-ISのECMP(等コストマルチパス)
同じ宛先へのコストが等しい経路が複数あるとき、IS-ISは1本を選ぶのではなく、見つけた経路をまとめて経路表に載せます。 ECMPと呼ばれる動きで、追加の設定なしに既定で働きます。
この記事では、載せられる本数の上限、上限に当たったときに残る経路、パケットが宛先ごとに振り分けられる様子を、 等コスト経路が6本ある構成で確認します。
等コスト経路の扱いは規格が定めている
ISO/IEC 10589:2002(第2版)の決定プロセスは、宛先ごとに「そこへ行くための隣接の集合」を持ちます(7.2.6、附属書C.2.1)。 附属書C.2は、元のSPFアルゴリズムは複数経路への分散を扱わないが、この規格の算法は宛先ごとに等コスト経路の集合を求めることで 分散を可能にしている、と述べています。
集合に入る数の上限は管理パラメータ maximumPathSplits で、規格の既定値は2、取りうる値は1〜32です。
上限を超えた分は7.2.7が定める順で間引きます。実装ごとに結果が変わらないよう、順位づけは決定的に定められています。
| 順 | 基準 |
|---|---|
| 1 | 隣接の種別(エンドシステム/リーチャブルアドレスプレフィックスの隣接を優先) |
| 2 | メトリック和が小さいほう |
| 3 | ネイバーIDが小さいほう |
| 4 | 回線IDが小さいほう |
| 5 | LANアドレスが小さいほう |
等コスト経路を計算すること自体は、適合性の表(A.5.4)では任意機能です。必須なのは「サポートするメトリックごとに 単一の最小コスト経路を計算すること」で、ECMPはその上に乗る選択項目という位置づけになっています。
IOS XRでは既定で8本まで
IOS XRの maximum-paths はアドレスファミリ配下に置きます。既定値は8で、範囲は1〜64です
(32から64へ広がったのはIOS XR 5.3.0)。規格の既定である2より多いため、等コスト経路が6本ある構成では
設定を足さなくても6本すべてが載ります。
| 項目 | ISO/IEC 10589:2002 | IOS XR |
|---|---|---|
| パラメータ | maximumPathSplits | maximum-paths |
| 既定値 | 2 | 8 |
| 範囲 | 1〜32 | 1〜64 |
router isis 1
address-family ipv4 unicast
maximum-paths 4上限が効くのは経路表への載せ方で、SPFの計算結果そのものではありません。show isis topology に出る
「そのルータへ行ける隣接」は上限に関わらず全数が並び、上限は show route isis のプレフィックスごとの行数に現れます。
さらに、IOS XRのIS-ISでは、上限に当たったときにどの経路が残るかがプレフィックスごとに違います。
maximum-paths 1 にしても装置から出る通信が1本のリンクに集まるわけではなく、宛先の違うプレフィックスは
別のリンクへ載ります。同じ maximum-paths を持つ他のプロトコルが同じように振る舞うとは限りません。
転送は宛先ごとに振り分けられる
経路表に出口が複数載っていても、パケットを1つずつ順番に振り分けるわけではありません。同じ通信のパケットが
別の経路を通ると到着順が入れ替わるため、送信元アドレスと宛先アドレスなどから計算した値で出口を決めます。
どの出口になるかは show cef exact-route <送信元> <宛先> で、通信を流さずに確認できます。
検証構成
8台すべてがエリア 49.0001 の level-2-only で、metric-style wide、全リンクを point-to-point にしています。
| 項目 | 値 |
|---|---|
| 経路 | R1 → P1〜P6 → R8 の6本。各リンクを metric 10 にしてあるので、どの経路も合計20 |
| 宛先 | R8の Loopback1〜8(192.168.8.1〜.8/32)。すべて passive でIS-ISに載せる |
| 観測 | R1から8つの宛先への ping / traceroute、R1の show route isis / show cef exact-route、P1〜P6の入力カウンタ |
ソフトウェアはXRd 26.1.1です。各STEPではカウンタをクリアしてから ping を流し、その後に show を取得しています。
検証の全体像
| STEP | 操作 | 確かめること |
|---|---|---|
| 0 | 初期状態(既定のまま) | 等コスト6本がそのまま載るか。8つの宛先がどのリンクへ散るか |
| 1 | R1に maximum-paths 4 | 載る本数が4に減ること。プレフィックスごとに残る組み合わせ |
| 2 | R1に maximum-paths 2 | 2本に減ること。残り方がプレフィックスで違うこと |
| 3 | R1に maximum-paths 1 | 1本だけになること。装置全体では複数のリンクが使われること |
| 4 | maximum-paths を削除 | 既定に戻り6本になること |
| 5 | R1 - P6 のメトリックを両端で20に | P6経由が合計30になり、載らなくなること |
| 6 | メトリックを10に戻す(最終状態) | 6本に戻ること |
以降の節はSTEP順ではなく、確かめる内容ごとにまとめています。
STEP 0:既定では6本すべてが載る
maximum-paths を書いていない状態のR1の経路表です。R8のLoopback(192.168.8.1〜.8)と Lo0(8.8.8.8)が、
いずれも6本の出口を持っています。
RP/0/RP0/CPU0:R1#show route isis
Sun Sep 27 13:14:48.622 UTC
i L2 2.2.2.2/32 [115/10] via 10.0.11.2, 00:07:31, GigabitEthernet0/0/0/0
i L2 3.3.3.3/32 [115/10] via 10.0.12.3, 00:08:29, GigabitEthernet0/0/0/1
i L2 4.4.4.4/32 [115/10] via 10.0.13.4, 00:08:24, GigabitEthernet0/0/0/2
i L2 5.5.5.5/32 [115/10] via 10.0.14.5, 00:08:12, GigabitEthernet0/0/0/3
i L2 6.6.6.6/32 [115/10] via 10.0.15.6, 00:08:07, GigabitEthernet0/0/0/4
i L2 7.7.7.7/32 [115/10] via 10.0.16.7, 00:07:57, GigabitEthernet0/0/0/5
i L2 8.8.8.8/32 [115/20] via 10.0.11.2, 00:07:31, GigabitEthernet0/0/0/0
[115/20] via 10.0.12.3, 00:07:31, GigabitEthernet0/0/0/1
[115/20] via 10.0.13.4, 00:07:31, GigabitEthernet0/0/0/2
[115/20] via 10.0.14.5, 00:07:31, GigabitEthernet0/0/0/3
[115/20] via 10.0.15.6, 00:07:31, GigabitEthernet0/0/0/4
[115/20] via 10.0.16.7, 00:07:31, GigabitEthernet0/0/0/5
i L2 10.0.81.0/24 [115/20] via 10.0.11.2, 00:07:31, GigabitEthernet0/0/0/0
i L2 10.0.82.0/24 [115/20] via 10.0.12.3, 00:08:29, GigabitEthernet0/0/0/1
i L2 10.0.83.0/24 [115/20] via 10.0.13.4, 00:08:24, GigabitEthernet0/0/0/2
i L2 10.0.84.0/24 [115/20] via 10.0.14.5, 00:08:12, GigabitEthernet0/0/0/3
i L2 10.0.85.0/24 [115/20] via 10.0.15.6, 00:08:07, GigabitEthernet0/0/0/4
i L2 10.0.86.0/24 [115/20] via 10.0.16.7, 00:07:57, GigabitEthernet0/0/0/5
i L2 192.168.8.1/32 [115/20] via 10.0.11.2, 00:07:31, GigabitEthernet0/0/0/0
[115/20] via 10.0.12.3, 00:07:31, GigabitEthernet0/0/0/1
[115/20] via 10.0.13.4, 00:07:31, GigabitEthernet0/0/0/2
[115/20] via 10.0.14.5, 00:07:31, GigabitEthernet0/0/0/3
[115/20] via 10.0.15.6, 00:07:31, GigabitEthernet0/0/0/4
[115/20] via 10.0.16.7, 00:07:31, GigabitEthernet0/0/0/5
i L2 192.168.8.2/32 [115/20] via 10.0.11.2, 00:07:31, GigabitEthernet0/0/0/0
[115/20] via 10.0.12.3, 00:07:31, GigabitEthernet0/0/0/1
[115/20] via 10.0.13.4, 00:07:31, GigabitEthernet0/0/0/2
[115/20] via 10.0.14.5, 00:07:31, GigabitEthernet0/0/0/3
[115/20] via 10.0.15.6, 00:07:31, GigabitEthernet0/0/0/4
[115/20] via 10.0.16.7, 00:07:31, GigabitEthernet0/0/0/5
i L2 192.168.8.3/32 [115/20] via 10.0.11.2, 00:07:31, GigabitEthernet0/0/0/0
[115/20] via 10.0.12.3, 00:07:31, GigabitEthernet0/0/0/1
[115/20] via 10.0.13.4, 00:07:31, GigabitEthernet0/0/0/2
[115/20] via 10.0.14.5, 00:07:31, GigabitEthernet0/0/0/3
[115/20] via 10.0.15.6, 00:07:31, GigabitEthernet0/0/0/4
[115/20] via 10.0.16.7, 00:07:31, GigabitEthernet0/0/0/5
i L2 192.168.8.4/32 [115/20] via 10.0.11.2, 00:07:31, GigabitEthernet0/0/0/0
[115/20] via 10.0.12.3, 00:07:31, GigabitEthernet0/0/0/1
[115/20] via 10.0.13.4, 00:07:31, GigabitEthernet0/0/0/2
[115/20] via 10.0.14.5, 00:07:31, GigabitEthernet0/0/0/3
[115/20] via 10.0.15.6, 00:07:31, GigabitEthernet0/0/0/4
[115/20] via 10.0.16.7, 00:07:31, GigabitEthernet0/0/0/5
i L2 192.168.8.5/32 [115/20] via 10.0.11.2, 00:07:31, GigabitEthernet0/0/0/0
[115/20] via 10.0.12.3, 00:07:31, GigabitEthernet0/0/0/1
[115/20] via 10.0.13.4, 00:07:31, GigabitEthernet0/0/0/2
[115/20] via 10.0.14.5, 00:07:31, GigabitEthernet0/0/0/3
[115/20] via 10.0.15.6, 00:07:31, GigabitEthernet0/0/0/4
[115/20] via 10.0.16.7, 00:07:31, GigabitEthernet0/0/0/5
i L2 192.168.8.6/32 [115/20] via 10.0.11.2, 00:07:31, GigabitEthernet0/0/0/0
[115/20] via 10.0.12.3, 00:07:31, GigabitEthernet0/0/0/1
[115/20] via 10.0.13.4, 00:07:31, GigabitEthernet0/0/0/2
[115/20] via 10.0.14.5, 00:07:31, GigabitEthernet0/0/0/3
[115/20] via 10.0.15.6, 00:07:31, GigabitEthernet0/0/0/4
[115/20] via 10.0.16.7, 00:07:31, GigabitEthernet0/0/0/5
i L2 192.168.8.7/32 [115/20] via 10.0.11.2, 00:07:31, GigabitEthernet0/0/0/0
[115/20] via 10.0.12.3, 00:07:31, GigabitEthernet0/0/0/1
[115/20] via 10.0.13.4, 00:07:31, GigabitEthernet0/0/0/2
[115/20] via 10.0.14.5, 00:07:31, GigabitEthernet0/0/0/3
[115/20] via 10.0.15.6, 00:07:31, GigabitEthernet0/0/0/4
[115/20] via 10.0.16.7, 00:07:31, GigabitEthernet0/0/0/5
i L2 192.168.8.8/32 [115/20] via 10.0.11.2, 00:07:31, GigabitEthernet0/0/0/0
[115/20] via 10.0.12.3, 00:07:31, GigabitEthernet0/0/0/1
[115/20] via 10.0.13.4, 00:07:31, GigabitEthernet0/0/0/2
[115/20] via 10.0.14.5, 00:07:31, GigabitEthernet0/0/0/3
[115/20] via 10.0.15.6, 00:07:31, GigabitEthernet0/0/0/4
[115/20] via 10.0.16.7, 00:07:31, GigabitEthernet0/0/0/5SPFの結果は show isis topology に出ます。R8へ行ける隣接がP6からP1まで6件並び、メトリックはどれも20です。
RP/0/RP0/CPU0:R1#show isis topology
Sun Sep 27 13:14:49.421 UTC
IS-IS 1 paths to IPv4 Unicast (Level-2) routers
System Id Metric Next-Hop Interface SNPA
R1 --
P1 10 P1 Gi0/0/0/0 *PtoP*
P2 10 P2 Gi0/0/0/1 *PtoP*
P3 10 P3 Gi0/0/0/2 *PtoP*
P4 10 P4 Gi0/0/0/3 *PtoP*
P5 10 P5 Gi0/0/0/4 *PtoP*
P6 10 P6 Gi0/0/0/5 *PtoP*
R8 20 P6 Gi0/0/0/5 *PtoP*
R8 20 P5 Gi0/0/0/4 *PtoP*
R8 20 P4 Gi0/0/0/3 *PtoP*
R8 20 P3 Gi0/0/0/2 *PtoP*
R8 20 P2 Gi0/0/0/1 *PtoP*
R8 20 P1 Gi0/0/0/0 *PtoP* 宛先ごとに通る経路が変わる
6本のうちどれを使うかは宛先ごとに決まります。show cef exact-route に送信元と宛先を与えると、その組み合わせで
選ばれる出口が1つだけ返ります。
RP/0/RP0/CPU0:R1#show cef exact-route 1.1.1.1 192.168.8.1
Sun Sep 27 13:17:33.565 UTC
192.168.8.1/32, version 136, internal 0x1000001 0x10 (ptr 0x88519330) [1], 0x400 (0x89740418), 0x0 (0x0)
Updated Sep 27 13:07:17.114
local adjacency to GigabitEthernet0/0/0/1
Prefix Len 32, traffic index 0, precedence n/a, priority 1
via GigabitEthernet0/0/0/1
via 10.0.12.3/32, GigabitEthernet0/0/0/1, 7 dependencies, weight 0, class 0 [flags 0x0]
path-idx 1 NHID 0x2 [0x8a8405a0 0x0]
next hop 10.0.12.3/32
local adjacencyRP/0/RP0/CPU0:R1#show cef exact-route 1.1.1.1 192.168.8.4
Sun Sep 27 13:17:34.260 UTC
192.168.8.4/32, version 115, internal 0x1000001 0x10 (ptr 0x885195d0) [1], 0x400 (0x89740358), 0x0 (0x0)
Updated Sep 27 13:07:17.114
local adjacency to GigabitEthernet0/0/0/0
Prefix Len 32, traffic index 0, precedence n/a, priority 1
via GigabitEthernet0/0/0/0
via 10.0.11.2/32, GigabitEthernet0/0/0/0, 7 dependencies, weight 0, class 0 [flags 0x0]
path-idx 0 NHID 0x7 [0x8a840c80 0x0]
next hop 10.0.11.2/32
local adjacency8つの宛先を並べると、6本のうち5本が使われました。同じコストの経路でも均等に配られるわけではなく、 計算した値によって偏ります。
| 宛先 | 出口 | 経由するルータ |
|---|---|---|
| 192.168.8.1 / .2 | Gi0/0/0/1 | P2 |
| 192.168.8.3 | Gi0/0/0/3 | P4 |
| 192.168.8.4 / .5 | Gi0/0/0/0 | P1 |
| 192.168.8.6 | Gi0/0/0/2 | P3 |
| 192.168.8.7 / .8 | Gi0/0/0/4 | P5 |
traceroute の中間ホップも宛先ごとに変わります。
RP/0/RP0/CPU0:R1#traceroute 192.168.8.1 source 1.1.1.1
Sun Sep 27 13:14:04.621 UTC
Type escape sequence to abort.
Tracing the route to 192.168.8.1
1 10.0.12.3 10 msec 6 msec 5 msec
2 10.0.82.8 22 msec * 10 msec RP/0/RP0/CPU0:R1#traceroute 192.168.8.4 source 1.1.1.1
Sun Sep 27 13:14:19.814 UTC
Type escape sequence to abort.
Tracing the route to 192.168.8.4
1 10.0.11.2 7 msec 4 msec 5 msec
2 10.0.81.8 9 msec * 22 msec 中継するP1〜P6の入力パケット数でも同じ偏りが見えます(IIHを含む数で、各STEPの開始時にクリアしています)。
| STEP | P1 | P2 | P3 | P4 | P5 | P6 |
|---|---|---|---|---|---|---|
| 0(既定) | 62 | 64 | 41 | 43 | 70 | 20 |
| 1(4本) | 122 | 73 | 25 | 26 | 53 | 56 |
| 2(2本) | 64 | 15 | 68 | 70 | 45 | 47 |
| 3(1本) | 11 | 66 | 16 | 123 | 21 | 77 |
| 4(既定に戻す) | 65 | 68 | 44 | 46 | 73 | 23 |
maximum-pathsで絞ると、プレフィックスごとに別の組み合わせが残る(IS-IS)
maximum-paths を4 → 2 → 1と下げていくと、プレフィックスごとの行数がその値まで減ります。
残る出口の組み合わせは、プレフィックスによって違います。
i L2 192.168.8.1/32 [115/20] via 10.0.11.2, 00:02:10, GigabitEthernet0/0/0/0
[115/20] via 10.0.12.3, 00:02:10, GigabitEthernet0/0/0/1
[115/20] via 10.0.13.4, 00:02:10, GigabitEthernet0/0/0/2
[115/20] via 10.0.14.5, 00:02:10, GigabitEthernet0/0/0/3
i L2 192.168.8.2/32 [115/20] via 10.0.11.2, 00:02:10, GigabitEthernet0/0/0/0
[115/20] via 10.0.12.3, 00:02:10, GigabitEthernet0/0/0/1
[115/20] via 10.0.13.4, 00:02:10, GigabitEthernet0/0/0/2
[115/20] via 10.0.14.5, 00:02:10, GigabitEthernet0/0/0/3
i L2 192.168.8.3/32 [115/20] via 10.0.13.4, 00:02:10, GigabitEthernet0/0/0/2
[115/20] via 10.0.14.5, 00:02:10, GigabitEthernet0/0/0/3
[115/20] via 10.0.15.6, 00:02:10, GigabitEthernet0/0/0/4
[115/20] via 10.0.16.7, 00:02:10, GigabitEthernet0/0/0/5
i L2 192.168.8.4/32 [115/20] via 10.0.11.2, 00:02:10, GigabitEthernet0/0/0/0
[115/20] via 10.0.12.3, 00:02:10, GigabitEthernet0/0/0/1
[115/20] via 10.0.15.6, 00:02:10, GigabitEthernet0/0/0/4
[115/20] via 10.0.16.7, 00:02:10, GigabitEthernet0/0/0/5
i L2 192.168.8.5/32 [115/20] via 10.0.11.2, 00:02:10, GigabitEthernet0/0/0/0
[115/20] via 10.0.12.3, 00:02:10, GigabitEthernet0/0/0/1
[115/20] via 10.0.15.6, 00:02:10, GigabitEthernet0/0/0/4
[115/20] via 10.0.16.7, 00:02:10, GigabitEthernet0/0/0/5
i L2 192.168.8.6/32 [115/20] via 10.0.13.4, 00:02:10, GigabitEthernet0/0/0/2
[115/20] via 10.0.14.5, 00:02:10, GigabitEthernet0/0/0/3
[115/20] via 10.0.15.6, 00:02:10, GigabitEthernet0/0/0/4
[115/20] via 10.0.16.7, 00:02:10, GigabitEthernet0/0/0/5
i L2 192.168.8.7/32 [115/20] via 10.0.11.2, 00:02:10, GigabitEthernet0/0/0/0
[115/20] via 10.0.12.3, 00:02:10, GigabitEthernet0/0/0/1
[115/20] via 10.0.13.4, 00:02:10, GigabitEthernet0/0/0/2
[115/20] via 10.0.14.5, 00:02:10, GigabitEthernet0/0/0/3
i L2 192.168.8.8/32 [115/20] via 10.0.11.2, 00:02:10, GigabitEthernet0/0/0/0i L2 192.168.8.1/32 [115/20] via 10.0.13.4, 00:02:20, GigabitEthernet0/0/0/2
[115/20] via 10.0.14.5, 00:02:20, GigabitEthernet0/0/0/3
i L2 192.168.8.2/32 [115/20] via 10.0.13.4, 00:02:20, GigabitEthernet0/0/0/2
[115/20] via 10.0.14.5, 00:02:20, GigabitEthernet0/0/0/3
i L2 192.168.8.3/32 [115/20] via 10.0.15.6, 00:02:20, GigabitEthernet0/0/0/4
[115/20] via 10.0.16.7, 00:02:20, GigabitEthernet0/0/0/5
i L2 192.168.8.4/32 [115/20] via 10.0.11.2, 00:02:20, GigabitEthernet0/0/0/0
[115/20] via 10.0.12.3, 00:02:20, GigabitEthernet0/0/0/1
i L2 192.168.8.5/32 [115/20] via 10.0.11.2, 00:02:20, GigabitEthernet0/0/0/0
[115/20] via 10.0.12.3, 00:02:20, GigabitEthernet0/0/0/1
i L2 192.168.8.6/32 [115/20] via 10.0.15.6, 00:02:20, GigabitEthernet0/0/0/4
[115/20] via 10.0.16.7, 00:02:20, GigabitEthernet0/0/0/5
i L2 192.168.8.7/32 [115/20] via 10.0.13.4, 00:02:20, GigabitEthernet0/0/0/2
[115/20] via 10.0.14.5, 00:02:20, GigabitEthernet0/0/0/3
i L2 192.168.8.8/32 [115/20] via 10.0.13.4, 00:02:20, GigabitEthernet0/0/0/2i L2 192.168.8.1/32 [115/20] via 10.0.14.5, 00:02:09, GigabitEthernet0/0/0/3
i L2 192.168.8.2/32 [115/20] via 10.0.14.5, 00:02:09, GigabitEthernet0/0/0/3
i L2 192.168.8.3/32 [115/20] via 10.0.16.7, 00:02:09, GigabitEthernet0/0/0/5
i L2 192.168.8.4/32 [115/20] via 10.0.12.3, 00:02:09, GigabitEthernet0/0/0/1
i L2 192.168.8.5/32 [115/20] via 10.0.12.3, 00:02:09, GigabitEthernet0/0/0/1
i L2 192.168.8.6/32 [115/20] via 10.0.16.7, 00:02:09, GigabitEthernet0/0/0/5
i L2 192.168.8.7/32 [115/20] via 10.0.14.5, 00:02:09, GigabitEthernet0/0/0/3
i L2 192.168.8.8/32 [115/20] via 10.0.14.5, 00:02:09, GigabitEthernet0/0/0/38つの宛先は3つのまとまりに分かれ、それぞれ別の組み合わせを残しました。
maximum-paths 1 でも、装置から出ていく通信はGi0/0/0/1・Gi0/0/0/3・Gi0/0/0/5の3本に分かれています。
| 宛先 | 4本のとき | 2本のとき | 1本のとき |
|---|---|---|---|
| 192.168.8.1 / .2 / .7 / .8 | Gi0/0/0/0〜3 | Gi0/0/0/2・Gi0/0/0/3 | Gi0/0/0/3 |
| 192.168.8.3 / .6 | Gi0/0/0/2〜5 | Gi0/0/0/4・Gi0/0/0/5 | Gi0/0/0/5 |
| 192.168.8.4 / .5 | Gi0/0/0/0・Gi0/0/0/1・Gi0/0/0/4・Gi0/0/0/5 | Gi0/0/0/0・Gi0/0/0/1 | Gi0/0/0/1 |
show isis topology は maximum-paths 1 のときもR8への隣接を6件のまま並べます。上限はSPFの結果ではなく、
経路表に載せる段で効いていることになります。
中継ルータのカウンタでも裏づけられます。STEP 3で通信が載ったP4と、IIHだけのP1を並べます。
GigabitEthernet0/0/0/0 is up, line protocol is up
Interface state transitions: 1
Hardware is GigabitEthernet, address is 5254.00c5.360d (bia 5254.00c5.360d)
Description: to R1 (10.0.14.0/24 p2p)
Internet address is 10.0.14.5/24
MTU 1514 bytes, BW 1000000 Kbit (Max: 1000000 Kbit)
reliability 255/255, txload 0/255, rxload 0/255
Encapsulation ARPA,
Full-duplex, 1000Mb/s, unknown, link type is force-up
output flow control is off, input flow control is off
Carrier delay (up) is 10 msec
loopback not set,
Last link flapped 00:24:56
ARP type ARPA, ARP timeout 04:00:00
Last input 00:00:00, output 00:00:00
Last clearing of "show interface" counters 00:02:27
5 minute input rate 1000 bits/sec, 0 packets/sec
5 minute output rate 1000 bits/sec, 0 packets/sec
123 packets input, 36218 bytes, 0 total input drops
0 drops for unrecognized upper-level protocol
Received 0 broadcast packets, 19 multicast packets
0 runts, 0 giants, 0 throttles, 0 parity
0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
51 packets output, 29442 bytes, 0 total output drops
Output 0 broadcast packets, 19 multicast packets
0 output errors, 0 underruns, 0 applique, 0 resets
0 output buffer failures, 0 output buffers swapped out
0 carrier transitionsGigabitEthernet0/0/0/0 is up, line protocol is up
Interface state transitions: 1
Hardware is GigabitEthernet, address is 5254.000b.ab4d (bia 5254.000b.ab4d)
Description: to R1 (10.0.11.0/24 p2p)
Internet address is 10.0.11.2/24
MTU 1514 bytes, BW 1000000 Kbit (Max: 1000000 Kbit)
reliability 255/255, txload 0/255, rxload 0/255
Encapsulation ARPA,
Full-duplex, 1000Mb/s, unknown, link type is force-up
output flow control is off, input flow control is off
Carrier delay (up) is 10 msec
loopback not set,
Last link flapped 00:23:10
ARP type ARPA, ARP timeout 04:00:00
Last input 00:00:00, output 00:00:05
Last clearing of "show interface" counters 00:01:37
5 minute input rate 1000 bits/sec, 0 packets/sec
5 minute output rate 1000 bits/sec, 0 packets/sec
11 packets input, 16654 bytes, 0 total input drops
0 drops for unrecognized upper-level protocol
Received 0 broadcast packets, 11 multicast packets
0 runts, 0 giants, 0 throttles, 0 parity
0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
34 packets output, 17860 bytes, 0 total output drops
Output 0 broadcast packets, 10 multicast packets
0 output errors, 0 underruns, 0 applique, 0 resets
0 output buffer failures, 0 output buffers swapped out
0 carrier transitions等コストでなければ載らない
ECMPは「コストが等しい」場合の話なので、1本でもメトリックが違えばその経路は経路表に載りません。 R1 - P6 のメトリックを両端で20にすると、この経路だけ合計30になります。
RP/0/RP0/CPU0:P6#show configuration commit changes last 1
Sun Sep 27 13:37:58.675 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
router isis 1
interface GigabitEthernet0/0/0/0
address-family ipv4 unicast
metric 20
!
!
!
endR1の経路表は6本から5本に減りました。
i L2 192.168.8.1/32 [115/20] via 10.0.11.2, 00:02:14, GigabitEthernet0/0/0/0
[115/20] via 10.0.12.3, 00:02:14, GigabitEthernet0/0/0/1
[115/20] via 10.0.13.4, 00:02:14, GigabitEthernet0/0/0/2
[115/20] via 10.0.14.5, 00:02:14, GigabitEthernet0/0/0/3
[115/20] via 10.0.15.6, 00:02:14, GigabitEthernet0/0/0/4
i L2 192.168.8.2/32 [115/20] via 10.0.11.2, 00:02:14, GigabitEthernet0/0/0/0
[115/20] via 10.0.12.3, 00:02:14, GigabitEthernet0/0/0/1
[115/20] via 10.0.13.4, 00:02:14, GigabitEthernet0/0/0/2
[115/20] via 10.0.14.5, 00:02:14, GigabitEthernet0/0/0/3
[115/20] via 10.0.15.6, 00:02:14, GigabitEthernet0/0/0/4
i L2 192.168.8.3/32 [115/20] via 10.0.11.2, 00:02:14, GigabitEthernet0/0/0/0
[115/20] via 10.0.12.3, 00:02:14, GigabitEthernet0/0/0/1
[115/20] via 10.0.13.4, 00:02:14, GigabitEthernet0/0/0/2
[115/20] via 10.0.14.5, 00:02:14, GigabitEthernet0/0/0/3
[115/20] via 10.0.15.6, 00:02:14, GigabitEthernet0/0/0/4
i L2 192.168.8.4/32 [115/20] via 10.0.11.2, 00:02:14, GigabitEthernet0/0/0/0
[115/20] via 10.0.12.3, 00:02:14, GigabitEthernet0/0/0/1
[115/20] via 10.0.13.4, 00:02:14, GigabitEthernet0/0/0/2
[115/20] via 10.0.14.5, 00:02:14, GigabitEthernet0/0/0/3
[115/20] via 10.0.15.6, 00:02:14, GigabitEthernet0/0/0/4
i L2 192.168.8.5/32 [115/20] via 10.0.11.2, 00:02:14, GigabitEthernet0/0/0/0
[115/20] via 10.0.12.3, 00:02:14, GigabitEthernet0/0/0/1
[115/20] via 10.0.13.4, 00:02:14, GigabitEthernet0/0/0/2
[115/20] via 10.0.14.5, 00:02:14, GigabitEthernet0/0/0/3
[115/20] via 10.0.15.6, 00:02:14, GigabitEthernet0/0/0/4
i L2 192.168.8.6/32 [115/20] via 10.0.11.2, 00:02:14, GigabitEthernet0/0/0/0
[115/20] via 10.0.12.3, 00:02:14, GigabitEthernet0/0/0/1
[115/20] via 10.0.13.4, 00:02:14, GigabitEthernet0/0/0/2
[115/20] via 10.0.14.5, 00:02:14, GigabitEthernet0/0/0/3
[115/20] via 10.0.15.6, 00:02:14, GigabitEthernet0/0/0/4
i L2 192.168.8.7/32 [115/20] via 10.0.11.2, 00:02:14, GigabitEthernet0/0/0/0
[115/20] via 10.0.12.3, 00:02:14, GigabitEthernet0/0/0/1
[115/20] via 10.0.13.4, 00:02:14, GigabitEthernet0/0/0/2
[115/20] via 10.0.14.5, 00:02:14, GigabitEthernet0/0/0/3
[115/20] via 10.0.15.6, 00:02:14, GigabitEthernet0/0/0/4
i L2 192.168.8.8/32 [115/20] via 10.0.11.2, 00:02:14, GigabitEthernet0/0/0/0show isis topology でも、P6へのメトリックが20に変わり、R8へ行ける隣接がP5からP1までの5件になります。
RP/0/RP0/CPU0:R1#show isis topology
Sun Sep 27 13:40:06.187 UTC
IS-IS 1 paths to IPv4 Unicast (Level-2) routers
System Id Metric Next-Hop Interface SNPA
R1 --
P1 10 P1 Gi0/0/0/0 *PtoP*
P2 10 P2 Gi0/0/0/1 *PtoP*
P3 10 P3 Gi0/0/0/2 *PtoP*
P4 10 P4 Gi0/0/0/3 *PtoP*
P5 10 P5 Gi0/0/0/4 *PtoP*
P6 20 P6 Gi0/0/0/5 *PtoP*
R8 20 P5 Gi0/0/0/4 *PtoP*
R8 20 P4 Gi0/0/0/3 *PtoP*
R8 20 P3 Gi0/0/0/2 *PtoP*
R8 20 P2 Gi0/0/0/1 *PtoP*
R8 20 P1 Gi0/0/0/0 *PtoP* 設計上の注意
- 上限を下げるときは、プレフィックスごとの偏り方まで見る。 装置全体では複数のリンクが使われるため、
「
maximum-paths 1にしたから1本に寄る」とは限らない - 特定の経路をECMPから外したいときは、上限ではなくメトリックで外す。 上限はどの経路が残るかを指定できない
- 実際にどの出口を通るかは
show cef exact-routeで事前に確認できる。通信を流す必要はない
検証Configおよびshow結果
各STEPで8台すべてから取得しています。検証Configはこの ..._run.txt です(最終状態は最後のSTEPのもの)。
| ファイル | 内容 |
|---|---|
..._show.txt | show version / show route isis / show isis interface / show isis neighbors / show isis topology / show isis database detail / show isis spf-log / show interface ほか |
..._ping.txt | R1から8つの宛先への ping(各20発)と traceroute |
..._cef.txt | R1の show cef 192.168.8.1/32 / 192.168.8.8/32 と、8つの宛先ぶんの show cef exact-route |
..._clear.txt | そのSTEPでクリアしたインタフェースカウンタの記録 |
..._commit.cfg | そのSTEPで実際にcommitされた設定だけ(STEP 0は変更なしのため無し) |
..._log.txt | そのSTEPの範囲だけに絞った show logging |
..._run.txt | そのSTEP時点の show running-config(=そのSTEPの検証Config) |
..._trace.txt | show isis trace all | include SPF(そのSTEPのSPF計算の記録) |
STEP 0:初期状態(既定のまま)
| ルータ | show出力 | ping / traceroute | cef | clear | 投入した設定 | syslog | running-config | trace |
|---|---|---|---|---|---|---|---|---|
| R1 | show | ping | cef | clear | — | log | run | trace |
| P1 | show | — | — | clear | — | log | run | trace |
| P2 | show | — | — | clear | — | log | run | trace |
| P3 | show | — | — | clear | — | log | run | trace |
| P4 | show | — | — | clear | — | log | run | trace |
| P5 | show | — | — | clear | — | log | run | trace |
| P6 | show | — | — | clear | — | log | run | trace |
| R8 | show | — | — | clear | — | log | run | trace |
STEP 1:R1に maximum-paths 4
| ルータ | show出力 | ping / traceroute | cef | clear | 投入した設定 | syslog | running-config | trace |
|---|---|---|---|---|---|---|---|---|
| R1 | show | ping | cef | clear | commit | log | run | trace |
| P1 | show | — | — | clear | — | log | run | trace |
| P2 | show | — | — | clear | — | log | run | trace |
| P3 | show | — | — | clear | — | log | run | trace |
| P4 | show | — | — | clear | — | log | run | trace |
| P5 | show | — | — | clear | — | log | run | trace |
| P6 | show | — | — | clear | — | log | run | trace |
| R8 | show | — | — | clear | — | log | run | trace |
STEP 2:R1に maximum-paths 2
| ルータ | show出力 | ping / traceroute | cef | clear | 投入した設定 | syslog | running-config | trace |
|---|---|---|---|---|---|---|---|---|
| R1 | show | ping | cef | clear | commit | log | run | trace |
| P1 | show | — | — | clear | — | log | run | trace |
| P2 | show | — | — | clear | — | log | run | trace |
| P3 | show | — | — | clear | — | log | run | trace |
| P4 | show | — | — | clear | — | log | run | trace |
| P5 | show | — | — | clear | — | log | run | trace |
| P6 | show | — | — | clear | — | log | run | trace |
| R8 | show | — | — | clear | — | log | run | trace |
STEP 3:R1に maximum-paths 1
| ルータ | show出力 | ping / traceroute | cef | clear | 投入した設定 | syslog | running-config | trace |
|---|---|---|---|---|---|---|---|---|
| R1 | show | ping | cef | clear | commit | log | run | trace |
| P1 | show | — | — | clear | — | log | run | trace |
| P2 | show | — | — | clear | — | log | run | trace |
| P3 | show | — | — | clear | — | log | run | trace |
| P4 | show | — | — | clear | — | log | run | trace |
| P5 | show | — | — | clear | — | log | run | trace |
| P6 | show | — | — | clear | — | log | run | trace |
| R8 | show | — | — | clear | — | log | run | trace |
STEP 4:maximum-paths を削除(既定に戻す)
| ルータ | show出力 | ping / traceroute | cef | clear | 投入した設定 | syslog | running-config | trace |
|---|---|---|---|---|---|---|---|---|
| R1 | show | ping | cef | clear | commit | log | run | trace |
| P1 | show | — | — | clear | — | log | run | trace |
| P2 | show | — | — | clear | — | log | run | trace |
| P3 | show | — | — | clear | — | log | run | trace |
| P4 | show | — | — | clear | — | log | run | trace |
| P5 | show | — | — | clear | — | log | run | trace |
| P6 | show | — | — | clear | — | log | run | trace |
| R8 | show | — | — | clear | — | log | run | trace |
STEP 5:R1 - P6 のメトリックを両端で20に
| ルータ | show出力 | ping / traceroute | cef | clear | 投入した設定 | syslog | running-config | trace |
|---|---|---|---|---|---|---|---|---|
| R1 | show | ping | cef | clear | commit | log | run | trace |
| P1 | show | — | — | clear | — | log | run | trace |
| P2 | show | — | — | clear | — | log | run | trace |
| P3 | show | — | — | clear | — | log | run | trace |
| P4 | show | — | — | clear | — | log | run | trace |
| P5 | show | — | — | clear | — | log | run | trace |
| P6 | show | — | — | clear | commit | log | run | trace |
| R8 | show | — | — | clear | — | log | run | trace |
STEP 6:メトリックを10に戻す(最終状態)
| ルータ | show出力 | ping / traceroute | cef | clear | 投入した設定 | syslog | running-config | trace |
|---|---|---|---|---|---|---|---|---|
| R1 | show | ping | cef | clear | commit | log | run | trace |
| P1 | show | — | — | clear | — | log | run | trace |
| P2 | show | — | — | clear | — | log | run | trace |
| P3 | show | — | — | clear | — | log | run | trace |
| P4 | show | — | — | clear | — | log | run | trace |
| P5 | show | — | — | clear | — | log | run | trace |
| P6 | show | — | — | clear | commit | log | run | trace |
| R8 | show | — | — | clear | — | log | run | trace |
パケットキャプチャーは取得していません。この記事で確かめているのは経路計算の結果と転送の振り分けで、
いずれも show の出力が直接の根拠になるためです。
参考
| 標準 | タイトル | 概要 |
|---|---|---|
| ISO/IEC 10589:2002(第2版) | Intermediate System to Intermediate System intra-domain routeing information exchange protocol | 等コスト経路の集合を求める決定プロセス(7.2.6、附属書 C.2 と C.2.1)、上限を超えた経路の間引き(7.2.7)、管理パラメータ maximumPathSplits(既定2・範囲1〜32)、等コスト経路の計算が任意機能であること(適合性の表 A.5.4)。 |
| IS-IS Commands(Cisco IOS XR) | maximum-paths (IS-IS) | maximum-paths の既定値が8、範囲が1〜64であること(IOS XR 5.3.0でECMPが32から64に拡張された旨も記載)。 |
関連記事
- IS-ISとは
- IS-ISのNSAPアドレスとNET(System ID)
- IS-ISの複数エリアアドレス(マルチホーミング)とエリアの統合・分割
- IS-ISのレベル1とレベル2(階層構造)
- IS-ISパケットの種類とヘッダーフォーマット
- IS-ISの隣接関係の確立と状態遷移
- IS-ISのDISと疑似ノード(Pseudonode)
- IS-ISのネットワークタイプ(broadcast / point-to-point)
- IS-ISのメトリック(narrow / wide)
- IS-ISの認証(hello-password / lsp-password)
- IS-ISのLSPとリンクステートデータベース
- IS-ISの主要TLV
- IS-ISのフラッディングとLSDB同期
- IS-ISのSPF計算と経路選択
- IS-ISのECMP(等コストマルチパス)
- IS-ISのATTビットとレベル1のデフォルトルート
- IS-ISのルートリークとup/downビット
- IS-ISの経路集約
- IS-ISのオーバーロードビット
- IS-ISのIPv6対応とマルチトポロジ(TLV 236 / MT ID 2)
- IS-ISのHelloとHolding Time
- IS-ISの収束タイマー(SPF / LSP生成)
- IS-ISのフラッディングのタイマー(LSP送信間隔・再送・CSNP / PSNP)
- IS-ISのリンク障害と経路切り替え
- IS-ISへの再配布(connected / static)
- IS-ISへのBGP経路の再配布