HSRP 応用編:(8) HSRP バージョン2 のパケット・フォーマット

HSRP バージョン2 のパケット・フォーマットです。

a















hsrp-c8-1.png



hsrp-c8-2.png
この例ではIPv4 を使っています。


Ethernet 

宛先IP アドレスが224.0.0.102 に変わったことに伴い、宛先MAC アドレスはは01-00-5E-00-00-66 に変わりました。

送信元MAC アドレスは、アクティブ・ルーターの場合はバーチャルMAC アドレスです。

アクティブ以外のルータは、インターフェイスのMAC アドレスを使います。



IP

HSRP はサブネット内でのみ有効なプロトコルです。

HSRP のパケットはルーティングされる必要がないので、IP ヘッダのTTL(Time To Live)は必ず1 が入ります。

HSRP はUDP を使用するので、Protocol フィールドには17(10進数)が入ります。

宛先IP アドレスには、サブネット内のすべてのHSRP ルーターを意味する224.0.0.102 が入ります。

送信元IP アドレスは、HSRP パケットを送信するインターフェイスのリアルIP アドレスとなります。



UDP

UDP のポート番号は、宛先・送信元のどちらもHSRP を意味する1985(10進数)が入ります。



HSRP

 
TLVs

HSRP バージョン2 では、パケット・フォーマットにTLV(Type Length and Value Encoding)方式を採用しています。

HSRP バージョン2 で使うTLV は以下の4 種類です。



 1. グループ・ステートTLV

 2. インターフェイス・ステートTLV

 3. 認証テキスト(Text Authentication)TLV

 4. MD5 認証 TLV



グループ・ステートTLV

hsrp-c8-3.png


hsrp-c8-4.png

Version

HSRP バージョン2 を意味する2 が入ります。


Opcode

HSRP メッセージの種類を意味します。
HSRP のOpcode(オプコード)は、Hello、Coup、Resign の3 種類があります。

HSRP バージョン1 にあったAdvertisement メッセージは、後述するインターフェイス・ステートTLV により実現されるため、Opcode からは無くなりました。


State

スタンバイ・グループに所属しているルーターのステート(状態)を意味します。
HSRP のステートは、Disabled、Init、Learn、Listen、Speak、Standby、Active の7 種類があります。

※ Disabled はルーター内部でのみ使用されるステートなので、HSRP パケットのステート・フィールドに0 が入ることはありません。


IP version

使用するIP のバージョンが入ります。


Group Number

スタンバイ・グループ番号が入ります。設定可能な番号が4096 個に拡張されたのに伴い、フィールド長も2オクテットに拡張されています。


Identifier

送信元インターフェイスのMAC アドレスが入ります。


Priority

ルーターに設定されたプライオリティの値が入ります。
プライオリティが一番高いルータがアクティブ・ルーターに、二番目に高いルーターがスタンバイ・ルーターとなります。
プライオリティが同じ場合は、リアルIP アドレスが比較の対象となります。
プライオリティのデフォルト値は100です(0~255の間で設定可能)。


Hello Time

ルータがHello メッセージを送信する間隔を意味します。
デフォルトは3秒です(1~254 秒の間で設定可能)。


Hold Time

他のルーターから受信したHello メッセージの内容を保持する時間を意味します。
デフォルトは10秒です("Hello Time + 1秒" ~ 255 秒の間で設定可能)。

アクティブ・ルーターから最後のHello メッセージ受信後Hold Time の秒数が経過すると、スタンバイ・ルーターは、アクティブ・ルーターが存在しなくなったと判断して自分がアクティブ・ルーターになろうとします。

Hello Time とHold Time は、アクティブ・ルーターに設定された値がスタンバイ・グループ内の全ルーターで共有されます。
アクティブ・ルーターが切り替わると、新しいアクティブ・ルーターに設定されている値に変わります。

※ アクティブ・ルーターの切り替わりに伴って値が変わるのは、新しいアクティブ・ルーター へ明示的に値が設定されている場合だけです。明示的に設定されていない場合(デフォルト値)は、以前のアクティブ・ルーターの値が使われ続けます。

同様に、スタンバイ・ルーターから最後のHello メッセージ受信後Hold Time の秒数が経過すると、Listen ステートであったルーターはスタンバイ・ルーターが存在しなくなったと判断して自分がスタンバイ・ルーターになろうとします。


Virtual IP Address

設定された(もしくは他のルーターから学習した)バーチャルIP アドレスが格納されます。




Interface State TLV

hsrp-c8-5.png

hsrp-c8-6.png

Active Groups

自分がアクティブ・ルーターとなっているスタンバイ・グループの数が入ります。


Passive Groups

自分がアクティブ・ルーターとなっていないスタンバイ・グループの数が入ります。




Text Authentication TLV

hsrp-c8-7.png

hsrp-c8-8.png

Authentication Data

認証用の文字列(平文)が入ります。
文字列を設定することで、スタンバイ・グループに参加するルーターの簡易認証を行うことができます。




MD5 Authentication TLV

hsrp-c8-9.png

hsrp-c8-10.png

Algorithm

認証文字列の暗号化に使用するアルゴリズムが入ります。現在サポートしているのはMD5 のみなので、必ずMD5 を意味する1 が入ります。


Padding

 未使用フィールドです。必ず0 が入ります。


Flags

未定義フィールドです。現在は使用されていません。


IP Address

送信元インターフェイスのIP アドレスです。
4 オクテットしか幅がないので、IPv6 では使用できないと思われます(未確認)。


Key ID

キー・チェインのID が入ります。キー文字列を直接設定した場合は0 が入ります。


Authentication Data

MD5 のダイジェスト文字列が入ります。