Cisco社の独自ルーティングプロトコルとして,またIGRPの発展・後継として開発されたのがEIGRPです。ディスタンスベクタ型とリンクステート型双方の長所を取り入れたハイブリッド型で,中規模以上のネットワークで使用可能なプロトコルになっています。EIGRPはCisco社の独自プロトコルなのでCCNAによく出題されています。

EIGRPの基本動作

 EIGRPはハイブリッド型もしくは拡張ディスタンスベクタ型と呼ばれるルーティングプロトコルです。ディスタンスベクタ型をベースに,リンクステート型の長所を取り入れています。その特徴は次のとおりです。

  • イベントトリガとDUAL(Diffusing Update ALgorithm:分散アップデートアルゴリズム)による高速なコンバージェンス
  • DUALによりルーティングループが存在しない
  • 帯域幅の消費が小さい
  • 複数のネットワーク層プロトコルをサポート
  • VLSM,CIDRをサポート
  • 自動経路集約

 EIGRPはIPだけでなく,Novell IPX/SPXやAppleTalkもサポートしており,これらのルーティングプロトコルとしても使用できるマルチプロトコルルーティングプロトコルです。

 EIGRPの動作の基本は,ディスタンスベクタ型です。自身の持つルーティングテーブルの中身をアップデートとして送ります。ただしRIPやIGRPとは異なり,OSPFのように3つのテーブルを保持しています。

  • ネイバーテーブル ・・・ 隣接関係を結んだEIGRPルータの一覧表。この表にあるルータと情報を交換する
  • トポロジテーブル ・・・ ネイバーから入手したパスがすべて載っているテーブル
  • ルーティングテーブル ・・・ トポロジテーブルから最適経路を選択して生成する

 EIGRPではOSPF同様に,ネイバーを特定してから情報を交換します。ただし,ネイバーと隣接関係を結ぶ方法は,OSPFと多少異なります(図1)。

 図1 ネイバーとのやりとり

 EIGRPで使われるパケットは,次の呼び名と役割があります。

  • Hello ・・・ ネイバーと隣接関係を結ぶために使う。また生存確認にも使う
  • Update ・・・ ルーティングテーブルの情報を送る際に使用する
  • Query ・・・ 障害などでパスがなくなった際に他のルータへ代替ルートを問い合わせる
  • Reply ・・・ Queryに対する応答として使用する
  • Ack ・・・ UpdateやReplyを受け取った際に送る確認応答

 これらのEIGRPパケットは,RTP(Reliable Transport Protocol)と呼ばれるレイヤ4プロトコルで転送されます。RTPはEIGRP独自のレイヤ4プロトコルで,EIGRPパケットに対する高信頼性(エラー回復,シーケンス順に並べ替える)を確保します。EIGRPパケットに対するTCPのようなもの,と考えればよいでしょう。

 EIGRPのルート情報のやりとり(Updateパケットを使う)は,基本的にはディスタンスベクタ型ですので,ルーティングテーブルの中身を転送します。ただし,次の点でRIP,IGRPと異なります。

  • ネイバーあてのユニキャストでUpdateパケットを送る
  • Updateパケットは隣接関係を結ぶ時以外,イベントトリガのみである
  • Updateパケットは隣接関係を結ぶ時以外,更新されたルートのみが含まれている
  • Updateパケット受信時にはAckパケットで応答を返すことにより確実に相手に通知する(RTPの役割)
  • Updateパケットではなく定期的に送信されるHelloパケットでネイバーの生存を確認する

 EIGRPのHello間隔とホールドタイムは次の表のとおりです。ホールドタイムとは,この時間以上Helloが届かないとネイバーがダウンしたとみなす値で,OSPFのDeadタイマと同じ意味になります。RIPやIGRPのホールドダウンタイムとは異なりますので,注意が必要です。ホールドタイムは通常,Hello間隔の3倍になります。

ネイバー間のリンクの帯域幅Hello間隔ホールドタイム
1.544Mbps以下60秒180秒
1.544Mbps以上5秒15秒

ルーティングループを回避するDUALアルゴリズム

 EIGRPではDUALと呼ばれるアルゴリズムを使って,ルーティングループが発生しないようにルーティングテーブルを生成します。DUALの説明の前にDUALで使用される用語を説明します(図2)。

  • フィージブルディスタンス(FD:Feasible Distance) ・・・ あて先ネットワークまでの最小のメトリック
  • アドバタイズドディスタンス(AD:Advertised Distance) ・・・ あて先ネットワークへのネイバーが通知してきたメトリック
  • サクセサ(Successor) ・・・ あて先ネットワークまでのベストパス。FDが最小のパスがなる
  • フィージブルサクセサ(Feasible Successor) ・・・ サクセサがダウンしたときに使用される代替パス

 図2 DUALの意味
DUALの用語の意味

 EIGRPを動作させているルータは,ネイバーからのUpdateによる情報をトポロジテーブルに記録します。そのトポロジテーブルからベストパス(サクセサ)を計算し,ルーティングテーブルに載せることになります。サクセサは最もFDの小さいパスがなります。一方でフィージブルサクセサは,サクセサのFDよりも小さいADを持つパスがフィージブルサクセサとなります(図3)。

 図3 サクセサの決定

 図3のようにEIGRPは基本がディスタンスベクタ型の「ルーティングテーブルの中身が隣接ルータから送られる形」であり,OSPFのような複雑な計算が必要ありません。このためルータの必要スペックがOSPFよりも低いものでも可能になっています。また,ネイバーと隣接関係を結ぶ時以外のUpdateは,変更部分のみイベントトリガで送信するので使用する帯域も小さくて済みます。

 サクセサに障害が発生した場合,フィージブルサクセサがあれば速やかにフィージブルサクセサがサクセサに切り替わります。このため,非常に高速なコンバージェンスが可能になります(図4)。

 図4 サクセサの障害(1)
サクセサの障害(1)

 その一方で,フィージブルサクセサがない状態でサクセサに障害が発生すると,そのあて先ネットワークに対するエントリは「アクティブ(Active)」になります。アクティブになったエントリは,そのあて先ネットワークに対するルーティングを中止します。ルータはネイバーに対しQueryパケットを送信し,あて先ネットワークに対する別ルートが存在しないか問い合わせます。問い合わせに対し,ネイバーがサクセサを持っている場合はReplyパケットでサクセサを通知します(図5)。

 図5 サクセサの障害(2)

 このQueryパケットとReplyパケットのやりとりにより,DUALはルーティングループが発生しない,ループフリーなルーティングが可能になります。