IP : 拡張内部ゲートウェイ ルーティング プロトコル(EIGRP)

EIGRP 概要

2011 年 1 月 18 日 - ライター翻訳版
その他のバージョン: PDFpdf | 機械翻訳版 (2014 年 9 月 6 日) | 英語版 (2014 年 8 月 12 日) | フィードバック


概要

このドキュメントでは、シスコシステムズが設計および開発したルーティング プロトコルである Interior Gateway Routing Protocol(IGRP)スイートを説明します。このドキュメントは、あくまでもテクノロジーの紹介を目的とした参考資料であり、プロトコルの仕様や製品の説明を表すものではありません。



はじめに

表記法

ドキュメント表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。



前提条件

このドキュメントに関する特別な要件はありません。



使用するコンポーネント

このドキュメントは、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。



IGRP について

IGRP は TCP/IP および Open System Interconnection(OSI; オープン システム インターコネクション)インターネットで使用されています。オリジナルの IP バージョンは 1986 年に設計および導入されました。IGRP は IGP と見なされますが、ドメイン間ルーティング用の Exterior Gateway Protocol(EGP; エクステリア ゲートウェイ プロトコル)として幅広く使用されています。IGRP はディスタンス ベクトル ルーティング テクノロジーを使用します。そこでは、それぞれのルータが必ずしもネットワーク全体のすべてのルータ/リンク関係を認識している必要はありません。各ルータは、宛先とそれに対応する距離をアドバタイズします。その情報を受信した各ルータは、距離を調整して、その情報を隣接ルータに伝搬します。

IGRP における距離情報は、使用可能な帯域幅、遅延、負荷率、リンク信頼性の総合情報として表されます。そのため、リンク特性の微調整が可能であり、最適なパスを決定できます。



EIGRP について

EIGRP は IGRP の拡張バージョンです。EIGRP では IGRP と同じディスタンス ベクトル テクノロジーが使用され、基盤となる距離情報も変更されていません。このプロトコルはコンバージェンス特性と運用効率が大幅に向上しています。そのため、IGRP への既存の投資を保護しながら、アーキテクチャを改善することができます。

コンバージェンス テクノロジーは、SRI International での研究成果に基づいています。ルート計算中のどの時点においてもループが発生しないようにするため、Diffusing Update Algorithm(DUAL; 拡散更新アルゴリズム)というアルゴリズムが使用されています。これにより、トポロジの変更に関係するすべてのルータを同時に同期できます。トポロジの変更に影響を受けないルータは再計算に関与しません。DUAL を使用した場合のコンバージェンス時間は、既存の他のルーティング プロトコルのコンバージェンス時間に匹敵します。

EIGRP はネットワーク層プロトコルとは切り離して拡張されたため、DUAL は他のプロトコル スイートもサポートできます。



EIGRP の動作の仕組み

EIGRP には次の 4 つの基本コンポーネントがあります。

  • ネイバー探索/リカバリ

  • 高信頼性転送プロトコル

  • DUAL 有限状態マシン

  • プロトコル依存モジュール

ネイバー探索/リカバリとは、ルータが直接接続されたネットワーク上で他のルータを動的に学習する際に使用するプロセスです。また、ネイバーが到達不能または動作不能になっていることを検出するためにも使用されます。このプロセスは、小さい hello パケットを定期的に送信する方法をとっているため、オーバーヘッドはそれほど大きくありません。hello パケットが受信されると、ルータはネイバーが正常に動作していると判断できます。ネイバーが正常に動作していることが確認されると、隣接ルータとの間でルーティング情報を交換できます。

高信頼性転送は、すべてのネイバーに EIGRP パケットを確実かつ順次送信する役割を担い、マルチキャスト パケットやユニキャスト パケットの混合送信をサポートします。EIGRP パケットには、確実に送信する必要があるものと、そうでないものがあります。効率化のため、信頼性は必要時にのみ提供されます。たとえば、イーサネットなどのマルチキャスト機能のあるマルチアクセス ネットワークでは、必ずしも個々のネイバーすべてに hello パケットを確実に送信する必要はありません。そのため EIGRP は、このパケットに確認応答する必要はないことを受信ルータに通知する情報を含めて、マルチキャスト hello パケットを 1 つだけ送信します。update パケットなど他のタイプのパケットでは確認応答が必要であり、パケットにはその指示が含まれています。高信頼性転送では、確認応答のない保留状態のパケットがあれば、すぐにマルチキャスト パケットを送信する機能があります。これにより、さまざまな回線速度のリンクが混在していても、コンバージェンス時間を短時間に抑えることができます。

