BGP の各種属性による経路制御例を紹介します。
WEIGHT属性による経路制御
WEIGHT は Cisco 独自属性であり、BGPパケットを使って伝搬することができません。なので必然的にローカルルータへの適用しかできません。BGP のルートが 2 つ以上あり、どのルートから出ていくかを制御するときに使えます。
以下の構成図において、"1.1.1.0/24" の宛先ルートは RT6 においてはベストパス選択アルゴリズムの『⑪ ネイバーのルータID が最小のもの』により RT4 がベストパスとして選択される状態です。
RT6 に以下コマンドを投入すると、RT6 内のみで Weight 属性に値がセットされます。確認は BGP テーブル (show ip bgp) で行います。
RT6(config)# router bgp 65002 RT6(config-router)# neighbor 10.1.56.5 weight 20 RT6(config-router)# end RT6# sh ip bgp Network Next Hop Metric LocPrf Weight Path * i 1.1.1.0/24 10.1.56.5 0 100 0 65001 i *>i 10.1.46.4 0 100 0 65001 i *> 6.6.6.0/24 0.0.0.0 0 32768 i RT6# clear ip bgp * soft RT6# sh ip bgp Network Next Hop Metric LocPrf Weight Path *>i 1.1.1.0/24 10.1.56.5 0 100 20 65001 i * i 10.1.46.4 0 100 0 65001 i *> 6.6.6.0/24 0.0.0.0 0 32768 i RT6#
なお、route-map を使って以下のような設定をしても同じ効果があります。route-map XXX in コマンドにより入ってくるときに route-map での条件アクションに従って属性を変更できます。今回は条件 (match) については未設定のため無条件でアクション (set) weight 20 を実行します。
RT6(config)# route-map SetWeight RT6(config-route-map)# set weight 20 RT6(config-route-map)# exit RT6(config)# router bgp 65002 RT6(config-router)# neighbor 10.1.56.5 route-map SetWeight in
Local-Preference属性による経路制御
LOCAL_PREF 属性は iBGP でのみ伝達可能な属性です。なので Weight より使い勝手が良いケースが多いです。
例えば先程の構成例と同じことを、以下のように設定することができます。
[RT5]
RT5(config)# route-map SetLocPref RT5(config-route-map)# set local-preference 200 RT5(config-route-map)# exit RT5(config)# router bgp 65002 RT5(config-router)# neighbor 10.1.35.3 route-map SetLocPref in RT5(config-router)# end RT5# clear ip bgp * soft
これにより [RT6] 側が以下のように変化します。
RT6# show ip bgp Network Next Hop Metric LocPrf Weight Path *>i 1.1.1.0/24 10.1.56.5 0 200 0 65001 i * i 10.1.46.4 0 100 0 65001 i *> 6.6.6.0/24 0.0.0.0 0 32768 i RT6#
AS_PATH 属性による経路制御
他 AS から自 AS へ入ってくるときの通信に優先度をつけてほしいときに設定します。もちろん、相手が WEIGHT や LOCAL_PREF 等で意図とは異なる設定はできてしまいますが。
[RT2]
RT2(config)# route-map SetASPrepend RT2(config-route-map)# set as-path prepend 65001 RT2(config-route-map)# exit RT2(config)# router bgp 65001 RT2(config-router)# neighbor 10.1.24.4 route-map SetASPrepend out RT2(config-router)# end RT2# clear ip bgp * soft
RT2 で AS_PATH を普段より多く付けることで RT6 は RT4 側のルートが遠いと判断し、RT5 側のルートを優先的に使うようになります。
RT6# show ip bgp
Network Next Hop Metric LocPrf Weight Path
*>i 1.1.1.0/24 10.1.56.5 0 100 0 65001 i
*i 10.1.46.4 0 100 0 65001 65001 i
*> 6.6.6.0/24 0.0.0.0 0 32768 i
ORIGIN 属性による経路制御
他 AS から自 AS へ入ってくるときの通信に優先度をつけてほしいときに設定します。AS_PATH による制御と変わりませんが、あまり使われないやり方です。
[RT2]
RT2(config)# route-map SetORIGIN RT2(config-route-map)# set origin incomplete RT2(config-route-map)# exit RT2(config)# router bgp 65001 RT2(config-router)# neighbor 10.1.24.4 route-map SetORIGIN out RT2(config-router)# end RT2# clear ip bgp * soft
RT2 で ORIGIN を i (= IGP) ではなく ? (= incomplete) にすることで RT6 は RT4 側のルートを信頼性が低いと判断し、RT5 側のルートを優先的に使うようになります。
RT6# sh ip bgp
Network Next Hop Metric LocPrf Weight Path
*>i 1.1.1.0/24 10.1.56.5 0 100 0 65001 i
*i 10.1.46.4 0 100 0 65001 ?
*> 6.6.6.0/24 0.0.0.0 0 32768 i
MED 属性による経路制御
他 AS から自 AS へ入ってくるときの通信に優先度をつけてほしいときに設定します。AS_PATH による制御と変わりません。AS_PATH よりも好まれる傾向にあります。
[RT2]
RT2(config)# route-map SetMED RT2(config-route-map)# set metric 300 RT2(config-route-map)# exit RT2(config)# router bgp 65001 RT2(config-router)# neighbor 10.1.24.4 route-map SetMED out RT2(config-router)# end RT2# clear ip bgp * soft
RT2 で MED をデフォルトの 0 から 300 に変更することで RT6 は RT4 側のルートを遠いと判断し、RT5 側のルートを優先的に使うようになります。
RT6# sh ip bgp
Network Next Hop Metric LocPrf Weight Path
*>i 1.1.1.0/24 10.1.56.5 0 100 0 65001 i
*i 10.1.46.4 300 100 0 65001 i
*> 6.6.6.0/24 0.0.0.0 0 32768 i
コメント