[]EEMでBGPを操作する

 前回の続きです。Multipathを使うことで2本のリンクをDualActiveに使うことができそうです。ですがDualActiveにはちょっと問題があります。2本の合計トラフィックが1本を超えた時点で、別の代替経路に切り替えなければいけない事です。

bgp-eem

 よくある?マルチホーミングの構成です。ASαと100M×2で接続している状態で2本合計のトラフィックが120Mになった場合を想定します。この状態で100Mが1本が死んだ場合、障害に伴う経路の変更は発生しない為、引き続きASαに120Mbpsが流れてしまいます。そうするとASα向けの通信で輻輳が発生してしまいます。

 これを回避する方法は、ASα向けのリンクで障害が発生した場合に、ASαとの経路交換を停止し全てのトラフィックをASβに向けるしかありません。(ASβ向けの帯域に120M以上の余裕がある事が前提です)

Embedded Event ManagerでBGPを操作する

 上記はObjrctTrackingだけでは対応できないため、IP SLA + ObjectTracking + EEMを利用します。まずはIP SLAとObjeckTrackingにて、「片方のリンクが落ちたら〜」の部分を実装します。

[text]
### IP SLAで1本目のリンク状態をICMPで監視する
ip sla 1
icmp-echo 10.0.1.1 source-ip 10.0.1.254
frequency 5
ip sla schedule 1 life forever start-time now

### IP SLAで1本目のリンク状態をICMP監視する
ip sla 2
icmp-echo 10.0.2.1 source-ip 10.0.2.254
frequency 5
ip sla schedule 2 life forever start-time now

### 1本目のリンク状態をトラッキング
track 1 ip sla 1 reachability

### 2本目のリンク状態をトラッキング
track 2 ip sla 2 reachability
[/text]

 そしてトラッキングの結果をトリガーに発動するEEMを定義します。

[text]
### track1が落ちたら、2本目のneighborをshutdownする
event manager applet bgp-2-shutdown
event track 1 state down
action 1.0 cli command "enable"
action 1.1 cli command "conf t"
action 1.2 cli command "router bgp 65002"
action 1.4 cli command "neighbor 10.0.2.1 shutdown"
action 1.5 cli command "end"

### track1が上がったら、2本目のneighborをno shutdownする
event manager applet bgp-2-activate
event track 1 state up
action 1.0 cli command "enable"
action 1.1 cli command "conf t"
action 1.2 cli command "router bgp 65002"
action 1.3 cli command "address-family ipv4"
action 1.4 cli command "no neighbor 10.0.2.1 shutdown"
action 1.5 cli command "end"

### track2が落ちたら、1本目のneighborをshutdownする
event manager applet bgp-1-shutdown
event track 2 state down
action 1.0 cli command "enable"
action 1.1 cli command "conf t"
action 1.2 cli command "router bgp 65002"
action 1.4 cli command "neighbor 10.0.1.1 shutdown"
action 1.5 cli command "end"

### track2が上がったら、1本目のneighborをno shutdownする
event manager applet bgp-1-activate
event track 2 state up
action 1.0 cli command "enable"
action 1.1 cli command "conf t"
action 1.2 cli command "router bgp 65002"
action 1.3 cli command "address-family ipv4"
action 1.4 cli command "no neighbor 10.0.1.1 shutdown"
action 1.5 cli command "end"
[/text]

動作確認

 試しにLeftの10.0.1.1のIPアドレスを消してみます。リンクは上がってるけどL3で障害発生中のパターンです。IP SLA 1がダウンしたことをObjectTrackingが検知して、2本目のネイバがshutdownされているのが分ります。その後1本目のネイバがホールドダウンタイムを経過してDownします。これによりRigthはASαとの経路交換を完全に停止します。
[text]
### Log of Right