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

Quote of the week

"People ask me what I do in the winter when there's no baseball. I'll tell you what I do. I stare out the window and wait for spring."

~ Rogers Hornsby