EIGRPはシスコ独自のダイナミックルーティングプロトコルです。シスコ独自ということなので基本的にはシスコ機器のみサポートされており(一部例外あり)導入を検討する場合は、まず大前提としてルーティングプロトコルをしゃべる機器はすべてシスコである必要があります。
私の見てきた限り、OSPFとEIGRPとの導入比率的なものは4対1ぐらいの割合でOSPFのほうが多いです。OSPFはメーカーに縛られることはなくマルチベンダーでサポートされているプロトコルというのが大きいのではと思います。かといってEIGRPはOSPFに機能的に劣っているのかといわれるとそういうわけではなく、非常に優れたプロトコルであることは間違いありません。ちなみに私が実務でEIGRPを構築したのは過去5年で2案件です。
そんなEIGRPは以下のような特徴があります。
- 利用可能な場合のバックアップ経路の決定
- VLSM(Variable-Length Subnet Mask:可変長サブネットマスク)のサポート
- ダイナミックな経路回復
- 未知の代替経路に関する近隣ルータへのクエリ
- 経路が全く見つからない場合の代替経路に対するクエリの創出
EIGRPはトポロジーに変更が発生した時のみ更新を送信するため帯域幅が少なくてすみます。EIGRPが更新する際、その更新にはパスやメトリックの変更を必要とするトポロジー変更の情報が含まれています。さらに変更通知が必要なルータのみが更新を受け取ります。
EIGRPの優れた特徴の一つはIP以外のIPXやAppleTalkであってもサポートされている点でこれらを併合して同時使用している場合でも統一的にEIGRPを使用することが可能です。ただし、最近(2012年現在)ではIPXやAppleTalkを導入していた企業であってもそれを廃止する傾向にありこのメリットは薄れつつあると思っています。
もちろんEIGRPが優れた点は上記だけではなく以下の特徴もあります。
- RTP (ReliableTransport Protocol)
- 近隣ルータ発見/リカバリ
- DUAL (Diffusing UpdateAlgorithm)
またEIGRPには大きく以下の2つのテーブルがあります。
・ネイバーテーブル
隣接関係を確立しているルータ一覧のテーブル。show ip eigrp neighborで確認可能。
・トポロジーテーブル
全ての宛先経路をすべて詰め込んだテーブル。show ip eigrp topologyで確認可能。
■近隣関係
EIGRPはHelloパケットで近隣関係を確立・維持します。EIGRPの近隣ルータ間で送信されるHelloパケットでその間のコネクションの状態が決まります。近隣状態が確立されるとルータは経路情報を交換します。
EIGRPがルーティングテーブル全体をアドバタイズするのは唯一、2つの近隣ルータが通信を開始するときのみです。そのときには自分の近隣ルータが自分のルーティングテーブル全体をお互いにアドバタイズします。それぞれが自分の近隣ルータの直接つながった経路や既知の経路を学習したあとはルーティングテーブルの変更分だけ伝播されます。
EIGRPはマルチキャストを使い224.0.0.10宛に5秒間隔で送信されます。送信されたHelloパケットにはEIGRPバージョン番号やAS番号、K値の値、ホールド時間などが格納されています。近隣関係を形成するには同じAS番号とK値を使っている必要があります。
■経路計算
EIGRPはマルチキャストを使い224.0.0.10宛に5秒間隔で送信されます。送信されたHelloパケットにはEIGRPバージョン番号やAS番号、K値の値、ホールド時間などが格納されています。近隣関係を形成するには同じAS番号とK値を使っている必要があります。
EIGRPは拡張ディスタンスベクタープロトコルともいわれますが、経路を計算する際にディスタンス型とリンクステート型の両方の特性を備えています。更新やHelloメッセージでルーティングテーブルに変更があるとDUAL(Dffusing Update Algorithm)は宛先への最短パスを再計算します。
EIGRPはマルチキャストを使い224.0.0.10宛に5秒間隔で送信されます。送信されたHelloパケットにはEIGRPバージョン番号やAS番号、K値の値、ホールド時間などが格納されています。近隣関係を形成するには同じAS番号とK値を使っている必要があります。
EIGRPのトポロジーデーターベースには宛先への既知の全経路と最低コストパスの計算に使われるメトリックが格納されています。最適経路の計算が終わるとそれらはルーティングテーブルへと移されます。トポロジーテーブルには宛先ネットワークへの経路を最大6個格納することができます。つまり最大6個の冗長経路が計算可能です。
宛先ネットワークまでの最小メトリックを持つ経路がサクセサとなり、ルーティングテーブルに追加されます。経路の持つAD (advertised disatance)がサクセサのFD (feasible distance)よりも小さい場合、その経路はフィージブルサクセサになります。文字だけで書いてもわかりずらいので絵で説明します。
■メトリック計算方法
EIGRPのことを記載した書籍やサイトなどを見るとメトリックを計算する際に複数の指標を使って計算すると解説にありますが私はそれの全てを覚えておらず帯域幅と遅延のみで計算されると覚えています。余程大規模で高度なネットワークでなければ上の2つのみで問題ないと思います。それの計算方法は以下のようになります。
メトリック = ((10,000,000 ÷ 最小帯域幅)+(100 ÷ 遅延(msec)の合計値)) × 256
以下の図の端末Xから端末Yへ通信する際を元に説明します。
インターフェイスはすべて100Mという前提です。OSPFでもそうなのですが、メトリック計算の際には必ず発信インターフェイスを元に計算しますので丸をつけたインターフェイスとなります。また上の図では宛先までの経路が3つ存在しておりそれぞれを色分けして示しています。
100MのFastethernetのshow interfaceを見ると下記のように表示されます。注目すべきはBWとDLYの値です。
# sh int fa1/0/1 FastEthernet1/0/1 is up, line protocol is up (connected) Hardware is Fast Ethernet, address is ec30.91c6.e183 (bia ec30.91c6.e183) Description: : To Extrem Alpine MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec, reliability 255/255, txload 1/255, rxload 1/255 Encapsulation ARPA, loopback not set Keepalive set (10 sec) Full-duplex, 100Mb/s, media type is 10/100BaseTX |
msecはusec÷10で求めることができます。それを踏まえて次の計算式でメトリックを求めることができます。
最小帯域幅 = 10,000,000 ÷ 100,000 = 100
遅延経路① = 10+10+10 = 30
遅延経路② = 10 + 10 = 20
経路①メトリック = (100+30) × 256 = 33280
経路②メトリック = (100+20) × 256 = 30720
経路②が最短経路となりサクセサとなります。少々ややこしいですが、上のように計算することで求めることができます。
■FD(feasible distance)とAD(advertise distance)
あるルータから特定ネットワーク宛までのメトリックがFDで、ネイバールータから特定ネットワーク宛までのメトリックがADになります。先ほどの図のRouterAに視点をおいて示すと下記のようになります。
RouterAから見たメトリックは以下のもので、これがそのままFD値となります。
経路①メトリック = (100+30) × 256 = 33280
経路②メトリック = (100+20) × 256 = 30720
RouterBとRouterDからみたメトリックは次のように計算することができます。
・RouterB 120×256 = 30720
・RouterD 110×256 = 28160
これらの値がADとなります。わかりやすく表でまとめますと以下のようになります。
RouterAのトポロジーテーブル | |||
経由経路 | FD値 | AD値 | |
RouterB経由 | 33280 | 30720 | フィージブルサクセサにはならない |
RouterD経由 | 30720 | 28160 | サクセサ |
最短経路はRouterD経由となりますので、これがサクセサとなります。単純に考えればRouterB経由は代替え経路となりますので、これがフィージブルサクセサ(代替経路)となりそうですが単純に代替え経路となりうるので必ずそうなるというわけではなく、サクセサFD>ADである必要があります。
上の例ですと、RouterB経由のAD値とサクセサのFD値は同一値となっていますのでこれはフィージブルサクセサとはなりません。EIGRPではバックアップ経路になりうるためにこういう条件をつけることによりルーティングループを防止しているらしいです。