HSRPはルータ起動時や障害時など、アクティブルータが入れ替わるタイミングで
standbyグループ内でのアクティブルータの選出が終わって、
正常に通信できるようになるまで少し時間がかかる。
その時間に何が行われているかというと、
ルータ同士がやり取りする中でHSRPの状態がいろいろと遷移して
その結果、最終的にアクティブルータが選出されて通信が開始しているのだ。
HSRPの状態遷移は以下の通り(上から下へ順に遷移)
イニシャルステート 初期状態。HSRPのやり取りを全くしていない。 ラーニングステート Helloパケットを受信していない。
アクティブルータでもスタンバイルータでもない状態。
バーチャルIPアドレスも認識していない。リスニングステート Helloパケットを受信する。
バーチャルIPアドレスを取得する。スピークステート 定期的にHelloパケットを送信する。
アクティブルータあるいはスタンバイルータに選出される。アクティブステート
または
スタンバイステートHelloパケットを定期的に送信。
アクティブルータはバーチャルIPアドレス宛の通信を処理。
スタンバイルータはスタンバイとして待機。
この状態遷移を確認できるコマンドは次の通り
# show standby brief
アクティブルータでの実行結果
P indicates configured to preempt. | Interface Grp Prio P State Active Standby Virtual IP Fa0/0 45 150 P Active local 1.1.1.2 1.1.1.3
スタンバイルータでの実行結果
P indicates configured to preempt. | Interface Grp Prio P State Active Standby Virtual IP Fa0/0 10 100 P Standby 1.1.1.1 local 1.1.1.3
Stateのところが状態によって「Init」や「Listen」に変わる。
アクティブルータの障害時について考えてみると、
Hello間隔およびホールドタイムがデフォルトの3秒,10秒として、
スタンバイルータが障害に気付くまでに10秒(ホールドタイム)が必要なので、
大体15秒あればHSRPの状態が落ち着くものと考えられる。
検証環境で検証してみたところ、
アクティブルータの障害発生から平均13秒でバーチャルIPアドレスへの通信が再開した。
また、アクティブルータをstandbyグループに戻す際もWindowsのpingだと1回だけロストしました。
HSRPの設定例についてはこちら
HSRPの詳細についてはこちら