DUAL 有限状態マシンには、すべてのルート計算の決定プロセスが組み込まれており、すべてのネイバーによってアドバタイズされたすべてのルートが追跡されます。DUAL では、ループのない効率的なパスを選択するために、メトリックと呼ばれる距離情報が使用されます。DUAL は、フィジブル サクセサに基づいて、ルーティング テーブルに挿入されるルートを選択します。サクセサとは、パケット転送に使用される隣接ルータのうち、ルーティング ループを形成しないことが保証され、宛先へのコスト パスが最小になる隣接ルータを指します。フィジブル サクセサはないが、宛先をアドバタイジングするネイバーがある場合、再計算が行われ、新しいサクセサを決定します。ルート再計算に要する時間は、コンバージェンス時間に影響を与えます。再計算がプロセッサを過度に使用しない場合でも、必要でない限り再計算は避けるようにしてください。トポロジが変更されると、DUAL はフィジブル サクセサが存在するかどうかを確認します。フィジブル サクセサがある場合は、不必要な再計算を避けるために、それらのフィジブル サクセサが使用されます。フィジブル サクセサについては、このドキュメントの後半に詳しい定義があります。

プロトコル依存モジュールは、ネットワーク層でプロトコル固有の要件を実行します。たとえば、IP-EIGRP モジュールは、IP でカプセル化された EIGRP パケットを送受信します。また、IP-EIGRP は EIGRP パケットを解析して、受信された新しい情報を DUAL に伝えたり、ルーティングを決定するように DUAL に依頼したりします。この結果は、IP ルーティング テーブルに格納されます。IP-EIGRP は、他の IP ルーティング プロトコルで学習されたルートを再配布する役割も担います。



EIGRP の概念

このセクションはシスコの EIGRP の実装についてのいくつかの詳細を説明します。データ構造と DUAL の概念の両方を説明します。



ネイバー テーブル

各ルータは隣接ネイバーの状態を保持しています。新しく検出されたネイバーが学習されると、そのネイバーのアドレスとインターフェイスが記録されます。この情報はネイバーのデータ構造に格納されます。ネイバー テーブルはこれらのエントリを保持します。ネイバー テーブルは、プロトコル依存モジュールごとに 1 つあります。ネイバーは hello パケットを送信するときに、HoldTime(ホールド タイム)をアドバタイズします。HoldTime とは、ルータがネイバーを到達可能で稼働状態にあると見なすための時間の長さです。つまり、hello パケットが HoldTime 内に受信されない場合、HoldTime の有効期限が切れます。HoldTime の有効期限が切れた時点で、トポロジの変更が DUAL に通知されます。

ネイバー テーブルのエントリには、高信頼性転送メカニズムに必要な情報も含まれています。たとえば、確認応答とデータ パケットを照合するために、シーケンス番号が使用されます。ネイバーから受信した最後のシーケンス番号が記録されるため、順序の正しくないパケットを検出できます。また、ネイバーごとの再送信に対応するため、送信リストを使用してパケットがキューイングされます。その他にも、最適な再送信間隔を判断するために、ネイバー データ構造にラウンド トリップ タイマーが保持されています。



トポロジ テーブル

トポロジ テーブルはプロトコル依存モジュールによってデータが入力され、DUAL 有限状態マシンで使用されます。トポロジ テーブルには、隣接ルータによってアドバタイズされた宛先がすべて含まれています。各エントリでは、宛先アドレスとその宛先をアドバタイズしたネイバーのリストが関連付けられています。また、アドバタイズされたメトリックがネイバーごとに記録されています。これは、ネイバーのルーティング テーブルに格納されているメトリックです。ネイバーがこの宛先をアドバタイズしている場合、必ずそのルートを使用してパケットを転送しています。ディスタンス ベクトル プロトコルは、この重要な規則を常に遵守しています。

