ある程度の規模になれば、RR(Route Reflector)の導入はほぼ必須かと思います。RFC2796 BGP Route Reflection - An Alternative to Full Mesh IBGP によると「ルーティングループを避ける為に RR は iBGP ピアで学習した経路を別の iBGP ピアへ広報する際に属性を変更せず、付与されていた属性をそのまま伝搬すべき」という記載があります。
8. Implementation Considerations
Care should be taken to make sure that none of the BGP path attributes defined above can be modified through configuration when exchanging internal routing information between RRs and Clients and Non-Clients. Their modification could potential result in routing loops.
In addition, when a RR reflects a route, it should not modify the following path attributes: NEXT_HOP, AS_PATH, LOCAL_PREF, and MED. Their modification could potential result in routing loops.
RFC2796 BGP Route Reflection - An Alternative to Full Mesh IBGP
今回は Cisco XRv で RR 構成を作り、実際に「RR が経路を広報する際に属性を変更しない」ことを確認してみます。
構成
以下の構成で検証しました。ルータは全て VIRL 上の XRv 5.3.0 を使いました。
以下の 4 箇所で route-policy を適用し、MED 値を修正しています。
設定対象 | 方向 | 属性 |
---|---|---|
XRv-1 | XRv-1 → XRv-2 の Out 方向 | MED 値を 1 に設定 |
XRv-2 | XRv-1 → XRv-2 の In 方向 | MED 値に +10 する |
XRv-2 | XRv-2 → XRv-3 の Out 方向 | MED 値に +100 する |
XRv-3 | XRv-2 → XRv-3 の In 方向 | MED 値に +1,000 する |
各ルータのコンフィグは以下の通りです。XRv-2 は RR として構成されています。
XRv-1 のコンフィグ
hostname XRv-1 logging console debugging interface Loopback0 ipv4 address 10.0.99.1 255.255.255.255 ! interface MgmtEth0/0/CPU0/0 shutdown ! interface GigabitEthernet0/0/0/0 ipv4 address 10.0.12.1 255.255.255.0 no shutdown ! route-policy MED-1 set med 1 end-policy ! router ospf 65000 log adjacency changes detail router-id 10.0.99.1 area 0.0.0.0 interface Loopback0 ! interface GigabitEthernet0/0/0/0 ! ! ! router bgp 65000 bgp router-id 10.0.99.1 bgp log neighbor changes detail address-family ipv4 unicast network 10.0.99.1/32 ! neighbor 10.0.99.2 remote-as 65000 update-source Loopback0 address-family ipv4 unicast route-policy MED-1 out ! ! ! end
XRv-2 のコンフィグ
hostname XRv-2 logging console debugging interface Loopback0 ipv4 address 10.0.99.2 255.255.255.255 ! interface MgmtEth0/0/CPU0/0 shutdown ! interface GigabitEthernet0/0/0/0 ipv4 address 10.0.12.2 255.255.255.0 no shutdown ! interface GigabitEthernet0/0/0/1 ipv4 address 10.0.23.2 255.255.255.0 no shutdown ! route-policy MED-10 set med +10 end-policy ! route-policy MED-100 set med +100 end-policy ! router ospf 65000 log adjacency changes detail router-id 10.0.99.2 area 0.0.0.0 interface Loopback0 ! interface GigabitEthernet0/0/0/0 ! interface GigabitEthernet0/0/0/1 ! ! ! router bgp 65000 bgp router-id 10.0.99.2 bgp log neighbor changes detail address-family ipv4 unicast network 10.0.99.2/32 ! neighbor 10.0.99.1 remote-as 65000 update-source Loopback0 address-family ipv4 unicast route-policy MED-10 in route-reflector-client ! ! neighbor 10.0.99.3 remote-as 65000 update-source Loopback0 address-family ipv4 unicast route-reflector-client route-policy MED-100 out ! ! ! end
XRv-3 のコンフィグ
hostname XRv-3 logging console debugging interface Loopback0 ipv4 address 10.0.99.3 255.255.255.255 ! interface MgmtEth0/0/CPU0/0 shutdown ! interface GigabitEthernet0/0/0/0 ipv4 address 10.0.23.3 255.255.255.0 no shutdown ! route-policy MED-1000 set med +1000 end-policy ! router ospf 65000 log adjacency changes detail router-id 10.0.99.3 area 0.0.0.0 interface Loopback0 ! interface GigabitEthernet0/0/0/0 ! ! ! router bgp 65000 bgp router-id 10.0.99.3 bgp log neighbor changes detail address-family ipv4 unicast network 10.0.99.3/32 ! neighbor 10.0.99.2 remote-as 65000 update-source Loopback0 address-family ipv4 unicast route-policy MED-1000 in ! ! ! end
BGP テーブルの確認
各ルータでは各々の Loopback を BGP で広報しています。具体的には以下の経路を BGP へ広報しています。
対象ルータ | BGP で広報している経路 |
---|---|
XRv-1 | 10.0.99.1/32 |
XRv-2 | 10.0.99.2/32 |
XRv-3 | 10.0.99.3/32 |
各ルータの BGP テーブルを図示すると以下の通りです。
XRv-1 での確認
上述の通り、XRv-1 では 10.0.99.1/32 という経路を BGP で広報しています。
RP/0/0/CPU0:XRv-1# show bgp Sat Aug 8 02:51:48.613 UTC BGP router identifier 10.0.99.1, local AS number 65000 BGP generic scan interval 60 secs Non-stop routing is enabled BGP table state: Active Table ID: 0xe0000000 RD version: 5 BGP main routing table version 5 BGP NSR Initial initsync version 2 (Reached) BGP NSR/ISSU Sync-Group versions 0/0 BGP scan interval 60 secs Status codes: s suppressed, d damped, h history, * valid, > best i - internal, r RIB-failure, S stale, N Nexthop-discard Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 10.0.99.1/32 0.0.0.0 0 32768 i *>i10.0.99.2/32 10.0.99.2 0 100 0 i *>i10.0.99.3/32 10.0.99.3 0 100 0 i Processed 3 prefixes, 3 paths
XRv-2 での確認
10.0.99.1/32 は MED(Metric)を 11 で受信していますので、XRv-1 の Out 側・XRv-2 の In 側の route-policy の両方が効いていると判断出来ます。
RP/0/0/CPU0:XRv-2# show bgp Sat Aug 8 02:51:33.474 UTC BGP router identifier 10.0.99.2, local AS number 65000 BGP generic scan interval 60 secs Non-stop routing is enabled BGP table state: Active Table ID: 0xe0000000 RD version: 9 BGP main routing table version 9 BGP NSR Initial initsync version 2 (Reached) BGP NSR/ISSU Sync-Group versions 0/0 BGP scan interval 60 secs Status codes: s suppressed, d damped, h history, * valid, > best i - internal, r RIB-failure, S stale, N Nexthop-discard Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *>i10.0.99.1/32 10.0.99.1 11 100 0 i *> 10.0.99.2/32 0.0.0.0 0 32768 i *>i10.0.99.3/32 10.0.99.3 0 100 0 i Processed 3 prefixes, 3 paths
XRv-3 での確認
10.0.99.1/32 の MED を 1,011 で受信しています。つまり、XRv-2(RR)で設定されている「XRv-2 → XRv-3 の Out 側の route-policy(MED +100)」が効いていないことが分かります。
RP/0/0/CPU0:XRv-3# show bgp Sat Aug 8 02:51:20.865 UTC BGP router identifier 10.0.99.3, local AS number 65000 BGP generic scan interval 60 secs Non-stop routing is enabled BGP table state: Active Table ID: 0xe0000000 RD version: 12 BGP main routing table version 12 BGP NSR Initial initsync version 2 (Reached) BGP NSR/ISSU Sync-Group versions 0/0 BGP scan interval 60 secs Status codes: s suppressed, d damped, h history, * valid, > best i - internal, r RIB-failure, S stale, N Nexthop-discard Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *>i10.0.99.1/32 10.0.99.1 1011 100 0 i *>i10.0.99.2/32 10.0.99.2 1100 100 0 i *> 10.0.99.3/32 0.0.0.0 0 32768 i Processed 3 prefixes, 3 paths