BGP Route Reflection

Introduction

Route Reflection is a scalability feature for iBGP. It cuts down on the number of iBGP neighbor peerings (no need for full mesh) and relaxes the iBGP rule of advertising routes to other iBGP neighbors. The full mesh rule is only modified for Route Reflectors and its clients only. Rout Reflectors still need a full mesh with non-clients.

Route Reflection advertised only the best paths to its clients. This reduces the size of the BGP table in route-reflector clients.

Route Reflection

Route Reflection modifies the forwarding of updates as they only relate to Router Reflectors and its clients.

  • Prefixes originated from clients are reflected by the RR to non-clients and other clients.
  • Prefixes originated from non-clients (still in the same AS i.e. iBGP) are reflected by RR to its clients.
  • External routes, routes originated on RR are not part of route reflection but follow regular eBGP and iBGP rules for forwarding.
  • RR only forwards the its best path only.

Route Reflector Roles

Route Reflector (RR)

  • Routers that server as Route Reflector Servers.
  • RR are required to have a full mesh to non-clients and other RR.
  • Configuring peers as client is done on the RR.
  • RR pick the best path before reflecting to non-clients and other clients.

Router Reflector Client (RR Client)

  • Specified as a RR client in the same AS.
  • Update coming from RR clients are advertised to RR.

Non-client Peers (Regular iBGP)

  • Not specified as a RR client, while still being in the same AS (iBGP)
  • Update coming from non-client (regular iBGP peers) are only advertised to Route Reflectors.

Loop Prevention Mechanism

  • Originally BGP did not have any loop prevention mechanisms for iBGP, that's why each iBGP router had to be fully meshed.
  • With the addition of route-reflectors you can now create clusters as another hierarchical structure with the route-reflector server at the center of it.
  • To avoid loops two optional transitive attributes are added to prefixes: cluster-list and originator-id.
  • Originator-id is by default the router-id of the router that originated the route, added by the RR during reflection. All iBGP routers use this for loop prevention.
  • Cluster-list is by default the list of router-id of the Router-Reflector servers, added by the RR during reflection (only during reflection not when RR originates a route). It's used to prevent loops between RR Servers. Only RR uses it for loop prevention.
  • When a BGP speaker learns about a route from iBGP neighbor and the Originator ID matches own router-id, route is discarded.
  • When a RR Sever learns about a route from iBGP neighbor and the Cluster-list contains it's own cluster, route is discarded.

Clustering

  • RRs have fully meshed iBGP sessions (non-clients to each other), while the RR clients only to the RR servers.
  • This model can be used for making regional iBGP architectures.

Hierarchical Route Reflection

  • In a hierarchical RR designs, you create layers of route reflection clusters.
  • Top layer could be full mesh of only backbone RR, second layer of distribution RR…and on and on.

Relevant IOS Commands

route-reflector-client

R1(config-router)#        neighbor (a.b.c.d) route-reflector-client

Shows a route learn from a RR Client.

Shows a route with Originator and Cluster List attributes.

Shows if a router is the Route Reflector with the show ip protocols.

Shows which neighbors are RR clients.

bgp cluster-id

Set the non-transitive optional attribute to a custom ID. By default the RR server router id is used.

R1(config-router)#        bgp cluster-id (a.b.c.d)

bgp client-to-client reflection

RR clients don't need to be fully meshed, all they need is a session with the RR server. In certain situations where RR clients are meshed, you may want to disable client-to-client reflection. This command is configured on the RR server for all clients.

R1(config-router)#        no bgp client-to-client reflection

Comments

rating: 0+x
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License