HSRPとVRRP

HSRP:Hot Standby Router Protocol
VRRP:Virtual Router Redundancy Protocol

ルータの冗長構成用プロトコルとしてCiscoが独自にHSRPを開発したが、ベンダー独自規格であったため他社とは互換性がなかった。そこで複数のベンダーがHSRPを発展させたVRRPが作られ、RFC(RFC2338、RFC3768)で規格化された。(とはいえ、HSRPもRFC2281として公開されている・・・)


どちらのプロトコルも複数のルータ間でやり取りして仮想的なルータを作成する。仮想的なルータは仮想MACアドレスと仮想IPアドレスを持ち、クライアントはこの仮想アドレスをゲートウェイとして通信を確立する。

HSRPのActiveルータは仮想IPアドレスと実IPアドレスの両方を持つが、VRRPのMasterルータは仮想IPアドレスを持ったとき、実IPアドレスが無効になる。(装置によって実装がまちまちで、実IPアドレスも有効になっている実装もある。・・・監視とか考えたときには非常に悩ましい部分だけど。)


仮想MACアドレスは
HSRP:00-00-0C-07-AC-*
VRRP:00-00-5E-00-01-*
 ※"*"はグループ番号が入る

が使われる。


ルータ間で使われるパケットについても若干違って、

HSRP:
ルータ/MLS間でHelloパケットのやりとりを行う。HelloパケットはUDP(プロトコル番号17)の1985番ポートが使われ、224.0.0.2(マルチキャストアドレス)をTTL=1にして送信される。(アプリケーション層で動作する。)

VRRP:
ルータ/MLS間でVRRPパケットのやりとりを行う。VRRPパケットはIP上でプロトコル番号112で動き、224.0.0.18(マルチキャストアドレス)でTTL=255にしてやりとりする。(トランスポート層で動作する。)


HSRPではStandbyルータからActiveルータにHelloパケットを送るが、VRRPではBackupルータからMasterルータにVRRPパケットを送ることは無い。そのため、MasterルータはBackupルータを認識する事ができない・・・という違いがある。


似たようなものだけど。


用語も若干違って、状態の表現も

HSRP:Active、Standby

VRRP:Master、Backup

と表現する。


似て異なるものだけど・・・。



優先度(Priority)
HSRP/VRRPルータはそれぞれ優先度を持ち、優先度の高いルータがマスタールータとなり、他のルータはバックアップになる。優先度は1~255の数値で設定するが、スムーズなマスター/バックアップ切り替えのためにはできるだけ優先度は大きな差をつけておくのがいい。優先度はまったく同じ値を設定してもよいが、その場合、各HSRP/VRRPルータのLANインタフェースのIPアドレスの大小によって優先されるべきHSRP/VRRPルータが決まるが、一般的にはPriority値に差を付ける。また、複数のルータが同時にマスタールータになろうとするので、その間の調整でマスタールータがばたばたすることが起こりえるため、優先度はできるだけ大きな差をつけて設定すべきである・・・と言われている。



プリエンプトモード(Preempt Mode)
プリエンプトモードか否かでマスタールータ選出の方法が変わる。

非プリエンプトモードでは、先に優先度の低いHSRP/VRRPルータがマスタールータとなっていた場合には、そこに後から優先度の高いHSRP/VRRPルータが参加してもマスタールータの切り替わりは起こらず、従来からのマスタールータがマスターとして動作し続ける。逆にプリエンプトモードで動作している場合は、優先度の高いHSRP/VRRPルータが加わると必ずそちらにマスタールータが切り替わる。通常はプリエンプトモードで運用する。非プリエンプトモードは、マスタールータが頻繁にダウンする場合にいわゆる高速切替とか言われる障害が発生するのを防ぐ場合に利用する。

HSRP:非プリエンプトモードが標準。インターフェースコンフィグでstandby preemptと入力すると、プリエンプトモードになる。

VRRP:プリエンプトモードが標準。切替方法はベンダによって異なる。



トラッキング(Tracking)

インターフェースや装置の障害によって優先度(Priority)を変化させ、ルータの切替を発生させるための条件。

HSRP:インターフェイストラッキングをサポート。インターフェースコンフィグでstandby track

VRRP:標準的な定義はされていないが、ベンダ独自実装で、インターフェイスだけでなく、さまざまなイベントをトラックし、トリガ条件の変化によって、マスタ権限を移動できる。しかし、ベンダ独自実装の場合、当然、異なるベンダ機器同士では利用できない。



負荷分散(Load Sharing)

VRRPではマルチグループのVRRPを設定することで、負荷分散できる(場合がある)。

対してHSRP(というかCisco)では、そのような事はできないが、MHSRPやGLBPと言ったより拡張されたプロトコルが存在する。

・・・負けず嫌いというか、Ciscoってホントにオリジナル好きです。