Sunday, 17 May 2015

Route reflector

BGP route reflectors
Network topology:


Configuration:

Client1 and Client3 routers are clients of RR1 router while Client2 and Client4 are the clients of RR2 router. There is a single IBGP session between each router.

Client1 advertises 11.1.1.1/32 route to RR1 router and Client2 advertises 12.1.1.1/32 route to RR2 router.

RR1 and RR2 Configuration

RR1 router:

router bgp 100
 neighbor 2.2.2.2 remote-as 100
 neighbor 2.2.2.2 update-source Loopback 0
 neighbor 2.2.2.2 description RR2 router
 neighbor 172.16.1.2 remote-as 100
 neighbor 172.16.1.2 route-reflector-client
 neighbor 172.16.1.2 description Client1

!

RR2 router:

router bgp 100
 neighbor 1.1.1.1 remote-as 100
 neighbor 1.1.1.1 update-source Loopback 0
 neighbor 1.1.1.1 description RR1 router
 neighbor 172.16.2.2 remote-as 100
 neighbor 172.16.2.2 route-reflector-client
 neighbor 172.16.2.2 description Client2

!

Client1 and Client2 Configuration

Client1 router:

router bgp 100
 neighbor 172.16.1.1 remote-as 100
 neighbor 172.16.1.1 description RR1
 network 11.1.1.1 mask 255.255.255.255
!


Client2 router:

router bgp 100
 neighbor 172.16.2.1 remote-as 100
 neighbor 172.16.2.1 description RR2
 network 12.1.1.1 mask 255.255.255.255
!


Monitoring route reflection:
An RR reflecting the route received from a RR-Client adds-
  1. Originator ID- a 4-byte BGP attribute that is created by the RR. This attribute carries the Router ID of the originator of the route in the local AS. If the update comes back to the originator, it ignores the update.
  2. Cluster List- A Cluster List is a list of Cluster IDs that an update has traversed. When a route reflector sends a route received from a client to a non-client, it appends the local Cluster ID. If a route reflector receives a route whose Cluster List contains the local Cluster ID, it ignores the update.
The following output shows RR1 receives 11.1.1.1/32 prefix from it RR-client Client1.

11.1.1.1/32 on RR1

!--------- Client1 router advertises 11.1.1.1/32 to RR1 router

Client1# show ip bgp 11.1.1.1
BGP routing table entry for 11.1.1.1/32, version 2
Paths: (1 available, best #1, table Default-IP-Routing-Table)
  Advertised to update-groups:
     1
  Local
    0.0.0.0 from 0.0.0.0 (172.16.1.2)
      Origin IGP, metric 0, localpref 100, weight 32768, valid, sourced, local, best

Client1# show ip bgp update-group
BGP version 4 update-group 1, internal, Address Family: IPv4 Unicast
  BGP Update version : 5/0, messages 0
  Update messages formatted 1, replicated 0
  Number of NLRIs in the update sent: max 1, min 1
  Minimum time between advertisement runs is 0 seconds
  Has 1 member (* indicates the members currently being sent updates):
   172.16.1.1


!---- RR1 receives 11.1.1.1/32 from its client Client1 router

RR1# show ip bgp 11.1.1.1
BGP routing table entry for 11.1.1.1/32, version 2
Paths: (1 available, best #1, table Default-IP-Routing-Table)
  Advertised to update-groups:
     2
  Local, (Received from a RR-client)
    172.16.1.2 from 172.16.1.2 (172.16.1.2)
      Origin IGP, metric 0, localpref 100, valid, internal, best

RR1 router advertises this "best" route to all its IBGP peers including the peer it received from.

RR1 advertises 11.1.1.1/32

RR1# show ip bgp update-group
BGP version 4 update-group 1, internal, Address Family: IPv4 Unicast
  BGP Update version : 5/0, messages 0
  Route-Reflector Client
  Update messages formatted 3, replicated 0
  Number of NLRIs in the update sent: max 1, min 0
  Minimum time between advertisement runs is 0 seconds
  Has 1 member (* indicates the members currently being sent updates):
   172.16.1.2

BGP version 4 update-group 2, internal, Address Family: IPv4 Unicast
  BGP Update version : 5/0, messages 0
  Update messages formatted 1, replicated 0
  Number of NLRIs in the update sent: max 1, min 1
  Minimum time between advertisement runs is 0 seconds
  Has 1 member (* indicates the members currently being sent updates):
   2.2.2.2

RR2 receives 11.1.1.1/32 prefix from RR1 router. RR1 adds the Originator ID attribute (Router ID of Client1 router 172.16.1.2) and Cluster List attribute (Router ID of RR1 router 1.1.1.1).

RR2 receives 11.1.1.1/32

RR2# show ip bgp 11.1.1.1
BGP routing table entry for 11.1.1.1/32, version 2
Paths: (1 available, best #1, table Default-IP-Routing-Table)
  Advertised to update-groups:
     2
  Local
    172.16.1.2 (metric 65) from 1.1.1.1 (1.1.1.1)
      Origin IGP, metric 0, localpref 100, valid, internal, best
      Originator: 172.16.1.2, Cluster list: 1.1.1.1

When RR2 receives the prefix 11.1.1.1/32, it accepts the prefix and advertises to Client2 after appending its Router ID (2.2.2.2) to the Cluster List attribute. The Originator ID attribute remains unchanged.

Client2 receives 11.1.1.1/32

Client2# show ip bgp 11.1.1.1
BGP routing table entry for 11.1.1.1/32, version 5
Paths: (1 available, best #1, table Default-IP-Routing-Table)
  Not advertised to any peer
  Local
    172.16.1.2 (metric 129) from 172.16.2.1 (2.2.2.2)
      Origin IGP, metric 0, localpref 100, valid, internal, best
      Originator: 172.16.1.2, Cluster list: 2.2.2.2, 1.1.1.1


Summary:

BGP route reflector rules-
  1. An IBGP prefix received from a RR-client is advertised to all peers including the RR-client that advertised the prefix.
  2. Routes originated by the router and routes received from EBGP neighbors and selected as "best" routes are advertised to all internal and external BGP peers.
  3. A RR non-client advertising a prefix is advertised to all EBGP peers and IBGP RR-clients.
  4. Routes received from RR-clients and selected as "best" routes are advertised to all internal and external BGP peers.
  5. The RR adds the Originator ID to the routes received from its RR-clients.
  6. The RR appends its own Router ID to the Cluster List attribute.

Further reading:
http://wiki.nil.com/BGP_route_reflectors