BGPよくある構成の冗長・経路制御について(AS-PATH,MED)

BGPBGP

はじめに

前回、BGPの基本的な冗長・経路制御の考え方と、Local Preferenceを使った「行き」の経路制御方法ついて紹介しました。今回は「戻り」の経路制御をAS-PATHプリペンドとMEDを使って説明します。

構成・要件、各BGPルータのベースコンフィグは前回と同様となります。※ベースコンフィグのみ張り付けときます。

hostname CSR1000v-01
<省略>
router bgp 111
 bgp log-neighbor-changes
 network 66.0.0.0 mask 255.255.255.0
 network 77.0.0.0 mask 255.255.255.0
 timers bgp 3 9
 neighbor 10.10.0.2 remote-as 222
 neighbor 10.10.0.2 soft-reconfiguration inbound
 neighbor 10.111.0.2 remote-as 111
 neighbor 10.111.0.2 next-hop-self
 neighbor 10.111.0.2 soft-reconfiguration inbound
!
<省略>
ip route 66.0.0.0 255.255.255.0 192.168.11.1
ip route 77.0.0.0 255.255.255.0 192.168.11.1
hostname CSR1000v-02
<省略>
router bgp 111
 bgp log-neighbor-changes
 network 66.0.0.0 mask 255.255.255.0
 network 77.0.0.0 mask 255.255.255.0
 timers bgp 3 9
 neighbor 10.20.0.2 remote-as 222
 neighbor 10.20.0.2 soft-reconfiguration inbound
 neighbor 10.111.0.1 remote-as 111
 neighbor 10.111.0.1 next-hop-self
 neighbor 10.111.0.1 soft-reconfiguration inbound
!
<省略>
ip route 66.0.0.0 255.255.255.0 192.168.11.1
ip route 77.0.0.0 255.255.255.0 192.168.11.1
hostname CSR1000v-03
<省略>
router bgp 222
 bgp log-neighbor-changes
 network 88.0.0.0 mask 255.255.255.0
 network 99.0.0.0 mask 255.255.255.0
 timers bgp 3 9
 neighbor 10.10.0.1 remote-as 111
 neighbor 10.10.0.1 soft-reconfiguration inbound
 neighbor 10.222.0.2 remote-as 222
 neighbor 10.222.0.2 next-hop-self
 neighbor 10.222.0.2 soft-reconfiguration inbound
!
<省略>
ip route 88.0.0.0 255.255.255.0 192.168.22.1
ip route 99.0.0.0 255.255.255.0 192.168.22.1!
hostname CSR1000v-04
<省略>
router bgp 222
 bgp log-neighbor-changes
 network 88.0.0.0 mask 255.255.255.0
 network 99.0.0.0 mask 255.255.255.0
 timers bgp 3 9
 neighbor 10.20.0.1 remote-as 111
 neighbor 10.20.0.1 soft-reconfiguration inbound
 neighbor 10.222.0.1 remote-as 222
 neighbor 10.222.0.1 next-hop-self
 neighbor 10.222.0.1 soft-reconfiguration inbound
!
<省略>
ip route 88.0.0.0 255.255.255.0 192.168.22.1
ip route 99.0.0.0 255.255.255.0 192.168.22.1

戻りの経路(Vlan88/99→Vlan66/77)

行きと同様、N9Kv-V9-02がVlan22のHSRP VIP向けにスタティックルートを設定しており、HSRP VIPがCSR1000v-03に向いていれば下図のトラフィックフローで戻ってきてActive/Standbyの通信ができます。つまり特別な処理をせずとも配下のHSRPで制御可能です。

但し、他組織がHSRP VIPをCSR1000v-03側に向けているかは不明です。また、CSR1000v-03のLAN側インタフェース障害によりHSRP VIPが切り替わりCSR1000v-04に向いている可能性も考えられます。その場合、CSR1000v-04はCSR1000v-02にルーティングしてしまい、結果Vlan20の回線で戻してしまい非対称通信となってしまいます。
※なお、このように行きと戻りの経路が変わっても問題無い環境下ではこれでもOKです。但し、多くの環境は様々な理由から経路は合わせといた方が無難です。

上記の非対称通信を防ぐため、次からBGPのパス属性を使い、下図のように強制的にVlan10の回線から戻るようにし対象通信になるように経路制御をします。
なお、経路制御をするにあたって、他組織のBGPルータを直接設定変更することは通常できませんので、自組織のBGPルータを使って他組織の経路制御をします。

AS-PATHプリペンドで制御

まずはパス属性のAS-PATHプリペンドの紹介です。CSR1000v-04からするとVlan66/77向けのルーティングのNexthop候補としては、CSR1000v-03とCSR1000v-02があります。CSR1000v-02からより多くのASを通っているように見せることでCSR1000v-04はVlan66/77向けルートをCSR1000v-02は距離として遠いASとみなし、CSR1000v-03をベストパスに選出します。

方法はVlan66/77のプレフィックスにASを多く付けCSR1000v-04に広報します。(下記の例では「112」「113」の二つのASを追加している)

CSR1000v-02#configure terminal

ip prefix-list PL seq 5 permit 66.0.0.0/24
ip prefix-list PL seq 10 permit 77.0.0.0/24

route-map ASPath-PRE permit 10
 match ip address prefix-list PL
 set as-path prepend 112 113
