なぜファーストホップ冗長化が必要か

一般的なクライアント端末は、自分が所属するサブネット外の宛先と通信する際、あらかじめ設定された1つのデフォルトゲートウェイ(通常はそのサブネットのルータまたはレイヤ3スイッチのIPアドレス)へパケットを送ります。もし、このデフォルトゲートウェイとして指定された機器が故障してしまうと、クライアント側の設定を1台ずつ手動で変更しない限り、そのサブネットの端末は外部と通信できなくなってしまいます。

FHRP(First Hop Redundancy Protocol、ファーストホップ冗長プロトコル)は、複数の物理ルータまたはレイヤ3スイッチを組み合わせて、クライアントから見てあたかも1台の仮想的なルータ(仮想ゲートウェイ)が存在するかのように見せかける仕組みです。FHRPグループを構成する各機器のクライアント側インターフェースは、クライアントと同じL2ネットワーク・IPサブネットに接続されます。クライアント側は、この仮想的なIPアドレス(仮想IPアドレス)だけをデフォルトゲートウェイとして設定しておけば、実際にパケットを処理する機器が裏側で切り替わっても、クライアント側の設定を変更する必要がありません。

FHRPの基本的な仕組み

FHRPに対応する複数のルータまたはレイヤ3スイッチは、あらかじめ決められた1つの仮想IPアドレスをクライアントのデフォルトゲートウェイとして提供します。

HSRPとVRRPでは、グループのルータが仮想MACアドレスを共有し、通常時は1台だけがクライアントからのトラフィックを転送します。

  • HSRPでは、アクティブルータだけが実際にクライアントからのトラフィックを転送します。
  • VRRPでは、マスタールータだけが実際にクライアントからのトラフィックを転送します。
  • 残りのルータは、トラフィックを転送するルータの状態を監視しながら待機します。
  • トラフィックを転送するルータに障害が発生すると、待機していたルータの中から新たに役割を引き継ぐルータが選ばれます。

HSRPとVRRPの役割選出にはプライオリティ(優先度)が使われ、値の大きいルータが優先されます。プライオリティが同じ場合、HSRPではインターフェースIPアドレス、VRRPではプライマリIPアドレスの大小でタイブレークされます。仮想MACアドレスは切り替え前後で変化しないため、クライアント端末は改めてARP解決をやり直す必要が無く、利用者が意識することなく透過的にフェイルオーバーが行われます。

代表的なFHRPの種類

CCNA 200-301では、具体的な設定コマンドまでは問われませんが、代表的な3つのFHRPの目的・特徴の違いを理解しておく必要があります。

HSRP(Hot Standby Router Protocol)

Cisco独自(プロプライエタリ)のFHRPです。ルータの役割はアクティブ/スタンバイという名称で表され、通常時は1台のアクティブルータだけがトラフィックを処理します。

VRRP(Virtual Router Redundancy Protocol)

IETFのRFCで標準化された、業界標準のFHRPです。ルータの役割はマスター/バックアップという名称で表されますが、基本的な考え方(1台だけが処理し、残りは待機する)はHSRPと同様です。マルチベンダー環境で使う必要がある場合に選ばれます。

GLBP(Gateway Load Balancing Protocol)

Cisco独自のFHRPで、HSRP・VRRPとは異なり、複数のルータに同時にトラフィックを分散(ロードバランシング)できる点が最大の特徴です。GLBPでは、グループ内の代表ルータ(AVG:Active Virtual Gateway)が、クライアントからのARP要求に応じて、複数のルータ(AVF:Active Virtual Forwarder)ごとの仮想MACアドレスを割り当てることで、クライアントごとに実際にパケットを処理するルータを分散させます。既定ではラウンドロビン方式で分散しますが、他の負荷分散方式も選択できます。

3つのFHRPの比較

観点HSRPVRRPGLBP
標準化Ciscoプロプライエタリ業界標準(RFC)Ciscoプロプライエタリ
ルータの役割名アクティブ/スタンバイマスター/バックアップAVG/AVF
単一FHRPグループでの負荷分散非対応非対応対応(複数ルータへの分散)

参考:代表的な設定コマンド

CCNA 200-301の出題範囲3.5は「目的、機能、概念の説明」であり、具体的な設定コマンドの入力・検証そのものは対象外です。ただし、CLI上でどのように見えるかを知っておくと、ここまでの用語(仮想IPアドレス・プライオリティ・プリエンプト等)の理解が深まるため、参考として代表的なコマンドを紹介します。

HSRPの設定例

Router(config)# interface GigabitEthernet0/1
Router(config-if)# standby version 2
Router(config-if)# standby 10 ip 192.168.1.1
Router(config-if)# standby 10 priority 110
Router(config-if)# standby 10 preempt

standby <グループ番号> ipで仮想IPアドレスを指定し、priorityでプライオリティを設定します(既定値は100)。preemptは、このルータのプライオリティがより高い場合に、後から起動・復旧した場合でも積極的にアクティブルータの役割を奪い返すことを許可する設定です(preemptを指定しない場合、現在のアクティブルータが稼働している限り、一度アクティブでなくなったルータは、たとえプライオリティが高くても自動的には再度アクティブに戻りません)。

Router# show standby brief
                     P indicates configured to preempt.
                     |
Interface   Grp  Pri P State   Active          Standby         Virtual IP
Gi0/1       10   110 P Active  local           192.168.1.2     192.168.1.1

VRRPの設定例

Router(config)# interface GigabitEthernet0/1
Router(config-if)# vrrp 10 ip 192.168.1.1
Router(config-if)# vrrp 10 priority 110
Router(config-if)# vrrp 10 preempt

HSRPとほぼ同じ構文で、コマンド名がstandbyからvrrpに変わります。VRRPは既定でpreemptが有効になっている点がHSRP・GLBPとの違いです。

GLBPの設定例

Router(config)# interface GigabitEthernet0/1
Router(config-if)# glbp 10 ip 192.168.1.1
Router(config-if)# glbp 10 priority 110
Router(config-if)# glbp 10 preempt

GLBPも同様にglbpコマンドで設定します。AVG(代表ルータ)を決めるプライオリティの考え方はHSRP・VRRPと共通ですが、GLBPでは複数のAVFへ負荷分散を行うため、show glbp briefの出力では、AVGとは別に各AVFのフォワーディング状態も確認できます。