ネットワークの冗長化を考えるときには、デフォルトゲートウェイの冗長化も非常に重要だ。単純にデフォルトゲートウェイとなるルータやレイヤ3スイッチを複数設置しただけでは意味がない。デフォルトゲートウェイを冗長化するには、VRRP(Virtual Router Redundant Protocol)が必要だ。

本稿では、VRRPの仕組みを解説しNETGEAR社のレイヤ3スイッチでVRRPの動作を検証する。

デフォルトゲートウェイとは?

まず、「デフォルトゲートウェイとは何か?」について簡単に振り返っておこう。デフォルトゲートウェイとは、他のネットワークへの入り口だ。PCやサーバが他のネットワークへデータを送信するときには、まず、デフォルトゲートウェイへ転送する。「ゲートウェイ」は「入り口」という意味だ。

ルータやレイヤ3スイッチはネットワークを相互接続する機器だ。あるネットワークに接続されているPCやサーバから見ると、ルータやレイヤ3スイッチの向こう側に社内の別のネットワークやインターネットなど、さまざまなネットワークが広がっていることになる。そのため、他のネットワークへデータを送信するには、デフォルトゲートウェイとなるルータやレイヤ3スイッチのIPアドレスをあらかじめ設定しておかなければならない。

図1 デフォルトゲートウェイの概要

デフォルトゲートウェイの冗長化

もし、デフォルトゲートウェイとなるルータやレイヤ3スイッチに障害が発生すると、他のネットワークへの通信ができなくなってしまう。そこで、デフォルトゲートウェイとなるルータやレイヤ3スイッチの冗長化が必要だ。特にサーバのデフォルトゲートウェイの冗長化はとても重要だ。多くのクライアントにサービスを提供するサーバのデフォルトゲートウェイに障害が発生すると、その影響がとても大きくなってしまうからだ。

ただ、単純にデフォルトゲートウェイとして複数のルータやレイヤ3スイッチをネットワーク上に接続すればよいというわけではない。通常、PCやサーバに対してデフォルトゲートウェイのIPアドレスは1つ設定する。そして、デフォルトゲートウェイとして設定したルータに障害が発生しても、PCやサーバ側のデフォルトゲートウェイの設定は自動的に書き換わらない。その結果、いつまでもダウンしたルータへとパケットを転送してしまうことになる。そこで、これまでのデフォルトゲートウェイがダウンしたら、PCやサーバ側のデフォルトゲートウェイの設定を手動で変更する。そうすれば、他のネットワークへの通信を継続させることはできる。

図2 手動でのデフォルトゲートウェイの切り替え

しかし、わざわざ手動でデフォルトゲートウェイの設定を変更するのは、手間がかかり、冗長化した意味があまりなくなってしまう。デフォルトゲートウェイがダウンしたら、PCやサーバなどの設定変更せずに自動的に切り替わるようにするべきだ。そのためのプロトコルがVRRPである。

VRRPの動作

VRRPを利用すると、デフォルトゲートウェイとして動作する複数のルータやレイヤ3スイッチをグループ化して仮想ルータを作ることができる。仮想ルータには、IPアドレスもMACアドレスもあり、以下のように決まる。

仮想ルータのIPアドレス: 設定で指定またはマスタルータのIPアドレス
仮想ルータのMACアドレス: 00-00-5e-00-01-XX (XX:仮想ルータID)

グループ化した実ルータはマスタルータとバックアップルータの役割を分担する。マスタルータが仮想ルータ宛てのパケットを転送する。マスタルータは実際のIPアドレス/MACアドレスに加えて、仮想ルータのIPアドレス/MACアドレスを持っていると考えるとよいだろう。バックアップルータは、マスタルータがダウンしたときに新しいマスタルータとなるルータだ。バックアップルータが新しいマスタルータになるということは、仮想IPアドレス/MACアドレスも引き継ぐということだ。