!
route-map ASPath-PRE permit 20

router bgp 111
 neighbor 10.20.0.2 route-map ASPath-PRE out

下記はAS-PATHプリペンドの設定前と設定後のCSR1000v-04のルーティングとBGP情報の違いです。
Pathのステータス(23行目と25行目)では上記で設定した「set as-path prepend 112 113」が効きベストパス(ベストパス=">")が変わったことが分かります。また、Vlan66(66.0.0.0/24)とVlan77(77.0.0.0/24)のルーティングがCSR1000v-03の10.222.0.1に変わったことも確認できます。

■AS-PATHプリペンドの設定前---------------------------------------------------------
CSR1000v-04#show ip bgp
<省略>
     Network          Next Hop            Metric LocPrf Weight Path
 *>  66.0.0.0/24      10.20.0.1                0             0 111 i
 * i                  10.222.0.1               0    100      0 111 i
 *>  77.0.0.0/24      10.20.0.1                0             0 111 i
 * i                  10.222.0.1               0    100      0 111 i
<省略>

CSR1000v-04#show ip route
<省略>
      66.0.0.0/24 is subnetted, 1 subnets
B        66.0.0.0 [20/0] via 10.20.0.1, 00:00:16
      77.0.0.0/24 is subnetted, 1 subnets
B        77.0.0.0 [20/0] via 10.20.0.1, 00:00:16
<省略>

■AS-PATHプリペンドの設定後---------------------------------------------------------
CSR1000v-04#show ip bgp
<省略>
     Network          Next Hop            Metric LocPrf Weight Path
 *   66.0.0.0/24      10.20.0.1                0             0 111 112 113 i
 *>i                  10.222.0.1               0    100      0 111 i
 *   77.0.0.0/24      10.20.0.1                0             0 111 112 113 i
 *>i                  10.222.0.1               0    100      0 111 i
<省略>

CSR1000v-04#show ip route
<省略>
      66.0.0.0/24 is subnetted, 1 subnets
B        66.0.0.0 [200/0] via 10.222.0.1, 00:09:46
      77.0.0.0/24 is subnetted, 1 subnets
B        77.0.0.0 [200/0] via 10.222.0.1, 00:09:46
<省略>

MEDで制御

次にMED(MULTI_EXIT_DISC)の紹介です。MEDも非常によく使われるパス属性の一つです。考え方は先ほどと同様にCSR1000v-04にCSR1000v-03よりCSR1000v-02向けの方がメトリック的に重く見せることで、CSR1000v-03をベストパスにします。

方法はVlan66/77のプレフィックスにMED値200を付与してCSR1000v-04に広報します。
※上記で設定したAS-PATHプリペンドの設定は削除して実施しています。

CSR1000v-02#configure terminal

ip prefix-list PL seq 5 permit 66.0.0.0/24
ip prefix-list PL seq 10 permit 77.0.0.0/24

route-map RM-MED200 permit 10
 match ip address prefix-list PL
 set metric 200
!
route-map RM-MED200 permit 20
!
router bgp 111
 neighbor 10.20.0.2 route-map RM-MED200 out

下記はMEDの設定前と設定後のCSR1000v-04のルーティングとBGP情報の違いです。
AS-PATHプリペンドと同様、Metricのステータスでは「set metric 200」が効きベストパスが変わったことが確認できます。(23行目~26行目)なお、MEDは低い値が優先されます。また、Vlan66(66.0.0.0/24)とVlan77(77.0.0.0/24)のルーティングとベストパスがCSR1000v-03の10.222.0.1に切り替わったことがわかります。

■MED設定前---------------------------------------------------------
CSR1000v-04#show ip bgp
<省略>
     Network          Next Hop            Metric LocPrf Weight Path
 * i 66.0.0.0/24      10.222.0.1               0    100      0 111 i
 *>                   10.20.0.1                0             0 111 i
 * i 77.0.0.0/24      10.222.0.1               0    100      0 111 i
 *>                   10.20.0.1                0             0 111 i
<省略>

CSR1000v-04#show ip route
<省略>
      66.0.0.0/24 is subnetted, 1 subnets
B        66.0.0.0 [20/0] via 10.20.0.1, 00:00:16
      77.0.0.0/24 is subnetted, 1 subnets
B        77.0.0.0 [20/0] via 10.20.0.1, 00:00:16
<省略>

■MED設定後---------------------------------------------------------
CSR1000v-04#show ip bgp
<省略>
     Network          Next Hop            Metric LocPrf Weight Path
 *>i 66.0.0.0/24      10.222.0.1               0    100      0 111 i
 *                    10.20.0.1              200             0 111 i
 *>i 77.0.0.0/24      10.222.0.1               0    100      0 111 i
 *                    10.20.0.1              200             0 111 i
<省略>

CSR1000v-04#show ip route
<省略>
      66.0.0.0/24 is subnetted, 1 subnets
B        66.0.0.0 [200/0] via 10.222.0.1, 00:01:21
      77.0.0.0/24 is subnetted, 1 subnets
B        77.0.0.0 [200/0] via 10.222.0.1, 00:00:19
<省略>

このように、AS-PATHプリペンドやMEDの設定によって対向機器の「戻り」の経路制御を可能とします。

以上で「戻り」の経路制御AS-PATHプリペンドとMEDの紹介を終えます。

BGPBGP