Cisco VRRP の設定手順|v2 と v3 で異なる構文の使い分け

  • URLをコピーしました!
目次

はじめに

Cisco 機器でゲートウェイを冗長化する場合、標準的な選択肢は HSRP です。それでも VRRP を設定する場面があります。代表的なのは、FortiGate や他社ルーターと対向する構成です。HSRP は Cisco 独自プロトコルのため、この用途では選べません。

Cisco IOS の VRRP には、注意したい点があります。VRRPv2 と VRRPv3 で設定構文がまったく異なるという点です。ネット上の設定例を参考にする際、どちらのバージョンを対象とした記述かを見分けないと、構文エラーの原因になります。

この記事でわかること
  • Cisco 機器で VRRP を選ぶ場面と、HSRP との関係
  • VRRPv2 の設定手順(vrrp <グループ> ip 形式)
  • VRRPv3 の設定手順(address-family 階層と前提となるバージョン指定)
  • ミリ秒タイマー設定時に確認コマンドの表示が想定と異なる理由
  • オブジェクトトラッキングによる上位回線の監視と show vrrp detail の読み方

結論から述べます。VRRPv3 を使うには、グローバル設定モードで fhrp version vrrp v3 を投入することが前提です。この 1 行を投入しない状態では VRRPv2 の構文で動作します。さらに、VRRPv3 を使用している間は VRRPv2 が利用できなくなるため、両者は排他的な関係になります。既存環境のバージョンを確認したうえで設計することをおすすめします。

本記事の設定例は、次の構成を前提にしています。

項目
セグメント192.168.100.0/24
仮想 IP アドレス192.168.100.254
R1(Master 想定)の実 IP アドレス192.168.100.251
R2(Backup 想定)の実 IP アドレス192.168.100.252
VRID1
仮想 MAC アドレス0000.5E00.0101

仮想 MAC アドレスは VRID から一意に決まります。VRID 1 であれば末尾が 01 となり、show vrrp detailの出力と計算値を突き合わせて確認できます。

Cisco における VRRP の位置づけ

Cisco 機器で VRRP を選ぶかどうかは、対向機器の構成で決まります。

VRRP を選ぶ場面

構成選択肢
Cisco 機器のみHSRP が第一候補
他社機器が混在VRRP のみ
将来的に他社機器を追加する計画要件に応じて判断

Cisco 機器どうしであれば HSRP が使えます。VRRP が必要になるのは、FortiGate や NEC IX、YAMAHA RTX といった他社機器と同一セグメントで冗長化を組む場合です。

なお、Cisco 環境で VRRPv3 を選択する際には、SSO への非対応や HSRP との併用制限といった注意点があります。プロトコル選定の判断基準は、関連記事『HSRP と VRRP の違い|FHRP の選定基準と判断の順序』で整理しています。

用語の対応

HSRP を使い慣れていると、用語の違いに戸惑う場面があります。

概念HSRPVRRP
転送を担当する機器ActiveMaster(新しいドキュメントでは Primary)
待機する機器StandbyBackup
グループの識別子グループ番号VRID
preempt の既定無効有効

preempt の既定値が逆である点が、移行時にもっとも影響します。HSRP では明示的にstandby preemptを投入する必要がありましたが、VRRP では既定で有効です。VRRP 側の仕様は関連記事『VRRP とは|Master 選出と priority 設計の落とし穴』で扱っています。

もう 1 点、Cisco の新しいドキュメントでは Master が Primary、Backup が Secondary という表記に置き換えられている箇所があります。コマンドや出力の文字列は従来のままのため、ドキュメントの記述と実機の表示が一致しない場合があります。

VRRPv2 の設定手順

Cisco IOS の既定バージョンは v2 です。まず、こちらの構文から整理します。

基本設定

インターフェースコンフィグモードで、グループ番号と仮想 IP アドレスを指定します。

! ▼ VRRPv2 の構文
! R1(Master 想定)
interface GigabitEthernet0/1
 ip address 192.168.100.251 255.255.255.0
 vrrp 1 ip 192.168.100.254
!
! R2(Backup 想定)
interface GigabitEthernet0/1
 ip address 192.168.100.252 255.255.255.0
 vrrp 1 ip 192.168.100.254

