HSRP 応用編:(4) 異なる種類のオブジェクトをHSRP のトラッキング対象とする

HSRPを究める:応用編(2) HSRP のトラッキング対象インターフェイスを複数にする(2)』では、複数のインターフェイスをboolean and でトラッキングしました。
実用性に乏しいことをお話しましたが、ネットワークの構成しだいでboolean and が有効に働くこともあります。

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

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

※ これまでに設定したオブジェクト・トラッキングの設定は削除しておいてください。


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

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

Router-C とD はインターネットへの出口になっており、それぞれ別なISP に接続しています。

すべてが正常に動作しているとき、Router-A が中継するデータはRouter-C を経由、Router-B が中継するデータはRouter-D を経由してインターネットへ転送されます。

Router-C が使用不可となると、Router-A のルーティング・テーブル上でインターネット宛のネクスト・ホップがRouter-B のインターフェイスe0/0(192.168.1.101)へ切替わります。

それまでのPC1 → Router-A  →  Router-C  →  インターネットという流れが、PC-1  →  Router-A  →  Router-B  →  Router-D  →  インターネットとなります。

通信は継続できますが、スタンバイ・グループ10 のアクティブ・ルーターはRouter-A のままです。

アクティブ・ルーターがRouter-B に切替われば、余計なホップ(Router-A)が介在することなインターネットへの接続性を確保できます。


Router-A から最短でインターネットへ到達には、Router-C を経由する必要があります。また、Router-A からRouter-C へ到達するには、(インターネットを経由しない限り)インターフェイスe0/1 しか道はありません。

Router-C が使用不可となるか、Router-A のインターフェイスe0/1 がダウンすると、PC-1 のインターネット宛のパケットはRouter-B を経由することになります。

つまり、この二つの状況のどちらか一方が発生すると、アクティブ・ルーターがRouter-B へ切替わった方が都合が良いというわけです。

boolean and を使用すると、二つの条件のどちらか一方の発生でスタンバイ・グループのプライオリティを下げることができます。

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)#delay down 1 up 10
Router-A(config-track)#exit
Router-A(config)#
track 2 ip route 1.1.1.5/32 reachability
Router-A(config-track)#delay down 1 up 10
Router-A(config-track)#exit
Router-A(config)#
track 3 list boolean and
Router-A(config-track)#
object 1
Router-A(config-track)#
object 2
Router-A(config-track)#delay down 1 up 10
Router-A(config-track)#exit
Router-A(config)#
interface ethernet 0/0
Router-A(config-if)#
standby 10 track 3 decrement 10
Router-A(config-if)#^Z
Router-A#

① インターフェイスe0/1 のLine Protocol をトラッキングするTrack 1 を作成します。Down Delay タイマーは1 秒に設定します。

② Router-C のインターフェイスLoopback 0(1.1.1.5/32)をトラッキングするTrack 2 を作成します。

③ リストをboolean and するTrack 3 を作成します。

④ 先に作成したTrack 1 と2 をTrack 3 の監視対象オブジェクトに指定します。

⑤ Track 3 をインターフェイスe0/0 のスタンバイ・グループ10 でトラッキングします。


Router-A で、debug track を実行しておきます。

Router-A#
Router-A#debug track
Router-A#

まずは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 11 14:16:13.564: Track: 1 Down change delayed for 1 secs
Router-A(config-if)#
*Feb 11 14:16:13.572: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.3 on Ethernet0/1 from FULL to DOWN, Neighbor Down: Interface down or detached
*Feb 11 14:16:14.580: Track: 1 Down change delay expired
*Feb 11 14:16:14.580: Track: 1 Change #4 interface Et0/1, line-protocol Up->Down
Router-A(config-if)#
*Feb 11 14:16:15.240: Track: 3 Down change delayed for 1 secs
Router-A(config-if)#
*Feb 11 14:16:15.572: %LINK-5-CHANGED: Interface Ethernet0/1, changed state to administratively down
*Feb 11 14:16:16.252: Track: 3 Down change delay expired
*Feb 11 14:16:16.252: Track: 3 Change #7 list, boolean and Up->Down(->10)
Router-A(config-if)#
*Feb 11 14:16:16.572: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/1, changed state to down
Router-A(config-if)#
*Feb 11 14:16:19.232: %HSRP-6-STATECHANGE: Ethernet0/0 Grp 10 state Active -> Speak
Router-A(config-if)#
*Feb 11 14:16:29.232: %HSRP-6-STATECHANGE: Ethernet0/0 Grp 10 state Speak -> Standby

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

② インターフェイスe0/1 のダウンを検出して、Down Delay タイマーが稼動を始めます。

③ 1 秒に設定してあった、Down Delay タイマーが満了しました。

④ Track 1 が、インターフェイスe0/1 のLine Protocol がダウンしたことを警告します。

⑤ Track 1 の警告を受けて、Track 3 のDown Delay タイマーが稼動を始めます。

⑥ Track 3 のDown Delay タイマーが満了しました。

⑦ Track 3 が警告を発します。

⑧ Track 3 の警告を受けて、スタンバイ・グループ10 のプライオリティが10 下げられ、ステートがActive からSpeak に遷移します。

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


hsrp-c4-2.png

次は、Router-C のインターフェイスLoopback0(1.1.1.5/32)への到達性をトラッキングしてみます。

※ Router-A のインターフェイスe0/1 をno shutdown して、元に戻して置いてください。

Router-C でno ip routing を設定し、IP ルーティングを無効にします。

Router-C#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router-C(config)#no ip routing
Router-C(config)#

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

Router-A#
*Feb 11 14:51:56.120: Track: 2 Down change delayed for 1 secs
*Feb 11 14:51:57.120: Track: 2 Down change delay expired
*Feb 11 14:51:57.120: Track: 2 Change #4 IP route 1.1.1.5/32, OSPF->no route, reachability Up->Down

Router-A#
*Feb 11 14:51:57.840: Track: 3 Down change delayed for 1 secs
*Feb 11 14:51:58.840: Track: 3 Down change delay expired
*Feb 11 14:51:58.840: Track: 3 Change #9 list, boolean and Up->Down(->10)

Router-A#
*Feb 11 14:52:01.396: %HSRP-6-STATECHANGE: Ethernet0/0 Grp 10 state Active -> Speak
Router-A#
*Feb 11 14:52:11.404: %HSRP-6-STATECHANGE: Ethernet0/0 Grp 10 state Speak -> Standby
Router-A#

① ルーティング・テーブルから1.1.1.5/32 が無くなったことを検出して、Down Delay タイマーが稼動を始めます。

② 1 秒に設定してあったDown Delay タイマーが満了しました。

③ Track 2 が、1.1.1.5/32 へ到達できなくなったことを警告します。

④ Track 2 の警告を受けて、Track 3 のDown Delay タイマーが稼動を始めます。

⑤ Track 3 のDown Delay タイマーが満了しました。

⑥ Track 3 が警告を発します。

⑦ Track 3 の警告を受けて、スタンバイ・グループ10 のプライオリティが10 下げられ、ステートがActive からSpeak に遷移します。

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

hsrp-c4-3.png