RFC 4456: BGP Route Reflection — An Alternative to Full Mesh Internal BGP (IBGP)

2026-05-21

RFC: RFC 4456

Published: 2006 (obsoletes RFC 2796 from 2000, which obsoleted RFC 1966 from 1996)

Authors: Tony Bates, Enke Chen, Ravi Chandra

If you've ever wondered how a backbone ISP with hundreds of routers actually distributes BGP routes internally without melting, the answer is almost certainly route reflection. RFC 4456 is one of those quiet workhorses: nearly every tier-1 and tier-2 network on the planet runs it, and almost no application engineer has heard of it.

The problem. BGP has two flavors: external BGP (eBGP) between autonomous systems, and internal BGP (iBGP) within one AS. To prevent routing loops inside an AS, the original BGP-4 spec mandated that a router which learns a prefix via iBGP must not re-advertise it to another iBGP peer. The consequence is brutal: every iBGP speaker must peer directly with every other iBGP speaker. That's a full mesh of N(N-1)/2 sessions. At 100 routers, you need 4,950 TCP sessions. At 500, nearly 125,000. Operationally impossible.

The fix. Designate certain routers as route reflectors (RRs) and allow them to break the no-re-advertise rule under controlled conditions. Other routers become clients that peer only with their RR(s). The RR reflects routes between clients and to non-client iBGP peers. Suddenly your topology is a hub-and-spoke, and you scale linearly.

The clever bits. Loop prevention without AS-path (since iBGP doesn't prepend) required two new optional non-transitive attributes:

Reflection rules (memorize these — they show up in every CCIE/JNCIE exam and every real outage post-mortem):

Design tradeoffs. Route reflection is not free. It can hide diversity: an RR picks one best path and only reflects that one, so clients may not see alternate paths that would be useful for load balancing or fast reroute. This led to follow-ons like RFC 7911 (ADD-PATH) which lets BGP advertise multiple paths for the same prefix. Reflection can also cause persistent oscillations in pathological MED configurations — a problem analyzed extensively in RFC 3345.

Why it matters today. Every modern data-center fabric using BGP (Clos/leaf-spine designs from Facebook, Microsoft, and the Cumulus/SONiC ecosystems) inherits the reflection vocabulary, even when the alternative — eBGP with private ASNs per ToR — is chosen instead. MPLS L3VPNs (RFC 4364) layer on top of route reflection to scale VPNv4/VPNv6 distribution. SD-WAN controllers often act as route reflectors. If you've ever opened a Junos or IOS-XR config and seen cluster-id or route-reflector-client, you're looking at RFC 4456 in production.

History. The original RFC 1966 (1996) was authored by Tony Bates and Ravi Chandra at Cisco specifically because the NSF-funded commercial internet was about to outgrow the full-mesh constraint. The 2000 revision (RFC 2796) clarified attribute handling; the 2006 version (4456) tightened loop detection after operators kept finding edge cases. It's a rare example of an RFC that was iteratively hardened by real-world deployment bruises rather than committee theorizing.

Why it matters: Route reflection is the unglamorous hack that lets the entire commercial internet run iBGP at scale — without it, no ISP backbone or hyperscale data-center fabric could exist in its current form.

All newsletters