1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【図解でわかる】VRRP/HSRP 概要と仕組み 超入門

Last updated at Posted at 2025-08-13

Title

➊ はじめに

「VRRP / HSRP」の技術について触れることがあったので、概要レベルだけでなく仕組みも知りたいと思い調べてみました。せっかくなので、調査内容を共有します😊

➋ 具体的に何をするか

本記事でのターゲットは、「VRRP / HSRP」の概要、および、仕組みを理解できるようになることです。まずは、基本の用語から整理していきましょう📝

■ VRRP / HSRP とは

❇️ 概要

「VRRP / HSRP」とは、ネットワークの可用性を高めるために、複数のルーターをグループ化し、仮想的な1つのルーターとして動作させる技術のことです。これにより、ルーターに障害が発生した場合でも、別のルーターが自動的にその役割を引き継ぎ、サービスを継続することが可能となります。

image.png

略称 正式名称 直訳
VRRP Virtual Router Redundancy Protocol 仮想ルーター冗長化プロトコル
HSRP Hot Standby Router Protocol ホットスタンバイ・ルーター・プロトコル

❇️ VRRP/HSRPはなぜ必要?

社内のインターネット接続ルーターが故障すると全員の通信が止まってしまいます。これを防ぐためにルーターを冗長化しておけば、1台のルーターに障害が発生しても、他のルーターがサービスをカバーすることができます。

❇️ VRRPとHSRPの違い

VRRPとHSRPについて、細かい違いはあれど、大きな違いはマルチベンダーなのか、Ciscoなのかの違いです。HSRPはCisco専用です。

項目 VRRP HSRP
規格 RFC 5798(2010年標準化) Cisco独自規格
ベンダー依存性 マルチベンダー対応(標準準拠) Cisco製品のみ(他社は対応不可)
グループ番号 1〜255 0〜255
仮想MACアドレス形式 00:00:5E:00:01:XX 00:00:0C:07:AC:XX
優先度デフォルト値 100 100
稼働状態 Master(稼働側) / Backup(待機側) Active(稼働側) / Standby(待機側)
切替判定 Helloパケットの有無 Helloパケットの有無
Hello送信間隔(デフォルト) 1秒 3秒
Helloパケットが途絶してから切替判定までの待ち時間 (デフォルト) Master_Down_Interval 3.61秒 Hold Timer 10秒
Preempt(復帰時のMaster奪取) デフォルトで有効 デフォルトで無効
バージョン v2(IPv4専用)、v3(IPv4/IPv6両対応) v1(IPv4)、v2(IPv4/IPv6)
  • 稼働状態ですが、VRRPでは「Master / Backup」、HSRPでは「Active / Standby」と呼びます。
  • Helloパケットが途絶してから切替判定までの待ち時間ですが、VRRPでは「Master_Down_Interval」、HSRPでは「Hold Timer」と呼びます。

➌ 基本構成

以下、主にVRRPで解説していきます👽️

(1)単一構成

クライアントPCネットワークとサーバネットワークの2つがあり、それぞれ外部のネットワークとRouter1とRouter3で接続している単一構成があったとします。この場合、Router1やRouter3のどちらか一方でも故障するとクライアントPCネットワークとサーバネットワークはそれぞれ通信ができなくなってしまいます。
image.png

(2)冗長化構成

そこでVRRP/HSRPという冗長化技術の登場です。この技術は、複数のルータで同じ仮想ゲートウェイ(VIP:Virtual IPアドレス)を共有し、1台が故障しても自動的に別のルータへ切り替える仕組みです。VRRPではMaster/Backup構成を取り、Masterが通信を行います。Masterに障害が発生した場合、BackupがMasterに昇格し、新しいMasterが通信を担います。

image.png
こちらがRouter2、Router4を追加して、VRRP/HSRPを用いて冗長化した構成図になります。
この場合、Router1とRouter2、Router3とRouter4を冗長ペアとして、それぞれ仮想IPアドレス(VIP:Virtual IPアドレス)を割り振ります。クライアントPCには、デフォルトGWとして仮想IPアドレスを設定します。こうすることで、クライアントPCからはRouter1、Router2どちらがMasterかを意識することなく、通信を行うことができます。

➍ 障害発生時の動作

例えば、Router1が故障した場合を考えてみましょう。
image.png

  • Master不在による昇格
    Router1が故障すると、待機していたRouter2が自動的にMasterへ切り替わり、通信を引き継ぎます。

  • 通信疎通NGによる昇格
    Router3が上位ネットワークであるRouter1と通信ができないと判断すると、待機していたRouter4が自動的にMasterへ切り替わり、通信を引き継ぎます。

➎ 障害検知の仕組み

障害発生時にBackupからMasterへ昇格することが分かりました。ここでは検知の仕組みを解説します。

