■ HSRPメッセージ
さて、前回HSRPの基礎については話したわけだな。
デフォルトゲートウェイの冗長化でしたよね。
うむ。それを実現する手段が…。
仮想ルータでしたっけ。
そうだ。仮想ルータ宛に送られたものを、実ルータが受け取る。この流れなわけだ。
実際に受け取るルータがアクティブルータ、予備機として動作しているのがスタンバイルータだったわけだ。
でしたでした。
このほかに、アクティブでもスタンバイでもない、さらに予備の予備であるその他のルータもある。
アクティブとスタンバイルータは、その生存確認のためにHelloメッセージを定期的に送信する。
でましたね、こんにちはメッセージ。
他にもHSRPグループは情報を交換するためにHSRPメッセージを送る。
このメッセージは3種類ある。
- Hello … 生存確認。送信元ルータがアクティブ/スタンバイである、もしくはなることができることを示す
- Coup … 送信元ルータがアクティブになりたいことを示す
- Resign … 送信元ルータがこれ以上アクティブでいられないことを示す
Helloはいいとして、CoupとResign?
アクティブになりたい? アクティブでいられない?
CoupとResignはスタンバイpreemptで使用する。詳しくは後述だ。
さて、この3種類に含まれる情報はといえば。
- ルータの状態
- HelloTime・HoldTime
- プライオリティ
- HSRPグループ番号
- パスワード
- 仮想IPアドレス
これらの情報が入っている。
まず1つ目のポイント、HelloTime・HoldTime。
はろーたいむ、だから。Helloの間隔?
ほーるどたいむ?
HelloTimeはその通り、Hello間隔。
HoldTimeは、ダウンと判定するまでの時間のことだ。HoldTimeがすぎてもHelloがない場合、ダウンとみなす。
あぁ、なるほど。
そして、プライオリティ。8ビットの値で、デフォルトは100だ。
もっとも高いプライオリティのルータがアクティブとなる。
8ビットってことは0〜255ですね。
同じ場合は?
ルータIDだな。
あ〜、最も高いIPアドレスを持つルータってことですか。
うむ。そして、仮想ルータが使用する仮想IPアドレスが入っている。
ま、これらの情報をHSRPグループで交換している、ということだ。
はは〜。
ちなみにルータの状態ってなんです? アクティブとかスタンバイですか?
■ ルータの状態
そうだ。その2つも含め6種類の状態がある。
- Initial … 起動時・インタフェース再設定時
- Learn … アクティブルータからHelloをまだ受信していない状態
- Listen … アクティブでもスタンバイでもない「その他」状態
- Speak … Helloを送信し、アクティブ・スタンバイの選択に関与する状態
- Standby … スタンバイルータ。Helloを送信する
- Active … アクティブルータ。Helloを送信する
は〜。6つもあるんですか。
ん〜っと、SpeakとListenがいまいちわからないです。
ネット君がわからないのは日常茶飯事だとしても、たしかにちょっと区別しづらい。
移行遷移図でも書こう。
[FigureSW19-01:ルータの状態遷移図]
本来はもっと細かいのだが、まぁ簡略に必要なところだけ抜き出すとこんな感じだな。
Active、Stanby、Listenのどれかが通常の状態になる。その他は移行状態だな。
ん〜〜〜。
やっぱりListenとSpeakがわかりづらいです。
そうだな、つまり、Helloがタイムアウトしたり、自分の方がプライオリティが高かったりして、「アクティブとスタンバイになれる」と判断した時点でSpeakになるのだよ。
Speakになるとどうなるんです?
ListenではHelloを送らない。SpeakになるとHelloを送る。つまり、自分のプライオリティを他ルータに教えるわけだな。もし自分のプライオリティが高いなら、スタンバイかアクティブになる、と。
ははぁ、俺の方が偉い、と宣伝してまわるわけですね。
だからSpeak?
ま、そういう覚え方でいいんじゃないかな。
ともかく、基本的にはHoldTimeのタイムアウトか、自身のプライオリティが高い場合、状態が変化する、と覚えておくとよい。
了解です。
■ 仮想アドレス
さて、前回の図をもう一度みてもらおう。
[FigureSW18-04:HSRP]
「ホストAのデフォルトゲートウェイは実際には存在しない仮想ルータのIPアドレスになっています」とあるな。
ありますね。
つまり、仮想ルータはIPアドレスを持つ。これが仮想IPアドレスというわけだな。
仮想IPアドレス。実在しない仮想ルータのIPアドレス。
ホストから見た場合、このIPアドレスを持つ(仮想)ルータがデフォルトゲートウェイになるわけですよね。
そうだ。さて、デフォルトゲートウェイ宛に異なるネットワークへのパケットを送りたい。
さて、ホストはどうする? 4つのアドレスは?
4つのアドレス? あぁ、はいはい。送信元IPは自分、送信元MACは自分。
宛先IPは宛先ホスト、宛先MACはデフォルトゲートウェイです。
つまり?
つまり?
ニブいな、ホントに君は。
そのニブさは驚嘆せざるを得ない。
そうですか、えへへへ。
褒めてねぇ。
はぅっ。
ともかくだ、4つのアドレスのうち、まだ入手してないアドレスがあるだろう?
イーサネットで宛先にパケットを送りたい時、必ず事前にすることは?
あ〜。あ〜あ〜あ〜あ〜。ARP、ですね。
そう、つまり仮想ルータ宛のARPが実行されることになるわけだ。
[FigureSW19-02:仮想ルータ宛のARP]
仮想MACアドレス?
そうだ。仮想ルータが持つMACアドレスだから、仮想MACアドレス。そのまんまだな。
へぇ。でも、MACアドレスって物理的にNICが保持するアドレスですよね。
仮想なのに物理的なアドレスを持つんですか?
なので、仮想MACアドレスは以下の計算によって作られた値になる。
- Ciscoのベンダーコード … 0000.0c
- HSRPコード … 07.ac
- HSRPグループ番号 … HSRPのグループ番号を16進数にしたもの
HSRPコードは「07.ac」固定だ。
この3つを並べたものが、MACアドレスになる。
は〜。じゃあ、例えばHSRPグループ番号が「10」だとすると。
- Ciscoのベンダーコード … 0000.0c
- HSRPコード … 07.ac
- HSRPグループ番号 … 10を16進数にした0a
で。
- 0000.0c07.ac0a
ってことですか?
うむ、ネット君がごく稀に発揮する理解力で理解してくれたようだな。
その通りだ。
はは〜、なるほど。
■ HSRPの動作
では、いままで説明したことを統合しよう。
[FigureSW19-03:HSRPの動作]
なるほど、見事なものですね。
やはりポイントは「ホストに障害を意識させず、自動的にデフォルトゲートウェイが切り替わる」ところだな。
う〜ん、確かにホスト側からみれば、デフォルトゲートウェイはMACアドレスも変わらないし、特に障害が発生したかどうかもわからないですよね。
あるとすれば、アクティブがダウンして、スタンバイがそれを検出するまでの間、つまりホールドタイムの間は一時的に通信不能になる。これはしょうがない。
アクティブがダウンして、スタンバイが検出する間は、アクティブが存在しないからですね。
そういうことだ。どうしてもすばやく切り替えたい場合、ホールドタイムを短く設定することもできる。ただし、Hello間隔の3倍がホールドタイムの目安となっているので、極端に短くはできない。
そうなんですか?
うむ。さらに、あまりHello間隔を短くするのも考え物だ。
その分だけ、Helloが頻繁に送信されることにより、帯域を圧迫することもありえるからな。
そういわれればそうですね。
さて、今回はこれくらいにしておこう。
次回はHSRPで使われる設定を説明しよう。
はい。
というわけで、また次回。
いぇっさ〜。
30分間ネットワーキングでした〜♪
- スタンバイpreempt
-
[Stand-By pre-empt]
pre-emptは「占有する」。
- ホールドタイムの間
-
デフォルトは10秒です。
なお、ハロータイムはデフォルト3秒。
- ハイパーネット君の今日のポイント
-
- HSRPグループのルータはHSRPメッセージを交換して、情報をやりとりする。
- Helloによりアクティブ・スタンバイの生存を確認する。
- CoupとResignによりルータの役割を変更する。
- もっとも高いプライオリティを持つルータがアクティブになる。
- 仮想ルータは仮想IPアドレスと仮想MACアドレスを保持する。
- アクティブルータは仮想IP宛のARPに仮想MACで応答する。
- アクティブルータは仮想MAC宛のフレームを受け取る。
- HSRPグループのルータはHSRPメッセージを交換して、情報をやりとりする。