vrrp 1 ip 192.168.100.2541が VRID、続くアドレスが仮想 IP アドレスです。HSRP のstandby 1 ipとよく似た構造で、移行時の違和感は小さくなっています。

この状態では両機とも priority が既定の 100 になります。仮想 IP アドレスを所有する機器が存在しないため、実 IP アドレスが大きい R2 が Master になります

priority の設定

意図した機器を Master にするには、priority を設定します。

! ▼ VRRPv2 の構文
! R1(Master 想定)
interface GigabitEthernet0/1
 vrrp 1 priority 110

参考: Cisco IOS First Hop Redundancy Protocols Command Reference / vrrp priority
“The priority level is set to the default value of 100”
(priority レベルは既定値の 100 に設定されます)
https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/ipapp_fhrp/command/fhp-cr-book/fhp-v1.html

R2 側は既定値の 100 のままとし、設定を省略します。変更が 1 台で済むため、設定の差分が小さくなります

priority の値については、255 を設定しない点に注意が必要です。RFC 5798 では 255 が仮想 IP アドレスを所有する機器に予約された値とされており、Cisco IOS でも所有者以外は 1〜254 の範囲で設定します。FortiGate のように所有者でない機器にも 255 を設定できる実装があるため、対向機器と値を揃える際は 1〜254 の範囲で設計することをおすすめします

preempt の設定

VRRP では preempt が既定で有効です。設定を省略すると、priority の高い機器が復旧した時点で自動的に切り戻ります。

切り戻し時の通信断を抑えたい場合は、遅延を設定できます。

! ▼ VRRPv2 の構文
interface GigabitEthernet0/1
 vrrp 1 preempt delay minimum 60

再起動直後の機器は、ルーティングテーブルが完成する前に Master へ昇格する可能性があります。遅延時間は、その機器で動作しているルーティングプロトコルの収束時間を基準に決めることをおすすめします。

切り戻し自体を無効にする場合はno vrrp 1 preemptを投入します。ただし、仮想 IP アドレスを所有する機器は preempt の設定にかかわらず常に置き換えを行う規定があるため、所有者を作らない構成が前提になります。

認証の設定

VRRPv2 には認証機能があります。既定はテキスト認証で、MD5 による認証も選択できます。

! ▼ VRRPv2 の構文
interface GigabitEthernet0/1
 vrrp 1 authentication md5 key-string <キー文字列>

キーチェーンを使う方法もあります。この場合、キー ID を 0 にする必要があります。

! ▼ VRRPv2 の構文
key chain vrrp1
 key 0
  key-string <キー文字列>
!
interface GigabitEthernet0/1
 vrrp 1 authentication md5 key-chain vrrp1

認証が使えるのは VRRPv2 のみです。VRRPv3 では RFC 5798 の仕様に従って認証フィールドが廃止されており、Cisco の構成ガイドでも VRRPv3 は認証をサポートしないと明記されています。認証要件がある場合、バージョン選定の判断材料になります。

なお、他社機器と対向する構成では認証方式の互換性に注意が必要です。MD5 認証は Cisco の実装であり、RFC 3768 で規定されているのは単純なテキスト認証です。対向機器が MD5 に対応していない場合、ネゴシエーションが成立しません。

VRRPv2 の設定全体

ここまでをまとめた設定です。

! ▼ VRRPv2 の構文
! R1(Master 想定)
interface GigabitEthernet0/1
 ip address 192.168.100.251 255.255.255.0
 vrrp 1 ip 192.168.100.254
 vrrp 1 priority 110
 vrrp 1 preempt delay minimum 60
!
! R2(Backup 想定)
interface GigabitEthernet0/1
 ip address 192.168.100.252 255.255.255.0
 vrrp 1 ip 192.168.100.254
 vrrp 1 preempt delay minimum 60

R2 側は priority を省略し、既定値の 100 で動作させています。両機の差分は実 IP アドレスと priority の 2 点のみです。

VRRPv3 の設定手順

VRRPv3 では、コマンドの階層構造が v2 から大きく変わります。IPv6 への対応にあたり、アドレスファミリーという概念が導入されたためです。

前提となるバージョン指定

まず、グローバル設定モードでバージョンを指定します。

! ▼ VRRPv3 の構文
Router(config)# fhrp version vrrp v3

