I’m going a bit further with my BGP study notes..On this post, I will be exploring Route Reflectors…Basically, for IBGP to completely work, we need to have a full mesh of IBGP peering to all routers within the Autonomous System…So if I have more routers, say, 10 routers on my AS, then I will need to have 15 MESH IBGP ( Formula is n(n-1)/2 ) connections which is very tedious to manage..
Important concepts for Route-Reflectors:
Peering to the following:
– IBGP Client Neighbor
– IBGP Non-Client Neighbor
– EBGP Neighbor
Two Important Fields to remember in Route Reflectors:
– Cluster List — this is the Route Reflector itself
– Originator ID — this is the Route Reflector Client
We can see this using the command “show ip bgp XXX” , XXX is the prefix that is advertise…
So here’s my laboratory set up..
Here are my router configurations based on my topology above:
|
R1#sh run | sec bgp
ipv6 multicast rpf use-bgp
router bgp 65000
bgp log-neighbor-changes
neighbor 172.16.12.2 remote-as 65000
neighbor 172.16.13.3 remote-as 65000
|
|
R2#sh run | sec bgp
ipv6 multicast rpf use-bgp
router bgp 65000
bgp log-neighbor-changes
network 22.22.22.0 mask 255.255.255.0
neighbor 172.16.12.1 remote-as 65000
neighbor 172.16.12.1 next-hop-self
neighbor 172.16.23.3 remote-as 65000
R2#
Key point:
1. R1 is a Route Reflector Client
2. I’m telling R1 that R2 is the next-hop router..
3. I have advertise the loopback interface address (22.22.22.22)
|
|
R3#sh run | sec bgp
ipv6 multicast rpf use-bgp
router bgp 65000
bgp log-neighbor-changes
network 172.16.12.0 mask 255.255.255.0
network 172.16.13.0 mask 255.255.255.0
network 172.16.23.0 mask 255.255.255.0
network 172.16.34.0 mask 255.255.255.0
neighbor 172.16.13.1 remote-as 65000
neighbor 172.16.13.1 route-reflector-client
neighbor 172.16.13.1 next-hop-self
neighbor 172.16.23.2 remote-as 65000
neighbor 172.16.23.2 route-reflector-client
neighbor 172.16.23.2 next-hop-self
neighbor 172.16.34.4 remote-as 65001
R3#
Key points here:
1. R3 is the Route Reflector
2. I have added R1 and R2 as a route reflector client
3. I’m telling R1 and R2 that R3 is the next hop for any prefix that R3 has learned from EBGP..
4. I need to advertise into BGP the subnets 172.16.12.0/24, 172.16.13.0/24, 172.16.23.0/24 and 172.16.34.0/24 so that R4 should know how to reach this subnets..
IMPORTANT… We can see a RIB on R3 for 172.16.34.0/24 as I have advertise it at the same time, it’s a direct link… I need to advertise it in R3 so that R1, R2 knows how to reach R4…
|
|
R4#sh run | sec bgp
ipv6 multicast rpf use-bgp
router bgp 65001
bgp log-neighbor-changes
network 4.4.4.0 mask 255.255.255.0
neighbor 172.16.34.3 remote-as 65000
R4#
>> This is just a normal EBGP to R3…
|
So let’s check the BGP database on each router…
|
R1#sh ip bgp
BGP table version is 15, local router ID is 1.1.1.1
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 4.4.4.0/24 172.16.13.3 0 100 0 65001 i
* i 22.22.22.0/24 172.16.23.2 0 100 0 i
*>i 172.16.12.2 0 100 0 i
r>i 172.16.13.0/24 172.16.13.3 0 100 0 i
*>i 172.16.23.0/24 172.16.13.3 0 100 0 i
*>i 172.16.34.0/24 172.16.13.3 0 100 0 i
R1#
|
|
R2#show ip bgp
BGP table version is 6, local router ID is 22.22.22.22
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 4.4.4.0/24 172.16.23.3 0 100 0 65001 i
*> 22.22.22.0/24 0.0.0.0 0 32768 i
*>i 172.16.13.0/24 172.16.23.3 0 100 0 i
r>i 172.16.23.0/24 172.16.23.3 0 100 0 i
*>i 172.16.34.0/24 172.16.23.3 0 100 0 i
R2#
|
|
R3#sh ip bgp
BGP table version is 8, local router ID is 33.33.33.33
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
*> 4.4.4.0/24 172.16.34.4 0 0 65001 i
*>i 22.22.22.0/24 172.16.23.2 0 100 0 i
*> 172.16.13.0/24 0.0.0.0 0 32768 i
*> 172.16.23.0/24 0.0.0.0 0 32768 i
*> 172.16.34.0/24 0.0.0.0 0 32768 i
R3#
|
|
R4#show ip bgp
BGP table version is 14, local router ID is 4.4.4.4
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
*> 4.4.4.0/24 0.0.0.0 0 32768 i
*> 22.22.22.0/24 172.16.34.3 0 65000 i
*> 172.16.13.0/24 172.16.34.3 0 0 65000 i
*> 172.16.23.0/24 172.16.34.3 0 0 65000 i
r> 172.16.34.0/24 172.16.34.3 0 0 65000 i
R4#
|
Let’ check the Routing table…
|
R1#show ip route bgp
Codes: L – local, C – connected, S – static, R – RIP, M – mobile, B – BGP
D – EIGRP, EX – EIGRP external, O – OSPF, IA – OSPF inter area
N1 – OSPF NSSA external type 1, N2 – OSPF NSSA external type 2
E1 – OSPF external type 1, E2 – OSPF external type 2
i – IS-IS, su – IS-IS summary, L1 – IS-IS level-1, L2 – IS-IS level-2
ia – IS-IS inter area, * – candidate default, U – per-user static route
o – ODR, P – periodic downloaded static route, H – NHRP, l – LISP
+ – replicated route, % – next hop override
Gateway of last resort is not set
4.0.0.0/24 is subnetted, 1 subnets
B 4.4.4.0 [200/0] via 172.16.13.3, 00:12:14
22.0.0.0/24 is subnetted, 1 subnets
B 22.22.22.0 [200/0] via 172.16.12.2, 00:22:42
172.16.0.0/16 is variably subnetted, 6 subnets, 2 masks
B 172.16.23.0/24 [200/0] via 172.16.13.3, 00:16:03
B 172.16.34.0/24 [200/0] via 172.16.13.3, 00:16:03
R1#
|
|
R2#show ip route bgp
Codes: L – local, C – connected, S – static, R – RIP, M – mobile, B – BGP
D – EIGRP, EX – EIGRP external, O – OSPF, IA – OSPF inter area
N1 – OSPF NSSA external type 1, N2 – OSPF NSSA external type 2
E1 – OSPF external type 1, E2 – OSPF external type 2
i – IS-IS, su – IS-IS summary, L1 – IS-IS level-1, L2 – IS-IS level-2
ia – IS-IS inter area, * – candidate default, U – per-user static route
o – ODR, P – periodic downloaded static route, H – NHRP, l – LISP
+ – replicated route, % – next hop override
Gateway of last resort is not set
4.0.0.0/24 is subnetted, 1 subnets
B 4.4.4.0 [200/0] via 172.16.23.3, 00:27:33
172.16.0.0/16 is variably subnetted, 6 subnets, 2 masks
B 172.16.13.0/24 [200/0] via 172.16.23.3, 00:12:33
B 172.16.34.0/24 [200/0] via 172.16.23.3, 00:27:33
R2#
|
|
R3#show ip route bgp
Codes: L – local, C – connected, S – static, R – RIP, M – mobile, B – BGP
D – EIGRP, EX – EIGRP external, O – OSPF, IA – OSPF inter area
N1 – OSPF NSSA external type 1, N2 – OSPF NSSA external type 2
E1 – OSPF external type 1, E2 – OSPF external type 2
i – IS-IS, su – IS-IS summary, L1 – IS-IS level-1, L2 – IS-IS level-2
ia – IS-IS inter area, * – candidate default, U – per-user static route
o – ODR, P – periodic downloaded static route, H – NHRP, l – LISP
+ – replicated route, % – next hop override
Gateway of last resort is not set
4.0.0.0/24 is subnetted, 1 subnets
B 4.4.4.0 [20/0] via 172.16.34.4, 00:32:08
22.0.0.0/24 is subnetted, 1 subnets
B 22.22.22.0 [200/0] via 172.16.23.2, 00:27:28
|
|
R4#show ip route bgp
Codes: L – local, C – connected, S – static, R – RIP, M – mobile, B – BGP
D – EIGRP, EX – EIGRP external, O – OSPF, IA – OSPF inter area
N1 – OSPF NSSA external type 1, N2 – OSPF NSSA external type 2
E1 – OSPF external type 1, E2 – OSPF external type 2
i – IS-IS, su – IS-IS summary, L1 – IS-IS level-1, L2 – IS-IS level-2
ia – IS-IS inter area, * – candidate default, U – per-user static route
o – ODR, P – periodic downloaded static route, H – NHRP, l – LISP
+ – replicated route, % – next hop override
Gateway of last resort is not set
22.0.0.0/24 is subnetted, 1 subnets
B 22.22.22.0 [20/0] via 172.16.34.3, 00:27:10
172.16.0.0/16 is variably subnetted, 4 subnets, 2 masks
B 172.16.13.0/24 [20/0] via 172.16.34.3, 00:13:05
B 172.16.23.0/24 [20/0] via 172.16.34.3, 00:31:14
R4#
|
Now, let me show the ROUTE REFLECTOR…from R3…I should be seeing the Prefix tag which is coming from RR Client…
|
R3#show ip bgp 22.22.22.22
BGP routing table entry for 22.22.22.0/24, version 7
Paths: (1 available, best #1, table default)
Advertised to update-groups:
9 10
Refresh Epoch 1
Local, (Received from a RR-client)
172.16.23.2 from 172.16.23.2 (22.22.22.22)
Origin IGP, metric 0, localpref 100, valid, internal, best
rx pathid: 0, tx pathid: 0x0
R3#
|
let’s check from an other Route Reflector Client..
|
R1#show ip bgp 22.22.22.22
BGP routing table entry for 22.22.22.0/24, version 2
Paths: (2 available, best #2, table default)
Not advertised to any peer
Refresh Epoch 2
Local
172.16.23.2 from 172.16.13.3 (33.33.33.33)
Origin IGP, metric 0, localpref 100, valid, internal
Originator: 22.22.22.22, Cluster list: 33.33.33.33
rx pathid: 0, tx pathid: 0
Refresh Epoch 1
Local
172.16.12.2 from 172.16.12.2 (22.22.22.22)
Origin IGP, metric 0, localpref 100, valid, internal, best
rx pathid: 0, tx pathid: 0x0
R1#
>>> As seen above, the ORIGINATOR is the source of the Prefix while the CLUSTER LIST is the Route Reflector itself…
>>> So it means that a prefix advertise by a Route Reflector can be seen within an IBGP AS and it is tag with Originator ID and Cluster list…
Good thing here is I can ping it as well from R1…
R1#ping 22.22.22.22
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 22.22.22.22, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 56/60/64 ms
R1#
So it defeats the IBGP Split Horizon which restricting routers to see routes advertise by neighbors without a full mesh BGP configurations…
|
But does R4 is telling us about the routes..
|
R4#show ip bgp 22.22.22.22
BGP routing table entry for 22.22.22.0/24, version 13
Paths: (1 available, best #1, table default)
Not advertised to any peer
Refresh Epoch 1
65000
172.16.34.3 from 172.16.34.3 (33.33.33.33)
Origin IGP, localpref 100, valid, external, best
rx pathid: 0, tx pathid: 0x0
R4#show ip bgp
BGP table version is 14, local router ID is 4.4.4.4
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
*> 4.4.4.0/24 0.0.0.0 0 32768 i
*> 22.22.22.0/24 172.16.34.3 0 65000 i
>>> As seen above, it’s just a routes learned from another AS…
Let’s ping it …
R4#ping 22.22.22.22 source 4.4.4.4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 22.22.22.22, timeout is 2 seconds:
Packet sent with a source address of 4.4.4.4
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 52/64/80 ms
R4#
|
****************************END OF LAB***************************************

Leave a comment