IP / VRRP
VRRP(Virtual Router Redundancy Protocol)は、複数のルーターをグループ化し、あたかも1台のルーターであるかのように見せかけることで、デフォルトゲートウェイを冗長化し、IPネットワークに冗長性を与えるプロトコルです。プロトコル概要
VRRPの基本的な考え方は次のとおりです。- 同一ネットワーク上にある複数のルーターをグループ化し、1台のように見せかける。このグループ全体をバーチャルルーター(VR = Virtual Router)と呼ぶ。
- バーチャルルーターを構成する各ルーターは次のものを共有し、互いに連携して動作する。
- VRID: バーチャルルーターを識別するための番号(1~255)。
- バーチャルMACアドレス: バーチャルルーターへのARP要求に対して返されるMACアドレス。VRIDから導出される。
- バーチャルIPアドレス: バーチャルルーターのIPv4アドレス。クライアントホストには、このアドレスをデフォルトゲートウェイとして設定する。
- VRID: バーチャルルーターを識別するための番号(1~255)。
- バーチャルルーターを構成する各ルーターは、1~255の優先度を持つ。バーチャルIPアドレスとインターフェースの実アドレスが一致している場合、そのルーターの優先度は自動的に最高値の255となる(preferred master)。それ以外のルーターには、1~254の優先度を設定する(初期値は100)。
- バーチャルルーターは、マスタールーター1台と、バックアップルーター1台以上から構成される。バーチャルルーター内でもっとも高い優先度を持つルーターがマスタールーターとなる。
- マスタールーターは、バーチャルIPアドレスとバーチャルMACアドレスを使い、実際にルーターとしての動作を行う。また、VRRP Advertisementパケットをマルチキャストグループアドレス224.0.0.18宛てに定期的に送信し、自らの健在をバックアップルーターに知らせる。また、自分より高い優先度を持つAdvertisementパケットを受信した場合は、バックアップルーターに移行する。
- バックアップルーターは、ルーターとしての動作は行わずに、Advertisementパケットを監視している。バックアップルーターは、Advertisementパケットが途絶えるとマスタールーターに障害が発生したものと見なし、新しいマスタールーターの選出プロセスに入る。
基本設定
次に、実際に2台のルーターを用いてIPv4のデフォルトゲートウェイを冗長化するための設定方法を示します。ここでは、次のようなネットワーク構成を例に説明します。

