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のホールドダウンタイムとは異なりますので,注意が必要です。ホールドタイムは通常,Hello間隔の3倍になります。

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

 また,EIGRPのメトリックは複合メトリックを使用しています。複合メトリックは下記の5つの値の計算結果から求まります。

  • 帯域幅
  • 遅延
  • 信頼性
  • 負荷
  • MTUサイズ

この5つの値にそれぞれK値と呼ばれる重みを掛け、その結果がメトリックになります。デフォルトでは帯域幅に掛けるK値(K1)と、遅延に掛けるK値(K3)以外はゼロになっています。そのため、デフォルトでは帯域幅と遅延から計算されます。

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

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

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

図2●DUALの意味
図2●DUALの意味

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

図3●サクセサの決定

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

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

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

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

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

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

EIGRP自動経路集約

 経路集約はルーティングテーブルの増大を抑え,テーブルのエントリの検索時間を縮小させる現在のルーティングでは必須とも言える機能です。経路集約はCIDR対応のクラスレスルーティングプロトコルで実行できます。RIPv2やOSPFでも経路集約できますが,基本的に手動で設定をして経路集約をします。一方のEIGRPは条件付きですが,自動で経路集約を行います。

 EIGRPの自動経路集約は,クラスフルでのネットワークの境界で経路を自動集約します。つまり,クラスフル環境で,異なるネットワークにUpdateパケットを送るときに,自動的に集約した中身を送ります。クラスフルルーティングプロトコルの経路集約に似た動作となります(図6)。

図6●自動経路集約
図6●自動経路集約

 図6のようにルータAは通常なら4つのネットワークのエントリをルータBに通知するはずです。ところがルータA側はクラスフルでは172.16.0.0/16だけであり,ルータA−ルータB間が10.0.0.0/8であるため,クラスフル境界になりルータAは172.16.0.0/16に集約してUpdateを送ることになります。

 集約が行われた場合,経路集約によるルーティングループを防ぐために、集約を行ったクラスフル境界のルータには,集約ルートのエントリがルーティングテーブルに自動生成されます。このエントリはNullインタフェースあてになります。Nullインタフェースとは受け取ったパケットを廃棄するインタフェースです(図7)。

図7●自動経路集約によるエントリ生成

 一方,クラスフル境界が存在しない場合は,集約されずに通知されます(図8)。

図8●自動経路集約にならない場合
図8●自動経路集約にならない場合

 つまり、EIGRPはクラスフルルーティングプロトコルのクラスフル境界の経路集約を、クラスレスルーティングプロトコルでありながら行うということになります。ただし、Nullインタフェースを自動的に作成することにより、RIPなどで起こりうる経路集約によるルーティングループを防いでいます。ただし、不連続サブネットの経路集約の問題はRIPなどと同様に存在します。

図9●自動経路集約によるルーティングミス

EIGRPのメトリック

 EIGRPのメトリックは,以下の計算式を使って算出します。

  • {K1 * 帯域幅 + (K2 * 帯域幅)/ (256 - 負荷)+ (K3 * 遅延)}* {K5 / (信頼性 + K4)}
    • ただし,K5 = 0の場合は,{K5 / (信頼性 + K4)}は1として計算される

 デフォルトではK1~K5の値は,K1とK3が1,それ以外は0がデフォルトになっています。このため,帯域幅と遅延のみからメトリックは計算されます(帯域幅 + 帯域幅/256 + 遅延になる)

●EIGRPについてより詳しく知りたい人や,上位資格のCCNPを目指す人は,以下も参考になります
CCNPへの道(BSCI編)--「EIGRP編」

(改定履歴)
・IGRPがCCNAの試験範囲から外れたため,IGRPの解説部分を削除しました。(2008/7/29)