EIGRP

EIGRP（Enhanced Interior Gateway Routing Protocol）は、シスコシステムズの独自ルーティングプロトコルで、IGRPに緩やかに基づいている。
自律システム (AS) 内のルーティングを行うInterior Gateway Protocol（IGP）の通信プロトコルである。
EIGRPは距離ベクトル型ルーティングプロトコルの拡張版であり、ネットワークトポロジーやルーターの帯域幅や処理能力を変更した後のルーティングの不安定さを最小にするよう最適化している。EIGRPをサポートするルーターは、32ビットのEIGRPメトリック（統計）情報を24ビットのIGRPメトリック情報に変換することで、隣接するIGRPルーター用の情報を自動的に再構築する。ルーティング最適化の多くはSRIの開発した Diffusing Update Algorithm (DUAL) に基づいており、ループフリー運用と高速コンバージェンス（収束）機構を提供している。

アクティブ状態とパッシブ状態

トポロジテーブルでは、送信先それぞれにパッシブまたはアクティブという印がついている。パッシブ状態では、その送信先についてのサクセサが特定されている。サクセサがフィージビリティコンディションを満たさなくなり、かつフィージブルサクセサがない場合（すなわちバックアップ経路がない場合）、その送信先はアクティブ状態とされる。隣接ルーターへのあらゆるクエリに応答が返ってきた場合、アクティブ状態からパッシブ状態に戻る。なお、ある送信先のサクセサがフィージビリティコンディションを満たさなくなっても、フィージブルサクセサがある場合はフィージブルサクセサのうちトータルの距離が最小のものを新たなサクセサに選ぶので、パッシブ状態のままとなる。

報告距離と到達可能距離

アドバタイズ距離 (AD) とは、送信先ネットワークへの経路に沿った複合メトリックであり、上流隣接ルーターによってアドバタイズされる。報告距離とも呼ばれ、サクセサである隣接ルーターを経由したときの送信先との最小距離と等しい。
到達可能距離 (FD) とは、あるルーターから特定の送信先への既知の最小の距離である。これはアドバタイズ距離 (AD) にそのADを送信した隣接ルーターまでのコストを加えた値である。なお、このメトリック情報は「その経路が最近アクティブからパッシブ状態になった時点」以降の最小距離である。すなわち経路がパッシブ状態であればFDは距離が減少する場合のみ更新され、さもなくば更新されない。一方、経路をアクティブ状態にする必要が生じた場合、経路がアクティブ状態からパッシブ状態になったときにFDが更新される。このときFDは増加することもある。アクティブ状態からパッシブ状態への変化を契機として、その経路の新たな履歴が開始される。
例えば、新たに発見された送信先 X への経路がアクティブからパッシブになり、距離が10だったとする。ルーターはADとFDを10とする。その後距離が10から8に減少したとする。パッシブ状態のままなので（距離の減少はフィージビリティコンディションには影響しないため）、ルーターはADとFDを8とする。さらにその後、距離が12に増加したが、サクセサとフィージブルサクセサはそのままだとする。その場合、ADは12に更新されるが、FDは8のままとなる。つまり、ADとFDが一致しなくなる。その後サクセサが障害状態になり、他のフィージブルサクセサが存在しないとする。するとその経路はアクティブ状態となり、ルーターは隣接ルーターに送信先 X の新たな経路を問い合わせる。新たに見つかった経路の距離が100だったとすると、ルーターは経路をパッシブ状態にした上でADとFDを100とする。

フィージビリティコンディション

フィージビリティコンディションとは、EIGRPネットワークにおけるループフリー（ループがない状態）の十分条件である。サクセサとフィージブルサクセサは送信先までのループフリーな経路を持つことを保証されており、そのためにフィージビリティコンディションを使う。その大まかな条件は非常に単純である。すなわち、「ある送信先について、隣接ルーターが距離をアドバタイズしていて、その距離が到達可能距離以下であれば、その隣接ルーターはその送信先のループフリーな経路上にある」というものである。言い換えれば、「ある送信先について、ある隣接ルーターがその送信先に既知のルーターよりも近いと知らせてきた場合、その隣接ルーターはその送信先のループフリーな経路上にある」ということになる。
正確に言えば、ある送信先について AD < FD となる隣接ルーターはその送信先へのループフリーな経路上にある。
この条件は Source Node Condition とも呼ばれ、SRIの J. J. Garcia-Luna-Aceves が提案している条件の1つである。Source Node Condition は Diffusing Update Algorithm (DUAL) に関する論文にある。
この条件が十分条件であって必要条件ではないという点は重要である。すなわち、この条件を満たす隣接ルーターはループフリーな経路上にあるが、この条件を満たさなくてもループフリーな経路上にある隣接ルーターは存在しうる。しかしそのようなルーターは最短経路上にはないので、それを使わなくともネットワークの機能には大きな影響はない。そのような隣接ルーターがその送信先についてアクティブ状態となった場合、パッシブ状態に戻ったときに再評価されることになる。

その他の詳細

EIGRPは Classless Inter-Domain Routing (CIDR) を扱え、可変長サブネットマスクを使える。この点がIGRPからの大きな改善点である。逆に問題点はシスコの機器以外ではサポートされていないため、EIGRPを採用した組織で一種のベンダロックインに繋がる点である。またEIGRPは、ルーターが正確なネットワークトポロジーを知っていないとできない用途に使うことができない（例えば、MPLSのトラフィック・エンジニアリング）。
EIGRPはPDM (Protocol-Dependent Module) を使って、IP、IPv6、IPX、AppleTalkに対応したルーティングプロセスを別個に実行できる。しかし、これを使ってプロトコル間の変換はできない。
Cisco IOS ルーター上でかつてのクラスのあるIPアドレス方式を使うEIGRPの設定の例を以下に示す。
Router> enable
Router# config terminal
Router(config)# router eigrp ?
  <1-65535>  Autonomous system number
Router(config)# router eigrp 1
Router(config-router)# network 192.168.0.0
Router(config-router)# end
下記は、クラスのないIPアドレスを使っている場合の設定例である。この例にあるワイルドカード 0.0.15.255 は、最大4094台のホストを持つサブネットを示している。これは、サブネットマスク 255.255.240.0 のビット単位の補数である。no auto-summary コマンドはクラスのあるネットワークとの境界での自動的な経路集約を防ぐもので、これを設定しないとループが発生する。
Router> enable
Router# config terminal
Router(config)# router eigrp 1
Router(config-router)# network 10.201.96.0 ?
  A.B.C.D  EIGRP wild card bits
  <cr>
Router(config-router)# network 10.201.96.0 0.0.15.255
Router(config-router)# no auto-summary
Router(config-router)# end