はじめに
EIGRP で variance 2 を設定したのに、期待した経路がルーティングテーブルへ追加されない。variance を「2 番目の経路も使う指定」と理解していると、この状況は説明できません。
不等コスト経路が使われるかどうかは、フィージビリティ条件と、variance で決まるメトリックの範囲という 2 つの独立した条件で決まります。variance は後者を広げるだけで、フィージビリティ条件を緩めるコマンドではありません。
- EIGRP のメトリックに使う値と、既定で計算に加わる値・加わらない値
- 最小帯域幅と累積遅延から複合メトリックを手計算する手順
- Classic Metrics の 32 ビット計算と Wide Metrics の 64 ビット計算の違い
variance 2が何を 2 倍しているのか- variance の範囲内でも不等コスト経路として採用されない理由
- Classic Mode と Named Mode での設定場所と、設定後の確認手順
- ルーティングテーブルへの複数経路登録と、実際の転送の違い
本記事は Cisco IOS XE 17.x の公式資料を基準にした IPv4 構成を対象とします。DUAL、RD、CD、FD の定義は関連記事『EIGRP の DUAL とフィージブルサクセサの仕組み』で扱っているため、ここでは必要な範囲で振り返るにとどめます。
EIGRP のメトリック計算
メトリックを構成する値
EIGRP は経路ごとに複数のベクターメトリックを運びます。Cisco の設定ガイドが挙げているのは次の 5 つです。
| 値 | 内容 | 経路上での扱い | 既定の計算 |
|---|---|---|---|
| bandwidth | 経路の最小帯域幅(kbps) | 合計せず、最も小さい値を採用 | 使用する |
| delay | 経路の遅延(10 マイクロ秒単位) | 経路上の値を合計 | 使用する |
| reliability | パケット送信の成功見込み(0〜255) | 動的に算出 | 使用しない |
| load | 経路の実効負荷(0〜255) | 動的に算出 | 使用しない |
| mtu | 経路上の最小 MTU(バイト) | 最も小さい値を運搬 | 使用しない |
帯域幅は合計せず経路上の最小値を使い、遅延だけが合計されます。1 か所でも低速なリンクがあれば、経路全体の帯域幅の項はその値で決まります。
MTU は経路情報として運ばれますが、既定の計算式には現れません。ホップ数も計算式には含まれず、EIGRP AS の最大サイズを制限する役割を持ちます。信頼性と負荷は動的に計算されて Vector metric に表示されますが、既定の K 値では計算に寄与しません。

