30 Minutes NetWorking
No.SW19

30Minutes NetWorking

BCMSN

第19回HSRP(2) HSRPの動作

■ 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アドレスは以下の計算によって作られた値になる。

  1. Ciscoのベンダーコード … 0000.0c
  2. HSRPコード … 07.ac
  3. HSRPグループ番号 … HSRPのグループ番号を16進数にしたもの
スーパーインター博士

HSRPコードは「07.ac」固定だ。
この3つを並べたものが、MACアドレスになる。

ハイパーネット助手

は〜。じゃあ、例えばHSRPグループ番号が「10」だとすると。

  1. Ciscoのベンダーコード … 0000.0c
  2. HSRPコード … 07.ac
  3. 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宛のフレームを受け取る。

30 Minutes NetWorking No.SW19

管理人:aji-ssz(at)selene.is.dream.jp