NEC IX ルータにおけるVRRPの設定方法を紹介します。VRRPはデフォルトゲートウェイを冗長化する技術です。データセンター内のハイエンド機では2台の機器を1台に見せかける技術が主流なので近年は使用頻度が減りつつありますが、ローエンド機器やWAN接続部分ではまだまだ現役の技術かと思われます。
設定まとめ
コマンド一覧
VRRP等に関するコマンド一覧は以下の通りです。
Router(config)# vrrp enable Router(config)# interface <interface> Router(config-GigaEthernetX.Y)# vrrp <VRID> ip <virtual_address> Router(config-GigaEthernetX.Y)# vrrp <VRID> preempt Router(config-GigaEthernetX.Y)# vrrp <VRID> priority <priority> Router(config-GigaEthernetX.Y)# vrrp <VRID> timers advertisement <sec> [delay <sec>] Router(config-GigaEthernetX.Y)# vrrp <VRID> timers delay <sec> Router(config-GigaEthernetX.Y)# vrrp <VRID> authentication <text> Router(config-GigaEthernetX.Y)# vrrp ip virtual-host Router(config)# watch-group <group-name> [<seq>] Router(config-watch-<name>-<seq>)# event <seq> <event> Router(config-watch-<name>-<seq>)# action <seq> <action> Router(config)# network-monitor <group-name>
VRRP
VRRPを有効にする最小限設定は以下の通りです。
Router(config)# vrrp enable Router(config)# interface <interface> Router(config-GigaEthernetX.Y)# vrrp <VRID> ip <virtual_address>
VRRPでチューニング可能なパラメタには以下のようなものがあります。
Router(config)# interface <interface> Router(config-GigaEthernetX.Y)# vrrp <VRID> preempt Router(config-GigaEthernetX.Y)# vrrp <VRID> priority <priority> Router(config-GigaEthernetX.Y)# vrrp <VRID> timers advertisement <sec> [delay <sec>] Router(config-GigaEthernetX.Y)# vrrp <VRID> timers delay <sec> Router(config-GigaEthernetX.Y)# vrrp <VRID> authentication <text>
NEC IX固有の設定ですが、VRRPで付与されたvirtual addressがpingなどに応答するようにするには、以下のvirtual-hostコマンドが必要になります。
Router(config)# interface <interface> Router(config-GigaEthernetX.Y)# vrrp ip virtual-host
Network Monitor
多くのネットワーク機器は、interface trackingやobject trackingなどをVRRPと併用して、WAN側の障害やリンクダウンを伴わない障害に備えます。しかし、NEC IXはinterface trackingやobject trackingの機能は備えていません。
NEC IXでWAN側の障害やリンクダウンを伴わない障害に対応できるVRRPを実装するには、Watch Group, Network Monitorと呼ばれる機能を使用します。Cisco IOSのEEM(Embedded Event Manager)に近い機能になります。
以下のような構文でwatch-groupを定義します。「どんなイベントが起きたら」「どんなアクションをするか」の定義です。
Router(config)# watch-group <group-name> [<seq>] Router(config-watch-<name>-<seq>)# event <seq> <event> Router(config-watch-<name>-<seq>)# action <seq> <action> 定義したwatch-groupによる監視を開始するには、以下のようなnetwork-monitorコマンドを使用します。 Router(config)# network-monitor <group-name> 以上の説明ではイメージが湧きづらいと思いますので、設定例を1つ示します。以下は8.8.8.8へのping監視がNGとなった場合にVRRPをshutdownさせる設定です。このような設定にしておけばリンクダウンを伴わないWAN障害であったとしても、VRRPを切り替える事ができます。 watch-group track_google 10 event 10 ip unreach-host 8.8.8.8 GigaEthernet0.0 action 10 ip shutdown-vrrp 1 ! network-monitor track_google enable <h2>動作確認</h2> <h3>動作確認の構成</h3> 以下の環境で動作確認を行います。 +-----------------+ eth0 | VyOS 1.4 | eth1 +---+ Internet +---+ | .1|Lo:200.0.0.200/32|.1 | | +-----------------+ | | 200.0.10.0/24 | 200.0.20.0/24 | | lan2 | .10 lan2 | .20 +-------+----------+ +---------+--------+ | NEC IX 2015 | | NEC IX 2015 | | R1 | | R2 | +-------+----------+ +---------+--------+ lan1 | .1 lan1 | .2 | vrrp(.254) | vrrp(.254) +------------+------------+ | 192.168.1.0/24 | ens224 | .100 +-------+----------+ | RockyLinux 8.5 | | host100 | +------------------+
初期設定
IX2015の初期設定は以下の通りとします。設定はIPアドレスとインターネットに接続するためのNATしか投入していません。
動作確認 (1) VRRPによる仮想IPアドレス設定
R1とR2の両方にVRRPを設定し、R1とR2で仮想IPアドレスを設定します。なお、priorityが大きい方が優先されますので、以下設定例の場合はR1に仮想IPアドレスが付与されます。
[R1:IX2015] vrrp enable ! interface GigaEthernet1.0 vrrp 1 ip 192.168.10.254 vrrp 1 priority 120 vrrp 1 ip virtual-host
[R2:IX2015] vrrp enable ! interface GigaEthernet1.0 vrrp 1 ip 192.168.10.254 vrrp 1 priority 110 vrrp 1 ip virtual-host
VRRPの状態は"show vrrp"で確認する事ができます。detailを付与したコマンド"show vrrp detail"は、VRRPの状態遷移などより詳細な情報を確認する事ができます。
[R1:IX2015] R1(config)# show vrrp Interface VRID Pri Pre State Master addr GigaEthernet1.0 1 120 P master 192.168.10.1 R1(config)# R1(config)# R1(config)# show vrrp detail Virtual router group: 1 Virtual router status State: master Virtual router IP address: 192.168.10.254 Master IP address: 192.168.10.1 MAC address: 00:00:5e:00:01:01 Priority: 120 History time state 2021/11/21 20:36:11 initialize 2021/11/21 20:36:11 initialize > backup 2021/11/21 20:36:11 priority 100 > 120 2021/11/21 20:36:15 backup > master Statistics Become master: 1 Advertise 3 received, 106 sent Priority zero 0 received, 0 sent Errors 36 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)#
[R2:IX2015] R2(config)# show vrrp Interface VRID Pri Pre State Master addr GigaEthernet1.0 1 110 P backup 192.168.10.1 R2(config)#
念の為、host010からNEC IXを経由して、インターネットを擬似したVyOSの200.0.0.200まで疎通可能である事を確認します。
[host100:RockyLinus8.5] [root@host100 ~]# ping -c 3 200.0.0.200 PING 200.0.0.200 (200.0.0.200) 56(84) bytes of data. 64 bytes from 200.0.0.200: icmp_seq=1 ttl=63 time=0.755 ms 64 bytes from 200.0.0.200: icmp_seq=2 ttl=63 time=0.725 ms 64 bytes from 200.0.0.200: icmp_seq=3 ttl=63 time=0.775 ms --- 200.0.0.200 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2073ms rtt min/avg/max/mdev = 0.725/0.751/0.775/0.037 ms
動作確認 (2) リンクダウン障害対策
VRRPのデフォルト設定は筐体障害にしか耐えられず、WAN側のインターフェースダウンを検出する事はありません。多くのルータではVRRPでインターフェースダウンを検出する機能はinterface trackingと呼ばれていますが、NEC IXにはinterface trackingの機能を備えていません。
NEC IXでinterface tracking相当の挙動を再現するには、network-monitorと呼ばれるイベントベースの処理を定義する方法を使用します。network-monitorはCisco IOSで言うEEM(Event Manager Applet)相当の機能です。
R1ならば、WAN側のセグメントである200.0.10.0/24がルーティングテーブルに載らないイベントを契機にVRRPをshutdownさせます。
[R1:IX2015] watch-group track_interface 10 event 10 ip unreach-route 200.0.10.0/24 action 10 ip shutdown-vrrp 1 ! network-monitor track_interface enable
R2にもほぼ同様の設定を入れます。
[R2:IX2015] watch-group track_interface 10 event 10 ip unreach-route 200.0.20.0/24 action 10 ip shutdown-vrrp 1 ! network-monitor track_interface enable
障害を再現させる前に、正常系のshowコマンドの出力をみましょう。正常時はActionのStatusが"restoration"と表示されています。これはVRRP shutdownをしていない事を意味します。
[R1:IX2015] R1(config)# show watch-group Watch-group status summary Total 1, normal 1, stand 0 Group name Sequence Status Variance Wait track_interface 10 normal 0 - R1(config)# R1(config)# R1(config)# show watch-group detail Watch-group 'track_interface' is enabled Sequence 10 Status: normal Profile variance counts: 0 Profile restore counts: 0 Suppress variance counts: 0 Suppress restoration counts: 0 Event: Event 10 ip unreach-route 200.0.10.0/24 Status: normal Event variance counts: 0 Event restore counts: 0 Action: Action 10 ip shutdown-vrrp 1 Status: restoration R1(config)#
R1のWAN側GigaEthernet0.0で障害を発生させます。
[R1:IX2015] interface GigaEthernet0.0 shutdown
show watch-group detailコマンドの出力を確認します。ActionのStatusが"executing"から"executing"に変わりました。これはVRRP shutdownが実行された事を意味します。
[R1:IX2015] R1(config)# show watch-group Watch-group status summary Total 1, normal 0, stand 1 Group name Sequence Status Variance Wait track_interface 10 stand 1 - R1(config)# R1(config)# R1(config)# show watch-group detail Watch-group 'track_interface' is enabled Sequence 10 Status: stand Elapsed variance time: 0:00:09 Profile variance counts: 1 Profile restore counts: 0 Suppress variance counts: 0 Suppress restoration counts: 0 Profile history Time Event Status 2021/11/22 00:06:17 variance stand Event: Event 10 ip unreach-route 200.0.10.0/24 Status: stand Elapsed variance time: 0:00:09 Event variance counts: 1 Event restore counts: 0 Event history Sequence Time Event 10 2021/11/22 00:06:17 variance Action: Action 10 ip shutdown-vrrp 1 Status: executing R1(config)#
R1のVRRPがmasterからinitializeに変わった事を確認します。
[R1:IX2015] R1(config)# show vrrp detail Virtual router group: 1 Virtual router status State: initialize Virtual router IP address: 192.168.10.254 Master IP address: 0.0.0.0 MAC address: 00:00:5e:00:01:01 Priority: 120 History time state 2021/11/21 23:58:07 master > initialize 2021/11/21 23:58:27 initialize > backup 2021/11/21 23:58:30 backup > master 2021/11/21 23:58:37 master > initialize 2021/11/21 23:58:52 initialize > backup 2021/11/21 23:58:55 backup > master 2021/11/22 00:02:32 master > initialize 2021/11/22 00:03:07 initialize > backup 2021/11/22 00:03:11 backup > master 2021/11/22 00:06:17 master > initialize Statistics Become master: 9 Advertise 31 received, 5873 sent Priority zero 0 received, 9 sent Errors 1945 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)#
動作確認 (3) リンクダウンを伴わない障害対策
前述の設定例は、リンクダウン状態で切り替わる設定であり、リンクダウンを伴わないような対向装置障害では切り替わりません。このような障害に対応するには、ping監視と組み合わせる必要があります。
Cisco IOSなどではIP SLAと呼ばれる設定で容易に実装できますが、NEC IXは前述の設定例と同様にnetwork-monitorを使用しなければならず、やや実装のハードルが高めです。
R1, R2それぞれに対向機器を監視する設定を入れます。対向機器が監視NGとなれば、shutdown-vrrpのアクションが実行されます。
[R1:IX2015] interface GigaEthernet0.0 no shutdown ! no watch-group track_interface no network-monitor track_interface enable ! watch-group track_nexthop 10 event 10 ip unreach-host 200.0.10.1 GigaEthernet0.0 action 10 ip shutdown-vrrp 1 ! network-monitor track_nexthop enable
[R2:IX2015] no watch-group track_interface no network-monitor track_interface enable ! watch-group track_nexthop 10 event 10 ip unreach-host 200.0.20.1 GigaEthernet0.0 action 10 ip shutdown-vrrp 1 ! network-monitor track_nexthop enable
この状態で、Internet側でリンクダウンを伴わない障害を再現してみましょう。VyOSのdisableコマンドでリンクダウンを伴わない障害を再現します。
この動作確認方法が可能なのは仮想環境のみです。物理的な環境でshutdownコマンドやdisableコマンドを使用すると、対向機器はリンクダウンを検出できます。物理環境でリンクダウンを伴わない障害を再現するのは工夫が必要です。物理環境でリンクダウンを伴わない障害を再現させたいならば「直接接続ではなく途中にハブと挟む」等の工夫をしましょう。
[Internet:VyOS1.4] admin@vyos# set interfaces ethernet eth0 disable [edit] admin@vyos# commit [edit] admin@vyos#
障害を検出し、Action欄が"executing"と表示される事を確認します。
[R1:IX2015] R1(config)# show watch-group Watch-group status summary Total 1, normal 1, stand 0 Group name Sequence Status Variance Wait track_nexthop 10 normal 0 - R1(config)# R1(config)# R1(config)# show watch-group detail Watch-group 'track_nexthop' is enabled Sequence 10 Status: stand Elapsed variance time: 0:00:06 Profile variance counts: 1 Profile restore counts: 0 Suppress variance counts: 0 Suppress restoration counts: 0 Profile history Time Event Status 2021/11/22 00:13:09 variance stand Event: Event 10 ip unreach-host 200.0.10.1 GigaEthernet0.0 Status: stand Elapsed variance time: 0:00:06 Event variance counts: 1 Event restore counts: 0 Probe success counts: 10 Probe failure counts: 7 Probe history Time Result Round trip 2021/11/22 00:12:27 success 0.431 ms 2021/11/22 00:12:32 success 0.365 ms 2021/11/22 00:12:37 success 0.410 ms 2021/11/22 00:12:44 failure - 2021/11/22 00:12:49 failure - 2021/11/22 00:12:54 failure - 2021/11/22 00:12:59 failure - 2021/11/22 00:13:04 failure - 2021/11/22 00:13:09 failure - 2021/11/22 00:13:14 failure - round-trip (ms) min/avg/max = 0.365/0.402/0.431 Event history Sequence Time Event 10 2021/11/22 00:13:09 variance Action: Action 10 ip shutdown-vrrp 1 Status: executing R1(config)#
R1のVRRPがmasterからinitializeに変わった事を確認します。
[R1:IX2015] R1(config)# show vrrp Interface VRID Pri Pre State Master addr GigaEthernet1.0 1 120 P initialize 0.0.0.0 R1(config)# R1(config)# R1(config)# show vrrp detail Virtual router group: 1 Virtual router status State: initialize Virtual router IP address: 192.168.10.254 Master IP address: 0.0.0.0 MAC address: 00:00:5e:00:01:01 Priority: 120 History time state 2021/11/21 23:58:37 master > initialize 2021/11/21 23:58:52 initialize > backup 2021/11/21 23:58:55 backup > master 2021/11/22 00:02:32 master > initialize 2021/11/22 00:03:07 initialize > backup 2021/11/22 00:03:11 backup > master 2021/11/22 00:06:17 master > initialize 2021/11/22 00:11:33 initialize > backup 2021/11/22 00:11:36 backup > master 2021/11/22 00:13:09 master > initialize Statistics Become master: 10 Advertise 34 received, 5967 sent Priority zero 0 received, 10 sent Errors 1977 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)#