InfraLab

HSRP 仕様書

46 / 46 items

InfraLab Reference Series

Category: HSRP

Updated: 2026-05-12

infralab.jp

hsrp

46 items

HSRP 仕様書

Abstract

Cisco Hot Standby Router Protocol (RFC 2281) の電文・MAC・ステート遷移・タイマー・認証仕様、VRRP との差分、Cisco IOS の HSRPv2 設定例、トラブルシュート。

Table of Contents

  1. 1. 概要3
  2. 2. プロトコル仕様9
  3. 3. ステート遷移6
  4. 4. タイマー5
  5. 5. トラッキング4
  6. 6. vs VRRP 差分8
  7. 7. Cisco IOS 設定例6
  8. 8. 確認・トラブルシュート5
  9. 9. References9

1. 概要

1.1. HSRP とは

Hot Standby Router Protocol。Cisco 独自のデフォルトゲートウェイ冗長化プロトコル。Active-Standby 型。

Cisco 独自 / RFC 2281 (informational) / Active-Standby

1.2. バージョン

v1 (既定) と v2 がある。v2 はサブ秒タイマー、拡張グループ ID、IPv6 対応。新規構築は v2 推奨。

v1: legacy / v2: msec timer・group 0-4095・IPv6

1.3. 用途

Cisco 同士の閉じた環境でのデフォルト GW 冗長。マルチベンダなら VRRP を選ぶ。

Cisco 系 L3 SW / 閉じたキャンパス LAN

2. プロトコル仕様

2.1. HSRPv1 Hello メッセージ

RFC 2281 の HSRPv1 Hello/Coup/Resign 共通フォーマット。Hello は Op Code 0。

RFC 2281 HSRP packet format ASCII 図:

   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |    Version    |    Op Code    |     State     |   Hellotime   |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |   Holdtime    |   Priority    |     Group     |   Reserved    |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                      Authentication Data                      |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                      Authentication Data                      |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                      Virtual IP Address                       |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

2.2. HSRPv2 Hello メッセージ

Cisco HSRPv2 の Group State TLV。TLV 形式で 6B Identifier と msec timer を含む。

Cisco HSRPv2 Group State TLV / Wireshark dissector ASCII 図:

   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |    Type=1     |   Length=40   |    Version    |    Opcode     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     State     |  IP Version   |         Group Number          |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                        Identifier ...                         |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |          Identifier           |           Priority            |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |           Priority            |          Hello Time           |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |          Hello Time           |           Hold Time           |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |           Hold Time           |          Virtual IP           |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                    Virtual IP Address ...                     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                    Virtual IP Address ...                     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                    Virtual IP Address ...                     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                    Virtual IP Address ...                     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

2.3. トランスポート

HSRP は UDP 上に乗る。VRRP のように IP プロトコル直載せではない。

UDP/1985

2.4. マルチキャストアドレス

v1 と v2 で宛先アドレスが違う。v1/v2 を混在させると相互疎通しない。

v1: 224.0.0.2 / v2: 224.0.0.102 / v2 IPv6: FF02::66

2.5. 仮想 MAC アドレス

Cisco OUI 00:00:0C。v1 と v2 で形式が異なる。v2 はグループ ID が拡張されたため MAC も拡張形式。

v1: 00:00:0C:07:AC:<gid> / v2: 00:00:0C:9F:F<gid>

2.6. グループ ID 範囲

v1 と v2 で上限が違う。VLAN 数が多い環境では v2 必須。

v1: 0 - 255 / v2: 0 - 4095

2.7. プライオリティ

Active 選出の優先度。値が大きいほど優先度が高く Active になる。VRRP と違って 0 は単なる低優先で、退避通知ではない。255 は手動設定のみ。

範囲 0 - 255 / 値が大きいほど優先 (高=Active) / 既定 100 / IP Owner 概念なし

2.8. 認証

平文と MD5 をサポート。両機で完全一致が必要。不一致時は両機 Active 化する。

plain text / MD5 (key-string or key-chain)

2.9. メッセージ種別

Hello / Coup / Resign の 3 種。Coup は強制的に Active を奪取、Resign は退避通知。

Hello / Coup (奪取) / Resign (退避)

3. ステート遷移

3.1. Initial

起動直後 / IF Down 時。

起動時 / IF Down

3.2. Learn

仮想 IP を学習中。仮想 IP を設定していない機が Hello から取得する待機状態。

仮想 IP 学習中 (no standby N ip 設定時)

3.3. Listen

仮想 IP は分かっているが Active/Standby ではない状態。

仮想 IP 確定 / Active でも Standby でもない

3.4. Speak

Hello を送り出して Standby/Active を狙う状態。

Hello 送出開始 / 選出中

3.5. Standby

Active 候補。Active が落ちたら即昇格。

次の Active / Active 監視中

3.6. Active

仮想 IP/MAC で実際にトラフィックを転送する状態。Hello を生成する。

