Cisco ルータ・スイッチで冗長化 (HSRP) -状態遷移-




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の詳細についてはこちら