マスタルータとバックアップルータはVRRPプライオリティによって決まる。VRRPプライオリティが大きいルータがマスタルータになる。マスタルータ、バックアップルータの決定などVRRPの動作を制御するために、VRRP Advertisementメッセージを利用する。VRRP Advertisementメッセージを定期的に送信することで、マスタルータの動作確認も行っている。

そして、PCやサーバのデフォルトゲートウェイのIPアドレスには仮想ルータのIPアドレスを設定すればよい。すると、マスタルータがダウンしても、PCやサーバは手動でデフォルトゲートウェイの設定を変更することなく、継続して他のネットワーク宛ての通信が可能だ。

以下の簡単なネットワーク構成を例にしてVRRPの動作を見ていこう。

図3 VRRPの動作 その1

図のR1とR2でVRRPによってデフォルトゲートウェイの冗長化を行っている。VRRPを有効にするのは、PCにとってのデフォルトゲートウェイとして動作するインタフェースだ。R1、R2ともにポート1でVRRPを有効にすることになる。

R1がマスタルータになるようにVRRPプライオリティを110としている。R2のVRRPプライオリティは100だ。そして、仮想ルータのIPアドレスは「192.168.1.4」としている。仮想ルータIDを1としているので、仮想MACアドレスは「00-00-5e-00-01-01」となる。マスタルータであるR1はこの仮想IPアドレス/MACアドレスも持つ。また、PCのデフォルトゲートウェイには、仮想IPアドレス192.168.1.4を設定する。

PCから他のネットワーク宛てのパケットはデフォルトゲートウェイに設定している仮想ルータ宛てに転送される。仮想ルータ宛てのパケットはマスタルータが処理するので、PCから他のネットワーク宛てのパケットは、マスタルータであるR1を経由して転送される。

図4 VRRPの動作 その2

マスタルータがダウンするとバックアップルータに定期的なVRRP Advertisementが届かなくなる。これによりバックアップルータはマスタルータのダウンを認識し、新しいマスタルータとなる。デフォルトではVRRP Advertisementの送信間隔は1秒で、約3秒間VRRP Advertisementが届かなくなるとバックアップルータは新しいマスタルータになる。つまり、デフォルトゲートウェイの切り替えには約3秒かかる。

図のR1がダウンすると、R2が新しいマスタルータになり、仮想IPアドレス/MACアドレスを引き継ぐ。PCはデフォルトゲートウェイが切り替わったことは意識しない。PCから他のネットワーク宛てのパケットは、新しいマスタルータであるR2へと転送され、R2がルーティングする。

図5 VRRPの動作 その3

また、障害時の切り替えだけではなく、障害が復旧した場合についても考えておくことも重要だ。マスタルータに障害が発生してバックアップルータに切り替わったあと、マスタルータが復旧した場合、元のマスタルータの役割を取り戻すかどうかは設定に依存する。復旧したときに元のマスタルータに切り戻すようにするには、プリエンプトモードを有効にする。VRRPではプリエンプトモードがデフォルトで有効になっている。

NETGEARスイッチのVRRP検証

ここからは、NETGEAR社の以下の2機種のレイヤ3スイッチを利用してVRRPの動作を検証する。

・GSM7328S
・M5300-28G3

動作を検証するネットワーク構成は、以下の図となる

図6 VRRP検証 ネットワーク構成

L3SW1、L3SW2はそれぞれ192.168.10.0/24と192.168.20.0/24のネットワークを相互接続している。このL3SW1、L3SW2でVRRPを利用して、それぞれのネットワークに対するデフォルトゲートウェイの冗長化を行う。その際、ネットワークごとにデフォルトゲートウェイの負荷分散のためマスタルータ、バックアップルータを以下のように決めるものとする。

表1 マスタルータ/バックアップルータ

サブネット マスタルータ バックアップルータ
192.168.10.0/24 L3SW1 L3SW2
192.168.20.0/24 L3SW2 L3SW1

このようにマスタルータとバックアップルータを決めると、PC1とPC2間の通信経路は以下のようになるはずだ。

PC1→PC2の経路
PC1→L3SW1→PC2

PC2→PC1の経路
PC2→L3SW2→PC1