また、宛先には、ルータがその宛先に到達するために使用するメトリックも関連付けられています。これは、すべてのネイバーからアドバタイズされた中で最適なメトリックと、最適なネイバーへのリンク コストを加えたものです。ルータはこのメトリックをルーティング テーブルに格納し、他のルータへのアドバタイズに使用します。



フィジブル サクセサ

フィジブル サクセサがある場合、宛先エントリはトポロジ テーブルからルーティング テーブルに移動します。宛先へのすべての最小コスト パスにより、セットが形成されます。このセットから、現在のルーティング テーブルのメトリックよりも小さなメトリックをアドバタイズしたネイバーは、フィジブル サクセサと見なされます。

フィジブル サクセサは、ルータから見ると、宛先に対してダウンストリームにあるネイバーです。これらのネイバーとその関連するメトリックは、転送テーブルに格納されます。

ネイバーによってすでにアドバタイズされているメトリックが変更されたとき、またはネットワークでトポロジが変更されたときは、フィジブル サクセサのセットを再評価する必要が生じる場合があります。ただし、これはルート再計算とは見なされません。



ルート状態

宛先に関するトポロジ テーブルのエントリは、2 つの状態のいずれかです。ルータがルートの再計算を実行していない場合、ルートはパッシブ状態と見なされます。ルータがルートの再計算を実行している場合は、ルートはアクティブ状態となります。フィジブル サクセサが常に存在する場合は、ルートがアクティブ状態になることはなく、ルート再計算は実行されません。

フィジブル サクセサが存在しない場合、ルートはアクティブ状態になり、ルートは再計算されます。ルートの再計算は、ルータがすべてのネイバーに query パケットを送信することによって始まります。隣接ルータは、宛先へのフィジブル サクセサが存在する場合に応答するか、またはルートの再計算の実行中であることを示す query を任意に返します。アクティブ状態にある間、ルータはパケット転送に使用しているネクストホップ ネイバーを変更できません。特定の query に対する応答がすべて受信されると、宛先はパッシブ状態に遷移し、新しいサクセサを選択できます。

唯一のフィジブル サクセサであるネイバーへのリンクがダウンしたときは、そのネイバーを経由するすべてのルートでルートの再計算が始まり、それらすべてのルートがアクティブ状態になります。



パケット形式

EIGRP では、次の 5 種類のパケットが使用されます。

  • hello または ack

  • update

  • query

  • reply

  • request

前述のとおり、hello はネイバー探索/リカバリのためにマルチキャストされます。このパケットには確認応答は必要ありません。データを持たない hello パケットも確認応答(ack)として使用されます。ack は常にユニキャスト アドレスを使用して送信され、ゼロ以外の確認応答番号が含まれています。

update は、宛先の到達可能性を伝えるために使用されます。新しいネイバーが検出されると、update パケットが送信され、ネイバーのトポロジ テーブルが構築されます。この場合、update パケットはユニキャストです。それ以外の場合(リンク コストの変更など)では、update パケットはマルチキャストです。update は常に確実に送信されます。

宛先がアクティブ状態になると、query と reply が送信されます。query は、受信した query に対する応答として送信される場合を除き、常にマルチキャストです。この場合、query を発信したサクセサにはユニキャストで返信されます。reply は query への応答として常に送信され、フィジブル サクセサが存在するためアクティブ状態になる必要がないことを送信元に通知します。reply は、query の送信元にユニキャストで送信されます。query と reply は両方とも確実に送信されます。

request パケットは、1 つ以上のネイバーから特定の情報を取得するために使用されます。request パケットはルーティング サーバ アプリケーションで使用され、マルチキャストの場合もあれば、ユニキャストの場合もあります。request の転送の信頼性は高くありません。



ルート タギング

EIGRP には、内部ルートと外部ルートの概念があります。内部ルートとは、EIGRP Autonomous System(AS; 自律システム)の内部で生成されたルートです。したがって、EIGRP を実行するように設定された直接接続ネットワークが内部ルートと見なされ、EIGRP AS 全体にこのルート情報が伝搬されます。外部ルートとは、他のルーティング プロトコルによって学習されたルート、またはルーティング テーブル内にスタティック ルートとして存在するルートです。これらのルートは、その生成元を示す識別情報によって個別にタグ付けされています。

