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

IS-ISのECMP(等コストマルチパス)

目次

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が小さいほう
5LANアドレスが小さいほう

等コスト経路を計算すること自体は、適合性の表(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:2002IOS XR
パラメータmaximumPathSplitsmaximum-paths
既定値28
範囲1〜321〜64
maximum-paths の設定(IOS XR)
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 <送信元> <宛先> で、通信を流さずに確認できます。

検証構成

検証構成: R1 から R8 へ P1〜P6 を経由する6本の等コスト経路

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つの宛先がどのリンクへ散るか
1R1に maximum-paths 4載る本数が4に減ること。プレフィックスごとに残る組み合わせ
2R1に maximum-paths 22本に減ること。残り方がプレフィックスで違うこと
3R1に maximum-paths 11本だけになること。装置全体では複数のリンクが使われること
4maximum-paths を削除既定に戻り6本になること
5R1 - 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本の出口を持っています。

STEP 0:R1の show route isis
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/5

SPFの結果は show isis topology に出ます。R8へ行ける隣接がP6からP1まで6件並び、メトリックはどれも20です。

STEP 0:R1の show isis topology
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つだけ返ります。

STEP 0:R1の show cef exact-route 1.1.1.1 192.168.8.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 adjacency
STEP 0:R1の show cef exact-route 1.1.1.1 192.168.8.4
RP/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 adjacency

8つの宛先を並べると、6本のうち5本が使われました。同じコストの経路でも均等に配られるわけではなく、 計算した値によって偏ります。

宛先出口経由するルータ
192.168.8.1 / .2Gi0/0/0/1P2
192.168.8.3Gi0/0/0/3P4
192.168.8.4 / .5Gi0/0/0/0P1
192.168.8.6Gi0/0/0/2P3
192.168.8.7 / .8Gi0/0/0/4P5

traceroute の中間ホップも宛先ごとに変わります。

STEP 0:R1から 192.168.8.1 への 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 
STEP 0:R1から 192.168.8.4 への traceroute
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の開始時にクリアしています)。

STEPP1P2P3P4P5P6
0(既定)626441437020
1(4本)1227325265356
2(2本)641568704547
3(1本)1166161232177
4(既定に戻す)656844467323

maximum-pathsで絞ると、プレフィックスごとに別の組み合わせが残る(IS-IS)

maximum-paths を4 → 2 → 1と下げていくと、プレフィックスごとの行数がその値まで減ります。 残る出口の組み合わせは、プレフィックスによって違います。

STEP 1:R1の show route isis(192.168.8.0/24 の宛先)
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/0
STEP 2:R1の show route isis(192.168.8.0/24 の宛先)
i 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/2
STEP 3:R1の show route isis(192.168.8.0/24 の宛先)
i 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/3

8つの宛先は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 / .8Gi0/0/0/0〜3Gi0/0/0/2・Gi0/0/0/3Gi0/0/0/3
192.168.8.3 / .6Gi0/0/0/2〜5Gi0/0/0/4・Gi0/0/0/5Gi0/0/0/5
192.168.8.4 / .5Gi0/0/0/0・Gi0/0/0/1・Gi0/0/0/4・Gi0/0/0/5Gi0/0/0/0・Gi0/0/0/1Gi0/0/0/1

show isis topology は maximum-paths 1 のときもR8への隣接を6件のまま並べます。上限はSPFの結果ではなく、 経路表に載せる段で効いていることになります。

中継ルータのカウンタでも裏づけられます。STEP 3で通信が載ったP4と、IIHだけのP1を並べます。

STEP 3:P4の show interface GigabitEthernet0/0/0/0
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 transitions
STEP 3:P1の show interface GigabitEthernet0/0/0/0
GigabitEthernet0/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になります。

STEP 5:P6でcommitされた設定
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
  !
 !
!
end

R1の経路表は6本から5本に減りました。

STEP 5:R1の show route isis(192.168.8.0/24 の宛先)
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/0

show isis topology でも、P6へのメトリックが20に変わり、R8へ行ける隣接がP5からP1までの5件になります。

STEP 5:R1の show isis topology
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.txtshow version / show route isis / show isis interface / show isis neighbors / show isis topology / show isis database detail / show isis spf-log / show interface ほか
..._ping.txtR1から8つの宛先への ping(各20発)と traceroute
..._cef.txtR1の 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.txtshow isis trace all | include SPF(そのSTEPのSPF計算の記録)

STEP 0:初期状態(既定のまま)

ルータshow出力ping / traceroutecefclear投入した設定syslogrunning-configtrace
R1showpingcefclear—logruntrace
P1show——clear—logruntrace
P2show——clear—logruntrace
P3show——clear—logruntrace
P4show——clear—logruntrace
P5show——clear—logruntrace
P6show——clear—logruntrace
R8show——clear—logruntrace

STEP 1:R1に maximum-paths 4

ルータshow出力ping / traceroutecefclear投入した設定syslogrunning-configtrace
R1showpingcefclearcommitlogruntrace
P1show——clear—logruntrace
P2show——clear—logruntrace
P3show——clear—logruntrace
P4show——clear—logruntrace
P5show——clear—logruntrace
P6show——clear—logruntrace
R8show——clear—logruntrace

STEP 2:R1に maximum-paths 2

ルータshow出力ping / traceroutecefclear投入した設定syslogrunning-configtrace
R1showpingcefclearcommitlogruntrace
P1show——clear—logruntrace
P2show——clear—logruntrace
P3show——clear—logruntrace
P4show——clear—logruntrace
P5show——clear—logruntrace
P6show——clear—logruntrace
R8show——clear—logruntrace

STEP 3:R1に maximum-paths 1

ルータshow出力ping / traceroutecefclear投入した設定syslogrunning-configtrace
R1showpingcefclearcommitlogruntrace
P1show——clear—logruntrace
P2show——clear—logruntrace
P3show——clear—logruntrace
P4show——clear—logruntrace
P5show——clear—logruntrace
P6show——clear—logruntrace
R8show——clear—logruntrace

STEP 4:maximum-paths を削除(既定に戻す)

ルータshow出力ping / traceroutecefclear投入した設定syslogrunning-configtrace
R1showpingcefclearcommitlogruntrace
P1show——clear—logruntrace
P2show——clear—logruntrace
P3show——clear—logruntrace
P4show——clear—logruntrace
P5show——clear—logruntrace
P6show——clear—logruntrace
R8show——clear—logruntrace

STEP 5:R1 - P6 のメトリックを両端で20に

ルータshow出力ping / traceroutecefclear投入した設定syslogrunning-configtrace
R1showpingcefclearcommitlogruntrace
P1show——clear—logruntrace
P2show——clear—logruntrace
P3show——clear—logruntrace
P4show——clear—logruntrace
P5show——clear—logruntrace
P6show——clearcommitlogruntrace
R8show——clear—logruntrace

STEP 6:メトリックを10に戻す(最終状態)

ルータshow出力ping / traceroutecefclear投入した設定syslogrunning-configtrace
R1showpingcefclearcommitlogruntrace
P1show——clear—logruntrace
P2show——clear—logruntrace
P3show——clear—logruntrace
P4show——clear—logruntrace
P5show——clear—logruntrace
P6show——clearcommitlogruntrace
R8show——clear—logruntrace

パケットキャプチャーは取得していません。この記事で確かめているのは経路計算の結果と転送の振り分けで、 いずれも 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に拡張された旨も記載)。

関連記事