Enhanced Interior Gateway Routing Protocol(EIGRP)は、Ciscoが独自に開発したハイブリッド型ルーティングプロトコルです。EIGRPは、ルータ同士が効率的に通信を行い、最適なルートを選択するために様々なパケットを交換します。ここでは、その中でも重要な5種類のパケット(Hello / Update / Query / Reply / Ack)について詳しく解説します。
EIGRPの基本設定は以下を参考にしてください。
>> 参考 : 基本設定とネイバー・ルーティングテーブルの確認
RTP(Reliable Transport Protocol)
EIGRPの通信は、TCPやUDPではなくRTP(Reliable Transport Protocol)を使用します。RTPは、確認応答を伴う信頼性の高い通信を行うための独自プロトコルで、EIGRPがデータを正しく受信したことを確認しながら通信します。プロトコル番号は88です。EIGRPのパケットは、RTPによって信頼性のあるルーティング更新を可能にしており、ネットワークの安定性を維持しています。

では、Helloパケットから見ていきます。
Helloパケット
Helloパケットは、ルータ同士の隣接関係を確立し、維持するためのパケットです。定期的にマルチキャストアドレス224.0.0.10宛に送信され、EIGRPのネイバー検出と確認を行います。Helloパケットの中には、自身のAS番号やK値(EIGRPのメトリック計算に使用される重み係数)が含まれており、対向ルータのこれらの値が一致しない場合、隣接関係は確立されません。
- 送信間隔:イーサネットではデフォルトで5秒ごとに送信されます。
- ホールドタイム:隣接ルータがHelloパケットを受信しない場合、ネイバーシップを維持する時間を示し、デフォルトは15秒(送信間隔の3倍)です。


最後にホールドタイムを15秒として通知しています。Helloパケットの送信間隔はイーサネットの場合、デフォルト5秒です。ホールドタイムとは、Helloパケットを受信しなくとも、隣接関係を維持する時間で、デフォルトでは、Helloの送信間隔の3倍です。対向のルータへホールドタイムを通知し、対向ルータ側でホールドタイム値が適用されます。
Updateパケット
Updateパケットは、ルーティングテーブルに変更が生じた際に、隣接ルータにその情報を通知するためのパケットです。例えば、新しいルートが追加された場合、そのルーティング情報をUpdateパケットとして送信し、他のルータに伝えます。
ルーティング情報の更新パケットです。R3でループバックアドレス(3.3.3.3/32)を設定します。すると、R3から3.3.3.3/32のルーティング情報が追加されたことをUpdateパケットとしてR2へ通知されます。Updateはマルチキャスト224.0.0.10宛に送信されます。


R3からのUpdateパケットに対して、R2はユニキャストでAckを返答します。UpdateパケットにはSequence番号(上記の場合は8)があり、Ackは、Acknowledgeにこのシーケンス番号を埋めて返信します。メッセージのコードとしてはHelloと同じです。

Ackパケットは、UpdateやQueryパケットを受信したことを通知するための確認応答パケットです。Ackパケットは、ユニキャストで送信され、受信側はこれを確認することで、送信側が再送を行うかどうかを判断します。
Queryパケット
Queryパケットは、特定のルート情報を失った際に他のルータへそのルートに関する情報を問い合わせるために使用されます。例えば、ルータがネットワークのルートを失った場合、そのルータはQueryパケットを送信して、隣接ルータにそのネットワークについての情報を持っていないかを確認します。
Queryパケットは、EIGRPの迅速なルート回復をサポートし、ネットワークのダウンタイムを最小限に抑える重要な役割を果たします。
R3でループバックをシャットダウンすると、3.3.3.3/32のルートを失うため、隣接ルータであるR2へQueryパケットを送信します。


R3からのQueryに対して、R2はAckを返信します。

R2には、3.3.3.3/32のルート情報を持たないため、Replyパケットの中で、メトリックの遅延部分を最大値(無限)にして通知します。
Replyパケットは、Queryパケットに対する応答として使用されます。もし、受信したルータが問い合わせられたルートに関する情報を持っていない場合、Replyパケット内で、そのルートが無効であることを示します。この時、無限メトリック(例えば、遅延値を最大値に設定)を使用して、該当ルートが利用できないことを通知します。

最後にR3からReplyに対してのAckを返信します。

まとめ
EIGRPは、非常に信頼性の高いルーティングを実現しています。Helloで隣接ルータを検出し、Updateでルーティング情報を通知、Queryでルートの欠落を確認し、Replyで応答し、Ackで通信の確実性を担保するというプロセスが、EIGRPのルーティングシステムの基盤となっています。
これにより、高可用性と迅速な障害回復が可能となり、特に企業ネットワークなどでの使用に適したルーティングプロトコルとなっています。
コメント