はじめに
Cisco 環境のルーティング設計で、OSPF と並んで候補に挙がるのが EIGRP(Enhanced Interior Gateway Routing Protocol)です。router eigrp の数行で動き始める一方、学習を進めると、サクセサ、フィージブルサクセサ、フィージブルディスタンス、Reported Distance、Passive、Active といった固有の用語が次々と現れます。
これらは個別に覚えても全体像につながりにくく、実務で求められるのは、show ip eigrp topology に並ぶ数字を見て「この経路はいま何の役割を持っているのか」「障害が起きたら何が起きるのか」を判断できることです。
- EIGRP が経路情報を受け取り、ルーティングテーブルへ登録するまでの流れ
- ネイバー・トポロジ・ルーティングの 3 テーブルの役割分担
- DUAL がサクセサとフィージブルサクセサを選ぶ判断基準と、数値で追う手順
- Passive と Active が示す実際の意味と、障害時に起きる 2 つの動作
- 既定のメトリックで使われる値と、使われない値
- EIGRP が向く環境と、OSPF・RIP との使い分けの判断基準
EIGRP は、ネイバーから受け取った経路情報を候補としてトポロジテーブルへ保持し、DUAL(Diffusing Update Algorithm)がループのない経路だけを選んでルーティングテーブルへ登録します。フィージブルサクセサが存在する場合は、障害時に分散再計算を行わず代替経路へ切り替えられます。存在しない場合は、Query と Reply を使って新しい経路を探索します。本記事では、この流れを順に追いながら、実務で確認するコマンドとの対応まで整理します。
EIGRP とは
EIGRP の位置づけと拡張ディスタンスベクター
EIGRP は、Cisco が開発した IGRP(Interior Gateway Routing Protocol)の拡張版です。距離情報の考え方は IGRP から引き継がれており、RFC 7868 でも、EIGRP は Distance Vector technology に基づくルーティングプロトコルと説明されています。Cisco の技術資料では enhanced distance vector protocol と表現され、日本語では「拡張ディスタンスベクター」に相当します。
一方で EIGRP には、変化した経路だけを差分で伝える、Hello で隣接関係を維持する、代替経路を保持する、といったリンクステート型に近い性質があり、「ハイブリッド型」と呼ばれることもあります。ただし EIGRP はネットワーク全体の地図を持たず、ネイバーが通知した距離情報だけで判断します。この違いは動作の根幹にかかわるため、本記事では拡張ディスタンスベクターとして整理します。
EIGRP は次の 4 つの基本コンポーネントで構成されます。
- ネイバー探索/リカバリ: 直接接続されたルーターを動的に学習し、到達不能を検出する
- 信頼性の高いトランスポートプロトコル: 確実な配送が必要な EIGRP パケットに、順序保証と確認応答を提供する
- DUAL 有限状態マシン: すべての経路計算の判断を担う
- プロトコル依存モジュール: IPv4 や IPv6 など、ネットワーク層プロトコルごとの処理を担当する
RFC 7868 の位置づけと実装の実情
「EIGRP は RFC になったのでオープン標準になった」という説明を見かけますが、次の 4 点は分けて押さえておく必要があります。
| 観点 | 内容 |
|---|---|
| 開発元 | Cisco が IGRP の拡張版として設計・開発 |
| 仕様の公開 | 2016 年 5 月に RFC 7868 として公開 |
| RFC のステータス | Informational で、標準化トラックの仕様ではない |
| 実装の状況 | 仕様は公開されているが、実装は Cisco 製品が中心 |
参考: RFC Editor「RFC 7868: Cisco’s Enhanced Interior Gateway Routing Protocol (EIGRP)」
“This document is not an Internet Standards Track specification”
(本文書は Internet Standards Track の仕様ではありません。)
https://www.rfc-editor.org/info/rfc7868/
RFC 7868 は Independent Submission として RFC Editor の裁量で公開された文書で、RFC Editor は実装や導入における価値に言及していません。OSPFv2 が RFC 2328 として IETF の標準化プロセスを経ているのとは、位置づけが異なります。「Cisco 独自プロトコルのまま」でも「OSPF と同等のオープン標準」でもなく、仕様は公開されているが実装は Cisco 中心という理解が、現状に最も近い状態です。
EIGRP が向くネットワーク
EIGRP が適するのは、すでに EIGRP で運用されているドメインを維持・拡張する場合や、機器の選定と管理の範囲が自社で閉じている場合です。反対に、新規に構築するネットワークで将来的に他ベンダーの機器が混在する可能性があるなら、EIGRP を選ぶと機器選定の自由度が下がります。マルチベンダー環境を前提とするなら、標準化トラックの仕様である OSPF が現実的な選択肢になります。OSPF 側の仕組みは関連記事『OSPF とは|仕組みを図解で理解する LSA・エリア・コストの基礎』で整理しています。
EIGRP が経路情報を学習する仕組み
ネイバーを検出して維持する
EIGRP は、有効化したインターフェースから Hello パケットを送信します。同じ EIGRP AS に属し、K 値や認証などの互換性条件を満たすルーター同士がネイバーになります。ネイバーの状態が確認できてはじめて、経路情報の交換が始まります。Hello は既定で 5 秒ごと、Hold time はその 3 倍の 15 秒です。低速の NBMA 媒体では 60 秒と 180 秒になります。Hold time が満了すると、DUAL にトポロジの変更が通知されます。
ネイバーが確立しない場合に確認する代表的な条件は次のとおりです。
- Hello には K 値が含まれ、K 値が同じルーター同士だけがネイバーになります。食い違うと、コンソールに K-value mismatch が表示されます。
- EIGRP はセカンダリアドレスでピア関係を構築せず、すべてインターフェースのプライマリアドレスから送信されます。
- 認証を設定している場合、同じ事前共有鍵を持つ機器のパケットだけが受け入れられます。
5 種類のパケットと Reliable Transport Protocol
| パケット | 主な役割 |
|---|---|
| Hello / ACK | ネイバーの探索と維持。データのない Hello は ACK にも使われる |
| Update | 宛先の到達可能性を伝える |
| Query | 条件を満たす経路がなくなったとき、代替経路を問い合わせる |
| Reply | Query の発信元へ応答する |
| Request | ネイバーから特定の情報を取得する |
Hello はマルチキャストで送信され、確認応答を必要としません。Update は新しいネイバーの検出時はユニキャスト、それ以外はマルチキャストで送信されます。Update、Query、Reply は常に確実に送信され、この配送を担当するのが Reliable Transport Protocol(RTP)です。
参考: Cisco「IP Routing Configuration Guide, Cisco IOS XE 17.x – EIGRP」
“The reliable transport protocol is responsible for the guaranteed, ordered delivery”
(信頼性の高いトランスポートプロトコルは、確実で順序どおりの配送を担当します。)
https://www.cisco.com/c/en/us/td/docs/routers/ios/config/17-x/ip-routing/b-ip-routing/m_ire-enhanced-igrp.html
信頼性は必要な場合にだけ提供されます。Query が長時間解決しない場合に備え、SIA-Query と SIA-Reply というサブタイプも用意されています。詳しい動作は今後のトラブルシューティング記事で扱います。
ここでいう RTP は、音声や映像で使われる Real-time Transport Protocol とは別のプロトコルです。略称が同じため、混同しないよう注意が必要です。
EIGRP のパケットは、TCP や UDP ではなく IP の上で直接動作します。IANA では、プロトコル番号 88 が EIGRP、IPv4 マルチキャストアドレス 224.0.0.10 が EIGRP Routers として登録されています。IPv6 では IPv6 マルチキャストアドレス FF02::A が使われます。
ネイバー・トポロジ・ルーティングの 3 テーブル
EIGRP は 3 つのテーブルを使い分けます。
| テーブル | 保持する情報 | 位置づけ |
|---|---|---|
| ネイバーテーブル | ネイバーのアドレス、インターフェース、Hold time など | 誰と情報交換できるかを管理する |
| トポロジテーブル | 宛先を通知したすべてのネイバーと、各ネイバー経由のメトリック | 候補となる経路をすべて蓄える |
| ルーティングテーブル | DUAL が選んだ経路のみ | 実際にパケットを転送するために使う |
ここで、トポロジテーブルを読み解くうえで欠かせない 2 つの値を定義します。
- CD(Computed Distance)
-
そのネイバーを経由した場合に、自ルーターから宛先までかかると計算される合計メトリックです。ネイバーの RD とそのネイバーへのリンクコストから計算され、宛先とネイバーの組ごとに 1 つ保持されます。
- RD(Reported Distance)
-
ネイバー自身から宛先までのメトリックとして、ネイバーが通知してくる値です。すべての経路情報メッセージでアドバタイズされます。
RD は「ネイバーから宛先までの距離」、CD は「自分からネイバーを経由して宛先へ到達する距離」です。Cisco の資料では、Composite metric is (307200/281600) のような表示について、第 1 項がこの経路の合計コスト、第 2 項が Reported Distance と説明されています。なお Cisco の資料では、ディスタンスベクターの前提として、経路を広告するネイバーはその経路を転送に利用していると説明されています。ただし、広告された経路が自ルーターから見てループフリーかどうかは RD だけでは判断できません。EIGRP は RD と FD を比較するフィージビリティ条件によって判定します。


