What is BGP Route Reflector Configuration : Explained

bgp route reflector

Avoiding network loops in a network is of utmost importance. iBGP uses the split horizon rule to avoid loops. However, due to the Split horizon rule, all the iBGP neighbours must be in a full mesh topology.

But why should the iBGP neighbours be in a full mesh topology?
Split Horizon states that routers that learn BGP Routes from iBGP peers should not advertise that to another iBGP peer.

Let’s understand this with the help of an example: –

bgp route reflector

Imagine a topology given in the figure.

R2 and R3 are iBGP peers, R3 and R4 are iBGP peers, R2 and R1 are into eBGP.

R2 advertises a route received from R1 to R3, but R3 shall not advertise the routes to R4 because R4 and R3 are also iBGP peers, and the SPLIT HORIZON rule applies to them.

If R4 wants to learn that particular route, R4 and R2 must also be an iBGP peer.
Every router has to be an iBGP peer with the router that learns about the routes from the eBGP peer.

So, the updated topology would look like this-

iBGP

Hence, in the case of iBGP, we need to make full mesh neighborship so that each router learns routes received from eBGP.

Creating a full mesh neighborship in case of a small network looks fine. However, as the network grows, the full mesh becomes impractical due to the sheer number of connections required, leading to scalability and management issues.

How to avoid full Mesh Neighborship?

Route Reflector is the method that helps to avoid the full mesh neighborship and reduce the number of BGP peering within an AS.

In the case of route reflector, routers get configured as Client and Server. The server is responsible for advertising the traffic to all the clients in a topology.

Topology with and without route reflector configured would look like this:-

full mesh
server

Now each router needs to have an iBGP peering with just a server.

What is the role of routers in BGP Route Reflector Configuration?

The role of routers in BGP Route Reflector Configuration is as follows-

  • Route Reflector (RR)

The Route Reflector, also known as the Server, is responsible for reflecting BGP routes. The server receives BGP updates, stores them, and then reflects those updates to other routers accordingly. It also communicates with non-client routers directly or through client routers.  

  • Client Routers

These are BGP routers that form a peering relationship with a Route Reflector. They advertise their routes to the Route Reflector, which then reflects these routes to other clients. Client routers do not peer directly with each other; instead, they peer with the Route Reflector. We need to configure the router as a client. 

  • Non-Client Routers

These are BGP routers that do not peer directly with other non-client routers. They receive BGP routes from Route Reflectors, either directly or through client routers. 

Based on the types of routers, we can have the following cases: -

Case – 1

If a route comes from a Client, the Route Reflector reflects it to all other clients and non-clients. 

Case 1 type of router

Case – 2

If a route comes from a non-client, the Route reflector reflects it to all the clients but not the non-clients. 

Case 2 router type

Case – 3

If a route comes from an eBGP peer, the Route reflector reflects it to all the clients and non-clients. 

Case 3 router type

Configuration

configuration

Let us first configure BGP-

R1(config)#router bgp 100 

R1(config-router)#neighbor 192.168.23.2 remote-as 100  

R1(config-router)#neighbor 192.168.24.2 remote-as 100 

 

Shape

 

R2(config)#router bgp 100 

R2(config-router)#neighbor 192.168.23.1 remote-as 100 

R2(config-router)#neighbor 192.168.35.2 remote-as 100 

 

 

 

ShapeR3(config)#router bgp 100 

R3(config-router)#neighbor 192.168.35.1 remote-as 100 

R3(config-router)#neighbor 192.168.45.2 remote-as 100 

 

Shape 

 

R4(config)#router bgp 100 

R4(config-router)#neighbor 192.168.45.1 remote-as 100 

 

R4(config-router)#neighbor 192.168.24.2 remote-as 100

Let’s add a loopback 200.1.1.1 at R1, add it to BGP, and see if R3 can get this network in its BGP table.

R1(config)#interface loopback 1 

R1(config-if)#ip address 200.1.1.1 255.255.255.0 

R1(config-if)#exit 

R1(config)#router bgp 100 

R1(config-router)#network 200.1.1.0 

Let’s verify BGP for R2, R3 and R4

R2#show ip bgp  

BGP table version is 2, local router ID is 192.168.35.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 200.1.1.0        192.168.23.1                  0                  100                       0                          i 

 

Shape 

