How do route reflectors work, and what are the reflection rules?
Show the answer
Say this first
A route reflector (RFC 4456) is an iBGP router allowed to re-advertise iBGP routes, which breaks split horizon in a controlled way. Clients peer only with the RR. A route from an eBGP peer goes to all clients and non-clients. A route from a client goes to all other clients and to non-clients. A route from a non-client goes only to clients. The RR adds ORIGINATOR_ID and CLUSTER_LIST to stop loops, and it does not change the next hop.
Go deeper
Reflection rules
| Learned from | Sent to clients | Sent to non-clients | Sent to eBGP |
|---|---|---|---|
| eBGP peer | Yes | Yes | Yes |
| Client | Yes | Yes | Yes |
| Non-client | Yes | No | Yes |
Config (only the RR changes)
router bgp 64500
neighbor 10.255.0.1 remote-as 64500
neighbor 10.255.0.1 update-source Loopback0
neighbor 10.255.0.1 route-reflector-client
neighbor 10.255.0.3 remote-as 64500
neighbor 10.255.0.3 update-source Loopback0
neighbor 10.255.0.3 route-reflector-clientClients are configured as ordinary iBGP peers of the RR.
Loop prevention
- ORIGINATOR_ID: router ID of the router that brought the route into the AS. A router that sees its own ID drops the route.
- CLUSTER_LIST: each RR adds its cluster ID (by default its router ID). An RR that sees its own cluster ID drops the route.
Design points
- Run two RRs. Each client peers with both, and the RRs peer with each other.
- The RR reflects only its own best path per prefix, so clients lose sight of alternatives. Add-path and best-external fix that when it matters.
- The RR picks the best path from its own position in the IGP. An RR off to one side can hand clients a poor exit; optimal route reflection (RFC 9107) addresses this.
They will ask next
How does the cluster list affect best path selection?
Late in the order: for reflected routes the ORIGINATOR_ID replaces the router ID in the router ID tie breaker, and after that the shorter CLUSTER_LIST wins.
What if the clients are already fully meshed?
The RR's client-to-client reflection is redundant.
no bgp client-to-client reflectionon the RR turns it off while still reflecting between clients and non-clients.Does an RR need to be in the forwarding path?
No. It only needs control plane reachability, which is why virtual RRs on servers are common. Just make sure its best path choice still gives clients sensible exits.
Traps
- Saying the RR sets itself as next hop. It does not; edge routers still need next-hop-self.
- Saying routes from one non-client are reflected to another non-client. Non-clients must stay fully meshed with each other.