この例では通常ルーターAが使用されますが、ルーターAが故障すると、同ルーターが定期的に送信しているVRRP AdvertisementパケットをルーターBが受信できなくなります。この場合、ルーターBはルーターAがダウンしたものと見なしてバックアップルーターからマスタールーターに移行し、両方のセグメントに対するデフォルトゲートウェイアドレスを引き継ぎます。ルーターAが復旧すると、ルーターBは元のバックアップルーターに戻ります。
なお、以下の各例では、VLANの作成とIPアドレスの設定は完了しているものとします。VLANの設定については、「L2スイッチング」の「バーチャルLAN」をご覧ください。IPアドレスの設定については、「IP」の「IPインターフェース」をご覧ください。
ルーターA
- VRRPの動作に必要なVRRPサービスを有効にします。これにはservice vrrpコマンドを使います。
RouterA(config)# service vrrp
- router vrrpコマンドを実行して、vlan100インターフェース上にVRID=100のバーチャルルーター(以下、VR100)を作成し、該当バーチャルルーターの設定を行うためのVRRPモードに移行します。
RouterA(config)# router vrrp 100 vlan100
- virtual-ipコマンドでVR100のバーチャルIPアドレスを設定します。ここではバーチャルIPアドレス10.100.100.32がインターフェースの実アドレスではないので、キーワードbackupを指定します。
RouterA(config-router)# virtual-ip 10.100.100.32 backup
- priorityコマンドでVR100における優先度を設定します。こちらをデフォルトのマスタールーターにするため、優先度を初期値の100よりも高い101に設定します。
RouterA(config-router)# priority 101
- circuit-failoverコマンドを用いて、vlan200(VR200)がダウンした場合にvlan100側(VRID=100)の優先度を引き下げ、ルーターBがマスタールーターになるよう設定します。
RouterA(config-router)# circuit-failover vlan200 2
- enableコマンドを実行してVR100の動作を有効化します。これでVR100の設定は完了です。exitコマンドでグローバルコンフィグモードに戻り、次にVR200の設定に移ります。
RouterA(config-router)# enable RouterA(config-router)# exit
- router vrrpコマンドを実行して、vlan200インターフェース上にVRID=200のバーチャルルーター(以下、VR200)を作成し、該当バーチャルルーターの設定を行うためのVRRPモードに移行します。
RouterA(config)# router vrrp 200 vlan200
- virtual-ipコマンドでVR200のバーチャルIPアドレスを設定します。ここではバーチャルIPアドレス10.100.200.32がインターフェースの実アドレスではないので、キーワードbackupを指定します。
RouterA(config-router)# virtual-ip 10.100.200.32 backup
- priorityコマンドでVR200における優先度を設定します。こちらをデフォルトのマスタールーターにするため、優先度を初期値の100よりも高い101に設定します。
RouterA(config-router)# priority 101
- circuit-failoverコマンドを用いて、vlan100(VR100)がダウンした場合にvlan200側(VR200)の優先度を引き下げ、ルーターBがマスタールーターになるよう設定します。
RouterA(config-router)# circuit-failover vlan100 2
- enableコマンドを実行してVR200の動作を有効化します。
RouterA(config-router)# enable
ルーターB
- VRRPの動作に必要なVRRPサービスを有効にします。これにはservice vrrpコマンドを使います。
RouterB(config)# service vrrp
- router vrrpコマンドを実行して、vlan100インターフェース上にVRID=100のバーチャルルーター(以下、VR100)を作成し、該当バーチャルルーターの設定を行うためのVRRPモードに移行します。
RouterB(config)# router vrrp 100 vlan100
- virtual-ipコマンドでVR100のバーチャルIPアドレスを設定します。ここではバーチャルIPアドレス10.100.100.32がインターフェースの実アドレスではないので、キーワードbackupを指定します。
RouterB(config-router)# virtual-ip 10.100.100.32 backup
- priorityコマンドでVR100における優先度を設定します。こちらをデフォルトのバックアップルーターにするため、優先度は初期値100のままとします。
RouterB(config-router)# priority 100
- enableコマンドを実行してVR100の動作を有効化します。これでVR100の設定は完了です。exitコマンドでグローバルコンフィグモードに戻り、次にVR200の設定に移ります。
RouterB(config-router)# enable RouterB(config-router)# exit
- router vrrpコマンドを実行して、vlan200インターフェース上にVRID=200のバーチャルルーター(以下、VR200)を作成し、該当バーチャルルーターの設定を行うためのVRRPモードに移行します。
RouterB(config)# router vrrp 200 vlan200
- virtual-ipコマンドでVR200のバーチャルIPアドレスを設定します。ここではバーチャルIPアドレス10.100.200.32がインターフェースの実アドレスではないので、キーワードbackupを指定します。
RouterB(config-router)# virtual-ip 10.100.200.32 backup
- priorityコマンドでVR200における優先度を設定します。こちらをデフォルトのバックアップルーターにするため、優先度は初期値100のままとします。
RouterB(config-router)# priority 100
- enableコマンドを実行してVR200の動作を有効化します。
RouterB(config-router)# enable
基本設定は以上です。
LAN上の各IPv4ホストには、デフォルトゲートウェイとして、バーチャルルーターのIPアドレス(バーチャルIPアドレス)を設定します。通常時には、ルーターAがマスタールーターとして機能し、VLAN間のトラフィックを転送します。ルーターAのインターフェースのどちらか(vlan100、vlan200)がリンクダウンした場合は、ルーターBがマスタールーターとなりバーチャルルーターとしての役割を引き継ぎます。このとき、バーチャルルーターのIPアドレスとMACアドレスは変化しないため、LAN上のホストがルーターの切り替えを意識することはありません。