(1)Master不在検知

Router2がRouter1の障害をどうやって検知したのか、その仕組みについて簡単に解説します。
image.png

MasterからBackupへ定期的にHelloパケットを送信(送信間隔はVRRPではデフォルト1秒)しています。Backupでは、Master_Down_Interval(Helloパケットが途絶してから切替判定までの待ち時間。VRRPではデフォルト3.61秒)の間にHelloパケットを受信できない場合、「Master不在」と判断し、自分がMasterへ昇格します。

(2)通信疎通NG検知

Router3がRouter1の障害をどうやって検知したのか、その仕組みについて簡単に解説します。
image.png

Router3側が、上位ネットワークであるRouter1の障害を検知する方法として、VRRP/HSRPで利用できるトラッキング機能は大きく分けて3種類あります。

種類 方法 検知対象 長所 短所
インターフェース状態監視 上位インターフェースのLine Protocol(Up/Down)を監視 ケーブル抜け、スイッチ電源断など物理障害 即時検知(ほぼ0秒) 物理的にUpでも、上位機器や経路が死んでいる場合は検知不可
経路存在監視(Track Route) ルーティングテーブルに特定の経路が存在するか確認 OSPF/BGPなどの経路喪失 経路消失時に素早く切替可能 ルーティングプロトコルの収束時間に依存
到達性監視(Track IP Reachability) ICMP Echo(Ping)で指定ノードに到達できるか確認 経路があっても通信できない障害(上位ルータ故障、回線不良など) 実通信の可否を直接検証可能 監視対象がPing応答しない場合は利用不可、誤検知リスクあり

いずれかに問題があった場合、Router3は「上位ネットワーク障害あり」と判断し、自身のVRRP/HSRP優先度を下げます。Backup側は、Masterから受信するHelloパケット内の優先度情報を比較し、自分の方が高ければMasterに昇格します。

「インターフェース状態監視」、「経路存在監視」、「到達性監視」の総称をトラッキング機能と呼びます。VRRP・HSRPともに、このトラッキング機能はデフォルトでは無効です。設定しない限り、障害検知はHelloパケットの有無だけで行われます。

➏ Master切替制御の仕組み

いきなりですが「L2 Switch」登場✌️!
上記構成図には無いL2 Switchをいきなり出して申し訳ないのですが、実情としてクライアントPCとルーターの間にL2 Switchが入るような構成になっています。(さっきまでは省略していたのだよ😎…)

image.png

クライアントPCは、デフォルトゲートウェイとして設定された仮想IPアドレス宛にパケットを送信します。このパケットはARP解決によって、仮想IPアドレスに対応する仮想MACアドレス宛のフレームとして送信されます。VRRP/HSRPでは、この仮想MACアドレスの「持ち主」を切り替えることで、Masterの役割交代を実現しています。

(1)平常時(RT1がMaster)

  • Router1が、仮想MAC(00:00:5E:00:01:01)を自インターフェースに設定
  • Router1が、仮想MAC(00:00:5E:00:01:01)を使ってフレーム送信
  • L2 Switchは「このMACはポート16の先にある」とMACアドレステーブルに登録
  • クライアントからの通信は、Router1の接続先ポート16(GigabitEthernet 1/0/16)に転送される
【例】L2 SwitchのMACアドレステーブル
SW1# show mac address-table dynamic
          Mac Address Table
-------------------------------------------
Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
   10   0000.5e00.0101    DYNAMIC     Gi1/0/16   ← RT1 (Master)
   10   0000.aaaa.bbbb    DYNAMIC     Gi1/0/5    ← クライアントPC1
   10   0000.cccc.dddd    DYNAMIC     Gi1/0/6    ← クライアントPC2

(2)RT1障害発生時(RT1故障、RT2がMaster昇格)

  • Router2が、仮想MAC(00:00:5E:00:01:01)を自インターフェースに設定
  • Router2が、仮想MAC(00:00:5E:00:01:01)を使ってフレーム送信開始
  • L2 Switchは「同じMACがポート13から来た」と検知し、MACアドレステーブルを更新
  • 以後、クライアントからの通信は、Router2の接続先ポート13(GigabitEthernet 1/0/13)に転送される
【例】L2 SwitchのMACアドレステーブル
SW1# show mac address-table dynamic
          Mac Address Table
-------------------------------------------
Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
   10   0000.5e00.0101    DYNAMIC     Gi1/0/13   ← RT2 (新Master)
   10   0000.aaaa.bbbb    DYNAMIC     Gi1/0/5    ← クライアントPC1
   10   0000.cccc.dddd    DYNAMIC     Gi1/0/6    ← クライアントPC2