仮想 IP/MAC 応答 / Hello 送出 / 転送中

4. タイマー

4.1. Hello

Hello メッセージの送出間隔。既定 3 秒。v2 では msec 単位指定可。

既定 3s / v2: msec 単位

4.2. Hold

Active Down と判定するまでの時間。既定 10 秒、慣例的に Hello × 3 + 余裕。

既定 10s / 推奨 3 × Hello

4.3. preempt

HSRP は既定 OFF。明示しない限り高 priority 機が復活しても切替が起きない。

既定 OFF / standby <gid> preempt で有効化

4.4. preempt delay

起動直後のフラッピング回避。指定秒数だけ Active 化を遅延。

standby N preempt delay minimum 60

4.5. サブ秒構成例

v2 で msec 単位を使うことで 250ms / 750ms 等の高速 FHRP を実現。

standby 10 timers msec 250 msec 750

5. トラッキング

5.1. オブジェクトトラッキング

track オブジェクトと連動。Up/Down で priority を decrement。

standby <gid> track <id> decrement <val>

5.2. decrement 既定値

decrement を省略した場合の既定。

省略時: 10

5.3. インタフェース track

上流 IF の line-protocol を監視。

track 1 interface Gi0/0 line-protocol

5.4. ルート track

特定の到達可能性を監視。BGP/OSPF と組み合わせる。

track 2 ip route 10.0.0.0/8 reachability

6. vs VRRP 差分

6.1. 標準性

HSRP は Cisco 独自。マルチベンダ環境では使えない。

HSRP: Cisco 独自 / VRRP: IETF 標準

6.2. トランスポート

HSRP は UDP、VRRP は IP プロト直載せ。

HSRP: UDP 1985 / VRRP: IP proto 112

6.3. 仮想 MAC OUI

Cisco OUI と IANA OUI で見分けやすい。

HSRP: 00:00:0C:07:AC / VRRP: 00:00:5E:00:01

6.4. preempt 既定

HSRP は OFF が既定で安全寄り。VRRP は ON で挙動が異なる。

HSRP: 既定 OFF / VRRP: 既定 ON

6.5. 既定 Hello/Dead

HSRP の方が大きい既定。検知は遅いがチャタリングしにくい。

HSRP: 3s / 10s / VRRP: 1s / ≈3s

6.6. 認証

HSRP は MD5 サポート、VRRPv3 は認証廃止。要件で HSRP を選ぶ場面あり。

HSRP: 平文・MD5 / VRRPv3: 認証なし

6.7. グループ数上限

HSRPv2 で 4096、VRRP は 256。膨大な VLAN を持つ環境では HSRPv2 が有利。

HSRPv2: 0-4095 / VRRP: 1-255

6.8. IP Owner 概念

HSRP には IP Owner 概念が無いため設計が単純。

HSRP: 概念なし / VRRP: Owner 自動 priority 255

7. Cisco IOS 設定例

7.1. HSRPv2 基本設定

SVI に standby version 2 + IP + priority + preempt を設定するのが定型。

interface Vlan10
 standby version 2
 standby 10 ip 10.0.10.1
 standby 10 priority 110
 standby 10 preempt

7.2. 高速 FHRP (msec timer)

サブ秒で切替を狙う場合の指定。

standby 10 timers msec 250 msec 750

7.3. 認証 (MD5 key-string)

MD5 鍵で改ざん防止。両機で完全一致が必要。

standby 10 authentication md5 key-string s3cret

7.4. 認証 (MD5 key-chain)

key-chain で鍵ローテーションに対応。

key chain HSRP
 key 1
  key-string s3cret
standby 10 authentication md5 key-chain HSRP

7.5. object tracking

上流 IF が落ちたら priority -30 → 対向機が Active 化。

track 1 interface Gi0/0 line-protocol
standby 10 track 1 decrement 30

7.6. preempt delay

ルーティング収束前の Active 化を防ぐ。

standby 10 preempt delay minimum 60

8. 確認・トラブルシュート

8.1. 状態確認

Active/Standby、priority、preempt、track 状態を一覧。

show standby brief / show standby Vlan10

8.2. track 状態確認

track の Up/Down と参照元を確認。

show track / show track 1

8.3. 認証不一致

片側だけ key-string を変えると Hello が捨てられ両機 Active 化する。

log: %HSRP-4-BADAUTH

8.4. 両機 Active (split-brain)

Hello が届かないと両機が Active 化。L2 経路 / VLAN / 認証 / STP を確認。

症状: 両機 Active / 原因: L2 不通・認証差

8.5. パケットキャプチャ

UDP/1985 を直接観測。

tcpdump -i eth0 udp port 1985

9. References

  1. HSRP
  2. HSRPv2
  3. RFC 2281
  4. FHRP
  5. Active
  6. Standby
  7. preempt
  8. デフォルトゲートウェイ冗長
  9. Cisco
Related