EIGRP とは|DUAL とフィージブルサクセサによる経路選択の仕組み

  • URLをコピーしました!
目次

はじめに

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条件を満たす経路がなくなったとき、代替経路を問い合わせる
ReplyQuery の発信元へ応答する
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 topologyall-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 経路があるとします。

経由先RDCD初期状態の判定
R22816030720サクセサ
R33072040960フィージブルサクセサではない
R42048038400フィージブルサクセサ

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 つの動作

状態現在のサクセサ現在の CDFD
初期状態R23072030720
R2 が失われた後R43840030720
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) + 遅延の合計 }
単位経路上での扱い
BWminkbps経路上の最小値を使用する
遅延の合計10 マイクロ秒経路上で累積する

帯域幅は経路上で最も小さい値が使われ、遅延は経路上で累積されます。帯域幅は反転・スケーリングされるため、帯域が小さいほど値が大きくなります。表示される遅延はマイクロ秒単位のため、この式では 10 で割ります。Cisco の計算例では、128 kbps・84,000 マイクロ秒のとき 256 * (10^7/128 + 84000/10) = 22150400 です。

K 値と既定値

係数既定値対応する要素
K11帯域幅
K20負荷
K31遅延
K40信頼性
K50信頼性

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 との違いと採用時の注意点

経路計算と収束方法の違い

項目RIPOSPFEIGRP
分類ディスタンスベクターリンクステート拡張ディスタンスベクター
経路計算ホップ数の比較LSDB から各自が SPF 計算DUAL による判定
保持する情報ネイバーからの距離エリア内の全トポロジネイバーごとの RD と CD
更新方式約 30 秒ごとの定期更新とトリガードアップデート変化時の LSA フラッディングと LSA の定期リフレッシュ初期同期後、変化した経路を部分更新
標準化RFC 2453RFC 2328RFC 7868(Informational)
管理ディスタンス12011090(内部)/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 の使い分け

以上、最後までお読みいただきありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

関西を拠点に活動する、現役インフラエンジニア。経験20年超。

大手通信キャリアにて、中〜大規模インフラ(ネットワーク・サーバ・クラウド・セキュリティ)の設計・構築およびプロジェクトマネジメントに従事。現場で直面した技術課題への対処や、最新の脆弱性情報への実務対応を、一次情報として発信しています。

保有資格
CCIE Lifetime Emeritus(取得から20年以上)/ VCAP-DCA / Azure Solutions Architect Expert

▶ 運営者プロフィール(詳細)

目次