HSRPとVRRPの挙動と思想の違い

違うかもしれないけどたぶんこんな感じだと思っている

HSRPの話

ルータが HSRP Group に Join する場合は、基本的に Listen ステートから開始し、以下の流れに沿う

  1. Learn
    • 他ルータのHSRP Helloの値を元に自動設定を行うオプションを入れた場合のみ、ここからスタート
    • HSRP Helloを受信して必要な設定値を取得する
  2. Listen
    • 現Standbyルータが送信するHSRP Helloを受信し、それらのパラメータを確認・監視する
    • 現StandbyルータからのHelloを受信できないままHoldtime timerがExpireしたならば、 Speak に遷移する
    • 現StandbyルータからのHelloを受信したとき、そこに自分よりも低いPriorityが含まれるなら、 Speak に遷移する
  3. Speak
    • 次にStandbyとなるルータの候補として、Standby Helloを送出する
    • 他ルータからのStandby Helloを受信したとき、自分よりも高いPriorityが含まれるなら、 Listen に戻る
    • Holdtime timerがExpireしたとき、自分がSpeakステートになっている(== Standby候補の中でもっとも高いPriorityを持っている)のなら Standby に遷移する
  4. Standby
    • 現Activeルータがダウンした場合、次にActiveルータへ昇格するルータ
    • 現ActiveルータからのHelloを受信できないまま Holdtime timer が Expire したならば、 Active へ遷移する
    • 現ActiveルータからのHelloを受信したとき、そこに自分よりも低いPriorityが含まれるなら、 Active へ遷移する
  5. 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

  1. HSRP Group に新たなルータがJoinしたタイミングで、上記のように Standby ルータ(次のActive候補)を選出する
  2. もし【現在のActiveルータがダウン or ActiveルータのHelloに含まれるPriorityがStandbyルータよりも小さい場合】
    → 上記で予め定めた Standby ルータがActiveへ昇格する

VRRP

  1. Virtual Router GroupにJoinするノードは、現在のMasterルータのVRRP Helloに含まれるPriorityを確認する
  2. もし
    • 【MasterルータのPriorityがBackupルータよりも大きい場合】
      → Backupとして待機する
    • 【現在のMasterルータがダウン or VRRP HelloのPriorityがBackupルータよりも小さい場合】
      → 下に続く
  3. Backupルータ(Master以外のノード)が「Priorityの逆数に応じた時間」(skew)だけ待機する
  4. skewが経過したとき、まだVRRP Helloを受信していなければ(== 自分よりPriorityの高いルータがいなければ)Masterに遷移し、VRRP Helloの送出を開始する
    他ルータからの VRRP Hello を受信したならば、Backupとして再び待機する