1. 動作確認環境

以下の構成で動作確認を行います。 GNS3のCiscoルータと実機のNEC IX2215を組み合わせて動作確認を行います。 実機エミュレータの混在環境構築手順についてはGNS3 実ネットワークとの接続設定を参照ください。

 [R1:IX2215]
interface GigaEthernet1.0
  ip address 192.168.0.1/24

 [R2:Cisco]
interface Ethernet0/0
 ip address 192.168.0.2 255.255.255.0
 vrrp 254 ip 192.168.0.254

初期設定の全文は以下を参照下さい。

2. VRRP 正常系動作確認

2.1. VRRP 設定投入

以下のコマンドでVRRPの設定を行います。 また、"vrrp 254 ip virtual-host"コマンドで仮想IPアドレスに対して応答を返すようにします。

 [R1:IX2215]
vrrp enable
!
interface GigaEthernet1.0
 vrrp 254 ip 192.168.0.254
 vrrp 254 ip virtual-host

2.2. VRRP 状態確認

"show vrrp"コマンドでVRRPの状態を確認する事ができます。 分かりづらく補足説明が必要な部分は"Pre"項です。 "Pre"はプリエンプト(preempt)が有効化どうかを表す項目で"P"は有効を表します。 NEC IXルータのデフォルト設定はプリエンプト(preempt)有効です。

 [R1:IX2215]
R1(config)# show vrrp
Interface            VRID Pri Pre State      Master addr
GigaEthernet1.0       254 105 P   master     192.168.0.1
R1(config)#

"Master IP address"からR1がMasterになっている事を確認します。 Historyを記載されているログから"Masterになっている"事を二重で確認しておくと、なお安心です。

 [R1:IX2215]
R1(config)# show vrrp detail
Virtual router group: 254
  Virtual router status
    State: master
    Virtual router IP address: 192.168.0.254
    Master IP address: 192.168.0.1
    MAC address: 00:00:5e:00:01:fe
    Priority: 105
  History
    time                   state
    2014/02/12 21:41:18    initialize
    2014/02/12 21:41:18    initialize > backup
    2014/02/12 21:43:30    priority 100 > 105
    2014/02/12 21:43:33    backup > master
  Statistics
    Become master: 1
    Advertise
      151 received, 16 sent
    Priority zero
      0 received, 0 sent
    Errors
      0 advertise interval errors, 0 authentication failures
      0 address list errors, 0 invalid authentication type
      0 authentication type mismatch, 0 length errors
      0 invalid type packets, 0 IP TTL errors
R1(config)#

2.3. VRRP 疎通確認

Host100から仮想IPアドレス192.168.0.254に対して疎通可能である事を確認します。

 [Host100:Windows7]
C:\Users\Host100>ping 192.168.0.254

192.168.0.254 に ping を送信しています 32 バイトのデータ:
192.168.0.254 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.0.254 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.0.254 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.0.254 からの応答: バイト数 =32 時間 <1ms TTL=64

192.168.0.254 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 0ms、平均 = 0ms

C:\Users\Host100>

3. VRRP 切替作業

3.1. VRRP 切替作業

VRRPを運用する際は、priority値を切り替えてメンテナンス対象のルータにトラフィックが流れないようにします。

R1のpriorityを下げて、R2をActiveにします。

 [R1:IX2215]
interface GigaEthernet1.0
 vrrp 254 priority 95

3.2. VRRP 切替時 疎通確認

上記切替作業を行う間、Host100から仮想IPアドレス192.168.0.254に対するpingを送信し続けます。 1パケットの通信断の後、正常に切り替わった事が読み取れます。

 [Host100:Windows7]
C:\Users\Host100>ping 192.168.0.254 -t

192.168.0.254 に ping を送信しています 32 バイトのデータ:
192.168.0.254 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.0.254 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.0.254 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.0.254 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.0.254 からの応答: バイト数 =32 時間 <1ms TTL=64
要求がタイムアウトしました。
192.168.0.254 からの応答: バイト数 =32 時間 =24ms TTL=255
192.168.0.254 からの応答: バイト数 =32 時間 =9ms TTL=255
192.168.0.254 からの応答: バイト数 =32 時間 =9ms TTL=255
192.168.0.254 からの応答: バイト数 =32 時間 =8ms TTL=255