※ポイントは、L2 SwitchのMACアドレステーブルが、同じMACが別ポートから現れた瞬間に更新されるという仕組みです。これにより、ルーティングの再計算を待たずに即時切替が可能になります。

❇️ Master昇格時のフロー詳細

フェーズ 動作 宛先(送信先MAC/IP) 目的 備考
1.仮想MAC割当 Router2が仮想MAC(例:00:00:5E:00:01:01)を自インターフェースに設定 ―(設定動作のため宛先なし) 「仮想IP=このMAC」の関連付けを持つデバイスとして動作開始 これを行わないと仮想IP宛の通信を受けられず冗長化が成立しない
2.VRRP/HSRPHello送信 新しいMasterとしてHelloパケットを送信開始 VRRP:224.0.0.18(MAC:01:00:5E:00:00:12)
HSRP:224.0.0.2(MAC:01:00:5E:00:00:02)
他のBackupルーターに「自分がMasterになった」ことを通知 プロトコル規格上の動作で、昇格直後から送信開始するのが一般的
3.GratuitousARP送信 自分の仮想IP/MAC情報をブロードキャスト送信 MAC:ff:ff:ff:ff:ff:ff
IP:仮想IP(例:192.168.1.254)
クライアントやL2スイッチのARPキャッシュ・MACテーブルを即更新 RFC上は必須ではないが、多くの実装で昇格時に送信し通信断を防ぐ
4.通常データフレーム送信 実際のユーザーデータ通信を仮想MACを送信元として流す 宛先MAC:通信先デバイスのMAC L2スイッチのMACアドレステーブル更新・維持 昇格後すぐに実際のユーザートラフィックを転送開始する

※BackupルーターがMasterに昇格すると、ただちにネットワーク内の機器へ「自分が仮想IP/MACの持ち主になった」ことを知らせるための一連の処理を行います。この流れは、冗長化を途切れなく機能させる上で非常に重要です。
※GratuitousARP(読み方:グラチュータスアープ):ARPキャッシュの期限切れ以外のタイミングで、自発的にARPを送る機能です。GARPとも呼ばれます。

➐ その他

あと気がついた機能とか、メモ書き程度に記載しておきます。

(1)Masterの障害復帰時の動作

プリエンプト(Preempt)とは、直訳すると優先奪取のことで、VRRPやHSRPの冗長化構成で、復帰したルータが優先度(Priority)で勝っている場合に、自動的に稼働役(Master/Active)の座を奪い返す動作です。VRRPとHSRPではデフォルト設定が異なり、それぞれメリット・デメリットがあります。

❇️ プリエンプトON

  • VRRP:プリエンプト デフォルトON
  • 優先度が高ければ、復帰Masterが再びMaster化
  • 仮想MACを再取得、ARP応答を自分に戻す

常に高性能ルータを使用したい場合に有効

❇️ プリエンプトOFF

  • HSRP:プリエンプト デフォルトOFF
  • 現在のMasterを維持し、復帰Masterは待機へ
  • 再切替による瞬断を防ぐ

瞬断を嫌う安定志向の場合に有効

(2)高速障害検知プロトコル:BFD

BFD(Bidirectional Forwarding Detection)とは、リンクや経路の疎通を高速かつ軽量に監視するプロトコルです。VRRPやHSRPにおけるHelloパケットの代替ではなく共存可能で、併用により障害検知時間をミリ秒単位まで短縮できます。

  • 役割:BFDで障害検知 → VRRP/HSRPが即時切替
  • メリット:Helloの待機時間(数秒)を短縮し、瞬断を最小化
  • 条件:両機器がBFD対応であること

➑ まとめ

  • VRRP / HSRP はルーターを冗長化し、可用性を高める技術
  • VRRP:標準化(RFC 5798)され、マルチベンダー環境に有利
  • HSRP:Cisco独自規格で、Cisco機能との親和性が高い
  • 障害検知方法
    • Helloパケットによる検知(デフォルト)
    • トラッキング機能による補強(インターフェース/経路/到達性監視)
    • BFDによる高速障害検知(Helloパケットと併用可)
  • 切替方式:仮想MACアドレスの「持ち主」を切替えるだけなので、クライアント側設定変更は不要(ルーターの設定のみで完結)
  • 復帰後の動作:プリエンプト(主役奪取)設定により挙動が変わる
    • ON:優先度が高ければ復帰ルータが主役に戻る
    • OFF:現在の主役を維持して安定性を優先

➒ 終わりに

自分の勉強、備忘録にもなるかなと思い記事を作りましたが、なかなか、カユイところに手が届いたような記事になったと思いますが、いかがでしょうか?

もしこの記事が参考になった、ちょっとでも良かった、面白かったと感じた方は、よろしければ「いいね❤」をよろしくお願いします🤗

お疲れさまでした😊

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?