EEMでBGPを操作する
cisco network
Published: 2012-09-24

 前回の続きです。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にて、「片方のリンクが落ちたら~」の部分を実装します。

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

動作確認

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

 1本目の障害を復旧させるために、10.0.1.1のIPアドレスを設定します。するとshutdownした2本目がno shutされ有効になります。経路交換が始まり、Multipathな経路がルーティングテーブルに乗ってきます。

 EEMのタイミングとBGPのホールドダウンタイマを合わせたりと微調整が必要な気がしますが、想定通り動きました。フルルートを食べてる時にちゃんと動くのかは要検証です。