外部ルートには、次のような情報がタグ付けされます。

  • そのルートを再配布した EIGRP ルータのルータ ID

  • 宛先が存在する AS 番号

  • 設定可能な管理者タグ

  • 外部プロトコルのプロトコル ID

  • 外部プロトコルから取得したメトリック

  • デフォルト ルーティングで使用されるビット フラグ

例として、3 台の境界ルータを持つ AS について考えてみます。境界ルータとは、複数のルーティング プロトコルを実行しているルータを指します。この AS は、ルーティング プロトコルとして EIGRP を使用しています。2 台の境界ルータである BR1 と BR2 は Open Shortest Path First(OSPF)を使用し、もう 1 台の境界ルータである BR3 は Routing Information Protocol(RIP; ルーティング情報プロトコル)を使用しているとします。

OSPF 境界ルータの 1 つである BR1 で学習されたルートは、条件付きで EIGRP に再配布できます。これは、BR1 で動作している EIGRP によって、その所属する AS 内部に OSPF ルートがアドバタイズされることを意味します。この場合、OSPF ルートのルーティング テーブル メトリックと同じメトリックとともにそのルートがアドバタイズされ、OSPF 学習ルートとしてタグ付けされます。ルータ ID は BR1 に設定されます。EIGRP ルートは他の境界ルータに伝搬します。RIP 境界ルータである BR3 でも、BR1 と同じ宛先をアドバタイズするとします。したがって、BR3 は EIGRP AS に RIP ルートを再配布します。これにより、BR2 では、そのルートに関する AS エントリ ポイント、最初に使用されていたルーティング プロトコル、およびメトリックを判断するために十分な情報が得られます。また、ネットワーク管理者は、ルートが再配布されるときに、特定の宛先に対してタグ値を割り当てることができます。BR2 はこの情報を使用して、ルートを使用したり、OSPF に再アドバタイズしたりできます。

ネットワーク管理者は、EIGRP のルート タギングを使用することで、ポリシーを柔軟に制御し、ルーティングをカスタマイズできます。ルート タギングは、一般によりグローバルなポリシーを実装したドメイン間ルーティング プロトコルが EIGRP と連携する中継 AS の場合に特に役立ちます。この連携によって、非常に拡張性の高いポリシー ベース ルーティングが可能になります。



互換性モード

EIGRP は IGRP ルータとの互換性とシームレスな相互運用を実現します。これは重要であるため、ユーザは両方のプロトコルの利点を利用できます。この互換性機能では、EIGRP をイネーブルにするために「フラグ デー(互換性を確保するためにシステムを変更する日)」を設ける必要はありません。中核拠点で慎重に作業すれば、IGRP のパフォーマンスを低下させることなく EIGRP をイネーブルにできます。

互換性機能には自動再配布メカニズムが組み込まれているため、IGRP から EIGRP へのルートのインポート、および EIGRP から IGRP へのルートのインポートが実行されます。両プロトコルのメトリックは直接変換できるため、各プロトコルが所属する AS で生成されたルートと同様に、両方のルートを容易に比較できます。また、EIGRP では、IGRP ルートが外部ルートと見なされるため、タギング機能を使用してカスタム チューニングを行うことが可能です。

デフォルトでは、EIGRP ルートの方が IGRP ルートより優先されます。これは、コンフィギュレーション コマンドで変更でき、ルーティング プロセスを再起動する必要はありません。



DUAL の例

次のネットワーク図は、DUAL をコンバージする方法を示しています。この例は、宛先 N にのみ注目しています。各ノードは N へのコスト(ホップ数)を示します。矢印はノードのサクセサを示します。たとえば、C は A を使用して N に到達し、そのコストは 2 です。

1a.gif

A と B の間のリンクで障害が発生すると、B はそのネイバーに対してフィジブル サクセサが存在しなくなったことを通知する query を送信します。D はその query を受信し、他にフィジブル サクセサが存在するかどうかを確認します。フィジブル サクセサが存在しない場合、D はルート計算を開始し、ルートがアクティブ状態になります。ただしこの場合、宛先 N に対し、C のコスト(2)の方が D の現在のコスト(3)よりも小さいため、C がフィジブル サクセサとなります。D はサクセサとして C に切り替わることができます。A と C はこの変化の影響を受けないため、これには関与していません。

