BGP Route-Reflector

 BGP route-reflector is one of the features in BGP which helps to avoid full-mesh in IBGP networks. Within IBGP all the devices needs to form full mesh. Let's consider the below topology where R1, R2, R3 and R4 are in the same AS (AS_1234). So we need to create an entry between each routers. 

  • R1 needs to connect to R2, R3 and R4
  • R2 needs to connect to R3 and R4
  • R3 needs to connect to R4

Formula to calculate the number of entries needed for Full-mesh is n(n-1)/2. Here, there are 4 routers, { [4(4-1)/2] == 4(3)/2 = 6 }, 6 are required. 


By using Route-reflector (RR), we can reduce the size for full mesh. Here is how it works,
Let's say R2 is RR server, then we need to form connectivity between R1 and R2, R2 and R3, R2 and R4. Now the entry is reduced to 3 from 6.

Consider the below topology:

R1 Interface Configuration:
R1#show ip int brief
Interface                  IP-Address      OK? Method Status                Protocol
FastEthernet0/0            192.168.12.1    YES manual up                    up
FastEthernet0/1            unassigned      YES unset  administratively down down
Loopback0                  1.1.1.1         YES manual up                    up
R1#

R1#show running-config | section router ospf
router ospf 1
 log-adjacency-changes
 network 0.0.0.0 255.255.255.255 area 0
R1#

R2 Interface Configuration:
R2#show ip int brief
Interface                  IP-Address      OK? Method Status                Protocol
FastEthernet0/0            192.168.12.2    YES manual up                    up
FastEthernet0/1            192.168.23.2    YES manual up                    up
FastEthernet1/0            192.168.24.2    YES manual up                    up
Loopback0                  2.2.2.2         YES manual up                    up
R2#

R2#show running-config | section router ospf
router ospf 1
 log-adjacency-changes
 network 0.0.0.0 255.255.255.255 area 0
R2#

R3 Interface Configuration:
R3#show ip int brief
Interface                  IP-Address      OK? Method Status                Protocol
FastEthernet0/0            192.168.23.3    YES manual up                    up
FastEthernet0/1            unassigned      YES unset  administratively down down
Loopback0                  3.3.3.3         YES manual up                    up
R3#

R3#show running-config | section router ospf
router ospf 1
 log-adjacency-changes
 network 0.0.0.0 255.255.255.255 area 0
R3#

R4 Interface Configuration:
R4#show ip interface brief
Interface                  IP-Address      OK? Method Status                Protocol
FastEthernet0/0            192.168.24.4    YES manual up                    up
FastEthernet0/1            192.168.45.4    YES manual up                    up
Loopback0                  4.4.4.4         YES manual up                    up
R4#

R4#show running-config | section router ospf
router ospf 1
 log-adjacency-changes
 network 4.4.4.4 0.0.0.0 area 0
 network 192.168.24.0 0.0.0.255 area 0
R4#

R5 Interface Configuration:
R5#show ip int brief
Interface                  IP-Address      OK? Method Status                Protocol
FastEthernet0/0            192.168.45.5    YES manual up                    up
FastEthernet0/1            unassigned      YES unset  administratively down down
Loopback0                  5.5.5.5         YES manual up                    up
R5#


R1 BGP Configuration:

R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#router bgp 1234
R1(config-router)#neighbor 2.2.2.2 remote-as 1234
R1(config-router)#neighbor 2.2.2.2 update-source loopback 0
R1(config-router)#redistribute connected
R1(config-router)#end
R1#

R2 BGP Configuration:

R2#conf t
R2#conf terminal
Enter configuration commands, one per line.  End with CNTL/Z.
R2(config)#router bgp 1234
R2(config-router)#neighbor 1.1.1.1 remote-as 1234
R2(config-router)#neighbor 1.1.1.1 update-source loopback 0
R2(config-router)#neighbor 3.3.3.3 remote-as 1234
R2(config-router)#neighbor 3.3.3.3 update-source loopback 0
R2(config-router)#neighbor 4.4.4.4 remote-as 1234
R2(config-router)#neighbor 4.4.4.4 update-source loopback 0
R2(config-router)#end
R2#

R3 BGP Configuration:

