A single reflector is a single point of failure
One route reflector keeps the mesh small but ties every client's view of the network to one router. If it fails, clients stop learning each other's routes. The usual fix is two reflectors, with every client peering with both.
On small screens, swipe sideways or focus the diagram and use the arrow keys.
On small screens, swipe sideways or focus the diagram and use the arrow keys.
Configure two reflectors
router bgp 64500
bgp cluster-id 9.9.9.9
neighbor CLIENTS peer-group
neighbor CLIENTS remote-as 64500
neighbor CLIENTS update-source Loopback0
neighbor 10.255.0.11 peer-group CLIENTS
neighbor 10.255.0.12 peer-group CLIENTS
address-family ipv4 unicast
neighbor CLIENTS route-reflector-client
neighbor 10.255.0.11 activate
neighbor 10.255.0.12 activateRR1. RR2 uses the same lines with the same cluster ID. Each client has an ordinary iBGP session to both reflectors.
Look at the cluster list on a client to see which reflectors a route has passed through.
C1#show ip bgp 203.0.113.0 BGP routing table entry for 203.0.113.0/24, version 12 Paths: (2 available, best #1, table default) 64501 10.255.0.1 (metric 20) from 10.255.0.9 (9.9.9.1) Origin IGP, metric 0, localpref 100, valid, internal, best Originator: 1.1.1.1, Cluster list: 9.9.9.9 64501 10.255.0.1 (metric 20) from 10.255.0.10 (9.9.9.2) Origin IGP, metric 0, localpref 100, valid, internal Originator: 1.1.1.1, Cluster list: 9.9.9.9
Shared or separate cluster IDs
With a shared cluster ID, a reflector that sees its own cluster ID in a route's cluster list drops that route. The two reflectors do not store each other's copies, which saves memory. The risk is that a client with a broken session to one reflector may not get everything it needs.
On small screens, swipe sideways or focus the diagram and use the arrow keys.
With separate IDs, each reflector keeps the other's copy, so routes survive more failure cases, at the cost of memory. Whichever you choose, apply it consistently and keep the clients peering with both.
Technical reference: RFC 4456, BGP Route Reflection. Output above is illustrative.
How reflectors avoid loops
Two attributes stop reflected routes from looping. ORIGINATOR_ID holds the router ID of the router that first advertised the route into the AS. CLUSTER_LIST records each cluster ID the route has passed through. A router discards a route that lists its own router ID as originator or its own cluster ID in the list.
On small screens, swipe sideways or focus the diagram and use the arrow keys.
Optimal route reflection
A route reflector runs best-path selection once and sends that single result to all of its clients. The reflector chooses by its own IGP cost to each next hop, so a client in another part of the network may be sent an exit that is nearest the reflector, not nearest to itself. This gives suboptimal forwarding and can lengthen the path across the AS.
Optimal route reflection (ORR) lets the reflector run best-path selection from the point of view of a chosen router, called the root, and send each group of clients the result computed for their own location. The reflector needs the IGP topology to do this, so it is normally used with a link-state IGP, and the clients need no change.
router bgp 64500
address-family ipv4 unicast
bgp optimal-route-reflection ORR-GROUP-A 10.255.0.1
neighbor 10.255.0.21 optimal-route-reflection ORR-GROUP-A
endReflector. Clients in group A are sent the best path as seen from 10.255.0.1, the group's root router. The names and addresses are examples. Check the exact command and platform support in the Cisco documentation for your software release.
Technical reference: Cisco, BGP optimal route reflection. Output and commands above are illustrative.
Check your understanding
Two reflectors share cluster ID 9.9.9.9. What does a reflector do with a route whose cluster list contains 9.9.9.9?
If no cluster ID is configured, what is used?
Why must each client peer with both reflectors?