次に、ルートが計算される例を示します。このシナリオでは、A と C の間でリンクに障害が発生したとします。C はサクセサが存在しなくなったことを検出しますが、他にフィジブル サクセサはありません。宛先 N に到達するためのアドバタイズされたメトリック(3)が C の現在のコスト(2)よりも大きいため、D はフィジブル サクセサと見なされません。C は宛先 N のルート計算を実行する必要があります。C は唯一のネイバーである D に query を送信します。D のサクセサは変更されていないため、D は reply を返します。D はルート計算を実行する必要はありません。C が reply を受信すると、すべてのネイバーが N の障害についての通知を処理したことを認識します。この時点で、C は宛先 N に到達するために、(4)のコストがかかる D を新しいフィジブル サクセサとして選択できます。A と B はトポロジの変更による影響を受けず、D は単に C に返信すればよいことに注意してください。



FAQ

EIGRP の設定は IGRP の設定と同じくらい簡単ですか。

はい、EIGRP は IGRP と同じように設定します。ルーティング プロセスと、プロトコルが実行されるネットワークを設定します。既存のコンフィギュレーション ファイルを使用できます。



IGRP のようなデバッグ機能はありますか。

はい、debug コマンドには、プロトコルに依存しないものとプロトコル固有のものの両方があり、プロトコルの動作を通知します。ネイバー テーブルの状態、トポロジ テーブルの状態、EIGRP トラフィックの統計情報などを表示する一連の show コマンドもあります。



IP-EIGRP では IP-IGRP と同じ機能を利用できますか。

IGRP で使用していた機能はすべて、EIGRP でも使用できます。特記すべき機能として、複数のルーティング プロセスが挙げられます。IGRP と EIGRP の両方が動作する単一のプロセスを使用することも、両方が動作する複数のプロセスを使用することもできます。また、IGRP を動作するプロセスと、EIGRP が動作する別のプロセスを使用することもできます。これらのプロセスは、混在させることも統一することもできます。これにより、ニーズの変化に応じて、特定のプロトコルに対してルーティングをカスタマイズできます。



EIGRP で使用される帯域幅とプロセッサ リソースはどのくらいですか。

帯域幅の使用率の問題は、部分更新と差分更新の実装によって対処されてきました。そのため、トポロジの変更が発生した場合にのみ、ルーティング情報は送信されます。プロセッサの使用率については、フィジブル サクセサ テクノロジーにより、トポロジの変更に影響を受けるルータだけでルータの再計算を行うようになったため、AS の全体的なプロセッサの使用率が大幅に減少しました。さらに、ルートの再計算は影響を受けるルートでのみ実行されます。該当するデータ構造だけがアクセスと使用の対象となります。このため、複雑なデータ構造を検索する時間を大幅に短縮できます。



IP-EIGRP では、集約および可変長サブネット マスクはサポートされていますか。

はい、サポートされています。IP-EIGRP は IGRP と同じ方法でルート集約を実行します。つまり、IP ネットワークのサブネットは他の IP ネットワークではアドバタイズされません。サブネット ルートは 1 つのネットワーク番号集約に要約されます。さらに、IP-EIGRP により IP アドレスのビット境界での集約を実行でき、ネットワーク インターフェイス単位で設定できます。



EIGRP ではエリアはサポートされていますか。

いいえ、単一の EIGRP プロセスはリンクステート プロトコルのエリアに類似しています。しかし、そのプロセス内では、どのインターフェイス境界でも情報のフィルタリングと集約が可能です。ルーティング情報の伝搬を制限する場合、階層構造を構築するために複数のルーティング プロセスを設定できます。DUAL 自体がルート伝搬を制限するため、通常は複数のルーティング プロセスを使用して、構造上の境界を定義します。




関連するシスコ サポート コミュニティ ディスカッション

シスコ サポート コミュニティは、どなたでも投稿や回答ができる情報交換スペースです。


関連情報


Document ID: 13669