リンクダウン発生時のEIGRPの挙動を知りたかった話

はじめに

EIGRPをしゃべっている機器がリンクダウンした時、
・リンクダウンしたらすぐにQueryを送信するか
・リンクダウンしてもHoldタイマーが0になってから送信するか
どちらか調べてみました。(結論は後者でした)

図でいうと、RT#1の右のポートを物理的に抜線したとき、RT#1はL3SWにすぐに経路が切替わるパケットを送るか、しばらく経過してから経路が切替わるパケットを送るか。を調べました。

使用機器

■RT#1,RT#2
 機種:C891FJ-K9
 IOSVersion:15.3(3)M6

■L3SW、L2SW ※ホスト名はSWですがルーターです
 機種:Cisco 1812-J
 IOSVersion:12.4(15)T7

EIGRPの5種類のパケット

・Hello:ネイバー検知とネイバー確率後のキープアライブ用
・Update:新しいルート検出時や収束完了時に送信
・Query:ルート情報をネイバーに問い合わせる際に使用
・Reply:Queryの応答
・Ack:Update/Query/Replyへの確認応答

今回、RT#1視点では、RT#2をnexthopとしていた経路が消える。
そのため、RT#1はL3SWにQueryにて経路の情報を問い合わせる。
L3SWはその経路情報を知らない+RT#1から教わっていたので、これらの経路を削除する。

EIGRPのタイマー

デフォルトは下記の通り。
・Helloインターバル:5秒  ※狭帯域では60秒
・ホールドタイム:15秒   ※狭帯域では180秒

調べたいこと

今回調べたかったのは、RT#1のL2SW側ポートを物理的に抜線したら、
・RT#1はすぐにQueryをL3SWに送信するか
・ホールドタイムが切れた15秒後にQueryを送信するか

正常時の挙動確認

WireShaerkでの確認

L3SWのキャプチャを見ると対向の1.1.1.1からは4.3秒~4.6秒ごとにHelloパケットを受信していることが分かる。(5秒丁度ではない理由は不明)

なおパケットの中を見てみると、
 Hold Time: 15
とみることができる。

showコマンドでの確認

show ip eigrp neighborsを連続で実行すると、Holdタイムが14→13→12→11→10→14→…となることが分かる。
これからHelloパケットを5秒間隔、Holdタイムが15であることが分かる。

異常時の状態確認

3596秒のHelloパケットを見てすぐにケーブル抜線
約14秒後にQueryを受信し、AckとReplyを送信、その後Ackを受信している。

L3SWはRT#1からQueryパケットで172.16.31.0/24、172.16.32.0/24、10.0.0.2/32のルート情報を問い合わされている。
L3SWはこれらのセグメントのネクストホップがRT#1だったのに、このようなQueryを受信したので、対象のセグメントを削除する。


結論

RT#1はRT#2向けのホールドタイマー(添付のshow ip eigrp neighborでいう10.0.254.2向けのHoldタイマー)が切れた後に、QueryをL3SWに送信する。

「showコマンドでの確認」記載のログから、ホールドタイムは15秒からカウントダウンし、Helloパケットを受信したら15秒に戻ることが分かる。
そのため、下記の考えから、リンクダウン発生後10~15秒後にQueryを送信することが分かる。

■最長パターン 
 Helloパケット受信後ホールドタイムが15秒に。
 その直後にリンクダウン発生
 ホールドタイム残り10秒でHelloパケット受信できず(1回目)
 ホールドタイム残り5秒にHelloパケット受信できず(2回目)
 ホールドタイム残り0秒にHelloパケット受信できず(3回目) ←ここで断を検知
 となるので、リンクダウン後15秒でルート切替

■最短パターン
 Helloパケット受信後ホールドタイムが15秒に。
 ホールドタイム残り5秒の直前にリンクダウン発生
 ホールドタイム残り5秒にHelloパケット受信できず(1回目)
 ホールドタイム残り10秒にHelloパケット受信できず(2回目)
 ホールドタイム残り15秒にHelloパケット受信できず(3回目) ←ここで断を検知
 となるので、リンクダウン後10秒でルート切替

参考


この記事が気に入ったらサポートをしてみませんか?