This lab example adds a route reflector to the iBGP configuration of AS 100.
CSR14
router bgp 100
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 100.9.9.9 remote-as 100
neighbor 100.9.9.9 update-source Loopback0
neighbor 100.13.13.13 remote-as 100
neighbor 100.13.13.13 update-source Loopback0
!
address-family ipv4
network 100.14.14.14 mask 255.255.255.255
neighbor 100.9.9.9 activate
neighbor 100.9.9.9 route-reflector-client
neighbor 100.13.13.13 activate
neighbor 100.13.13.13 route-reflector-client
exit-address-family
XR13
router bgp 100
address-family ipv4 unicast
!
!
neighbor 100.14.14.14
remote-as 100
update-source Loopback0
address-family ipv4 unicast
IOS9
router bgp 100
bgp log-neighbor-changes
neighbor 100.14.14.14 remote-as 100
neighbor 100.14.14.14 update-source Loopback0
CSR14#show bgp ipv4 unicast summary
BGP router identifier 100.14.14.14, local AS number 100
BGP table version is 2, main routing table version 2
3 network entries using 744 bytes of memory
5 path entries using 600 bytes of memory
3/1 BGP path/bestpath attribute entries using 768 bytes of memory
1 BGP AS-PATH entries using 24 bytes of memory
0 BGP route-map cache entries using 0 bytes of memory
0 BGP filter-list cache entries using 0 bytes of memory
BGP using 2136 total bytes of memory
BGP activity 4/1 prefixes, 7/2 paths, scan interval 60 secs
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
100.8.8.8 4 100 744 757 2 0 0 11:16:17 0
100.9.9.9 4 100 22 18 2 0 0 00:12:43 2
100.11.11.11 4 100 745 748 2 0 0 11:11:01 0
100.13.13.13 4 100 16 16 2 0 0 00:11:56 2
CSR14#show bgp ipv4 unicast
BGP table version is 2, local router ID is 100.14.14.14
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
* i 100.1.15.0/24 100.13.15.15 0 100 0 15 ?
* i 100.9.15.15 0 100 0 15 ?
*> 100.14.14.14/32 0.0.0.0 0 32768 i
* i 100.15.15.15/32 100.13.15.15 0 100 0 15 i
* i 100.9.15.15 0 100 0 15 i
You'll notice that now CSR14 is now learning the routes that CSR15 has advertised but neither route is a best route. This is because the next hop information is set to the eBGP peering IP of CSR15 from both XR13 and IOS9. The next hop needs to be modified to something that CSR14 can recurse to, either the IP address of the loopback of each iBGP peer that advertised the routes or advertise the connected /24 prefixes used by the eBGP routers that connect AS 100 to AS 15.
CSR14
router bgp 100
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 100.9.9.9 remote-as 100
neighbor 100.9.9.9 update-source Loopback0
neighbor 100.13.13.13 remote-as 100
neighbor 100.13.13.13 update-source Loopback0
!
address-family ipv4
network 100.14.14.14 mask 255.255.255.255
neighbor 100.9.9.9 activate
neighbor 100.9.9.9 route-reflector-client
neighbor 100.13.13.13 activate
neighbor 100.13.13.13 route-reflector-client
exit-address-family
XR13
router bgp 100
address-family ipv4 unicast
!
!
neighbor 100.14.14.14
remote-as 100
update-source Loopback0
address-family ipv4 unicast
IOS9
router bgp 100
bgp log-neighbor-changes
neighbor 100.14.14.14 remote-as 100
neighbor 100.14.14.14 update-source Loopback0
CSR14#show bgp ipv4 unicast summary
BGP router identifier 100.14.14.14, local AS number 100
BGP table version is 2, main routing table version 2
3 network entries using 744 bytes of memory
5 path entries using 600 bytes of memory
3/1 BGP path/bestpath attribute entries using 768 bytes of memory
1 BGP AS-PATH entries using 24 bytes of memory
0 BGP route-map cache entries using 0 bytes of memory
0 BGP filter-list cache entries using 0 bytes of memory
BGP using 2136 total bytes of memory
BGP activity 4/1 prefixes, 7/2 paths, scan interval 60 secs
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
100.8.8.8 4 100 744 757 2 0 0 11:16:17 0
100.9.9.9 4 100 22 18 2 0 0 00:12:43 2
100.11.11.11 4 100 745 748 2 0 0 11:11:01 0
100.13.13.13 4 100 16 16 2 0 0 00:11:56 2
CSR14#show bgp ipv4 unicast
BGP table version is 2, local router ID is 100.14.14.14
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
* i 100.1.15.0/24 100.13.15.15 0 100 0 15 ?
* i 100.9.15.15 0 100 0 15 ?
*> 100.14.14.14/32 0.0.0.0 0 32768 i
* i 100.15.15.15/32 100.13.15.15 0 100 0 15 i
* i 100.9.15.15 0 100 0 15 i
You'll notice that now CSR14 is now learning the routes that CSR15 has advertised but neither route is a best route. This is because the next hop information is set to the eBGP peering IP of CSR15 from both XR13 and IOS9. The next hop needs to be modified to something that CSR14 can recurse to, either the IP address of the loopback of each iBGP peer that advertised the routes or advertise the connected /24 prefixes used by the eBGP routers that connect AS 100 to AS 15.