bandwidth と delay は実際の性能を変えるコマンドではない
- bandwidth コマンド
-
ルーティングプロトコルの計算や統計に使う帯域幅の値を宣言します。インターフェースが実際に送出できる速度を制限するものではありません。
- delay コマンド
-
メトリック計算に使う遅延の値を宣言します。実際のパケットに遅延を発生させるものではありません。
どちらも経路選択に影響する宣言値です。実回線と大きく異なる値を入れると、経路選択が設計意図からずれます。
K 値と既定の計算式
K 値は、各ベクターメトリックを計算へどれだけ反映するかを決める係数です。既定値は次のとおりです。
| 係数 | 既定値 | 対応する値 |
|---|---|---|
| K1 | 1 | 帯域幅 |
| K2 | 0 | 負荷 |
| K3 | 1 | 遅延 |
| K4 | 0 | 信頼性 |
| K5 | 0 | 信頼性 |
| K6 | 0 | 拡張属性(Wide Metrics で追加) |
Cisco が示す Classic Metrics の一般式は次のとおりです。
EIGRP composite cost metric = 256 * ((K1*Scaled Bw) + (K2*Scaled Bw)/(256 - Load) + (K3*Scaled Delay)*(K5/(Reliability + K4)))K2 が 0 なので第 2 項は消え、K5 が 0 の場合は K5/(Reliability + K4) が 1 として扱われます。既定の K 値では、式は「256 ×(Scaled Bw + Scaled Delay)」まで短くなります。Cisco の資料も、ほとんどの構成では遅延と帯域幅だけが使われ、帯域幅が優先されると説明しています。
K 値はネイバー間で一致していることが前提です。食い違うとネイバー関係が確立できず、コンソールに K-value mismatch が表示されます。EIGRP ドメイン全体で同時に変更する必要があるため、運用中の変更は影響範囲が広くなります。Cisco の Wide Metrics のドキュメントも、K 値の既定は多くのネットワークで最適に動作するよう選定されており、経験のあるネットワーク設計者の助言なく変更しないよう推奨しています。
経路を調整したい場合は、K 値ではなく bandwidth や delay の宣言値を見直すほうが影響範囲を限定できます。両者は別の作業です。
帯域幅と遅延による計算例
既定の K 値を前提に、経路のメトリックを段階的に計算します。R1 から宛先まで 2 本のリンクを経由し、次の値が設定されているものとします。
| 区間 | 帯域幅 | 遅延 |
|---|---|---|
| R1 から R2 | 2000 kbps | 20000 マイクロ秒 |
| R2 から宛先ネットワーク | 100000 kbps | 100 マイクロ秒 |
2000 kbps と 100000 kbps のうち小さいほうを採用し、最小帯域幅は 2000 kbps になります。合計しない点に注意します。
20000 マイクロ秒と 100 マイクロ秒を足します。累積遅延は 20100 マイクロ秒です。
帯域幅は 10 の 7 乗を最小帯域幅(kbps)で割って反転・スケーリングします。遅延はマイクロ秒を 10 で割り、10 マイクロ秒単位へ変換します。
Scaled Bw = 10000000 / 2000 = 5000
Scaled Delay = 20100 / 10 = 2010この例はどちらも割り切れる値を選んでいます。割り切れない値では端数の扱いが問題になるため、手計算では割り切れる値から始めると追いやすくなります。
K1 と K3 が 1、ほかが 0 なので、Scaled Bw と Scaled Delay を足すだけです。
5000 + 2010 = 7010256 * 7010 = 1794560この経路の複合メトリックは 1794560 になります。
Cisco の資料も同じ手順の例を示しています。帯域幅 128 kbps、遅延 84000 マイクロ秒のリンクでは 256 * (10000000/128 + 84000/10) = 256 * 86525 = 22150400 です。低速なリンクが 1 本入るだけで、帯域幅の項が桁違いに大きくなります。遅延で経路を制御したい場合も、帯域幅の項が支配的であれば効果は限定されます。
Classic Metrics と Wide Metrics の違い
ここまでの計算は 32 ビットの Classic Metrics です。Cisco の Wide Metrics のドキュメントは、64 ビット計算の適用範囲を明確に区切っています。
参考: Cisco「IP Routing Configuration Guide, Cisco IOS XE 17.x – EIGRP Wide Metrics」
“The 64-bit metric calculations work only in EIGRP named mode configurations”
(64 ビットのメトリック計算は EIGRP named mode の設定でのみ動作します。)
https://www.cisco.com/c/en/us/td/docs/routers/ios/config/17-x/ip-routing/b-ip-routing/m_ire-wid-met.html
この引用は、Wide Metrics が Named Mode 固有の機能であることの根拠です。Classic Mode では 32 ビット計算のままです。
Wide Metrics が必要になった背景
Classic Metrics には、高速インターフェースで差を表現できない問題があります。インターフェースへ設定できる遅延の最小値は 10 マイクロ秒のため、10 ギガビットイーサネットやポートチャネルで束ねたリンクが、単一のギガビットイーサネットと同じに見えます。Cisco の資料は、この結果として意図しない等コストロードバランシングが起きる可能性を挙げています。
Wide Metrics は 64 ビット計算と RIB スケーリングにより、およそ 4.2 テラビットまでのインターフェースに対応します。既定の計算式は Classic Metrics とは形が異なります。
| 項目 | Wide Metrics での定義 |
|---|---|
| 既定の複合メトリック | (K1 × Minimum Throughput) + (K3 × Total Latency) |
| Minimum Throughput | (10000000 × 65536) ÷ 帯域幅 |
| Total Latency(1 ギガビット未満) | (遅延 × 65536) ÷ 10 |
| Total Latency(1 ギガビット超) | (10000000 × 65536 ÷ 10) ÷ 帯域幅 |
| ワイドスケール定数 | 65536 |
先ほどと同じ経路(最小帯域幅 2000 kbps、累積遅延 20100 マイクロ秒)を Wide Metrics で計算すると、Minimum Throughput が 327680000、Total Latency が 131727360、合計は 459407360 です。Classic Metrics の 1794560 とは桁が異なります。
RIB スケーリングと表示値の違い
64 ビットの値は、Cisco の RIB が必要とする 4 バイトの符号なし整数へそのままは収まりません。そのため EIGRP は、RIB へ登録する際にスケーリング係数で縮尺します。この係数は metric rib-scale コマンドで設定し、Cisco の EIGRP コマンドリファレンスでは既定値は 128 です。Named Mode で Wide Metrics を使用する場合、トポロジテーブルのメトリックとルーティングテーブルのメトリックが一致しないのは、この縮尺が入るためです。
metric rib-scale を設定すると、RIB 内のすべての EIGRP 経路がクリアされ、新しいメトリック値で入れ直されます。対象プラットフォームやリリースでの実際の値は show eigrp protocols の表示でも確認できます。
variance による不等コストロードバランシング
EIGRP は、メトリックが異なる経路へも通信を分散できます。これを制御するのが variance です。Cisco の EIGRP コマンドリファレンスは、追加する経路の条件を、そのメトリックがサクセサのメトリックと variance の積より小さいことと定めています。値の範囲は 1 から 128 で、既定は 1 です。既定の 1 でも等コスト経路は通常の等コストロードバランシングとして扱われ、variance が関係するのは不等コスト経路だけです。
2 段階の判定
参考: Cisco「How Does Unequal Cost Path Load Balancing (Variance) Work in IGRP and EIGRP」
“If a path is not a feasible successor, the path is not used in load balancing”
(フィージブルサクセサでない経路は、ロードバランシングに使用されません。)
https://www.cisco.com/c/en/us/support/docs/ip/enhanced-interior-gateway-routing-protocol-eigrp/13677-19.html
これが本記事の結論の根拠です。不等コスト経路が使われるには、次の両方を満たす必要があります。
- フィージビリティ条件を満たす。つまり、そのネイバーが通知した RD が、自ルーターの FD より小さい
- その経路のメトリックが、サクセサのメトリックと variance の積より小さい
1 つ目は DUAL がループのない経路を選ぶための条件で、variance の値とは無関係です。RD、CD、FD の定義は関連記事『RD・CD・FD の違い』で整理しています。2 つ目だけを見て「variance を大きくすれば経路が増える」と考えると、次の数値例でつまずきます。
3 経路の数値例
関連記事と同じ仮想例を使います。以下は説明のために作成した値であり、実機から取得した出力ではありません。R1 から宛先ネットワークへ、R2・R3・R4 の 3 経路があるとします。
| 経由先 | RD | CD | 初期状態 |
|---|---|---|---|
| R2 | 28160 | 30720 | サクセサ |
| R3 | 30720 | 40960 | フィージブルサクセサではない |
| R4 | 20480 | 38400 | フィージブルサクセサ |
R2 経由の CD が最小の 30720 であり、初期状態の FD は 30720 です。ここで variance 2 を設定すると、比較の基準になる値は次のように決まります。
30720 * 2 = 61440この 61440 と各経路の CD を比べます。判定結果は次のとおりです。
| 経由先 | 条件 1: RD と FD 30720 の比較 | 条件 2: CD と 61440 の比較 | 不等コスト経路としての採用 |
|---|---|---|---|
| R3 | RD 30720 は FD と等しく、RD < FD が成立しない | CD 40960 は 61440 より小さい | 採用されない |
| R4 | RD 20480 は FD より小さく成立する | CD 38400 は 61440 より小さい | 採用される |
R3 経由は条件 2 を満たしていますが、RD と FD が等しくフィージビリティ条件を満たさないため採用されません。この経路は variance をいくら大きくしても追加されません。variance が広げるのはメトリックの範囲だけだからです。なお、この例では 38400 と 40960 のいずれもしきい値 61440 と一致しないため、境界値ちょうどの扱いによって結論が変わることはありません。


