VRRP

読み:ぶいあーるあーるぴー / 英語表記:Virtual Router Redundancy Protocol

複数のルータを1台の仮想ルータとして動作させ、端末のデフォルトゲートウェイを冗長化するプロトコルである。端末は仮想IPアドレスを出口として利用し、中継を担当するルータが利用できなくなると待機中のルータが引き継ぐ。

イマシルちゃんの解説

ネットワークの外へ出るためのルータが1台しかないと、その機器が故障したときに通信できなくなることがあるよ。
VRRPは、複数のルータで1台分の仮想ルータを作り、出口を冗長化するプロトコルなんだ。
端末には、その出口を表す仮想IPアドレスをデフォルトゲートウェイとして設定するよ。
普段は1台が通信を中継し、ほかのルータは定期的に届く通知を受けながら待機するんだ。
通知が一定時間届かなくなると、待機側が引き継ぐよ。
出口のアドレスは変わらないから、端末ごとの設定を直さずに通信を再開できるんだ。

より深い解説

一つの出口を複数の装置で支える

VRRPは、同じLAN上の複数のルータから転送担当を選ぶプロトコルである。グループを識別するVRID(Virtual Router ID)をそろえ、仮想IPアドレスと仮想MACアドレスを共有する仮想ルータを構成する。端末は、その仮想IPアドレスをデフォルトゲートウェイとして使う。

転送を担当する装置をマスタールータ、待機する装置をバックアップルータという。以下では転送担当をマスターと呼ぶ。VRRPv3はIPv4とIPv6に対応し、現行のRFC 9568ではマスターをActive Routerと表記している。

VRIDは8ビットの識別子で、使用できる値は1~255である。同じLAN上で同じアドレスファミリの仮想ルータを区別するため、例えば複数のアプリケーション用の冗長グループには異なる値を割り当てる。この範囲から区別できる仮想ルータは255組となるが、ネットワーク全体や一台の製品が扱える台数を表す上限ではない。別のLANでは値を再利用でき、VRRPv3のIPv4とIPv6のインスタンスも別に扱われる。

端末にとってのデフォルトゲートウェイは、通常、デフォルトルートのネクストホップに相当する。VRRPはこの出口の可用性を高めるもので、端末自身のIPアドレスを冗長化する機能ではない。

図では端末の出口を10.20.0.1とし、R1とR2がそれぞれ10.20.0.2と10.20.0.3を持つ。共有する出口のアドレスとは別に、各装置を指定して通信するための実IPアドレスがある。

端末が使う共通の出口と、R1・R2が個別に持つアドレスの関係
端末が使う共通の出口と、R1・R2が個別に持つアドレスの関係

利点は、転送担当が変わっても端末側の出口設定を変えずに済むことである。 ただし、担当を引き継ぐルータから宛先までの経路も使える状態にしておく必要がある。

通知の途絶を検出して引き継ぐ

マスターは、VRRPの広告であるアドバタイズメント(Advertisement)を定期的に送り、自分が転送担当であることを知らせる。バックアップルータは通知を受けて待機し、所定の待ち時間内に届かなくなると担当を引き継ぐ。待ち時間は広告間隔や優先度から決まり、広告を一回受信しなかっただけで直ちに切り替わるわけではない。

IPv4の広告はIPプロトコル番号112、宛先224.0.0.18で送る。TCPやUDPは使わない。送信元は送出インタフェースの主IPv4アドレスであり、TTLは255にする。同じLAN内で使う通知なので、ルータを越えて転送しない。

端末が共有アドレスについてARPで問い合わせると、マスターは仮想MACアドレスを知らせる。IPv4のVRRPでは00:00:5e:00:01:xxという形になり、末尾のxxにVRIDを16進数で入れる。端末は宛先IPアドレスを最終的な通信相手のままにし、フレームをこのMACアドレスへ送る。

新しくマスターになったルータは、仮想MACアドレスを使ったGARPを送る。スイッチはそのフレームの送信元から、新しい転送担当がつながるポートを学習できる。共有するMACアドレスは同じなので、端末側で出口のMACアドレスを別の値へ変える必要はない。通知の形式や役割はGARPの記事で扱う。

担当を選び、復旧後の戻し方を決める

マスターの選出には、プライオリティとも呼ぶ優先度を使う。通常の設定範囲は1~254で、値が大きい装置を優先する。共有するIPアドレスを自分自身のインタフェースアドレスとして持つ所有者は255となる。値が同じ場合は、広告の送信元IPアドレスが大きい装置を優先する。

優先度の0は、転送担当が役割を放棄することを通知するために予約されている。通常の待機ルータの設定値として使う番号ではない。

復旧した高優先のルータなどが現在のマスターから役割を取り戻す動作をプリエンプトという。無効にすると、低い値の装置がマスターになった後も通常はその役割を維持する。ただしIPアドレスの所有者は、無効設定でもマスターを引き継ぐ。復旧時に必ず元の装置へ戻すのか、不要な切替えを抑えるのかを決めて設定する。

再起動直後に役割を取り戻すと、まだ必要な経路情報がそろっていない場合がある。製品の機能であるプリエンプトディレイは、役割を取り戻すまでに待ち時間を設ける。OSPFやBGPによる経路の収束を待ち、転送できる状態になってから端末の通信を引き受けるために使う。

切替えには検出や転送先の更新に時間がかかる。注意:VRRPを使うだけで無瞬断になるとは限らない。 パケット損失、復旧後の切戻し、既存の接続への影響を確認する。

待機中にも転送の準備をする

VRRPは転送担当を選ぶが、各ルータのルーティングテーブルを同期する機能ではない。図のR2が担当を引き継いでも、宛先への経路がなければ受信したパケットを転送できない。

例えばR1とR2がそれぞれBGPで外部経路を学ぶ構成では、両方が独立してBGPセッションを確立し、必要な経路と次ホップへの到達性を確保する。接続先の設定では、R1とR2の各実IPアドレスを区別して指定する。共有する出口のアドレスだけを接続先にしても、両装置が同時に経路を学ぶ構成にはならない。

バックアップルータであることは、装置自身の通信や経路情報の交換まで停止するという意味ではない。新しいルータへ通信を切り替える前に、受信経路と実際に採用された経路の両方を確認する。 BGPのメッセージや経路選択の詳しい動作は、BGPの記事で扱う。

上流の故障も切替えの条件にする

R1の上流回線だけが切れても、LAN側が正常なら広告は届き続ける場合がある。この状態では、バックアップルータは通知の途絶を理由に担当を引き継げない。VRRPの広告が届くことと、外部の宛先へ到達できることは別である。

指定したインタフェースの状態を追跡するインタフェーストラッキングなどを組み合わせ、上流回線が使えなくなったら優先度を下げる。相手側が役割を取り戻せる設定か、下げた後の値が相手より低くなるかも確認する。製品によっては経路の有無や特定宛先への到達性も追跡できる。

リンク状態の監視で分かるのは、その接続区間の状態までである。より先の障害も対象にするなら、どこまでを死活監視するかを決める。二つの上流回線が同じ設備に依存していれば、同時に失われる可能性も残る。

似た役割を持つHSRPはCisco由来のプロトコルであり、転送を担うアクティブと待機するスタンバイを選んで出口を冗長化する。一つのグループで転送担当を選ぶVRRPと、複数経路への分散を行うECMPは目的が異なる。出口の担当を冗長化するのか、その先の経路を複数使うのかを分けて設計する。

参考資料

実際の試験ではここに出る!全8問

ネットワークスペシャリスト

午後Ⅰ
午後Ⅱ
午前Ⅱ

この用語が出てくる記事

↑