1. はじめに ネットワークにおける冗長化の重要性
1.1 ネットワークの可用性が求められる現代ビジネス環境
現代のビジネス環境において、ネットワークの安定稼働は企業の生命線であると言えます。ネットワークの停止は、即座に業務の中断、顧客満足度の低下、そして直接的なビジネス損失につながります。そのため、ネットワーク設計では、ルータやスイッチといった主要な機器が単一障害点(Single Point of Failure)となることを避け、高い可用性を維持する冗長化の設計が不可欠です。ネットワークが「常に利用可能である状態を維持する」役割こそが、冗長化プロトコルに求められる基本的な機能なのです。
1.2 HSRPが解決する「デフォルトゲートウェイの単一障害点」問題
企業ネットワークでは、末端のPCやサーバーは、外部ネットワークへ通信するために、セグメント内にあるルータのIPアドレスをデフォルトゲートウェイとして設定しています。もしこのデフォルトゲートウェイとして設定されたルータが故障した場合、セグメント全体の外部通信が停止してしまいます。これが、デフォルトゲートウェイの単一障害点問題です。
HSRP(Hot Standby Router Protocol)は、この問題を解決するためにCiscoが開発したプロトコルです。HSRPを使用することで、複数の物理ルータの上に仮想ルータを設定し、その仮想ルータに仮想IPアドレス(VIP)を割り当てます。エンドデバイスはこのVIPをデフォルトゲートウェイとして設定します。これにより、背後にある物理ルータのいずれかに障害が発生しても、エンドデバイスは設定変更を行うことなく、通信を継続できるようになります。HSRPは、物理ルータ群の障害をエンドユーザーに意識させない、透過的な冗長化を実現しているのです。
HSRPはCisco独自のプロトコルとして開発されました。この独自性は、Cisco製品群内での機能の最適化や、後に解説するトラッキングなどの高度な連携機能を保証するという利点があります。しかし、将来的にマルチベンダー環境でのネットワーク構築を検討している場合、HSRPは制約となる可能性があるため、設計時にはこのプロトコル特性を理解しておくことが重要です。
2. HSRPの基本知識と機能 説明とアーキテクチャ
2.1 HSRPとは何か ホットスタンバイルータプロトコルの役割
HSRPは、IPネットワークにおけるルータの冗長性を確保するための機構です。複数のルータを一つの論理的なグループ、すなわちHSRPグループとして動作させます。このグループ内で、実際にパケットの転送を行う「アクティブルータ(Active)」と、アクティブルータに障害が発生した場合に備えて待機する「スタンバイルータ(Standby)」の役割を明確に決定します。
HSRPの基本的な設計哲学は、「1対1の冗長化」モデルです。すなわち、HSRPグループ内では、アクティブルータがすべての仮想IP宛てのトラフィックを処理し、スタンバイルータは待機に徹します。このシンプルな役割の分離は、プロトコルの状態管理を容易にし、障害発生時に迅速な切り替え(フェイルオーバー)を可能にする要因となっています。一方で、トラフィックの負荷がアクティブ側のルータに集中する傾向があるため、ネットワーク設計の際には、アクティブルータの処理能力に余裕を持たせることが求められます。
2.2 仮想ルータと仮想IPアドレスの仕組み
HSRPの核となるのは、仮想ルータの概念です。HSRPグループ内のすべての物理ルータは、特定の仮想IPアドレス(VIP)と仮想MACアドレスを共有します。エンドデバイスが通信を行う際、ARP(Address Resolution Protocol)を通じてVIPに対応する仮想MACアドレスを取得します。
通常時、この仮想MACアドレスはアクティブルータによって使用され、アクティブルータがVIP宛てのパケット転送をすべて処理します。スタンバイルータは、アクティブルータからのHelloパケットの受信が途絶えた場合に、自身が新しいアクティブルータとなる準備を整え、VIPおよび仮想MACアドレスの引き継ぎを行います。この仕組みにより、物理ルータの切り替えが発生しても、エンドデバイス側ではデフォルトゲートウェイ(VIP)に変更がなく、通信が途切れることなく継続されるのです。
2.3 HSRPにおけるルータの状態遷移
HSRPグループ内の各ルータは、互いにHelloパケットを定期的に交換することで、相手の状態を監視し、自身の役割を決定します。ルータは以下の主要な状態を遷移します。
-
Active(アクティブ): 仮想IPアドレスと仮想MACアドレスを所有し、そのHSRPグループ宛てのパケット転送を実際に行うルータです。
-
Standby(スタンバイ): Helloパケットを受信し続け、アクティブルータの状態を監視しているルータです。アクティブルータがダウンした場合に、最も迅速にアクティブの役割を引き継ぐ準備をしています。
-
Listen(リスン): 他のルータのHSRPメッセージを監視していますが、自身はアクティブまたはスタンバイの役割を持たないルータです。
3. HSRPのバージョンと選択の指針
HSRPはその発表以来、進化を続けており、現在ではHSRP Version 1とVersion 2が存在します。ネットワークのスケーラビリティと将来性を考慮すると、バージョン選択は極めて重要な設計判断となります。
3.1 HSRP Version 1とVersion 2の決定的な違い
HSRP Version 2は、Version 1が持ついくつかの制限を克服するために開発されました。主な機能拡張は以下のとおりです。
| 比較項目 | HSRP Version 1 | HSRP Version 2 |
| グループ番号上限 | 0から255 | 0から4095まで拡張 |
| 対応IPアドレス | IPv4のみ | IPv4およびIPv6に対応 |
| マルチキャストアドレス | 224.0.0.2 | 224.0.0.102 |
| パケットフォーマット | 独自形式 | 新しいパケットフォーマット |
| 互換性 | V2とは互換性なし | V1とは互換性なし |
HSRP V2の最も大きな進化は、グループ番号の上限が4095まで大幅に拡張された点です。これにより、大規模なマルチセグメントネットワークにおいて、HSRPをより柔軟に、多数のVLANに対して展開することが可能になりました 1。さらに、HSRP V2はIPv6アドレスにも対応しており、IPv6環境下での冗長化を実現するために非常に有用です。
3.2 パケットフォーマットと互換性の問題
HSRP V2は、V1とは異なる新しいパケットフォーマットを使用しており、Helloパケットの送信に使用するマルチキャストアドレスも変更されています。この変更の結果、HSRP Version 1とVersion 2の間には互換性がありません。
もし同じHSRPグループ内でV1とV2のルータが混在した場合、互いにHelloパケットを認識することができず、両方のルータが自身をアクティブであると誤認してしまう「スプリットブレイン」状態に陥るリスクがあります。この状態は、ネットワークの重大な通信障害を引き起こします。したがって、ネットワーク管理者は、HSRPを設定する際には、グループ内のすべてのルータでバージョンを統一する必要があります。
3.3 使用すべきバージョン判断のポイント
将来的な拡張性を考慮すると、現在IPv4のみを使用している小規模ネットワークであっても、HSRP Version 2を使用することが強く推奨されます。V2を選択することで、将来的なIPv6の導入や、大規模なネットワークへの拡張が必要となった際に、設定の変更やグループIDの不足といった問題に直面することを回避できます。
もし既存のV1環境をV2へ移行する場合、V1とV2の非互換性による停止時間管理が重要になります。移行作業中は、ルータ間でHSRPの設定を一時的に無効化し、両方のルータで同時にV2への切り替えを実施し、その後HSRPを再有効化するという慎重な手順が必要です。この非互換性のため、移行計画には詳細な手順書とロールバック計画の作成が不可欠となります。
4. HSRP 設定方法 ステップバイステップ実践ガイド
HSRPの設定は、冗長化の対象とするLANセグメントに接続されたインターフェース(レイヤ3インターフェース)に対して行います。ここでは、アクティブ/スタンバイの決定に必要な基本的な設定手順を解説します。
4.1 基本設定手順 仮想IPアドレスとグループ番号の指定
HSRPを有効化し、仮想ルータを定義するためには、まずインターフェースコンフィグレーションモードに入り、HSRPグループ(スタンバイグループ)と仮想IPアドレスを指定します。
Router(config)# interface FastEthernet0/0
Router(config-if)# standby ip [仮想IPアドレス]
このコマンドは、HSRPを有効にするだけでなく、エンドデバイスのデフォルトゲートウェイとなる仮想IPアドレスを定義します。ここで指定する仮想IPアドレスは、対象インターフェースが属するサブネット内で未使用のアドレスでなければなりません。
4.2 アクティブ決定の鍵となるプライオリティの設定
HSRPグループ内では、プライオリティ(優先度)の値が最も高いルータがアクティブルータとして選出されます。プライオリティのデフォルト値は100です。
通常、特定のルータ(例:高性能なR1)を優先的にアクティブとして動作させたい場合、そのルータに対してデフォルト値(100)よりも高い値を設定します。設定可能な最大値は255です。
Router(config-if)# standby 1 priority 110
上記の例では、HSRPグループ1に対し、プライオリティ110を設定しています。競合するスタンバイルータ(R2)のプライオリティがデフォルトの100のままであれば、R1が優先的にアクティブとなります。
4.3 ルータ切り替えを確実にするプリエンプト機能 (Preempt)
プリエンプト(Preempt)機能は、より高いプライオリティを持つスタンバイルータが、現在アクティブとして動作しているルータよりも優位であることを確認した場合に、強制的にアクティブの役割を奪い取ることを可能にする機能です。
HSRPはデフォルトではプリエンプトが無効になっています。プリエンプトが無効な場合、たとえ高性能で高いプライオリティを持つルータが一時的な障害から復旧し、起動したとしても、既にアクティブとなっているルータから役割を奪うことはできません。これは、トラフィックが非推奨の経路を通り続けることを意味します。
ネットワーク設計の観点から、高性能なルータへトラフィックを戻す(アクティブに復帰させる)ことは、リソース管理上望ましい動作です。そのため、スタンバイルータには基本的にプリエンプトを設定し、高プライオリティを持つルータの復旧時には自動的にアクティブに復帰させるのがベストプラクティスとされています。
Router(config-if)# standby 1 preempt
プリエンプトの設定は、単なる機能有効化ではなく、望ましいトラフィック経路を恒久的に維持するためのポリシー設定であると認識することが重要です。
また、HSRPではHelloパケットの送信間隔(デフォルト3秒)とHoldタイム(デフォルト10秒)を設定できます。これらのタイマー値を短縮することで、障害発生時の切り替え時間を高速化できます。例えば、Helloを1秒、Holdを3秒に設定する場合は以下のコマンドを使用します。
Router(config-if)# standby 1 timers 1 3
タイマー値を短く設定しすぎると、ネットワークの負荷が高まったり、一時的なネットワークの不安定さによって誤ったフェイルオーバーが発生したりする可能性があるため、注意が必要です。
5. 冗長性を高める高度な設定 インタフェーストラッキングの導入
5.1 トラッキングの必要性 外部インターフェースダウン時の自動切り替え
HSRPの基本的な動作では、HSRPを設定しているインターフェース(LAN側)の状態のみを監視します。このLAN側インターフェースがアップ状態にある限り、たとえ外部ネットワーク(WANやコアネットワーク)へ接続するインターフェースがダウンしても、HSRPは切り替えを行いません。この場合、エンドデバイスのトラフィックは外部へ出られないアクティブルータに転送され続け、通信が途絶してしまいます。
この「外部インターフェースの論理的なサービス提供能力の喪失」を検知し、自動的に冗長系へ切り替える機能が、インターフェーストラッキングです。特定のインターフェースの状態を追跡(トラッキング)し、そのインターフェースがダウンした場合に、アクティブルータのHSRPプライオリティを意図的に下げることで、スタンバイルータへの切り替えを強制します。
5.2 インタフェーストラッキングの設定コマンド
トラッキング機能を使用するには、インターフェースコンフィグレーションモードで、追跡対象のインターフェースと、プライオリティの減算値を指定します。
Router(config-if)# standby 1 track [追跡対象インターフェース名][減算値]
減算値を指定しない場合、デフォルトで10が減算されます。トラッキング対象のインターフェースがダウンすると、ルータの現在のプライオリティからこの減算値が引かれます。インターフェースがアップ状態に戻れば、減算された値が再び加算され、プライオリティが元の値に戻ります。
5.3 減算値とプライオリティ設計の重要性
インターフェーストラッキングが正しく機能するためには、プライオリティ設定と減算値の組み合わせに細心の注意を払う必要があります。トラッキングによるプライオリティの減算後の値が、スタンバイルータの静的プライオリティよりも必ず小さくなるように設計することが、最も重要な原則です。
例えば、R1をアクティブ(プライオリティ 110)、R2をスタンバイ(プライオリティ 100)と設定したとします。ここで減算値としてデフォルトの10を採用した場合、R1の外部インターフェースがダウンすると、R1のプライオリティは100(110 – 10)となり、R2のプライオリティと同値になってしまいます。
HSRPは、プライオリティが同値の場合、IPアドレスの大きさなど他の要因でアクティブを決定します。これは設計者が意図しない予期せぬ挙動を引き起こすリスクがあります。
このリスクを回避し、確実な切り替えを保証するためには、減算値を意図的に大きく設定する必要があります。例えば、減算値を15と設定した場合、R1の外部インターフェースダウン時にはR1のプライオリティは95(110 – 15)となり、R2の100を下回ります。これにより、R2が確実に優位性を獲得し、アクティブの役割を奪い取ることが可能となります。
インターフェーストラッキングは、物理的なルータの障害だけでなく、外部ケーブルの切断など、論理的な接続性の喪失を検知して切り替えを促すことで、真のレイヤ3冗長性を実現します。
HSRPの主要な設定コマンド一覧と解説
| コマンド | 設定モード | 解説 |
| standby ip [仮想IP] | Interface |
HSRPグループに仮想IPアドレスを設定し、機能を有効化します。 |
| standby priority [値] | Interface |
アクティブルータ選出のためのプライオリティ(1~255)を設定します。 |
| standby preempt | Interface |
自身がより高いプライオリティを持つ場合、強制的にアクティブ状態に移行する機能を有効にします。 |
| standby track [インターフェース][減算値] | Interface |
指定したインターフェースのダウン時に、自身のプライオリティから指定された値を減算します。デフォルトの減算値は10です。 |
| show standby brief | Global (EXEC) |
HSRPの要約ステータス(アクティブ、スタンバイ、仮想IPなど)を確認します。 |
| show standby | Global (EXEC) |
HSRPの詳細ステータス(タイマー、MACアドレス、トラッキング詳細)を確認します。 |
6. HSRP 動作確認のための検証コマンドと切り分け
HSRPの設定が完了したら、それが設計通りに正しく機能しているかを確認するための検証作業が不可欠です。Ciscoルータでは、show standbyコマンド群を用いてHSRPの状態を確認できます。
6.1 show standby briefによる簡潔なステータス確認
show standby briefコマンドは、HSRPグループの現在のステータスを要約して確認するために最も一般的に使用されるコマンドです。このコマンドの出力により、アクティブルータ、スタンバイルータ、仮想IPアドレスがすぐに把握できます。
出力結果は以下の要素を含みます。
-
Interface: HSRPが設定されているインターフェース名です。
-
Grp: HSRPグループ番号です。
-
Prio: 現在設定されているプライオリティ値です。
-
P: プリエンプト(Preempt)が設定されているかを示します。この列に
Pが表示されていれば、プリエンプトが有効になっています。 -
State: 現在のルータがActive、Standby、またはListenのどの状態にあるかを示します。
-
Active/Standby: アクティブ/スタンバイルータの物理IPアドレスを示します。自身がその役割を担っている場合は、
localと表示されます。 -
Virtual IP: 仮想IPアドレス(VIP)です。
この出力結果は、アクティブ選出ロジックが正しく適用されたかどうかを判断するための監査証跡としても機能します。例えば、高プライオリティのルータ(R1)がスタンバイ状態にあり、低プライオリティのルータ(R2)がアクティブ状態にある場合、それはR1のプリエンプト設定が無効か、R1で設定されたトラッキング対象インターフェースがダウンし、そのプライオリティがR2を下回ったことを示唆します。
6.2 詳細情報確認 show standbyの読み方
show standbyコマンドは、briefコマンドで確認できる情報に加え、さらに詳細な設定情報を表示します。
表示される詳細情報には、HSRPのHello/Holdタイマーの設定値、使用されている仮想MACアドレス、そしてトラッキング対象インターフェースの状態などが含まれます。特に、タイマー値が設計通りの値になっているか、またインターフェーストラッキングを設定している場合は、追跡対象のインターフェースの状態(Up/Down)と、それが現在のプライオリティに与えている影響(減算されているか)を詳細に確認することが重要です。
6.3 トラブルシューティングのポイント
HSRPが期待通りに動作しない場合の一般的なトラブルシューティングポイントは以下の通りです。
-
両方のルータがActiveと認識している場合(スプリットブレイン):
これはHSRP Helloパケットの交換ができていないことが主な原因です。ルータ間の接続性(ACL、ファイアウォール、スイッチのVLAN設定など)を確認してください。また、HSRP V1とV2は互換性がありません。両方のルータでバージョン設定が統一されていることを必ず確認する必要があります。
-
アクティブの切り替えが発生しない場合:
ルータのプライオリティが正しく設定されているか、そしてプリエンプト機能が有効になっているか(show standby briefでPフラグを確認)を確認します。
-
トラッキングが機能しない場合:
インターフェーストラッキングを設定しているにもかかわらず切り替えが発生しない場合は、減算値の計算を再確認してください。減算後のプライオリティがスタンバイルータのプライオリティよりも確実に低くなっている必要があります。
7. まとめ HSRPで実現する高可用性ネットワーク
HSRP(Hot Standby Router Protocol)は、Ciscoネットワークにおいて、デフォルトゲートウェイの単一障害点を解消し、高い可用性(冗長性)を提供するための基盤となる技術です。
現代のネットワーク設計においては、グループ番号の拡張性とIPv6への対応力を持つHSRP Version 2を使用することが標準的な推奨事項となります。設定においては、単に仮想IPアドレスを設定するだけでなく、プライオリティによるアクティブの明示的な定義、プリエンプト機能による経路の恒久的な維持、そしてインターフェーストラッキング を組み合わせることで、ルータの物理的な障害だけでなく、外部回線のダウンといった論理的な問題にも対応できる堅牢なネットワーク基盤が構築できます。
これらの設定ステップを正確に実行し、show standby briefなどの検証コマンドを用いて動作を確認することで、読者様のネットワークはより安定し、ビジネス継続性を確保するための強固な基盤を手に入れることができるでしょう。


コメント