初期設定は、L3SW1/L3SW2にIPルーティングを有効にしたうえでIPアドレスを設定している状態だ。レイヤ3スイッチに対するIPルーティングやIPアドレスの設定方法については、過去の記事を参照していただきたい。

レイヤ3スイッチの仕組み - VLANとVLAN間ルーティング(後)
※VRRPはIPルーティングが有効になっていることが前提であることに要注意。

VRRPの設定

VRRPの設定は、[Routing]→[VRRP]→[Advanced]→[VRRP Configuration]から行う。[Admin Mode]の[Enable]にチェックを付けてVRRPを有効にして、VRRPのパラメータを入力し[ADD]で設定を追加する。L3SW1、L3SW2のそれぞれのVRRPのパラメータとして、以下の表に基づいて設定する。

表2 VRRP 設定パラメータ

機器 仮想ルータID(VRID) インタフェース プライオリティ 仮想IPアドレス
L3SW1 10 1/0/1 200 192.168.10.4
20 1/0/2 100 192.168.20.4
L3SW2 10 1/0/1 100 192.168.10.4
20 1/0/2 200 192.168.20.4

以下は、L3SW1でのVRRP設定画面のスクリーンショットだ。

図7 L3SW1 VRRP設定

L3SW2でも表にまとめたパラメータにしたがって、同様に設定すればよい。

VRRPの確認(正常時のVRRPの状態)

まず、VRRPが正しく動作していて意図したようにマスタルータ/バックアップルータが決まっていることを確認する。それには、[VRRP]→[Basic]→[VRRP Configuration]画面がわかりやすい。VRRPを有効にしているインタフェースごとの仮想ルータID、仮想IPアドレス、マスタルータ/バックアップルータの状態を確認できる。L3SW1とL3SW2のスクリーンショットは以下のようになっている。

図8 L3SW1 VRRPの確認

図9 L3SW2 VRRPの確認

スクリーンショットからL3SW1/L3SW2のVRRPの状態とPC1-PC2間の通信経路をまとめると、次の図のようになる。

図10 VRRPの状態と通信経路

VRRPの確認(マスタルータの切り替えの確認)

次にマスタルータの切り替えを確認してみよう。PC1からPC2へ継続的にPingを実行する。この通信は仮想ルータID 10のマスタルータであるL3SW1を経由している。継続的にPingを実行しながらL3SW1ポート1のケーブルを抜く。すると、L3SW2にマスタルータが切り替わりPC1からPC2へのPingは成功する。PC1からのPingの実行結果は、次のとおりだ。

PC1からPC2への継続的なPingの実行


C:\Windows\system32>ping 192.168.20.100 -t -w 1

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

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

Pingのタイムアウトを1秒として実行している。ケーブルを抜いたときに、Pingのタイムアウトが2回発生したあと、応答が再び返ってくるようになっている。つまり、マスタルータが3秒程度でL3SW2に切り替わったと考えられる。このときのL3SW2のVRRPの状態は以下のように、両方の仮想ルータのマスタルータとなっていることがわかる。

図11 マスタルータ切り替え時のL3SW2のVRRPの状態

そして、このときのPC1からPC2へのPingの通信経路はリクエストもリプライもL3SW2を経由する。

図12 マスタルータ切り替え時のPingの通信経路

なお、L3SW1のケーブルを元に戻せば、デフォルトでプリエンプトモードなのでVRRPの状態や通信経路は、図8~図10の状態に戻ることになる。

まとめ

VRRPはデフォルトゲートウェイとなる複数のルータやレイヤ3スイッチを仮想的に1台に見せかける。それにより、ルータやレイヤ3スイッチに障害が発生してもPCやサーバ側では意識することなく通信を継続させることができる。NETGEAR社のレイヤ3スイッチも当然VRRPに対応し、わかりやすいインタフェースで設定可能だ。VRRPを利用したデフォルトゲートウェイの冗長化を検討する際には、本稿で解説した仕組みもしっかりと理解しておくことで、より効果的なネットワークの冗長化ができるようになるだろう。