HSRP 応用編:(6) HSRP のトラッキング対象のオブジェクトに重み付けをする

今回は、EtherChannel を組んでいるインターフェイスをトラッキングしてみます。

a
EtherChannel 内の物理インターフェイスの一つが使用不可となっても、EtherChannel 自体はアップしています。

アクティブ・ルーターの EtherChannel を構成している物理インターフェイスが減っていき、スタンバイ・ルーター側のリンクの方が太くなった時点でアクティブ・ルーターの切り替わりが発生するのが理想です。

EtherChannel 内の複数の物理インターフェイスをそれぞれトラッキングすることは、これまで説明してきた機能を使っても可能です。
しかし、これまで見てきたboolean and やboolean or では柔軟な対応ができません。
 「全部のインターフェイスがダウンしたら」とか「一つでもアップしたら」と、両極端です。

hsrp-c6-1.png
上図では、Router-A とC の間は、3 本の10M Ethernet でEtherChannel を構成しています。
 Router-B とD の間も、3本の10M Ethernet でEtherChannel を構成していますが、1本はリンク・ダウンしています。

この状態で、Router-A とC の間のリンクが一本ダウンしても、Standby Router 側(Router-B) のリンクと同じ帯域幅なので、Active Router が切替わる必要性は見られません。

Router-A とC の間のリンクが2本リンク・ダウンしてEtherChannel 内のリンクが一本だけになると、スタンバイ・ルーター側(Router-B)のリンクの方が太くなります。

今回は、Router-A とC の間のリンクが1本以下になったらスタンバイ・グループのプライオリティを下げ、2本以上になったらプライオリティを元に戻すように設定します。

Router-A#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router-A(config)#track 1 interface ethernet 0/1 line-protocol
Router-A(config-track)#delay down 1 up 15
Router-A(config-track)#exit
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 interface ethernet 0/3 line-protocol
Router-A(config-track)#delay down 1 up 15
Router-A(config-track)#exit
Router-A(config)#track 10 list threshold weight
Router-A(config-track)#object 1 weight 20
Router-A(config-track)#object 2 weight 20
Router-A(config-track)#object 3 weight 20
Router-A(config-track)#threshold weight up 40 down 20
Router-A(config-track)#exit
Router-A(config)#interface ethernet0/0
Router-A(config-if)#standby 10 track 10 decrement 10
Router-A(config-if)#^Z
Router-A#


① Track 1、2、3 にそれぞれ、インターフェイスe0/1、0/2、0/3 のLine Protocol をトラッキング対象として指定します。

② Track 10 を作成し、監視対象のオブジェクトをList 指定します。

③ 先に作成したTrack 1、2、3 をそれぞれオブジェクト1、2、3 として指定し、20の重みを設定します。

④ トラッキングの閾値(Threshold)を設定します。この例は、重みが20 以下になったらダウン、40 以上になったらアップと判断することを意味します。

⑤ スタンバイ・グループ10 に、Track 10 を対象とするオブジェクト・トラッキングを設定します。プライオリティの下げ幅は10 です。


以上で設定は完了です。

Router-A でshow track を確認します。

Router-A#show track
Track 1
Interface Ethernet0/1 line-protocol
Line protocol is Up
2 changes, last change 00:00:16
Delay up 15 secs, down 1 sec
Tracked by:
Track-list 10
Track 2
Interface Ethernet0/2 line-protocol
Line protocol is Up
1 change, last change 00:02:18
Delay up 15 secs, down 1 sec
Tracked by:
Track-list 10
Track 3
Interface Ethernet0/3 line-protocol
Line protocol is Up
1 change, last change 00:02:00
Delay up 15 secs, down 1 sec
Tracked by:
Track-list 10
Track 10
List threshold weight
Threshold Weight is Up (60/60)
2 changes, last change 00:01:36
object 1 weight 20 Up (20/60)
object 2 weight 20 Up (20/60)
object 3 weight 20 Up (20/60)
Threshold weight down 20 up 40

Tracked by:
HSRP Ethernet0/0 10
Router-A#

すべてが正常に動作しているとき、Track 10 の重みは60 あります。

Track 10 の監視対象であるTrack 1、2、3のどれか一つがダウンすると重みは20 減ります。二つ目のTrack がダウンすると、さらに重みは20 減り、20 となります。

Track 10の重みが20 以下になると、Track 10 はダウンしたと判断し警告を発します。

スタンバイ・グループ 10 は警告を受けて、プライオリティを10 減らします。

Track 1、2、3のダウンしていた二つのうちのどちらかがアップすると、重みは40 に増えます。
Track 10 はアップしたと判断され警告を発し、それを受けてスタンバイ・グループ10 のプライオリティが10 増えます。

