HSRP 応用編:(1) HSRP のトラッキング対象インターフェイスを複数にする(1)

このページでは次のようなネットワークを使います。

a
hsrp-c1-1.png

※ この例で使うネットワークは、機能の理解を目的として簡略化しています。必ずしも最適な構成ではないことをご了承下さい。


Router-A とB の間でスタンバイ・グループ10 を作成して、端末にデフォルト・ゲートウェイを提供しています。

全てが正常に動作しているとき、Router-A がアクティブ・ルーター、Router-B がスタンバイ・ルーターとなっています。

Router-A では、インターフェイスe0/1 をトラッキングしており、e0/1 がダウンするとプライオリティを10 下げるように設定しています。

Router-A でプライオリティが10 下がって90 になると、プライオリティが95 のRouter-B がアクティブ・ルーターとなります。

しかし、Router-B とE の間のリンクは64kbps の低速シリアル回線です。Router-A とC の間のリンクが失われても、まだRouter-D との間には10Mbps のイーサネットが残っています。

このリンクを使って通信を継続したいところです。


IOS バージョン12.2(15)T からサポートされているオブジェクト・トラッキング(Object Tracking)という機能を使うことで実現できます。

従来のHSRP では、トラッキングの対象は自身の持つインターフェイス一つだけでした。オブジェクト・トラッキングでは、さまざまな対象(オブジェクト)をトラッキングすることができます。同時に複数のオブジェクトをトラッキングすることもできます。

今回は、二つのインターフェイスをトラッキング対象にして、両方のインターフェイスがダウンしたらHSRP のプライオリティを下げ、片方でもアップしたらプライオリティを元に戻すように設定します。


トラッキングの仕組みを理解するため、まずは一つのインターフェイスだけを対象にトラッキングしてみます。得られる結果は、従来のInterface Tracking と同じです。

Router-A でオブジェクト・トラッキングの設定をします。

Router-A#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router-A(config)#
Router-A(config)#track 1 interface ethernet 0/1 line-protocol
Router-A(config-track)#
Router-A(config-track)#delay down 1 up 15
Router-A(config-track)#exit
Router-A(config)#
Router-A(config)#interface ethernet 0/0
Router-A(config-if)#standby 10 track 1 decrement 10
Router-A(config-if)#^Z
Router-A#

① オブジェクトを設定します。

オブジェクト番号を1 にします(1から500の間で選択できます)。

トラッキング対象を、インターフェイスe0/1 のLine Protocol に指定します。

② トラッキング対象がダウンしてからプライオリティを下げるまでの遅延時間を秒数で設定します(0 から180 の間で選択できます)。

同時に、トラッキング対象がアップしてからプライオリティを戻すまでの遅延時間を秒数で設定します(0 から180 の間で選択できます)。

今回は、ダウン時の遅延を1 秒に、アップ時の遅延を15 秒に設定しました。この設定を省略すると、デフォルト値の0 秒が選択されます。

③ トラッキング対象を①で設定したオブジェクト番号1 に指定し(track 1)、ダウン時のプライオリティ下げ幅をdecrement で設定します。

今回はプライオリティの下げ幅を10 としました。


では、Router-A のインターフェイスe0/1 をダウンさせてみましょう。

Router-A#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router-A(config)#interface ethernet 0/1
Router-A(config-if)#shutdown
Router-A(config-if)#
*Feb 10 22:09:14.723: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.3 on Ethernet0/1 from FULL to DOWN, Neighbor Down: Interface down or detached
Router-A(config-if)#
*Feb 10 22:09:16.719: %LINK-5-CHANGED: Interface Ethernet0/1, changed state to administratively down
Router-A(config-if)#
*Feb 10 22:09:16.931: %HSRP-6-STATECHANGE: Ethernet0/0 Grp 10 state Active -> Speak
Router-A(config-if)#
*Feb 10 22:09:17.719: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/1, changed state to down
Router-A(config-if)#
*Feb 10 22:09:26.939: %HSRP-6-STATECHANGE: Ethernet0/0 Grp 10 state Speak -> Standby
Router-A(config-if)#

① インターフェイスe0/1 をshutdown しました。

② インターフェイスe0/1 がダウンしました。

③ スタンバイ・グループ10 のステートがActive からSpeak へ遷移しました。

④ スタンバイ・グループ10のステートがSpeak からStandby へ遷移しました。


Router-B のコンソールです。

Router-B#
*Feb 10 22:09:17.547: %HSRP-6-STATECHANGE: Ethernet0/0 Grp 10 state Standby -> Active
Router-B#

スタンバイ・グループ10 のアクティブ・ルーターになりました。

では、Router-A のインターフェイスe0/1 をno shutdown しましょう。

Router-A(config)#interface ethernet0/1
Router-A(config-if)#no shutdown
Router-A(config-if)#
*Feb 10 22:16:28.871: %LINK-3-UPDOWN: Interface Ethernet0/1, changed state to up
*Feb 10 22:16:29.871: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/1, changed state to up
Router-A(config-if)#
*Feb 10 22:16:35.639: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.3 on Ethernet0/1 from LOADING to FULL, Loading Done
Router-A(config-if)#
*Feb 10 22:16:44.011: %HSRP-6-STATECHANGE: Ethernet0/0 Grp 10 state Standby -> Active
Router-A(config-if)

① インターフェイスe0/1 をno shutdown しました。

