1-1 HSRPとは
HSRPとは、
Ciscoが独自に開発したプ
ロトコルで、2台以上のルータ(及びマルチレイ
ヤスイッチ)をある種のクラスタとして動作す
る様に
設定し、単一の仮想ルータを提供す
る。ホストは、
仮想ルータのアドレスをデフォルトゲートウェ
イとして使用するように設定され、HSRPはどの
ルータが実際にデフォルトゲートウェイとして
動作するのかの決定を管理する。
★仮想ルータ
仮想ルータ
は仮想IPアドレスと仮想MAC
アドレスを持つ。
アクティブルータとスタン
バイルータにより構成
され、仮想IPアドレスは
ルータで
明示的に設定する。また仮想MACアドレスはHSRP
グループ番号を基に自動的に作成される。
MACアドレスは以下の値
になる。
MACアドレス
の最初の3バイト「0000.0c」は、Ciscoのベ
ンダーコード。次の
「07.ac」はHSRPコード、
「●●」は HSRPのグループ番号を16
進数にしたものと
なる。
★HSRPグループ
仮想ルータを作
成するための複数ルータの集合を「HSRPグルー
プ」と呼ぶ。HSRPグループには、次のエンティティが含まれ
る。
★HSRPステート
HSRPルータ
ーには、以下の状態(ステート)が
ある。 各状態の意
味と説明を以下の表にまとめる。
HSRPは以下
のコマンドで実施する。構成はインターフェイス単位で行
う。 1-2 HSRPルータの選
出 HSRPの選出
方法は、グループ中の各ルータに設定された
プライオリティ値(0-255
)に基づいて行われる。
デフォルトのプライオリテ
ィ値は100。
値の最も高いルータが「ア
クティブ」に設定され、2番目に高いルータが
「スタンバイ」になる。 HSRPルータは、
3秒間のデフォルトタイマー(設定可能)に基づいて、
このインターフェイスからHelloパケットを送信し、現在仮想ルータグループに
属しているという事実をアドバタイズする。 Helloパケットのプライオリティに基づき、1台のルータがグループ内の
アクティブルータの役割を担う。アクティブルータは、転送する必要のパケットを受信すると転送し、スタンバイルータは破棄する。 またHelloパ
ケットはUDPによってポート番号
1985番宛てに送信される。送信先IPアドレスは、すべてのルータを示すマル
チキャストアド
レスの224.0.0.2で、TTLを1にすることでHello
パケットの転送を防いでいる。
HSRPにより使われるパケットフォーマットは以下のとおり。 1-3 HSRPの動作
アクティブ
ルータとスタンバイルータはデフォルト値で3
秒に1回、アクティブルータがHello
パケットを交換することによって、アクティ
ブ・スタンバイの関係を保つ。
全てのルー
タがデフォルト値ままであった場合は、ルータのインターフェイス
に設定されたIPアドレスが最も高い数値に設定
されたルータがアクティブルータに昇格する。
プライオリ
ティ値の設定は、以下のインターフェイス設定
コマンドで行う。 このHelloパ
ケットには、HSRPグループのグループID
、Helloの送信元ルータのアドバタイズされたプ
ライオリティ
が含まれる。 Helloパケッ
トの途絶がHoldDownタイマ(デフォル
ト値は10秒)で設定された時間続くと、アク
ティブルーターがダウンしたと見なして、
スタンバイ中のルータがアクティブルータに昇
格する。 また、リス
ニング状態に置かれているルータが他に存在す
る場合は、プ
ライオリティ値が次に高いルータが新たなスタ
ンバイルータとなる。 1-4 HSRPの
Preempt デフォルト
のHSRP設定ではあとから起動したデバイスがリ
スニングステートに移行した際に、すでに他のデバイスがアク
ティブルータ及びスタンバイルータとして機能
していることが確認できれば、さらに高いプラ
イオリティを保持していても、自らをスピーキ
ングステートに移行させることは無い。
つまり、一
旦アクティブルータから退いたルータが再度ア
クティブになったり、あとから最もプライオリ
ティの高いルータがHSRPグループに参加する場
合、現行のアクティブルータに
障害が発生するまでは不可能になり、ルータと
してのプライオリティが高くてもその条件は変
わらない。 preemptとは
アクティブルータの選出に関して、当該ルータのプライオリテ
ィ値が最も高くなった時点で、常にアクティブ
ルータとして認識させる機能で、次のコマンド
を使って有効化する。 デフォルト
の設定では、現行のアクティブルータをローカ
ルルータがpreemptしてアクティブ化する処理は
、即座に実行される。Preemptによりアクティブ
ルータ に切り替わるまでの時間調整したい場合
は、【delay】に続けて以下のいずれか、あるい
は両方のパラーメータを指定する。
1-5 HSRPトラッキン
グ HSRPのアクティブルータへの
切り替えは、設定されているインターフ
ェイス上で、アクティブルータからHSRP Hello
を受信できないときに行われる。
そのため、
下図のアクティブルータのS0/0にてインターフ
ェイスがダウンした場合、ア
クティブルータは切り替わらず、アクティブルーターにパケ
ットが転送されたとしても通信できない。
HSRPインターフェイストラッ
キングでは、指定したインターフェイス
に障害を検出すると、もとのプライオリティ値
から設定された値をマイナスすることにより、
別のインターフェイス上の障害を反映したアク
ティブルータ及びスタンバイルータの選定を行
うことができる。 HSRPインターフェイストラッ
キングは、インターフェイスコンフィグレーシ
ョンモードで次のコマンドを入力する。
例えば 「standby 1 track
Serial0/0 20」 では、「S0/0がダウンした場合プ
ライオリティ値が20減少する」という動作にな
る。 また、HSRPインターフェイス
トラッキングが正常に動作するためには、純粋
にHSRPプライオリティで、アクティブルータを
決定しなければ
いけないため、preemptの設定が必要にな
る。 1-6 MHSRP (
Multiple HSRP ) の設定
HSRPでは、グループ毎に別々のルータ
をアクティブルータとして選定することで、ト
ラフィックを分散させることができる。
これをMHSRP( Multiple HSRP ) という。
MHSRPにより、1つのルータがあるHSRPグ
ループのアクティブルータとして働き、別の
HSRPグループのスタンバイルータとして機能す
るようことができるようになる。
MHSRPを設定することで、
1つのルータを複数のHSRP
グループに所属させることができ、複数のデフ
ォルトゲートウェイを用意することで、冗長性
を高めると共に、負荷分散を行うことができる
。
●イニシャル
●ラーニング
●リスニング
●スピーク
●スタンバイ
●アクティブ
(config-if)♯ stanby【
グループNo】ip【バーチャルIPアドレス】
この状態は、Helloパケットがアクティブルータから連続して受信される限り変わらない。
★HSRPにより使われるパケットフォーマット
●バージョン
HSRPメッセージのバージョンで、0がセットされる。
●Op Code(オペレーションコード)
パケットの種別を示す。
0はHelloパケット、1はCoupパケット、2はResignパケットを示す。
◆Coupパケット
アクティブルータはなかったルータが、アクティブルータになろうとするときに送信するパケット。
それまでアクティブルータであったルータから、自分よりも低いプライオリティのHello を受け取ると、
スタンバイルータは、Coup メッセージを送信して、アクティブルータ になろうとする。
Coupメッセージは、Preemptの設定がされている場合に送信する。
◆Resignパケット
それまでアクティブルータであったルータが、アクティブルータを辞めるときに送信するメッセージ。
アクティブルータ でHSRP の設定を削除すると、Resign メッセージを送信して、スタンバイルータ が即座にアクティブルータ になることを
促す。
●State
HSRPステータスを表示する。
0はInitial、1はラーニング、2はリスニング、4はスピーク 、8はスタンバイ、16はアクティブ
を示す。
●ハロータイム
Helloメッセージを送信する周期。
●ホールドタイム
この期間内にHelloパケットを受信しないと、該当ルータが無効であると見なす。
●プライオリティ
アクティブとスタンバイルータを選出する際の優先度として使われる。
高いほど、優先度も高い。デフォルト100。
●グループ
HSRPのグループ番号を表示する。
●予約
未使用フィールド。このフィールドには0が格納されている。
●認証データ
HSRPグループ認証に使われるパスワードを平文で表示する。
●仮想IPアドレス
HSRPグループの仮想IPアドレスを表示する。
デフォルトのプライオリテ
ィ値は100。
値の最も高いルータが「ア
クティブ」に設定され、2番目に高いルータが
「スタンバイ」になる。
(config-if)♯ stanby【 グループNo】priority【プライオリティ値】
HelloタイマとHoldDownタ
イマの値は、イン
ターフェイスコンフィグレーションモードで以
下のコマンドを設定する。
(config-if)♯stanby【
グループNo】timers【hellotime】【holdtime】
Hellotimeと一緒に、
Holddowntimeも設定する。またhellotimeには、1-255の間でHelloパケット
の送信間隔を秒単位で設定(デフォルト
は3秒)し、holdtimeには1-255の範囲で秒単位
で設定する。また、HoldDownタイムの値は、
Hellパケットの送信間隔の3倍以上
にする必要がある。
(config-if)♯stanby【
グループNo】preempt {delay minimum【秒(
0-3600)】reload【秒(0-3600)】
}
◆minimum・・・・・
minimumを指定す
ると、インターフェイスがアップ
後、上記の【秒】の指定値(0-3600)分だけ強制
的にルータを待機させてからプライオリティ値
の低いアクティブルータと置き換わらせるよう
に出来る。
◆reload・・・・・
reloadを指定する
と、ルータのreload後に【秒】
の指定値(0-3600)分だけ強制的に当該ルータ
を待機させるように出来る。この機能は、収束
までに時間を要するルーティングプロトコルを
扱う場合に有効。
これを解決するために、インターフェイスの状態
を監視してアクティブルータを切り替えるよう
にするための機能がHSRPインターフェイストラ
ッキング。
(config-if)# standby 【
グループNo】 track 【インターフェイスNo】【
インターフェイスプライオリティ】