Step3:
障害を迂回する

図6●障害を迂回する
VRRPマスターであるR1に障害が起こったとき,即座にR2がVRRPマスターに代わるのでPC1からPC2への通信が維持できる。ところが,R3には障害の情報が伝わらないのでPC2からPC1への通信はできない。
図7●VRRPグループによる冗長化
2台あるルーターがそれぞれのグループのVRRPマスターになる。

 VRRPはVRRPマスターが変わってもデフォルト・ゲートウェイの設定を変更しなくてもよいので,障害を迂回することができると言い換えられる。ただし「VRRPはルーティングを操作しているわけではない」ということに注意したい。パソコンからL3スイッチに向かっての通信で障害が起こったときは,VRRPで障害を迂回できる(図6[拡大表示])。ところが,戻りの通信に関してはVRRPは何もしてくれない。

 ルーティング動作はホップバイホップ,すなわちバケツリレー方式で中継されていく。途中にいるL3スイッチが障害を検出して経路を切り替えるまでには,比較的長い時間が必要だ。これは使っているルーティング・プロトコルや障害個所に依存する。RIP(Routing Information Protocol)だと数秒から3分,大規模なネットワーク向けのOSPF(Open Shortest Path First)であれば数秒から40秒程度の時間を要する。

 たとえば図6で,PC1側とPC2側で別々にVRRPを動かしていて,普段はR1とR3がマスターになっているものとする。R1のインタフェースに障害が発生すると,ほどなくしてR2がVRRPマスターとなる。この時点でPC1→PC2への通信は復旧する。ところが,PC2側ではR1の障害を知り得ないので,R3はR1が動いているものだと思っている。したがって,PC2→PC1に戻ってくるトラフィックは,PC2→R3→R1→パケット破棄,ということになってしまう。PC2→PC1のトラフィックはRIPやOSPFなどで経路情報が切り替わった後,PC2→R3→R2→PC1という通り道で復旧する。 結局,VRRPを使っていても端末間の通信が復旧するまでには,ルーティング・プロトコルによって経路変更されるまでの時間が必要になる。

VRRPグループで負荷分散

 VRRPを動かすL3スイッチが何台あったとしてもマスターは1台だけである。つまり,インダイレクト・ルーティングの通信はそのマスターに集中する。1台が現用,残りが待機という構成だ。こういう運用構成も分かりやすくてよいのだが,一つのサブネットに数百台ものパソコンがいるようだと,特定のL3スイッチにトラフィック負荷が集中してしまうのであまり好ましくない。そのようなケースではVRRPにグループを導入して負荷を分散する(図7[拡大表示])。

 VRRPの設定はグループごとに変更することができる。つまり,ルーター2台でVRRPを組むのならVRRPグループを二つ作り,デフォルト・ゲートウェイのアドレスも二つ用意する。グループ1のマスターはルーターAが,グループ2のマスターはルーターBが担うようにプライオリティを設定する。そのサブネットにいるパソコンの半分はグループ1のデフォルト・ゲートウェイを使い,残り半分のパソコンはグループ2のデフォルト・ゲートウェイを使う。もしルーター1がダウンしてもルーター2が両方のグループのマスターを担うことになる。こうして,パソコンは問題なく通信を継続することができる。

 グループを複数導入したときには,パソコンにどちらのデフォルト・ゲートウェイを使わせるかが問題になる。このようなときにはDHCPサーバーを2台用意し,アドレスを割り当てるときに別々のデフォルト・ゲートウェイを教えるようにする。パソコンは先に返事が来た方のDHCPサーバーを使うので,およそ半々くらいずつに分散される。

プリエンプト・モードの使い方

 VRRPではプライオリティの大小関係でマスターを選出する。後から優先度の高い(プライオリティ値の大きい)L3スイッチが登場すると,マスターの役割が入れ替わるため一瞬通信が不安定になる。また,工事などで優先度の高いL3スイッチのケーブルを抜き差しすると,そのたびにマスターの役割が入れ替わってしまう。これも通信が不安定になる要因となる。

 このような状況を避けるため,マスターがダウンしたとき以外は役割を入れ替えないように指定することができる。この設定はプリエンプト・モード(PREEMPT MODE)の変更で指示する。プリエンプトはデフォルトでONに設定されているので,プライオリティの大きなバックアップ用のL3スイッチが後から登場すると,マスターの役割が自動で入れ替わる。プリエンプトをOFFにすれば,マスターがいなくならない限りマスターの役割は入れ替わらない。

 プリエンプト・モードを変更すると障害から復旧するときの動作に大きな違いが現れる。デフォルト(プリエンプト・モードON)では,マスターが障害でダウンしても復旧すれば再び元のL3スイッチがマスターに戻る。これに対して,プリエンプト・モードをOFFにすると,当初のマスターが障害から復旧しても自動で元に戻らない。

 この使い分けは設計者の好みによるところもあるが,プリエンプト・モードをOFFにするとプライオリティの値と無関係にマスターが決まるので,少々分かりづらくなる。特別な理由がなければデフォルト設定でよいだろう。