Classic Mode と Named Mode の設定
ネイバーが確立し経路を学習できている状態を前提に、差分の設定だけを示します。network や passive-interface を含む基本構成は、関連記事『Classic Mode と Named Mode の設定方法』を参照してください。
Classic Mode では、EIGRP プロセスの配下へ直接設定します。
router eigrp 100
maximum-paths 4
variance 2
traffic-share balancedNamed Mode では、これらのコマンドはアドレスファミリー直下ではなく、topology base から入るアドレスファミリートポロジコンフィグレーションモードに置きます。
router eigrp EIGRP-LAB
address-family ipv4 unicast autonomous-system 100
topology base
maximum-paths 4
variance 2
traffic-share balanced
exit-af-topology
exit-address-familyトポロジテーブルに対する動作は topology base の配下、インターフェースに対する動作は af-interface の配下という切り分けで覚えると、設定場所に迷いにくくなります。
maximum-paths と traffic-share
- variance
-
どのメトリックまでを候補に含めるかを決めます。フィージビリティ条件と組み合わせて、採用する経路を選び出す段階です。
- maximum-paths
-
条件を満たした経路を何本までルーティングテーブルへ登録できるかを決めます。既定の本数は機種やリリースで異なる可能性があるため、自環境で確認します。
- traffic-share
-
登録された複数経路へ通信をどう振り分けるかの方針を決めます。
balancedはメトリックの比率に応じた配分で、Cisco の資料ではこれが既定と説明されています。
まず variance とフィージビリティ条件で候補が決まり、次に maximum-paths の上限内で登録され、最後に traffic-share の方針が適用されます。候補に入っていない経路は、登録の上限を広げても対象になりません。
traffic-share min across-interfaces を指定すると、ルーティングテーブルに複数経路があっても通信は最小コストの経路だけへ送られ、転送の見え方は variance を設定しない場合と同じになります。それでも意味があるのは、フィージブルな経路がすべてルーティングテーブルへ登録され、収束時間の短縮につながるためです。平常時は最短経路だけを使い、障害時の切り替えを速くしたい場合の選択肢になります。
経路の登録と実際の転送は別の層
Cisco の EIGRP コマンドリファレンスは、EIGRP が複数の経路をローカルのルーティングテーブルへ登録すること、および実際のロードシェアはローカルのスイッチングハードウェアまたはソフトウェアが担当することを説明しています。複数経路が登録されることと、実通信が期待した比率で分かれることは同じではありません。
実際の転送結果は、対象プラットフォームの Cisco Express Forwarding(CEF)の情報と、実通信の両方で確認します。転送側の挙動は機種やソフトウェアによって異なるため、本記事では踏み込みません。
設定結果を確認する
期待した経路が追加されない場合は、どの段階で外れたのかを順に確認します。以下のコマンド例では、宛先を説明用に予約されたアドレスである 192.0.2.0/24 としています。
show eigrp protocols
show ip protocolsK 値、AS 番号、設定した variance の値、メトリックのバージョンと RIB スケーリングの値を確認します。K 値が想定と違えば、メトリックの計算そのものが前提から外れます。
show ip eigrp topology all-linksshow ip eigrp topology はサクセサとフィージブルサクセサだけを表示します。条件を満たしていない経路まで見るには all-links が必要です。追加したい経路を受信できているかをここで確認します。
対象の宛先について、その経路の RD と自ルーターの FD を比べます。RD < FD が成立していなければ、この時点で候補から外れています。variance の値を変えても結果は変わりません。
サクセサのメトリックに variance の値を掛けてしきい値を求めます。候補経路のメトリックがこの値を下回っていなければ、variance を引き上げる余地があります。ただし条件 1 を満たしていることが前提です。
show ip route eigrp
show ip route 192.0.2.0 255.255.255.0同じ宛先に複数のネクストホップが並んでいれば、複数経路が登録されています。経路コードの D と角括弧内の [管理ディスタンス/メトリック] をあわせて確認します。登録本数が想定より少ない場合は maximum-paths の上限を確認します。
show ip cef 192.0.2.0 255.255.255.0ルーティングテーブルに複数経路が入っていても、実際の転送が想定どおりとは限りません。転送情報にも複数のパスが載っているかを確認し、必要に応じて実通信でも偏りを確認します。
本記事にはコマンドの出力例を掲載していません。実機やラボでの取得を行っておらず、経過時間やシェアカウントなどの変動値を示せないためです。表示形式は自環境の出力で確認してください。
よくある誤解と設計上の注意点
| 誤解 | 実際の動作 |
|---|---|
variance 2 は 2 経路を使う指定 | サクセサのメトリックを 2 倍した値をしきい値にする指定。使われる経路数とは無関係 |
| 2 番目にメトリックが小さければ採用される | メトリックの順位ではなく、RD と FD の比較で候補が決まる |
maximum-paths を増やせば不等コスト経路が入る | 登録の上限が変わるだけで、候補そのものは増えない |
bandwidth を変えれば回線が速くなる | 計算に使う宣言値が変わるだけで、実際の通信速度は変わらない |
| K 値の変更と帯域幅・遅延の調整は同じこと | K 値は計算式そのものを変え、ドメイン全体で一致が必要。帯域幅と遅延は該当インターフェースの入力値 |
| 複数経路が登録されれば通信量は均等になる | 登録は EIGRP、転送はスイッチングハードウェアまたはソフトウェアの役割 |
設計時に確認すること
- 実回線と大きく異なる
bandwidthやdelayを設定していないか。宣言値がずれると経路選択も設計意図からずれる - K 値を EIGRP ドメイン内で不用意に変更していないか。変更する場合は全機器で同時に揃える
- 低速側のリンクが、追加されるトラフィックを処理できる余裕を持っているか
- 経路が分かれることで非対称ルーティングが発生し、ファイアウォールなどステートフルな装置の通信に影響しないか
- 障害時だけ代替経路として保持したいのか、平常時から転送へ使いたいのか。前者なら
traffic-share min across-interfacesが選択肢になる - 本番適用の前に、ルーティングテーブルだけでなく転送情報と実通信まで確認できているか
まとめ
EIGRP のメトリックは、経路上の最小帯域幅と累積遅延から計算されます。variance はその許容範囲を広げるコマンドであり、フィージビリティ条件は別の判定として残ります。経路が増えないときは、範囲の問題なのか条件の問題なのかを切り分けることが出発点になります。
- 合計せず最小値を使う帯域幅と、経路上で合計する遅延
- 既定の K 値で 256 ×(Scaled Bw + Scaled Delay)まで短くなる計算式
- Named Mode でのみ動作する Wide Metrics の 64 ビット計算と RIB スケーリング
- サクセサのメトリックと variance の積をしきい値とする判定
- フィージビリティ条件と variance のしきい値という 2 段階の判定
topology baseの配下へ設定する Named Mode での記述場所- EIGRP による経路登録と、転送処理という層の違い
以上、最後までお読みいただきありがとうございました。


