プライベートASを前提にした設定の紹介です。
何らかの事情で2社以上とISP契約が難しい、なるべくコストをかけたくないがWAN回線は冗長化したいといった場合にプライベートASによる冗長化がオススメです。グローバルASとは違いプライベートASは申請をしコストをかけて取得するものではありません。上位ISPとの打ち合わせで予めプライベートAS用として用意されている空間(64512~65534)から任意を選ぶ事が可能です。
上記の構成図を元に実際の設定を紹介できればと思います。上図の細かな補足です。
・RouterAとRouterBでIBGPをはる。(図中では直接繋がっているように見えるが広域EtherをL2で抜いている)
・上図に示しているIPは全てプライベートIPだが、実際には全てグローバルIPが想定される
・上位ISPからはデフォルトルート(0.0.0.0/0)のみ 受け取る
・内部LANで使用している経路のみ上位ISPに経路広報する
・上位ISPではMED値が比較される設定が入っている(bgp deterministic-med)
・上り下りともに通常時にはISP_Aを経由して通信する。
・拠点Aに障害が発生し通信不可となった場合のみISP_Bから 通信する。
実案件でもプライベートASを使ってFull Routeを受け取るというのは皆無です。全てといっていいぐらいデフォルトルートのみ受け取るケースが多いです。またプライベートASを使った場合でも負荷分散をさせることは技術的には可能ですが冗長化を目的として実施することが多いことからActive-Standby構成で導入することが多いです。本記事もActive-Standby構成を前提にしています。
この前提でRouterAのBGP/OSPF設定は以下のようになります。
[ OSPF設定 ] router ospf 110 auto-cost reference-bandwidth 10000 network 172.16.1.0 0.0.0.255 area 0 default-information originate metric 100 [ BGP設定 ] access-list 10 permit 192.168.0.0 0.0.255.255 route-map BGP permit 10 match ip address 10 ip prefix-list ISP-A-Route seq 5 permit 0.0.0.0/0 ip prefix-list MyRoute seq 5 permit 192.168.0.0/16 route-map BGP-OUT permit 10 match ip address prefix-list MyRoute set metric 100 route-map BGP-IN permit 10 set local-preference 200 router bgp ZZZ bgp log-neighbor-changes aggregate-address 192.168.0.0 255.255.0.0 summary-only timers bgp 30 90 redistribute ospf 110 route-map BGP neighbor 10.0.0.2 remote-as XXX neighbor 10.0.0.2 prefix-list ISP-A-Route in neighbor 10.0.0.2 prefix-list MyRoute out neighbor 10.0.0.2 route-map BGP-IN in neighbor 10.0.0.2 route-map BGP-OUT out neighbor 172.16.200.2 remote-as ZZZ no auto-summary |
RouterBのBGP/OSPF設定は以下のようになります。
[ OSPF設定 ] router ospf 110 auto-cost reference-bandwidth 10000 network 172.16.2.0 0.0.0.255 area 0 default-information originate metric 200 [ BGP設定 ] access-list 10 permit 192.168.0.0 0.0.255.255 route-map BGP permit 10 match ip address 10 ip prefix-list ISP-A-Route seq 5 permit 0.0.0.0/0 ip prefix-list MyRoute seq 5 permit 192.168.0.0/16 route-map BGP-OUT permit 10 match ip address prefix-list MyRoute set metric 200 route-map BGP-IN permit 10 set local-preference 100 router bgp ZZZ bgp log-neighbor-changes aggregate-address 192.168.0.0 255.255.0.0 summary-only timers bgp 30 90 redistribute ospf 110 route-map BGP neighbor 10.0.0.6 remote-as XXX neighbor 10.0.0.6 prefix-list ISP-A-Route in neighbor 10.0.0.6 prefix-list MyRoute out neighbor 10.0.0.6 route-map BGP-IN in neighbor 10.0.0.6 route-map BGP-OUT out neighbor 172.16.200.1 remote-as ZZZ no auto-summary |
グローバルASの際にはBGPの属性を全く使わずして経路を制御しました。これはBGPの属性では完全に制御する ことが出来ないからです。対してプライベートASの場合にはBGPの属性を使って完全にActive-Standbyを実現することが出来ます。
先ず上りトラフィックを制御しているのがLocal Preference。これは値が高いほうが優先されます。上記ではRouterAで200、RouterBで100としており、いずれもデフォルトルートに対して値をつけています。IBGPをはっているので両者で値の比較が行われ、RouterAが優先、RouterBにはデフォルトルート自体のってこなくなります。その結果、RouterBではOSPFでdefault-informationを指定していますが、alwaysキーワードを指定していないため 0.0.0.0/0は配信されず全ての上位ISPへのトラフィックはRouterAを経由することになります。
次に下りトラフィックを制御しているのがMEDと呼ばれる属性で上記設定ではroute-map BGP-OUTでset metricで指定しています。自サイトの経路に対して値の重み付けをして上位ISPに経路広報するとういもので値が低いほうが優先されます。これは上位のASにMEDで値をつけて流しても上位のASからさらに上位のASに流れることはありません。そのため特定のASに対してのみ有効な設定でありプライベートASでのみ使う属性と思ってよいと思います。
このLocalPreferenceとMEDを使うことでプライベートASでは経路を完全に制御することが出来ます。