テーブルの状態を確認するコマンド
- show ip eigrp neighbors
-
ネイバーのアドレス、インターフェース、Hold カウンタ、Uptime を確認します。
- show ip eigrp topology
-
サクセサとフィージブルサクセサを表示します。
- show ip eigrp topology all-links
-
フィージビリティ条件を満たしていない経路を含む、すべてのリンクを表示します。
- show ip route eigrp
-
登録された EIGRP 経路を表示します。経路コードの D が EIGRP 由来を表します。
- show ip protocols
-
動作している EIGRP プロセスの設定内容を確認します。
show ip eigrp topology と all-links の表示件数の差分が、フィージビリティ条件を満たしていない経路です。その判定基準を次に扱います。
DUAL によるループのない経路選択
DUAL の役割とサクセサ
DUAL(Diffusing Update Algorithm)は、すべての経路計算の判断を担う有限状態マシンです。ネイバーがアドバタイズした経路を追跡し、メトリックを使ってループのない経路を選び、フィージブルサクセサに基づいてルーティングテーブルへ挿入する経路を決定します。この判断は宛先ごとに独立して行われます。
サクセサとは、パケット転送に使う隣接ルーターのうち、宛先への最小コスト経路を持ち、ルーティングループの一部にならないことが保証されているものです。サクセサは単に最もメトリックが小さい経路ではなく、ループしないことが確認されたうえで最もメトリックが小さい経路です。
CD・RD・FD の違い
受信側のルーターは、同じ宛先について、経路を通知してきたネイバーごとに RD と CD の組を保持します。ここに 3 つ目の値として FD が加わります。
- FD(Feasible Distance)
-
経路が最後に Active から Passive へ移行して以降に確認された、その宛先への最小の CD です。宛先ごとに 1 つ計算されます。
RFC 7868 は FD について、直近に Passive へ入って以降に判明している最小メトリックの記録であり、現在の最適経路のメトリックとは限らないと明記しています。FD は「いま最も良い経路の値」ではなく、「この宛先について、これまでに到達できた最も良い値」という履歴を持つ値です。
| 値 | 対象 | 保持される単位 | 変化するタイミング |
|---|---|---|---|
| RD | ネイバーから宛先までの距離 | 宛先とネイバーの組 | ネイバーの通知を受けたとき |
| CD | ネイバー経由で宛先までの距離 | 宛先とネイバーの組 | RD やリンクコストの変化 |
| FD | 宛先への最小 CD の履歴 | 宛先ごと | Active から Passive への移行時に再設定。Passive 中も、より小さい CD が判明すれば低下する |
フィージビリティ条件
フィージブルサクセサは、フィージビリティ条件を満たすネイバーです。条件は次の 1 行に集約されます。
RD < FD参考: Cisco「Understand and Use the Enhanced Interior Gateway Routing Protocol」
“a path whose reported distance is less than the feasible distance”
(Reported Distance が Feasible Distance より小さい経路。)
https://www.cisco.com/c/en/us/support/docs/ip/enhanced-interior-gateway-routing-protocol-eigrp/16406-eigrp-toc.html
比較の対象は、CD どうしではなく RD と FD です。RD が FD より小さいということは、そのネイバーが自ルーターのこれまでの最短距離よりも宛先に近いことを意味します。宛先により近いネイバーが自ルーターを経由することはないため、ループしないと判断できます。なお RFC 7868 は、これが十分条件であって必要条件ではないとも明記しています。ループしない経路すべてが条件を満たすわけではなく、EIGRP は安全側に倒して一部の経路を候補から外します。
数値例で追うフィージブルサクセサの判定
説明のための仮想例で確認します。以下は実機検証の結果ではありません。R1 から宛先ネットワークへ R2・R3・R4 の 3 経路があるとします。
| 経由先 | RD | CD | 初期状態の判定 |
|---|---|---|---|
| R2 | 28160 | 30720 | サクセサ |
| R3 | 30720 | 40960 | フィージブルサクセサではない |
| R4 | 20480 | 38400 | フィージブルサクセサ |
R2 経由の CD が最小の 30720 であるため、R2 がサクセサになり、FD は 30720 です。初期状態では、サクセサ経由の CD と FD が一致します。残る 2 経路の判定は次のとおりです。
- R3 経由:
30720 < 30720は成立しないため、フィージブルサクセサではありません。判定に使うのは CD ではなく RD であり、等号では成立しません。 - R4 経由:
20480 < 30720が成立するため、フィージブルサクセサです。CD は R2 障害後に残る経路のうち最小の 38400 になります。
フィージブルサクセサの資格は、CD の順位ではなく RD と FD の比較だけで決まります。ただし、トポロジ変更後も経路が Passive を維持できるのは、残った経路のうち最小の CD を持つネイバーがフィージビリティ条件を満たす場合です。