この 1 行を投入しない状態では、VRRPv3 の構文自体が入力できません。インターフェース配下でvrrp 1 address-family ipv4を試みても、コマンドが認識されない状態になります。

参考: First Hop Redundancy Protocols Configuration Guide / VRRPv3 Protocol Support
“the fhrp version vrrp v3 command must be used in global configuration mode”
(グローバル設定モードで fhrp version vrrp v3 コマンドを使用する必要があります)
https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/ipapp_fhrp/configuration/xe-3s/asr903/fhp-xe-3s-asr903-book/fhp-xe-3s-asr903-book_chapter_01.pdf

同じドキュメントには、もう 1 つ重要な記述があります。VRRPv3 を使用している間は、VRRPv2 が利用できなくなります。両者は排他的な関係であり、同一機器上で混在させることはできません。

既存環境で VRRPv2 が稼働している機器にfhrp version vrrp v3を投入すると、既存の VRRPv2 設定が動作しなくなる可能性があります。稼働中の機器で実行する場合は、影響範囲を確認したうえでメンテナンス時間帯に実施することをおすすめします

address-family 階層の構造

VRRPv3 では、インターフェース配下でさらに 1 階層下がる構造になります。

! ▼ VRRPv3 の構文
! R1(Master 想定)
interface GigabitEthernet0/1
 ip address 192.168.100.251 255.255.255.0
 vrrp 1 address-family ipv4
  address 192.168.100.254 primary
  priority 110
  exit-vrrp

v2 との対応関係を整理します。

設定項目VRRPv2VRRPv3
グループへの入り方行ごとに vrrp 1 ...vrrp 1 address-family ipv4 で階層へ
仮想 IP アドレスvrrp 1 ip 192.168.100.254address 192.168.100.254 primary
priorityvrrp 1 priority 110priority 110
preempt 無効化no vrrp 1 preemptno preempt
階層からの脱出不要exit-vrrp

v2 が 1 行完結型、v3 がブロック型という違いです。v3 では設定項目ごとにvrrp 1を繰り返す必要がなく、記述量は減ります。

addressコマンドのprimaryキーワードは、そのアドレスをプライマリの仮想 IP アドレスとして指定するものです。複数の仮想 IP アドレスを設定する場合、2 つ目以降はsecondaryを指定します。

IPv6 での設定

VRRPv3 の主な導入理由が IPv6 対応です。アドレスファミリーを切り替えるだけで設定できます。

! ▼ VRRPv3 の構文(IPv6)
interface GigabitEthernet0/1
 vrrp 1 address-family ipv6
  address FE80::1 primary
  address 2001:DB8::254
  priority 110
  exit-vrrp

IPv6 では、プライマリの仮想アドレスにリンクローカルアドレスを指定します。グローバルアドレスは追加のアドレスとして設定する構造です。

IPv4 と IPv6 で同じ VRID を使うこともできますが、その場合も別々の仮想ルーターとして扱われます。仮想 MAC アドレスも IPv4 が0000.5E00.01xx、IPv6 が0000.5E00.02xxと異なります。

なお、IPv4 と IPv6 の両方を VRRPv3 で設定すると、同一機器で HSRP を併用できなくなるという制限があります。Cisco の構成ガイドでは、VRRPv3 設定時に VRRP と HSRP を合わせて 2 種類までとされているためです。段階的な移行を計画している環境では、この制限を前提に検討する必要があります。

初期化遅延の設定

起動直後の不安定な状態を避けるため、FHRP クライアントの初期化を遅延させる設定があります。

! ▼ VRRPv3 の構文
Router(config)# fhrp version vrrp v3
Router(config)# interface GigabitEthernet0/1
Router(config-if)# fhrp delay minimum 5

HSRP のstandby delay minimumに相当する機能ですが、コマンド体系が FHRP 共通に整理されています。VRRP と HSRP の双方に適用される形です。

ミリ秒タイマーを設定している環境や、スイッチの VLAN インターフェースに設定する構成では、この遅延の設定を検討する価値があります。

VRRPv3 の設定全体

ここまでをまとめた設定です。

