Everyone who ever studied BGP knows that BGP has strong rules to prevent routing and updates loops. In this post I will focus on iBGP loop prevention and specifically route reflectors as a result.
The rule states: that any route received from an iBGP neighbor must not be advertised to any other iBGP neighbor.
This loop prevention mechanism induces a requirement that all iBGP routers in the network should be connected in logical full mesh topology to allow for routing information propagation through out the network. However, full mesh connectivity has never been a scalable solution specially in large networks.
Two mechanisms were introduced to solve the scalability problem, by eliminating the need for the full mesh and in the same time keep the network loop free. The first solution is BGP confederations and the second one is BGP route reflectors, Which is going to be out topic for this post.
BGP route reflectors:
A route reflector is BGP router that is allowed to break the iBGP loop avoidance rule. Route reflectors can advertise updates received from an iBGP peer to another iBGP peer under specific conditions.
By breaking the rules, route reflectors are used to eliminate the full mesh requirement and allow for building iBGP networks that scale easily and cleanly.
How is this accomplished?
BGP Route Reflector follows the below listed rules to achieve this goal:
- iBGP routers are divided into Route Reflectors, Route Reflector clients and non-client Peers.
- Routes received from a Route-Reflector-client is reflected to other clients and non-client neighbors.
- Routes received from non-client neighbors are reflected to Route-Reflector-client neighbors only.
- Setting the Originator-ID attribute in the reflected update if it is not already set.
- Adding the Cluster-ID to the Cluster-list attribute in the reflected update.
- A Route Reflector reflects routes considered as best routes only. If more than one update is received for the same destination, only the BGP best route is reflected.
- A Route Reflector is not allowed to change any attributes of the reflected routes including the next-hop attribute.
Route Reflectors and Loop Prevention:
The following rules are used to detect and avoid routing loops caused by route reflection:
- If a router received an iBGP route with the Originator-ID attribute set to its own router-id, the route is discarded.
- If a route reflector receives a route with a cluster-list attribute containing its cluster-id, the route is discarded.
For more information about route reflectors check RFC 2796.
I hope it was simple enough, now lets get to see the configuration and verification section. Watch the video below:
I hope I have been informative in this post, please let me know if any questions, ideas or corrections.