前回は、FHRPがデフォルトゲートウェイを冗長化するための仕組みであることを大づかみに整理しました。今回はその中でも、Cisco独自のFHRPであるHSRPに絞って、どうやって主担当と待機担当を決めるのか、障害時にどう切り替わるのか、復旧後にどう振る舞うのかを整理してみました。まずは設定コマンドを細かく覚えるより、動きのイメージを頭の中でつかむことを意識して学習しています。
HSRPの基本構成イメージ

HSRPでは、同じLAN上にある複数のルータやL3スイッチが、1つの仮想デフォルトゲートウェイを共有する形で動作します。端末は実際の物理機器を直接見ているのではなく、あくまでVirtual IP をデフォルトゲートウェイとして使い、L2ではそれに対応するVirtual MAC を相手に通信します。複数の機器が1つの仮想ルータのように見えることで、裏側で担当機器が切り替わっても、端末側の設定を変えずに通信を継続しやすくなります。
今回の1枚目のキャプチャも、この考え方をとても分かりやすく整理してくれています。PCはVirtual IPをデフォルトゲートウェイとして見ており、通常時はActive Routerが実際にトラフィックを転送し、Standby Routerは待機しながら状態監視を行います。障害が起きたときだけ、待機していた側が引き継ぐ、というのがHSRPの基本の流れです。
ActiveとStandbyをもう一度整理する
HSRPでは、グループの中から1台がActive に選ばれ、仮想ゲートウェイ宛てのパケットを実際に転送します。そして、もう1台がStandby として待機し、Activeに障害が起きたときにすぐ役割を引き継げるように準備しています。
個人的には、これは「今働いている人」と「すぐ交代できる控えの人」としてイメージすると理解しやすいと感じました。普段はActiveが前に立って働き、Standbyはいつでも交代できる状態を保っている、という見方です。こう考えると、FailoverやPreemptの意味も自然につながってきます。
Priorityとは何か
HSRPでは、どの機器がActiveになりやすいかを判断するためにPriority(優先度) が使われます。一般的に値が高いほうが優先され、明示的に設定しない場合のデフォルト値は100です。
今回の理解としては、Priorityは「主担当候補としての強さ」と考えると分かりやすいです。たとえばRouter1のPriorityが110、Router2が100なら、通常はRouter1のほうがActiveになりやすい、というイメージです。このあたりは2枚目のキャプチャでも非常に見やすく整理されています。

Preemptとは何か
Preemptは、本来Activeになるべき優先度の高い機器が、復旧後にActiveを取り戻すための設定です。standby preempt を設定しておくことで、より高い優先度を持つルータが参加したり復旧したりしたときに、すぐActiveに昇格できます。逆にこの設定がない場合は、優先度が高くても自動ではActiveに戻りません。
つまり、Priorityだけでは「主担当にふさわしい強さ」は決まっても、復旧後に本当に主担当へ戻るかどうかまでは決まりません。そこで必要になるのがPreemptです。
この関係は、Priority=主担当候補の強さ、Preempt=復旧後に主担当へ戻る意志 と整理すると覚えやすいと思います。
Failoverとは何か
Failoverは、主担当であるActiveに障害が起きたとき、待機中のStandbyへ役割が切り替わることです。Ciscoの資料でも、Activeルータが故障するとStandbyルータがそのパケット転送の役割を引き継ぎ、ユーザーから見て透過的に回復することが説明されています。
ここで大事なのは、端末側は相変わらず同じVirtual IP / Virtual MAC を見ているという点です。利用者はデフォルトゲートウェイを書き換えたり、何かを手動で変更したりする必要がありません。表からは同じ出口に見えていて、裏側の担当だけが切り替わる。この“見え方は変えずに中身だけ切り替える”というのが、HSRPのポイントだと思います。
切り替えの流れを時系列で見る
今回の内容は、時系列で追うとかなり分かりやすくなります。
まず平常時は、Router1がActive、Router2がStandby です。PCはVirtual IPをデフォルトゲートウェイとして使い、実際の転送はActiveが担当します。StandbyはHelloメッセージなどを通じて、Activeの状態を監視しています。
次に障害が発生し、Router1が停止すると、StandbyだったRouter2がActiveへ昇格します。これがFailoverです。Active障害時にはStandbyが引き継ぎ、さらに必要に応じて別の機器が新しいStandbyとして選ばれます。
その後、故障していたRouter1が復旧したとき、Preemptが有効なら、優先度の高いRouter1が再びActiveへ戻る動きになります。一方で、Preemptが無効なら、Router2がそのままActiveを続けることがあります。ここが、PriorityとPreemptをセットで理解する必要がある理由です。
なぜPreemptが必要なのか
Preemptが必要になるのは、単に「優先度が高い機器がある」というだけでは、復旧後の役割まで自動で元に戻るとは限らないからです。
たとえば、本来は性能面や設計上の都合からRouter1を主担当にしたい場合でも、障害のあとにRouter2がActiveのまま残ることがあります。その状態自体が必ずしも間違いではありませんが、「どの機器を本来の主担当にしたいか」を明確にしたいなら、Preemptの考え方はとても重要です。
学習段階では、Priorityだけでは“なりやすさ”しか決まらず、Preemptがあってはじめて“戻るかどうか”まで決まると覚えておくと整理しやすいと思います。
FHRPとOSPFの違いをもう一度整理する
このあたりは混同しやすいですが、FHRPとOSPFは役割が違います。
FHRPは、ホストにとっての最初の出口であるデフォルトゲートウェイを守る仕組みです。ホストが最初に送る相手を止まりにくくするのが目的です。一方で、OSPFはルータ同士でその先の経路を学習する仕組みであり、ネットワーク全体の経路情報を交換して最適な道順を決めていきます。
つまり、ざっくり言えば、FHRPは入口を守る技術、OSPFはその先の道順を学ぶ技術です。今回の2枚目のキャプチャは、この違いをかなり直感的に整理していて、復習用としてもとても良い図だと感じました。
まとめ
今回あらためて整理してみて、HSRPは単に「ActiveとStandbyがある仕組み」ではなく、Virtual IP / Virtual MACで1つの仮想ゲートウェイを見せながら、裏側で役割分担と切り替えを行う仕組みなのだと理解しやすくなりました。
そして、Priorityは主担当候補の強さ、Preemptは復旧後に主担当へ戻るかどうか、Failoverは障害時の引き継ぎとしてつなげて考えると、HSRPの動きがかなり自然に見えてきます。設定コマンドだけを追うより、まずこの流れをイメージで理解しておくことが、CCNA学習では大事だと感じました。

コメント