192.168.0.254 の ping 統計:
    パケット数: 送信 = 10、受信 = 9、損失 = 1 (10% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 24ms、平均 = 5ms
Ctrl+C
^C
C:\Users\Host100>

NEC IXルータR1の"show vrrp detail"の出力から、 VRRPマスターがR1からR2に切り替わった事を確認します。

 [R1:IX2215]
R1(config)# show vrrp detail
Virtual router group: 254
  Virtual router status
    State: backup
    Virtual router IP address: 192.168.0.254
    Master IP address: 192.168.0.2
    MAC address: 00:00:5e:00:01:fe
    Priority: 95
  History
    time                   state
    2014/02/13 12:41:18    initialize
    2014/02/13 12:41:18    initialize > backup
    2014/02/13 12:43:30    priority 100 > 105
    2014/02/13 12:43:33    backup > master
    2014/02/13 12:59:15    priority 105 > 95
    2014/02/13 12:59:18    master > backup
  Statistics
    Become master: 1
    Advertise
      206 received, 944 sent
    Priority zero
      0 received, 0 sent
    Errors
      0 advertise interval errors, 0 authentication failures
      0 address list errors, 0 invalid authentication type
      0 authentication type mismatch, 0 length errors
      0 invalid type packets, 0 IP TTL errors
R1(config)#

ciscoルータR2のメッセージからもVRRPマスターがR1からR2に切り替わった事が分かります。

 [R2:Cisco3640]
R2#
*Mar  1 00:24:00.067: %VRRP-6-STATECHANGE: Et0/0 Grp 254 state Backup -> Master
R2#

3.3. VRRP 切り戻し作業

再び、VRRPマスターをR2からR1へ戻す時は、以下のようにpriority値を操作します。 なお、切り戻し時の疎通確認は省略します。

 [R1:IX2215]
interface GigaEthernet1.0
 vrrp 254 priority 105

4. VRRP 障害時 挙動確認

4.1. VRRP 障害発生時

NEC IXルータ側をdownさせます。

 [R1:IX2215]
interface GigaEthernet1.0
 shutdown

上記障害発生時、Host100から仮想IPアドレス192.168.0.254に対するpingを送信し続けます。 1パケットの通信断の後、正常に切り替わった事が読み取れます。

 [Host100:Windows7]
C:\Users\Host100>ping 192.168.0.254 -t

192.168.0.254 に ping を送信しています 32 バイトのデータ:
192.168.0.254 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.0.254 からの応答: バイト数 =32 時間 <1ms TTL=64
要求がタイムアウトしました。
192.168.0.254 からの応答: バイト数 =32 時間 =23ms TTL=255
192.168.0.254 からの応答: バイト数 =32 時間 =8ms TTL=255
192.168.0.254 からの応答: バイト数 =32 時間 =35ms TTL=255

192.168.0.254 の ping 統計:
    パケット数: 送信 = 6、受信 = 5、損失 = 1 (16% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 35ms、平均 = 13ms
Ctrl+C
^C
C:\Users\Host100>

ciscoルータ R2のメッセージより、VRRPマスターが切り替わった事を確認します。

 [R2:cisco3640]
R2#
*Mar  1 00:26:43.999: %VRRP-6-STATECHANGE: Et0/0 Grp 254 state Backup -> Master
R2#

4.2. VRRP 障害復旧時

NEC IXルータ側をupさせます。

 [R1:IX2215]
interface GigaEthernet1.0
 no shutdown

上記障害復旧時、Host100から仮想IPアドレス192.168.0.254に対するpingを送信し続けます。 偶然であるとは思いますが、pingによる通信断は確認できませんでした。

 [Host100:Windows7]
C:\Users\Host100>ping 192.168.0.254 -t

192.168.0.254 に ping を送信しています 32 バイトのデータ:
192.168.0.254 からの応答: バイト数 =32 時間 =41ms TTL=255
192.168.0.254 からの応答: バイト数 =32 時間 =19ms TTL=255
192.168.0.254 からの応答: バイト数 =32 時間 =5ms TTL=255
192.168.0.254 からの応答: バイト数 =32 時間 =41ms TTL=255
192.168.0.254 からの応答: バイト数 =32 時間 =7ms TTL=255
192.168.0.254 からの応答: バイト数 =32 時間 =23ms TTL=255
192.168.0.254 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.0.254 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.0.254 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.0.254 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.0.254 からの応答: バイト数 =32 時間 <1ms TTL=64

192.168.0.254 の ping 統計:
    パケット数: 送信 = 11、受信 = 11、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 41ms、平均 = 12ms
Ctrl+C
^C
C:\Users\Host100>

ciscoルータ R2のメッセージより、VRRPマスターが切り替わった事を確認します。

 [R2:cisco3640]
R2#
*Mar  1 00:27:33.751: %VRRP-6-STATECHANGE: Et0/0 Grp 254 state Master -> Backup
R2#

5. チューニング

5.1. IXルータ設定変更

IXルータに、helloタイマーの変更と認証設定を行います。

 [R1:IX2215]
interface GigaEthernet1.0
  vrrp 254 authentication foobaa
  vrrp 254 timers advertisement csec 50 delay 5

5.2. Ciscoルータ設定変更

ciscoルータにも、同様helloタイマーの変更と認証設定を行います。

 [R2:cisco3640]
interface Ethernet0/0
 vrrp 254 timers advertise msec 500
 vrrp 254 authentication foobaa

5.3. 設定確認

IXルータ R1の動作を確認します。 hello, 認証の設定を直接確認する事はできませんが、 helloや認証の不一致によるVRRP断が発生していない事を確認します。

 [R1:IX2215]
R1(config)# show vrrp detail
Virtual router group: 254
  Virtual router status
    State: master
    Virtual router IP address: 192.168.0.254
    Master IP address: 192.168.0.1
    MAC address: 00:00:5e:00:01:fe
    Priority: 105
  History
    time                   state
    2014/02/13 12:41:18    initialize > backup
    2014/02/13 12:43:30    priority 100 > 105
    2014/02/13 12:43:33    backup > master
    2014/02/13 12:59:15    priority 105 > 95
    2014/02/13 12:59:18    master > backup
    2014/02/13 13:01:31    priority 95 > 105
    2014/02/13 13:01:34    backup > master
    2014/02/13 13:01:59    master > initialize
    2014/02/13 13:02:48    initialize > backup
    2014/02/13 13:02:51    backup > master
  Statistics
    Become master: 3
    Advertise
      339 received, 1263 sent
    Priority zero
      0 received, 1 sent
    Errors
      0 advertise interval errors, 0 authentication failures
      0 address list errors, 0 invalid authentication type
      20 authentication type mismatch, 0 length errors
      0 invalid type packets, 0 IP TTL errors
R1(config)#

ciscoルータ R2に、hello, 認証設定が反映されている事を確認します。 "Master Advertisement interval"が0.5秒になっていない事については、後述します。

 [R2:cisco3640]
R2#show vrrp
Ethernet0/0 - Group 254
  State is Backup
  Virtual IP address is 192.168.0.254
  Virtual MAC address is 0000.5e00.01fe
  Advertisement interval is 0.500 sec
  Preemption enabled
  Priority is 100
  Authentication text, string "foobaa"
  Master Router is 192.168.0.1, priority is 105
  Master Advertisement interval is 1.000 sec
  Master Down interval is 2.109 sec (expires in 1.265 sec)

R2#

6. Tips

6.1. VRRP msec hello

cisco, NECともに、VRRP helloの間隔として1秒未満を指定できるようです。 しかし、VRRPv2の仕様は秒単位のhello advertiseになっています。

以下パケットキャプチャを見ると、"Adver Int"フィールドが秒単位になっているのが分かります。

Frame 1: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) on interface 0
Ethernet II, Src: IETF-VRRP-VRID_fe (00:00:5e:00:01:fe), Dst: IPv4mcast_00:00:12 (01:00:5e:00:00:12)
Internet Protocol Version 4, Src: 192.168.0.1 (192.168.0.1), Dst: 224.0.0.18 (224.0.0.18)
Virtual Router Redundancy Protocol
    Version 2, Packet type 1 (Advertisement)
    Virtual Rtr ID: 254
    Priority: 105 (Non-default backup priority)
    Addr Count: 1
    Auth Type: Simple Text Authentication [RFC 2338] / Reserved [RFC 3768] (1)
    Adver Int: 1
    Checksum: 0x7b25 [correct]
    IP Address: 192.168.0.254 (192.168.0.254)
    Authentication string: `foobaa'