デフォルトゲートウェイ冗長化における仮想MACアドレスとグループ番号の関係

1. はじめに

 デフォルトゲートウェイ冗長化するプロトコルとして、「HSRP」「VRRP」「GLBP」の3つが挙げられ、これらをまとめて「FHRP」と呼ばれます。
デフォルトゲートウェイ冗長化する場合、対象機器で仮想IPアドレスを設定します。また、仮想MACアドレスは設定されたグループ番号によって自動で割り振られます。振り分けられる際は、10進数で設定したグループ番号を16進数に変換した結果によって決定されます。今回は、そんな仮想MACアドレスとグループ番号の関係について書いていきます。
※今回の記事で記載しているHSRPは、バージョン1を示しています。

2. HSRPとVRRP

 HSRPとVRRPを一緒に紹介するのは、設定する際にグループ番号の使用できる範囲が「0 ~ 255」で同じという点で共通点があるためです。
仮想MACアドレスについては、それぞれ以下のようなパラメータになり、「XX」はグループ番号によって変化します。例として、グループ番号が「10」と「20」の場合で、HSRPとVRRPでどのような仮想MACアドレスになるのか記載します。「10」の場合は、10進数から16進数に変換後は「0A」になり、「20」の場合は、10進数から16進数に変換後は「14」になります。そして、これらの16進数変換後の値がMACアドレスの後ろに入り、仮想MACアドレスが決定します。
CCNAの試験でグループ番号から仮想MACアドレスを推測する問題が出題される可能性もあるので、グループ番号と仮想MACアドレスの関係を覚えておきたいです。

プロトコル 仮想MACアドレスの型 グループ番号が「10」の仮想MACアドレス グループ番号が「20」の仮想MACアドレス
HSRP 0000.0C07.ACXX 0000.0C07.AC0A 0000.0C07.AC14
VRRP 0000.5E00.01XX 0000.5E00.010A 0000.5E00.0114

画像1.1.HSRPの構成例

画像1.2.HSRPの構成(グループ番号:10)

HSRPとVRRPで設定可能なグループ番号が「0 ~ 255」である点も併せて解説していきます。
先ほど、グループ番号を10進数から16進数に変換した値が仮想MACアドレスの後ろに入ると記載しました。よって、16進数の最大値がグループ番号の最大値になります。 2桁の16進数で最大値は「FF」になります。これを10進数に変換すると、「255」になります。これが、グループ番号として利用できる範囲が「0 ~ 255」である理由になります。もし、グループ番号の利用範囲に「256」が範囲に含まれると、HSRPの場合は仮想MACアドレスが「0000.0C07.A100」となり、あらかじめ仮想MACアドレスとして決まっているパラメータの「0000.0C07.ACXX」から逸れてしまいます。

HSRPにはバージョン2(以降、HSRPv2と記載)があり、利用可能なグループ番号がバージョン1とは異なり、「0 ~ 4095」となっています。グループ番号で利用できる範囲が広がるということは、仮想MACアドレスも変化します。HSRPv2の仮想MACアドレスは「0000.0C9F.FXXX」になります。そして、3桁の16進数で最大値は「FFF」となり、10進数に変換すると「4095」になるので、グループ番号の範囲が「0 ~ 4095」である理由です。

Q. HSRPバージョン2とHSRPバージョン1の違いは何ですか。
バージョン 1 のグループ番号は 0 ~ 255 の範囲に制限されます。HSRP バージョン 2 では、グループ番号の範囲が 0 ~ 4095 に拡大されています。たとえば、新しいMACアドレス範囲0000.0C9F.Fyyyを使用できます。yyy = 000-FFF(0 ~ 4095)です。
引用元:ホットスタンバイルータプロトコル(HSRP)に関するFAQを確認する1

3. GLBP

 GLBPは、1つのグループに含められるメンバーの最大値は4つであり、HSRPやVRRPのような Active-Stanby 構成とは異なり、Active-Active 構成によるデフォルトゲートウェイの冗長と負荷分散を行います。そのため、グループに含まれるメンバーにそれぞれ仮想MACアドレスが設定されます。グループ番号の使用できる範囲が「0 ~ 1023」、プライオリティの使用できる範囲が「1 ~ 255(デフォルト:100)」です。仮想MACアドレスについては、後ろの「YY」はプライオリティ、「X.XX」はグループ番号によって変化します。

プロトコル 仮想MACアドレスの型 グループ番号が「10」の仮想MACアドレス グループ番号が「20」の仮想MACアドレス
GLBP 0007.B40X.XXYY 0007.B400.0A01 0007.B400.1401

画像1.3.GLBPの構成例

画像1.4.GLBPの構成(グループ番号:10)

プライオリティの設定可能な値は「1 ~ 255(デフォルト:100)」であり、仮想MACアドレスに用いられる際は、これまでのようにプライオリティの値を16進数に変換するのではなく、単純にプライオリティが大きい機器順で「01>02>03>04」が使用されます。例として、画像[画像01-04_GLBPの構成(グループ番号:10)]の環境では各ルータでプライオリティをRT01は「105」、RT02は「100」を設定しました。すると、RT01は「01」、RT01は「02」が仮想MACアドレスに設定されます。

GLBP ゲートウェイ プライオリティ
また、GLBP ルータがバックアップ仮想ゲートウェイとして機能するかどうかや、現在の AVG の機能が停止したときに AVG になる順序を決定するのもプライオリティです。 glbp priority コマンドを使用して 1 ~ 255 の値を設定し、各バックアップ仮想ゲートウェイのプライオリティを設定できます。
引用元:GLBP の設定 [Cisco IOS 15.1S]2

GLBPで設定可能なグループ番号が「0 ~ 1023」である理由のソースが見つけられなかったため、私個人の憶測で記載しています。
HSRPやVRRPでは、仮想MACアドレスの変化する桁が2つであることから「256(= 16 x 16)」となり、ここから「1」を引くことで、グループ番号の最大値「255」となります。GLBPでは、仮想MACアドレスの変化する桁が3つであることから「4096(= 16 x 16 x 16)」となります。ただ、GLBPでは1つのグループに対して最大で4つの仮想MACアドレスを使用します。そのため、「4096」から1つのグループに対して設定可能な仮想MACアドレスの最大値である「4」で割り、「1024」となった後で、「1」を引くと「1023」がGLBPで使用できるグループ番号の最大値であると思います。

画像1.5.仮想MACアドレスと16進数

画像1.6.仮想MACアドレスと16進数

追記

(2024/05/11)
[3. GLBP]における記載内容に誤り
誤: プライオリティの設定可能な値は「1 ~ 255(デフォルト:100)」であり、仮想MACアドレスに用いられる際は、これまでのようにプライオリティの値を16進数に変換するのではなく、単純にプライオリティが大きい機器順で「01>02>03>04」が使用されます。
正:
プライオリティの設定可能な値は「1 ~ 255(デフォルト:100)」であり、仮想MACアドレスに用いられる際は、これまでのようにグループ番号の値を16進数に変換するのではなく、単純にプライオリティが大きい機器順で「01>02>03>04」が使用されます。

参考資料