R2#show ip route  

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 

 

     192.168.23.0/24 is variably subnetted, 2 subnets, 2 masks 

C        192.168.23.0/24 is directly connected, FastEthernet0/0 

L        192.168.23.2/32 is directly connected, FastEthernet0/0 

      192.168.35.0/24 is variably subnetted, 2 subnets, 2 masks 

C      192.168.35.0/24 is directly connected, FastEthernet1/0 

ShapeL                       192.168.35.1/32 is directly connected, FastEthernet1/0 

B      200.1.1.0/24 [200/0] via 192.168.23.1, 00:02:50 

 

Shape 

R3#show ip bgp  

R3# 

R3#show ip route  

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 

 

         192.168.35.0/24 is variably subnetted, 2 subnets, 2 masks 

C        192.168.35.0/24 is directly connected, FastEthernet1/0 

L        192.168.35.2/32 is directly connected, FastEthernet1/0 

      192.168.45.0/24 is variably subnetted, 2 subnets, 2 masks 

C        192.168.45.0/24 is directly connected, FastEthernet0/0 

L         192.168.45.1/32 is directly connected, FastEthernet0/0 

Loopback route of R1 i.e., 200.1.1.0/24 is not present in R3 since it is not a peer with R1.

R4#show ip bgp  

BGP table version is 2, local router ID is 192.168.45.2 

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 200.1.1.0             192.168.24.1                     0    100                       0      i 

 

R4#show ip route  

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 

 

       192.168.24.0/24 is variably subnetted, 2 subnets, 2 masks 

C          192.168.24.0/24 is directly connected, FastEthernet1/0 

L                         192.168.24.2/32 is directly connected, FastEthernet1/0 

          192.168.45.0/24 is variably subnetted, 2 subnets, 2 masks 

C                                192.168.45.0/24 is directly connected, FastEthernet0/0 

L                                 192.168.45.2/32 is directly connected, FastEthernet0/0 

B          200.1.1.0/24 [200/0] via 192.168.24.1, 00:05:55 

Route Reflector Configuration: -

Let us configure Route Reflector in a way that R1 and R3 become the clients.

R2(config)#router bgp 100 

R2(config-router)#neighbor 192.168.23.1 route-reflector-client 

R2(config-router)#neighbor 192.168.35.2 route-reflector-client 

 

 

 

Shape 

R4(config)#router bgp 100 

R4(config-router)#neighbor 192.168.24.1 route-reflector-client 

R4(config-router)#neighbor 192.168.45.1 route-reflector-client 

 

Verification: -

R3#show ip bgp  

BGP table version is 1, local router ID is 192.168.45.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 200.1.1.0                   192.168.24.1             0                       100         0    i 

 

Shape 

R3#show ip bgp 200.1.1.1 

BGP routing table entry for 200.1.1.0/24, version 0 

Paths: (2 available, no best path) 

  Not advertised to any peer 

  Refresh Epoch 2 

  Local 

192.168.24.1 (inaccessible) from 192.168.45.2 (192.168.45.2) 

 

Origin IGP, metric 0, localpref 100, valid, internal 

Originator: 192.168.24.1, Cluster list: 192.168.45.2 

rx pathid: 0, tx pathid: 0 

  Refresh Epoch 2 

  Local 

192.168.23.1 (inaccessible) from 192.168.35.1 (192.168.35.1) 

Origin IGP, metric 0, localpref 100, valid, internal 

Originator: 192.168.24.1, Cluster list: 192.168.35.1 

rx pathid: 0, tx pathid: 0 

See the magic of Route Reflector. We can now see 200.1.1.0 in the BGP and routing table of R3.

In this way, we can get rid of full mesh neighborship using the concept of route reflector.

2 thoughts on “What is BGP Route Reflector Configuration : Explained”

  1. I have 2 different AS (AS100 & AS200). R1 & R2 are part of AS100 connected through iBGP and R3 & R4 are part of AS200 connected with each other through iBGP. And both AS (100 & 200) are connected through eBGP between R3 & R4!

    Now interviewer asked me that R4 does not have routing table or information of R1? What is the issue!!??

    Please help me!

    Reply
    • u need to update next hop too when you receive updates from eBGP and advertise them into iBGP, so with your iBGP peer use the command:Neighbor x.x.x.x next-hop-self (or loopback address if you are forming neighborship with loopbacks).

      Reply

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.