R3#conf terminal
Enter configuration commands, one per line.  End with CNTL/Z.
R3(config)#router bgp 1234
R3(config-router)#neighbor 2.2.2.2 remote-as 1234
R3(config-router)#neighbor 2.2.2.2 update-source loopback 0
R3(config-router)#redistribute connected
R3(config-router)#end
R3#

R4 BGP Configuration:

R4#conf terminal
Enter configuration commands, one per line.  End with CNTL/Z.
R4(config)#router bgp 1234
R4(config-router)#neighbor 2.2.2.2 remote-as 1234
R4(config-router)#neighbor 2.2.2.2 update-source loopback 0
R4(config-router)#neighbor 192.168.45.5 remote-as 5
R4(config-router)#redistribute connected
R4(config-router)#end
R4#

R5 BGP Configuration:

R5#conf terminal
Enter configuration commands, one per line.  End with CNTL/Z.
R5(config)#router bgp 5
R5(config-router)#neighbor 192.168.45.4 remote-as 1234
R5(config-router)#redistribute connected
R5(config-router)#end
R5#


R4 BGP table:
R4#show ip bgp
BGP table version is 4, 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
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 5.5.5.5/32       192.168.45.5             0             0 5 ?
r> 192.168.45.0     192.168.45.5             0             0 5 ?
R4#

R4#ping 5.5.5.5
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 5.5.5.5, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 28/30/36 ms
R4#

From the above R4 BGP table, we can reach the loopback IP Address (IP: 5.5.5.5/32) of R5.

R2 BGP table:

R2#show ip bgp
BGP table version is 1, local router ID is 2.2.2.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
* i5.5.5.5/32       192.168.45.5             0    100      0 5 ?
* i192.168.45.0     192.168.45.5             0    100      0 5 ?
R2#

R2#show ip bgp 5.5.5.5
BGP routing table entry for 5.5.5.5/32, version 0
Paths: (1 available, no best path)
  Not advertised to any peer
  5
    192.168.45.5 (inaccessible) from 4.4.4.4 (4.4.4.4)
      Origin incomplete, metric 0, localpref 100, valid, internal
R2#

From the above R2 BGP table, we can see that the 5.5.5.5/32 is not selected as the best path (">" is not in the BGP table) and also you can notice that the 5.5.5.5/32 network is not advertised to any peer.

Lets start with Route-Reflector configuration:
Here, I have enabled RR in R2 with the command "neighbor <ip> route-reflector-client".

R2#conf terminal
Enter configuration commands, one per line.  End with CNTL/Z.
R2(config)#router bgp 1234
R2(config-router)#neighbor 1.1.1.1 route-reflector-client
R2(config-router)#neighbor 3.3.3.3 route-reflector-client
R2(config-router)#neighbor 4.4.4.4 route-reflector-client
R2(config-router)#end
R2#

After configuring Route-reflector client in R2, we can see that it is advertised to other peer groups

R2#show ip bgp  5.5.5.5
BGP routing table entry for 5.5.5.5/32, version 49
Paths: (1 available, best #1, table Default-IP-Routing-Table)
  Advertised to update-groups:
     2
  5, (Received from a RR-client)
    192.168.45.5 (metric 2) from 4.4.4.4 (4.4.4.4)
      Origin incomplete, metric 0, localpref 100, valid, internal, best
R2#

Output from R1:
R1#show ip bgp 5.5.5.5
BGP routing table entry for 5.5.5.5/32, version 135
Paths: (1 available, best #1, table Default-IP-Routing-Table)
  Not advertised to any peer
  5
    192.168.45.5 (metric 12) from 2.2.2.2 (2.2.2.2)
      Origin incomplete, metric 0, localpref 100, valid, internal, best
      Originator: 4.4.4.4, Cluster list: 2.2.2.2
R1#
R1#ping 5.5.5.5

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 5.5.5.5, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 76/88/96 ms

From the above output, we see that,
  • 5.5.5.5 is reachable from R1 router
  • Two more information need to noticed, "Originator" and "Cluster list"
    • "Oiginator": From which router this information is originated. Here 4.4.4.4, as its acts as border router that fetches information from EBGP to advertises to IBGP routers.
    • "Cluster list": This is our Route-Reflector Router (RR).
Note:
  • RR (Route-Reflector ) will be used with the IBGP
  • It helps to avoid full BGP mesh within the IBGP
That's it about Route-Reflector.

You can also look into my video tutorial in Tamil:

Post a Comment