読者です 読者をやめる 読者になる 読者になる

らくがきちょう

なんとなく

RR が経路を伝搬する時は属性を変更しない

BGP Cisco Network

ある程度の規模になれば、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 を使いました。

f:id:sig9:20150808112844p:plain

以下の 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 テーブルを図示すると以下の通りです。

f:id:sig9:20150808123408p:plain

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