! ▼ VRRPv3 の構文
! グローバル設定(両機に必要)
fhrp version vrrp v3
!
! R1(Master 想定)
interface GigabitEthernet0/1
 ip address 192.168.100.251 255.255.255.0
 fhrp delay minimum 5
 vrrp 1 address-family ipv4
  address 192.168.100.254 primary
  priority 110
  exit-vrrp
!
! R2(Backup 想定)
interface GigabitEthernet0/1
 ip address 192.168.100.252 255.255.255.0
 fhrp delay minimum 5
 vrrp 1 address-family ipv4
  address 192.168.100.254 primary
  exit-vrrp

R2 側は priority を省略し、既定値の 100 で動作させています。

なお、VRRPv3 でサポートされるグループの最大数は 255 で、これは IPv4 と IPv6 の両方を含む数と記載されています。多数のグループを構成する環境では、この上限を確認しておくことをおすすめします。

ミリ秒タイマーと表示の注意点

Cisco 機器では、Advertisement 間隔をミリ秒単位で設定できます。VRRPv2 からの変更点として公式ドキュメントに記載されている機能です。

設定方法

! ▼ VRRPv3 の構文
interface GigabitEthernet0/1
 vrrp 1 address-family ipv4
  timers advertise 300
  exit-vrrp

既定値は 1000 ミリ秒(1 秒)です。値を小さくすると、Backup が障害を検知するまでの時間が短縮されます。

両機での手動設定が前提

ここに注意点があります。ミリ秒のタイマー値は、Master と Backup の双方で手動設定する必要があります

VRRPv2 ではタイマー値が Advertisement で通知されず、Backup 側が学習できませんでした。VRRPv3 では通知されるようになりましたが、Cisco の実装ではミリ秒値について両機での明示的な設定が求められます。片側だけに設定すると、意図した間隔で動作しません。

確認コマンドの表示が 1 秒になる

もう 1 つ、切り分けで混乱しやすい仕様があります。Backup 側のshow vrrp出力に表示される Master の Advertisement 値は、常に 1 秒になります

参考: IP Addressing Services Configuration Guide / VRRPv3 Protocol Support
“the packets on the backup devices do not accept millisecond values”
(Backup 側の機器のパケットはミリ秒値を受け付けません)
https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst9500/software/release/17-8/configuration_guide/ip/b_178_ip_9500_cg/vrrpv3_protocol___support.html

理由は、Backup 側のパケット処理がミリ秒値を受け付けないためです。実際にはミリ秒間隔で動作していても、表示上は 1 秒と出ます。

確認する機器表示される値
Master 側設定したミリ秒値
Backup 側(Master の値として)常に 1 秒

この仕様を知らないと、「Backup 側でタイマー設定が反映されていない」と判断して設定を見直す流れになります。Master 側の出力で設定値を確認し、Backup 側の表示は参考値として扱うのが実務的な対応です。

実際の切り替え時間は、Master を停止させた際の通信断時間を実測して確認することをおすすめします。

サブセカンド設定時の考慮事項

ミリ秒タイマーを採用する場合、次の点を検討します。

対向機器の対応状況

他社機器がサブセカンド設定に対応しているかを確認します。FortiGate では FortiOS 7.6.0 以降で対応しています

誤検知のリスク

間隔を短くするほど、パケットロスによる誤検知でフラッピングが起きやすくなります

CPU 負荷