Passive と Active の意味
- Passive
-
その宛先について分散計算を行っていない安定した状態です。RFC 7868 では、最小コスト経路を提供するネイバーが少なくとも 1 つ条件を満たす状態と定義され、経路は使用可能です。通信が止まっている状態ではありません。
- Active
-
代替経路を Query で探索している状態です。RFC 7868 では、最小コスト経路を提供するネイバーが条件を満たさず、ループしないことを保証できない状態と定義され、経路は使用不可です。通信が正常に流れている状態ではありません。
安定したネットワークでは、経路はほとんどの時間を Passive で過ごします。出力先頭の P が Passive、A が Active です。Active のエントリーが継続して見えている場合は、その宛先について収束が完了していないことを示します。なお Active 中は、サクセサ、自ルーターの FD、自ルーターが広告する RD を変更しません。受信した新しいメトリック情報は CD へ記録され、経路が Passive へ戻るまで経路選択への反映が保留されます。
障害時の 2 つの動作
| 状態 | 現在のサクセサ | 現在の CD | FD |
|---|---|---|---|
| 初期状態 | R2 | 30720 | 30720 |
| R2 が失われた後 | R4 | 38400 | 30720 |
| R4 も失われた後 | なし(候補は R3 のみ) | ― | 30720 |
R2 が失われると、R4 は残る経路のうち最小の CD 38400 を持ち、かつフィージビリティ条件を満たします。このため R1 は分散再計算を行わずに R4 へ切り替え、経路は Passive のまま推移します。Query は発生しません。R2 障害後も経路は Passive のままであり、現在の CD 38400 は保持中の FD 30720 より大きいため、FD は 30720 のままです。
FD は、Active から Passive へ移行するときに新しい状態に基づいて再設定されます。Passive 中でも、現在の CD が FD より小さくなれば、FD はその小さい値へ更新されます。一方、Passive 中の経路切り替えで CD が大きくなっても、FD が大きい値へ更新されることはありません。
続いて R4 も失われると、残る候補は R3 経由のみです。R3 の RD は 30720、FD も 30720 のままで条件を満たしません。フィージブルサクセサが存在しないため、経路は Active へ遷移し、R1 はネイバーへ Query を送信します。Query を受信したネイバーは、自身の経路状態、送信元が現在のサクセサかどうか、代替経路の有無を評価し、Reply で応答するか、さらに Query を送って探索を継続します。すべての Reply を受け取ると R1 は Passive へ戻り、その時点で新しいサクセサと FD が設定されます。
フィージブルサクセサがある場合に限り、分散再計算を経ずに代替経路へ切り替えられます。存在しない設計では、障害のたびに Query と Reply が必要になり、収束時間はネットワークの構造に依存します。
EIGRP のメトリックと経路の優先順位
既定で使用する帯域幅と遅延
DUAL の判定に使うメトリックは、複合メトリックと呼ばれます。Cisco が示す計算式は次のとおりです。
EIGRP Metric = 256 * ({(K1*BW) + [(K2*BW)/(256-Load)] + (K3*Delay)} * (K5/(Reliability+K4)))K5 が 0 の場合、後半の K5/(Reliability+K4) は 1 として扱われます。既定の K 値はこれに該当するため、式は次の形に整理されます。
メトリック = 256 * { (10^7 / BWmin) + 遅延の合計 }| 値 | 単位 | 経路上での扱い |
|---|---|---|
| BWmin | kbps | 経路上の最小値を使用する |
| 遅延の合計 | 10 マイクロ秒 | 経路上で累積する |
帯域幅は経路上で最も小さい値が使われ、遅延は経路上で累積されます。帯域幅は反転・スケーリングされるため、帯域が小さいほど値が大きくなります。表示される遅延はマイクロ秒単位のため、この式では 10 で割ります。Cisco の計算例では、128 kbps・84,000 マイクロ秒のとき 256 * (10^7/128 + 84000/10) = 22150400 です。
K 値と既定値
| 係数 | 既定値 | 対応する要素 |
|---|---|---|
| K1 | 1 | 帯域幅 |
| K2 | 0 | 負荷 |
| K3 | 1 | 遅延 |
| K4 | 0 | 信頼性 |
| K5 | 0 | 信頼性 |
K2・K4・K5 が 0 であるため、既定の計算に使われるのは帯域幅と遅延だけです。Load と Reliability は動的に計算されて Vector metric に表示されますが、既定では使用されません。MTU も表示される情報の 1 つですが、計算には使われません。ホップ数も計算式には含まれず、EIGRP AS の最大サイズを制限する役割を持ちます。
K 値は Hello で通知され、一致しないルーター同士はネイバーになりません。変更する場合は、同一ドメイン内のすべての機器で揃えることが前提です。なお Named モードでは Wide Metrics により 64 ビットへ拡張されます。本記事は Classic メトリックを前提に整理します。
Cisco は、K 値の既定は多くのネットワークで適切に動作するよう選定されており、経験のある設計者の指示なく変更しないよう推奨しています。
内部経路・外部経路と管理ディスタンス
内部経路は同じ EIGRP AS 内で生成された経路、外部経路は他プロトコルやスタティックルートから再配布された経路です。RFC 7868 は、メトリックに関係なく内部経路が優先されると定めています。
一方、管理ディスタンスは EIGRP の内部の話ではありません。管理ディスタンスは、複数のルーティングプロトコルが同じ宛先を通知したときに、どの経路をルーティングテーブルへ入れるかを決める値です。Cisco の既定値は、内部 EIGRP が 90、外部 EIGRP が 170、OSPF が 110、RIP が 120 です。show ip route の [90/2169856] は、管理ディスタンスとメトリックの組み合わせです。
不等コスト負荷分散の位置づけ
EIGRP は、等コストに加えて不等コストの複数経路へも通信を分散できます。ここで重要なのは、分散の対象になるのはフィージブルサクセサに限られるという点です。RD が FD 以上で条件を満たさない経路は、設定値を変えても負荷分散に使われません。設定手順は今後の記事で扱います。
OSPF・RIP との違いと採用時の注意点
経路計算と収束方法の違い
| 項目 | RIP | OSPF | EIGRP |
|---|---|---|---|
| 分類 | ディスタンスベクター | リンクステート | 拡張ディスタンスベクター |
| 経路計算 | ホップ数の比較 | LSDB から各自が SPF 計算 | DUAL による判定 |
| 保持する情報 | ネイバーからの距離 | エリア内の全トポロジ | ネイバーごとの RD と CD |
| 更新方式 | 約 30 秒ごとの定期更新とトリガードアップデート | 変化時の LSA フラッディングと LSA の定期リフレッシュ | 初期同期後、変化した経路を部分更新 |
| 標準化 | RFC 2453 | RFC 2328 | RFC 7868(Informational) |
| 管理ディスタンス | 120 | 110 | 90(内部)/170(外部) |
最も大きな違いは、経路を選ぶときに何を見ているかです。OSPF は各ルーターがエリア内の地図を持ち、そこから最短経路を計算します。EIGRP は地図を持たず、ネイバーが通知した距離情報だけを判断材料にし、代わりに代替経路を保持してループしないことを事前に確認します。
このため EIGRP は、フィージブルサクセサが存在する障害では再計算を経ずに切り替えられます。存在しない障害では Query と Reply による探索が必要になり、収束時間は Query が届く範囲に依存します。EIGRP が常に OSPF より速く収束するわけではなく、収束性はフィージブルサクセサの有無と Query の範囲に左右されます。
RIP はホップ数で経路を選び、約 30 秒ごとの定期更新に加えて、経路変更時にはトリガードアップデートも行います。最大ホップ数は 15 であるため、適用範囲には制約があります。
EIGRP・OSPF・RIP の判断基準
RFC 7868 のステータスが Informational で、実装も Cisco 製品が中心であることは、機器選定の自由度に直結します。他ベンダーの機器を追加する際は、その機器が EIGRP に対応しているかを個別に確認することになります。
- EIGRP が候補になる場合
-
すでに EIGRP で運用されているドメインを維持・拡張する場合、または機器の選定と管理の範囲が自社で閉じており Cisco 製品で統一されている場合です。フィージブルサクセサを確保できる冗長構成であれば、障害時の切り替えを設計に織り込めます。
- OSPF が候補になる場合
-
これから新規に構築し、将来的に他ベンダーの機器が混在する可能性がある場合です。Cisco 機器での設定手順は関連記事『Cisco ルーターでの OSPF 設定手順とマルチエリア構成のコンフィグ例』で扱っています。
- RIP が候補になる場合
-
経路数が少なく構成が単純で、ホップ数の制約が問題にならない小規模環境です。
プロトコルそのものに優劣があるわけではありません。既存環境、ベンダー構成、運用体制、障害時の設計方針から判断することをおすすめします。
まとめ
EIGRP は、受け取った経路情報をトポロジテーブルへ蓄え、DUAL がループのない経路だけを選んでルーティングテーブルへ登録します。用語を個別に覚えるより、RD と CD がネイバーごとに保持され、その中から FD との比較で使える経路が選ばれる、という流れで捉えると全体像がつながります。
- ネイバー学習からトポロジテーブル、DUAL、ルーティングテーブルへ至る一連の流れ
- 宛先ごとにネイバー単位で保持される RD と CD の役割の違い
- 直近の Active から Passive への遷移以降に記録される最小 CD としての FD
- RD が FD より小さい場合にのみ成立するフィージビリティ条件
- フィージブルサクセサの有無で分かれる障害時の 2 つの動作
- 既定の複合メトリックで使用される帯域幅と遅延、および使用されない値
- 既存環境とベンダー構成から判断する EIGRP と OSPF の使い分け
以上、最後までお読みいただきありがとうございました。


