目次
EIGRPの処理の流れ
EIGRPの全体的な処理の流れは、以下のようになります。
- EIGRPネイバーの発見
- 同じネットワーク上のEIGRPルータを探す
- ネイバー間でEIGRPルート情報を交換
- トポロジテーブル上のEIGRPルートを交換
- 最適ルートをルーティングテーブルに登録
- トポロジテーブル上の最適なEIGRPルート(サクセサ)を選択
- 定期的にHelloパケットを送信
- Helloパケットによってネイバーの状態を確認
EIGRPネイバーの発見
EIGRPは、OSPFと同じように、まずはネイバーを発見します。EIGRPのネイバーとは、同じネットワーク上の同じAS番号のEIGRPルータです。ネイバーを発見すると、そのネイバーとの間でEIGRPのルート情報を交換します。
ネイバー間でEIGRPルート情報を交換
EIGRPのルート情報はすべてトポロジテーブルで管理しています。ルータがEIGRPのルート情報を送信するときには、トポロジテーブルに登録します。そして、ネイバーから受信したEIGRPルート情報は、トポロジテーブルに格納します。EIGRPのルート情報は、RIPと同じようにネットワークアドレス/サブネットマスク+メトリックです。これは、EIGPRのルーティングアルゴリズムはディスタンスベクタがベースになっていることを表しています。また、ルート情報の送信について、RIPと同じようにルートのループを防止するためにスプリットホライズンがあります。ルート情報の出力インタフェースからは、そのルート情報を送信しません。
EIGRPルートの生成とスプリットホライズンについて、以下の記事をご覧ください。
最適ルートをルーティングテーブルに登録
トポロジテーブルのEIGRPルートから最適ルートを選出します。EIGRPでは、最適ルートのことを「サクセサ」と呼びます。サクセサをルーティングテーブルに登録して、IPパケットをルーティングできるようにします。そして、サクセサのバックアップルートとなる「フィージブルサクセサ」も選出します。
サクセサやフィージブルサクセサ選出のアルゴリズムがDUALです。
DUALによってサクセサ、フィージブルサクセサを選出する仕組みは以下の記事をご覧ください。
定期的にHelloパケットを送信
いったん、ネイバー間でルート情報の交換が終わったら、あとは、定期的なHelloパケットの交換でネイバーが動作しているかどうかを確認します。この点もOSPFと似ている点です。Helloパケットを送る間隔をHelloタイマと呼び、Helloパケットが届かなくなってネイバーがダウンしたとみなす時間をホールドタイムと呼びます。Helloタイマとホールドタイムのデフォルト値は、インタフェースによって以下のように決まります。
インタフェースタイプ | Helloタイマ | ホールドタイム |
ブロードキャストメディア(イーサネットなど) | 5秒 | 15秒 |
ポイントツーポイント(フレームリレー/ATMポイントツーポイントサブインタフェースを含む) | 5秒 | 15秒 |
1.5Mbps以上の高速なマルチポイントインタフェース(ISDN PRI、SMDS、フレームリレー、ATMなど) | 5秒 | 15秒 |
1.5Mbps以下の低速なマルチポイントインタフェース(ISDN BRI、フレームリレーなど) | 60秒 | 180秒 |
また、ネットワークの追加やダウンなどの変更があった場合は、トリガードアップデートとして、EIGRPのルート情報を送信します。
EIGRPのパケットタイプ
EIGRPパケットは、IPヘッダで直接カプセル化します。IPヘッダのプロトコル番号は88です。また、EIGRP用のマルチキャストアドレスとして224.0.0.10が予約されています。宛先IPアドレスとして224.0.0.10を指定します。
EIGRPでは、次の5つのパケットタイプがあり、EIGRPヘッダのOpcodeでパケットタイプがわかります。
- Hello
- Update
- Query
- Reply
- ACK
Hello
Helloパケットは、ネイバールータを発見するために利用されます。ルータのインタフェースでEIGRPを有効にすると、そのインタフェースはEIGRPのマルチキャストグループ224.0.0.10に参加します。そして、224.0.0.010あてにHelloパケットを送信して、ネイバールータを探します。このHelloパケットの送信は定期的に継続して行います。定期的にHelloパケットを送受信することによって、ネイバールータが正しく動作しているかどうかの確認も行っています。Helloパケットによるネイバーの発見と維持は、OSPFなどのリンクステート型ルーティングプロトコルの特徴を取り入れた例です。
Update
Updateパケットは、EIGRPのルート情報をネイバーに通知するために利用します。ただし、このUpdateパケットは定期的に送信されるわけではありません。ネットワークに変更があった場合、その変更分のみをUpdateパケットでネイバールータに通知します。この点が、RIPやIGRPといったディスタンスベクタ型ルーティングプロトコルと異なっています。
Query
Queryパケットは、ネットワークに変更が発生し、フィージブルサクセサがない場合に、ネイバールータに対して代替ルートがあるかどうかを問い合わせるために利用します。Queryパケットはマルチキャストアドレス(224.0.0.10)、もしくはユニキャストで送信されます。
Reply
Replyパケットは、Queryパケットに対する応答として送信されます。Replyパケットのあて先はQueryパケットを送信したネイバールータのユニキャストアドレスです。
Ack
Ackパケットは、データがまったく含まれていないHelloパケットです。Ackパケットは必ずユニキャストで送信されます。
これら5つのパケットの配送は、Reliable Transport Protocol(RTP)によって管理されています。RTPによって、EIGRPパケットの配送を保証し、パケットは順序どおりに配送されることになります。パケットの配送の保証は、Ackパケットによる確認応答で行い、パケット到達の順序は、パケットに含まれているシーケンス番号によって管理しています。
上記のEIGRPパケットは、明示的にAckパケットによる確認応答を必要とする「高信頼性パケット」と明示的な確認応答を必要としない「無信頼性パケット」に分かれています。その分類は、次の表の通りです。
高信頼性パケット | 無信頼性パケット |
Update Query Reply | Hello Ack |
高信頼性パケットである、Update、Query、Replyパケットは定期的に送信されるわけではありません。そのため、これらのパケットが正しく相手に送信できたかどうかを確認するためにAckパケットによる確認応答が必要になるわけです。Helloパケットは、定期的に送信されるので、特に明示的に確認応答の必要はありません。
高信頼パケットをマルチキャストして、あるネイバーからAckパケットが返ってこないときには、ユニキャストでそのパケットを再送信します。このユニキャストによる再送信を16回行っても、Ackパケットが返ってこない場合には、そのネイバーはダウンしたとみなします。マルチキャストからユニキャストに切り替えての再送信の時間は、マルチキャストフロータイマー(multicast flow timer)によって決まります。ユニキャストによる再送信の間隔は、再送信タイムアウトタイマー(retransmission timeout)によって決まります。
EIGRPの仕組み
- EIGRPの概要
- EIGRPの処理の流れとパケットタイプ
- EIGRPルートの生成
- EIGRPのメトリック
- EIGRP DUALの用語
- EIGRPルートの切り替え
- EIGRP 不等コストロードバランス
- EIGRP 基本的な設定と確認コマンド
- EIGRPネイバー認証の設定と確認(クラシックモード)
- EIGRPネイバー認証の設定と確認(Namedモード)
- EIGRPの設定例
- EIGRPルート集約の設定と確認
- EIGRPスタブ ~こっちに代替ルートはありません~
- EIGRP ルート集約とスタブの設定例
- 不連続サブネットでのEIGRPの設定例
- EIGRP 不等コストロードバランスの設定例
- EIGRP セカンダリアドレスのアドバタイズ設定例
- EIGRPデフォルトルートの生成 ~スタティックルートの再配送~
- EIGRPデフォルトルートの生成 ~ルート集約~
- EIGRPデフォルトルートの生成 ~ip default networkコマンド~
- EIGRP Namedモードの概要
- 3階層モデルLANのEIGRPルーティング
- [演習] EIGRP基本設定
- [演習] EIGRP基本設定 トラブルシューティング
- [演習] EIGRP応用設定
- [演習] EIGRP応用設定 トラブルシューティング
- EIGRP 設定ミスの切り分けと修正 Part1
- EIGRP 設定ミスの切り分けと修正 Part2
- EIGRP 設定ミスの切り分けと修正 Part3