グループ数が多い環境では、Advertisement の送出頻度が機器の負荷に影響します

    まずは既定の 1 秒で構築し、切り替え時間の要件を満たせない場合に短縮を検討するという順序を推奨します。

    上位回線の監視(トラッキング)

    VRRP が標準で判定するのは、Advertisement を受信できるかどうかだけです。上位回線が切れても、VRRP を設定したインターフェースがアップしている限り Master は Master のままになります。この課題に対応するのがオブジェクトトラッキングです。

    VRRPv2 での設定

    track オブジェクトを定義し、VRRP に紐づけます。

    ! 監視オブジェクトの定義
    track 100 interface GigabitEthernet0/0 line-protocol
    !
    ! ▼ VRRPv2 の構文
    interface GigabitEthernet0/1
     vrrp 1 ip 192.168.100.254
     vrrp 1 priority 110
     vrrp 1 track 100 decrement 20

    経路の到達性を監視する場合は、オブジェクトの定義を変えます。

    track 100 ip route 0.0.0.0 0.0.0.0 reachability

    参考: Network Services Configuration Guide / Configuring VRRP
    “If the specified object goes down, the VRRP priority is reduced”
    (指定したオブジェクトがダウンすると、VRRP の priority が減少します)
    https://www.cisco.com/c/en/us/td/docs/routers/ios/config/17-x/ntw-servs/b-network-services/m_fhp-vrrp-0.html

    インターフェースの回線プロトコルだけを見る方式では、上流機器が生きたまま経路を失うケースに対応できません。新規構築では経路の到達性を監視する方式を推奨します

    VRRPv3 での設定

    VRRPv3 では、address-family 階層の中に記述します。

    ! ▼ VRRPv3 の構文
    interface GigabitEthernet0/1
     vrrp 1 address-family ipv4
      address 192.168.100.254 primary
      priority 110
      track 100 decrement 20
      exit-vrrp

    track オブジェクトの定義部分は v2 と共通です。紐づけ方だけが階層構造に合わせて変わります

    減算値と priority 差の設計

    トラッキング設計でもっとも見落とされやすい部分です。

    減算値は priority 差より大きく設定する必要があります。R1 が 110、R2 が 100 という構成で減算値を 10 にすると、障害検知後の R1 の priority は 100 となり、R2 と同値になります。VRRP は Backup の priority が Master を上回った場合に昇格するため、同値では切り替わりません

    状態R1 の priorityR2 の priorityMaster
    正常時110100R1
    上位回線ダウン(減算値 10)100100R1 のまま
    上位回線ダウン(減算値 20)90100R2 に切り替わり

    この論点は HSRP でも共通です。設計の考え方は関連記事『HSRP の設定手順|priority と preempt の設計ポイント』でも扱っています。

    なお、Backup 側の機器にも同じトラッキングを設定しておくことをおすすめします。R2 側の上位回線が落ちている状態で Master へ昇格する事故を防げます。

    切り戻しについては、VRRP では preempt が既定で有効のため、監視対象が復旧して priority が元に戻れば自動的に切り戻ります。HSRP のように preempt の明示的な設定は不要です。

    動作確認と切り分け

    設定後の確認はshow vrrp detailが基点になります。カウンター情報が充実しており、マルチベンダー対向の切り分けで有用です。

    show vrrp detail の読み方

    Master 機の出力例です。

    R1# show vrrp detail
    GigabitEthernet0/1 - Group 1 - Address-Family IPv4
      State is MASTER
      State duration 1 mins 23.203 secs
      Virtual IP address is 192.168.100.254
      Virtual MAC address is 0000.5E00.0101
      Advertisement interval is 1000 msec
      Preemption enabled
      Priority is 110
      Master Router is 192.168.100.251 (local), priority is 110
      Master Advertisement interval is 1000 msec (expires in 598 msec)
      Master Down interval is unknown
      VRRPv3 Advertisements: sent 1985 (errors 0) - rcvd 70
      VRRPv2 Advertisements: sent 0 (errors 0) - rcvd 0
      Group Discarded Packets: 3
        VRRPv2 incompatibility: 0
        IP Address Owner conflicts: 0
        Invalid address count: 0

    確認したい箇所を整理します。

    確認内容
    Group 1 - Address-Family IPv4VRID とアドレスファミリー
    State is MASTER期待どおりの状態か
    Virtual MAC addressVRID から計算した値と一致するか
    Advertisement interval設計値どおりか
    Preemption enabled既定は有効。無効化した場合は表示が変わる
    Priority is 110トラッキング作動時は減算後の値になる
    Master Router is自機なら (local) が付く

    Virtual MAC addressは計算で検証できます。VRID 1 であれば0000.5E00.0101になり、設定した VRID と実際に使われている値が一致しているかを確認できます。

    カウンターによる切り分け

    出力の末尾にある破棄パケットのカウンターが、実務で有用な部分です。マルチベンダー対向で問題が起きた際、原因の絞り込みに直結します

    カウンター増加する原因
    VRRPv2 incompatibility対向機器が VRRPv2 で送信している
    IP Address Owner conflicts同一セグメントに IP アドレス所有者が複数存在する
    Invalid address count仮想 IP アドレスが両機で一致していない

    VRRPv2 incompatibilityが増加している場合、対向機器のバージョンが揃っていません。Cisco 側でfhrp version vrrp v3を投入した状態で、対向機器が VRRPv2 のままというケースが典型です。FortiGate であればset version 2の設定を確認します。

    IP Address Owner conflictsが増加している場合、仮想 IP アドレスを実インターフェースアドレスとして持つ機器が複数存在するか、priority 255 の機器が重複しています。FortiGate は所有者でなくても priority 255 を設定できるため、対向構成では確認しておきたい項目です。

    Invalid address countが増加している場合、両機で設定した仮想 IP アドレスが異なります。設定の投入ミスが原因として多く見られます。

    送受信のカウンターも切り分けに使えます。sentだけが増えてrcvdが 0 のままであれば、対向からの Advertisement が届いていません。中間スイッチでのマルチキャスト遮断や、VLAN の不整合を疑う流れになります。

    状態が期待どおりにならない場合

    確認の順序を整理します。

    STEP
    両機とも Master になる場合

    Advertisement が相互に届いていない状態です。

    • バージョンが両機で一致しているか(VRRPv2 incompatibilityカウンターを確認)
    • 認証設定が一致しているか(VRRPv2 の場合)
    • マルチキャストアドレス 224.0.0.18 が中間機器で遮断されていないか
    • VLAN やポート設定に不整合がないか
    STEP
    意図しない機器が Master になる場合
    • priority の設定値を確認します。両機とも既定の 100 であれば、実 IP アドレスが大きいほうが Master になります
    • Priority isの値が設定値と異なる場合、トラッキングが作動しています
    STEP
    VRRPv3 の構文が入力できない場合

    fhrp version vrrp v3が投入されているかを確認します。既定のままでは VRRPv2 の構文で動作します。

    パケットレベルの確認

    Advertisement が物理的に届いているかは、キャプチャで確認します。VRRP は IP プロトコル番号 112 を使用し、宛先はマルチキャストアドレス 224.0.0.18 です。

    中間スイッチで IGMP snooping が動作している環境では、VRRP のマルチキャストが意図せず遮断されることがあります。ネゴシエーションが成立しない場合の切り分けポイントとして、プロトコル番号 112 のパケットが双方向に届いているかを確認します。

    FortiGate と対向する構成では、FortiGate 側でもdiagnose sniffer packetによるキャプチャが可能です。両側からキャプチャを取得すると、どちら側で失われているかを切り分けられます。FortiGate 側の設定と確認手順は関連記事『FortiGate VRRP の設定手順』にまとめています。

    まとめ

    Cisco IOS の VRRP は、VRRPv2 と VRRPv3 で設定構文がまったく異なります。v3 を使うにはグローバル設定でのバージョン指定が前提となり、投入すると v2 が利用できなくなる排他的な関係にあります。マルチベンダー構成では対向機器とバージョンを揃えることが前提になるため、設計の初期段階でどちらを使うかを決めておくことをおすすめします。

    • VRRPv3 の利用には fhrp version vrrp v3 の投入が前提
    • VRRPv3 を使用している間は VRRPv2 が利用できない
    • v2 は 1 行完結型、v3 は address-family のブロック型
    • priority 255 は所有者に予約された値で、Cisco では 1〜254 を使用
    • 認証が使えるのは VRRPv2 のみで、v3 は仕様上非対応
    • ミリ秒タイマー設定時、Backup 側の表示は常に 1 秒になる
    • show vrrp detail の破棄カウンターが対向構成の切り分けに有用

    以上、最後までお読みいただきありがとうございました。

    よかったらシェアしてね!
    • URLをコピーしました!

    この記事を書いた人

    関西を拠点に活動する、現役インフラエンジニア。経験20年超。

    大手通信キャリアにて、中〜大規模インフラ(ネットワーク・サーバ・クラウド・セキュリティ)の設計・構築およびプロジェクトマネジメントに従事。現場で直面した技術課題への対処や、最新の脆弱性情報への実務対応を、一次情報として発信しています。

    保有資格
    CCIE Lifetime Emeritus(取得から20年以上)/ VCAP-DCA / Azure Solutions Architect Expert

    ▶ 運営者プロフィール(詳細)

    目次