HSRPとVRRPの挙動と思想の違い
違うかもしれないけどたぶんこんな感じだと思っている
HSRPの話
ルータが HSRP Group に Join する場合は、基本的に Listen ステートから開始し、以下の流れに沿う
- Learn
- 他ルータのHSRP Helloの値を元に自動設定を行うオプションを入れた場合のみ、ここからスタート
- HSRP Helloを受信して必要な設定値を取得する
- Listen
- 現Standbyルータが送信するHSRP Helloを受信し、それらのパラメータを確認・監視する
- 現StandbyルータからのHelloを受信できないままHoldtime timerがExpireしたならば、 Speak に遷移する
- 現StandbyルータからのHelloを受信したとき、そこに自分よりも低いPriorityが含まれるなら、 Speak に遷移する
- Speak
- 次にStandbyとなるルータの候補として、Standby Helloを送出する
- 他ルータからのStandby Helloを受信したとき、自分よりも高いPriorityが含まれるなら、 Listen に戻る
- Holdtime timerがExpireしたとき、自分がSpeakステートになっている(== Standby候補の中でもっとも高いPriorityを持っている)のなら Standby に遷移する
- Standby
- 現Activeルータがダウンした場合、次にActiveルータへ昇格するルータ
- 現ActiveルータからのHelloを受信できないまま Holdtime timer が Expire したならば、 Active へ遷移する
- 現ActiveルータからのHelloを受信したとき、そこに自分よりも低いPriorityが含まれるなら、 Active へ遷移する
- Active
- Virtual IP を保持するルータ
- Active Helloを定期的に送信し、Virtual IP宛のARP Requestに応答する
- 他ルータからのActive Helloを受信したとき、そこに自分よりも高いPriorityが含まれるなら、 Listen に戻る
→ 他ルータと共にStandbyルータの再選出に参加する
HSRPプロセスがInitを開始してからActiveルータに至るまで、Listen/Speak/Standbyそれぞれのステートで Holdtime ぶんの時間を要する
(※ Initからの話であって、予めStandbyルータが選出されているのならば普通に Holdtime x1 ぶんの時間で昇格する)
それぞれのActive or Master昇格の比較
HSRP
- HSRP Group に新たなルータがJoinしたタイミングで、上記のように Standby ルータ(次のActive候補)を選出する
- もし【現在のActiveルータがダウン or ActiveルータのHelloに含まれるPriorityがStandbyルータよりも小さい場合】
→ 上記で予め定めた Standby ルータがActiveへ昇格する
VRRP
- Virtual Router GroupにJoinするノードは、現在のMasterルータのVRRP Helloに含まれるPriorityを確認する
- もし
- 【MasterルータのPriorityがBackupルータよりも大きい場合】
→ Backupとして待機する - 【現在のMasterルータがダウン or VRRP HelloのPriorityがBackupルータよりも小さい場合】
→ 下に続く
- 【MasterルータのPriorityがBackupルータよりも大きい場合】
- Backupルータ(Master以外のノード)が「Priorityの逆数に応じた時間」(skew)だけ待機する
- skewが経過したとき、まだVRRP Helloを受信していなければ(== 自分よりPriorityの高いルータがいなければ)Masterに遷移し、VRRP Helloの送出を開始する
他ルータからの VRRP Hello を受信したならば、Backupとして再び待機する