② インターフェイスe0/1 がアップしました。

③ スタンバイ・グループ10 のステートがStanbay からActive へ遷移しました。



二つのオブジェクトをトラッキングする


では、トラッキングの対象を二つに増やしましょう。

まず、先に設定したオブジェクト・トラッキングの設定を削除しておいてください。

Router-A#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router-A(config)#no track 1
Router-A(config)#interface ethernet 0/0
Router-A(config-if)#no standby 10 track 1
Router-A(config-if)#^Z
Router-A#

Router-A に、改めてオブジェクト・トラッキングの設定をします。

Router-A#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router-A(config)#track 1 interface ethernet0/1 line-protocol
Router-A(config-track)#delay down 1 up 15
Router-A(config-track)#exit
Router-A(config)#
Router-A(config)#track 2 interface ethernet 0/2 line-protocol
Router-A(config-track)#delay down 1 up 15
Router-A(config-track)#exit
Router-A(config)#track 3 list boolean or
Router-A(config-track)#
Router-A(config-track)#object 1
Router-A(config-track)#object 2
Router-A(config-track)#exit
Router-A(config)#
Router-A(config)#interface ethernet 0/0
Router-A(config-if)#standby track 3 decrement 10
Router-A(config-if)#delay down 1 up 15
Router-A(config-if)#^Z
Router-A#

① 先ほどと同様に、インターフェイスe0/1 を対象とするトラッキングを設定します(Track 1)。

② 続けて、インターフェイスe0/2 を対象とするトラッキングを設定します。トラック番号が2 になっている点に注意してください。

③ もうひとつトラッキング対象のオブジェクトを作成します(Track 3)。複数の対象をトラッキングすることを意味するlist を指定し、ダウンと判断するための条件をboolean で指定します。

boolean or は、list の中のオブジェクトが一つでもアップしていればアップ、全てダウンしたらダウンさせる、という意味です。
boolean and にすると、全てのオブジェクトがアップしていない限りダウン、全てがアップしたらアップ、という意味になります。

④ 二つのトラッキング対象オブジェクト(Track 1 と2)をTrack 3 のトラッキング対象に指定します。

⑤ オブジェクトTrack 3 をスタンバイ・グループ10 のトラッキング対象に設定します。


hsrp-c1-2.png


Router-A のインターフェイスe0/1 をshutdown してみます。

Router-A#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router-A(config)#interface ethernet0/1
Router-A(config-if)#shutdown
Router-A(config-if)#
*Feb 10 22:35:51.263: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.3 on Ethernet0/1 from FULL to DOWN, Neighbor Down: Interface down or detached
Router-A(config-if)#
*Feb 10 22:35:53.259: %LINK-5-CHANGED: Interface Ethernet0/1, changed state to administratively down
*Feb 10 22:35:54.259: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/1, changed state to down
Router-A(config-if)#

① Ethernet0/1 をshutdown しました。

② Ethernet0/1 はダウンしますが、HSRP に変化は見られません。

hsrp-c1-3.png

続けて、Router-A のインターフェイスe0/2 をshutdown します。

Router-A(config)#interface ethernet0/2
Router-A(config-if)#shutdown
Router-A(config-if)#
*Feb 10 22:42:06.187: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.4 on Ethernet0/2 from FULL to DOWN, Neighbor Down: Interface down or detached
Router-A(config-if)#
*Feb 10 22:42:08.179: %LINK-5-CHANGED: Interface Ethernet0/2, changed state to administratively down
Router-A(config-if)#
*Feb 10 22:42:08.299: %HSRP-6-STATECHANGE: Ethernet0/0 Grp 10 state Active -> Speak
Router-A(config-if)#
*Feb 10 22:42:09.179: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/2, changed state to down
Router-A(config-if)#
*Feb 10 22:42:18.299: %HSRP-6-STATECHANGE: Ethernet0/0 Grp 10 state Speak -> Standby
Router-A(config-if)#

① インターフェイスe0/2 をshutdown しました。

② インターフェイスe0/2 がダウンしました。

③ スタンバイ・グループ10 のステートがActive からSpeak に遷移した。

④ スタンバイ・グループ10 のステートがSpeak からStandby に遷移した。


Router-B がアクティブ・ルーターとなったのを確認したら、Router-A のインターフェイスe0/1 をno shutdown しましょう(インターフェイスe0/2 でも良いです)。

Router-A(config)#interface ethernet0/1
Router-A(config-if)#no shutdown
Router-A(config-if)#
*Feb 10 22:47:06.631: %LINK-3-UPDOWN: Interface Ethernet0/1, changed state to up
*Feb 10 22:47:07.639: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/1, changed state to up
Router-A(config-if)#
*Feb 10 22:47:14.687: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.3 on Ethernet0/1 from LOADING to FULL, Loading Done
Router-A(config-if)#
*Feb 10 22:47:20.679: %HSRP-6-STATECHANGE: Ethernet0/0 Grp 10 state Standby -> Active
Router-A(config-if)#

① インターフェイスe0/1 をno shutdown しました。

② インターフェイスe0/1 がアップしました。

③ スタンバイ・グループ10 のステートがStandby からActive に遷移しました。

hsrp-c1-4.png

このように、オブジェクト・トラッキングを使うことで、複数のインターフェイスを同時にトラッキングすることができるようになり、より柔軟な運用が行えます。