つまり、EtherChannel 内のリンクが一つ以下になればダウン、二つ以上になればアップと判断され、スタンバイ・グループのプライオリティを操作することができます。

では、実際に障害を発生させて、状況を観察しましょう。

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

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

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

Router-A(config)#interface ethernet 0/1
Router-A(config-if)#shutdown
Router-A(config-if)#
*Feb 11 23:36:10.272: Track: 1 Down change delayed for 1 secs
*Feb 11 23:36:11.272: Track: 1 Down change delay expired
*Feb 11 23:36:11.272: Track: 1 Change #2 interface Et0/1, line-protocol Up->Down
*Feb 11 23:36:11.276: %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)#
Router-A(config-if)#
*Feb 11 23:36:12.268: %LINK-5-CHANGED: Interface Ethernet0/1, changed state to administratively down
*Feb 11 23:36:13.268: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/1, changed state to down
Router-A(config-if)#^Z
Router-A#

HSRP の状態は変わりません。
Router-A で、show track を確認します。

Router-A#show track
Track 1
Interface Ethernet0/1 line-protocol
Line protocol is Down (hw admin-down)
2 changes, last change 00:00:16
Delay up 15 secs, down 1 sec
Tracked by:
Track-list 10
Track 2
Interface Ethernet0/2 line-protocol
Line protocol is Up
1 change, last change 00:02:18
Delay up 15 secs, down 1 sec
Tracked by:
Track-list 10
Track 3
Interface Ethernet0/3 line-protocol
Line protocol is Up
1 change, last change 00:02:00
Delay up 15 secs, down 1 sec
Tracked by:
Track-list 10
Track 10
List threshold weight
Threshold Weight is Up (40/60)
2 changes, last change 00:01:36
object 1 weight 20 Down (0/60)
object 2 weight 20 Up (20/60)
object 3 weight 20 Up (20/60)
Threshold weight down 20 up 40
Tracked by:
HSRP Ethernet0/0 10
Router-A#


インターフェイスe0/1 がダウンしてTrack 1 の重みが20 減り、40になりました。
まだTrack 10 はアップしています。

show standby を確認します。

Router-A#show standby
Ethernet0/0 - Group 10
State is Active
2 state changes, last state change 00:04:02
Virtual IP address is 192.168.1.1
Active virtual MAC address is 0000.0c07.ac0a
Local virtual MAC address is 0000.0c07.ac0a (v1 default)
Hello time 3 sec, hold time 10 sec
Next hello sent in 0.876 secs
Preemption enabled
Active router is local
Standby router is 192.168.1.101, priority 95 (expires in 8.756 sec)
Priority 100 (default 100)
Track object 10 state Up decrement 10
IP redundancy name is "hsrp-Et0/0-10" (default)
Router-A#


hsrp-c6-2.png
続いて、インターフェイスe0/2 をshutdown します。

Router-A#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router-A(config)#interface ethernet0/2
Router-A(config-if)#shutdown
Router-A(config-if)#
*Feb 11 23:36:51.480: Track: 2 Down change delayed for 1 secs
*Feb 11 23:36:52.484: Track: 2 Down change delay expired
*Feb 11 23:36:52.484: Track: 2 Change #2 unterface Et0/2, line-protocol Up->Down*Feb 11 23:36:52.948: Track: 10 Change #3 list, threshold weight Up->Down(->20)
Router-A(config-if)#
*Feb 11 23:36:52.952: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.3 on Ethernet0/2 from FULL to DOWN, Neighbor Down: Interface down or detached
Router-A(config-if)#
*Feb 11 23:36:53.364: %HSRP-6-STATECHANGE: Ethernet0/0 Grp 10 state Active -> Speak
Router-A(config-if)#
*Feb 11 23:36:53.480: %LINK-5-CHANGED: Interface Ethernet0/2, changed state
to administratively down
*Feb 11 23:36:54.480: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/2, changed state to down
Router-A(config-if)#
*Feb 11 23:37:01.880: %HSRP-6-STATECHANGE: Ethernet0/0 Grp 10 state Speak -> Standby
Router-A(config-if)#Router-A(config-if)#^Z
Router-A#

Router-A でshow track を確認します。

Router-A#show track
Track 1
Interface Ethernet0/1 line-protocol
Line protocol is Down (hw admin-down)
2 changes, last change 00:01:06
Delay up 15 secs, down 1 sec
Tracked by:
Track-list 10
Track 2
Interface Ethernet0/2 line-protocol
Line protocol is Down (hw admin-down)
2 changes, last change 00:00:25
Delay up 15 secs, down 1 sec
Tracked by:
Track-list 10
Track 3
Interface Ethernet0/3 line-protocol
Line protocol is Up
1 change, last change 00:02:49
Delay up 15 secs, down 1 sec
Tracked by:
Track-list 10
Track 10
List threshold weight
Threshold Weight is Down (20/60)
3 changes, last change 00:00:25
object 1 weight 20 Down (0/60)
object 2 weight 20 Down (0/60)
object 3 weight 20 Up (20/60)

Threshold weight down 20 up 40
Tracked by:
HSRP Ethernet0/0 10
Router-A#


インターフェイスe0/1 に続いてe0/2がダウンしてTrack 2 の重み20 が減り、20 になりました。
Track 10 はダウンします。

スタンバイ・グループ10 のプライオリティが10 下げられ、ステートはActive からSpeak へ、そしてStandby へ移行します。

show standby を確認します。

Router-A#show standby
Ethernet0/0 - Group 10
State is Standby
2 state changes, last state change 00:04:56
Virtual IP address is 192.168.1.1
Active virtual MAC address is 0000.0c07.ac0a
Local virtual MAC address is 0000.0c07.ac0a (v1 default)
Hello time 3 sec, hold time 10 sec
Next hello sent in 0.404 secs
Preemption enabled
Active router is 192.168.1.101, priority 95 (expires in 9.328 sec)
Standby router is local
Priority 90 (default 100)
Track object 10 state Down decrement 10
IP redundancy name is "hsrp-Et0/0-10" (default)
Router-A#


hsrp-c6-3.png
先ほどshutdown したインターフェイスe0/1をno shutdown します。

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)#no shutdown
*Feb 11 23:38:25.356: Track: 1 Up change delayed for 15 secs
Router-A(config-if)#
*Feb 11 23:38:27.352: %LINK-3-UPDOWN: Interface Ethernet0/1, changed state t
o up
*Feb 11 23:38:28.352: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/1, changed state to up
Router-A(config-if)#^Z
*Feb 11 23:38:28.820: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.3 on Ethernet0/1 from LOADING to FULL, Loading Done
Router-A(config-if)#
*Feb 11 23:38:40.356: Track: 1 Up change delay expired
*Feb 11 23:38:40.356: Track: 1 Change #3 interface Et0/1, line-protocol Down->Up
*Feb 11 23:38:40.948: Track: 10 Change #4 list, threshold weight Down->Up(->40)
Router-A(config-if)#
*Feb 11 23:38:41.628: %HSRP-6-STATECHANGE: Ethernet0/0 Grp 10 state Standby -> Active
Router-A(config-if)#

Router-A でshow track を確認します。

Router-A#show track
Track 1
Interface Ethernet0/1 line-protocol
Line protocol is Up
3 changes, last change 00:00:08
Delay up 15 secs, down 1 sec
Tracked by:
Track-list 10
Track 2
Interface Ethernet0/2 line-protocol
Line protocol is Down (hw admin-down)
2 changes, last change 00:01:56
Delay up 15 secs, down 1 sec
Tracked by:
Track-list 10
Track 3
Interface Ethernet0/3 line-protocol
Line protocol is Up
1 change, last change 00:04:21
Delay up 15 secs, down 1 sec
Tracked by:
Track-list 10
Track 10
List threshold weight
Threshold Weight is Up (40/60)
4 changes, last change 00:00:10
object 1 weight 20 Up (20/60)
object 2 weight 20 Down (0/60)
object 3 weight 20 Up (20/60)

Threshold weight down 20 up 40
Tracked by:
HSRP Ethernet0/0 10
Router-A#

インターフェイスe0/1 がリンク・アップしてTrack 2 の重みが20が増え、40 になりました。
Track 10 はアップします。

スタンバイ・グループ10 のプライオリティが10上がり、ステートはStandby からActive へ移行します。

show standby を確認します。

Router-A#show standby
Ethernet0/0 - Group 10
State is Active
2 state changes, last state change 00:06:24
Virtual IP address is 192.168.1.1
Active virtual MAC address is 0000.0c07.ac0a
Local virtual MAC address is 0000.0c07.ac0a (v1 default)
Hello time 3 sec, hold time 10 sec
Next hello sent in 2.544 secs
Preemption enabled
Active router is local
Standby router is 192.168.1.101, priority 95 (expires in 4.253 sec)
Priority 100 (default 100)
Track object 10 state Up decrement 10
IP redundancy name is "hsrp-Et0/0-10" (default)
Router-A#

スタンバイ・グループ10 は元に戻りました。

今回はEtherChannel 内の物理リンクをトラッキング対象としましたが、EtherChannel に限らず別々なリンクを対象として重み付けをすることも可能です。