How BGP Route Reflectors Work: Scaling iBGP Without Full Mesh

BGP Route Reflectors (RRs) are routers within an autonomous system that re-advertise iBGP-learned routes to other iBGP peers, eliminating the requirement for a full mesh of iBGP sessions. Defined in RFC 4456, route reflectors solve a fundamental scaling problem in BGP: without them, every iBGP speaker in an AS must maintain a session with every other iBGP speaker, creating an O(n2) mesh that becomes operationally untenable as the network grows.

Route reflection is the dominant mechanism for scaling iBGP in production networks today. Nearly every large autonomous system — from Tier 1 transit providers carrying a full internet routing table to hyperscale cloud networks with thousands of edge routers — relies on route reflectors. Understanding how they work, their failure modes, and their placement strategies is essential for anyone operating or designing large-scale IP networks.

The iBGP Full Mesh Problem

To understand why route reflectors exist, you first need to understand a core iBGP rule. When a BGP router learns a route via iBGP (from a peer within the same AS), it does not re-advertise that route to other iBGP peers. This rule exists to prevent routing loops: since iBGP does not modify the AS_PATH attribute (unlike eBGP, which prepends the local AS number at each hop), there is no path-based mechanism to detect loops within an AS. The simplest way to prevent iBGP loops is to ensure every iBGP speaker hears a route directly from the router that originally imported it — which requires a full mesh.

In a full mesh topology, every iBGP router maintains a TCP session (port 179) with every other iBGP router in the AS. The number of sessions scales as n(n-1)/2, where n is the number of iBGP speakers:

The problem is not just the number of TCP sessions. Each session consumes memory for the TCP connection, the BGP finite state machine, and a complete copy of the peer's Adj-RIB-In (the set of routes received from that peer). In a network carrying a full internet routing table (over 1 million IPv4 prefixes and growing), each iBGP peer can consume hundreds of megabytes of memory. Multiply that by hundreds of peers and the resource requirements become staggering.

iBGP Full Mesh vs. Route Reflector Topology Full Mesh (15 sessions) R1 R2 R3 R4 R5 R6 Route Reflector (5 sessions) RR reflector C1 C2 C3 C4 C5 iBGP full mesh session RR-to-client session route reflector

The diagram above illustrates the difference. With six iBGP speakers in a full mesh, you need 15 sessions. With a single route reflector, you need only five. At a hundred routers, the mesh requires 4,950 sessions; a single route reflector requires 99. Two route reflectors for redundancy require roughly 200 sessions — still a 25x reduction. Route reflectors turn an O(n2) problem into an O(n) one.

How Route Reflection Works: RFC 4456

Route reflection, defined in RFC 4456 (which obsoleted the original RFC 2796), modifies the standard iBGP route distribution rule. A route reflector is an iBGP speaker that is explicitly configured to reflect routes — to re-advertise iBGP-learned routes to other iBGP peers. This breaks the normal iBGP rule that prohibits re-advertisement, but it does so in a controlled way with loop prevention mechanisms.

RFC 4456 introduces two key concepts:

Clients and Non-Clients

A route reflector divides its iBGP peers into two categories:

The reflection rules are straightforward:

  1. Route learned from a client — The RR reflects it to all other clients and all non-client iBGP peers.
  2. Route learned from a non-client iBGP peer — The RR reflects it to clients only. It does not re-advertise it to other non-client peers (this would violate the standard iBGP rule for non-client-to-non-client advertisement, and non-clients are expected to be meshed or have their own RR).
  3. Route learned from an eBGP peer — The RR advertises it to all iBGP peers (both clients and non-clients), just like any normal iBGP speaker would.

A critical property of route reflection is that clients do not need to know they are clients. The client-side configuration is identical to a normal iBGP peering session. Only the route reflector itself is configured with the knowledge of which peers are clients. This makes migration from a full mesh to a route reflector topology straightforward — you configure the RR, point clients at it, and tear down the direct iBGP sessions between clients.

Loop Prevention: ORIGINATOR_ID and CLUSTER_LIST

Because route reflection breaks the "never re-advertise iBGP routes" rule, it needs its own loop prevention mechanism. RFC 4456 defines two new BGP path attributes for this purpose:

ORIGINATOR_ID (Type Code 9)

When a route reflector reflects a route, it adds the ORIGINATOR_ID attribute containing the BGP Router ID of the router that originally advertised the route into iBGP. If the route was learned from an eBGP peer and imported into iBGP by router X, the ORIGINATOR_ID is set to X's Router ID. If the attribute already exists (because another RR already reflected the route), it is not modified.

When a router receives a route with its own Router ID in the ORIGINATOR_ID, it discards the route. This prevents a route from being reflected back to its originator through a chain of route reflectors.

CLUSTER_LIST (Type Code 10)

Each route reflector is assigned a CLUSTER_ID — typically its Router ID, though it can be explicitly configured (and should be when two RRs serve the same cluster for redundancy). When a route reflector reflects a route, it prepends its CLUSTER_ID to the CLUSTER_LIST attribute. If no CLUSTER_LIST exists yet, the RR creates one.

When a route reflector receives a route with its own CLUSTER_ID already present in the CLUSTER_LIST, it discards the route. This prevents loops between route reflectors — if RR-A reflects a route to RR-B, and RR-B reflects it back to RR-A, RR-A will see its CLUSTER_ID in the CLUSTER_LIST and drop the route.

Together, ORIGINATOR_ID and CLUSTER_LIST provide two layers of loop prevention:

Neither attribute is sent to eBGP peers. They are stripped when a route is advertised externally, since they are only meaningful within the AS. This is consistent with iBGP's general principle: internal topology details are not leaked to external neighbors.

Cluster Design and Redundancy

A cluster consists of a route reflector and its clients. The simplest deployment has a single cluster with one RR serving all iBGP speakers in the AS. However, a single RR is a single point of failure: if it goes down, clients lose their source of iBGP routes and may black-hole traffic or fall back to suboptimal paths.

Production networks almost universally deploy at least two route reflectors per cluster. Both RRs are configured with the same CLUSTER_ID, and each client peers with both. This provides redundancy: if one RR fails, the other continues to reflect routes to all clients. Because they share a CLUSTER_ID, they will recognize routes reflected by the other as belonging to the same cluster (via CLUSTER_LIST) and handle them correctly.

For larger networks, the design expands to multiple clusters:

Hierarchical Route Reflection

For the largest networks — Tier 1 transit providers, hyperscale cloud operators, networks with thousands of routers — even a flat RR topology does not scale well enough. If you have 50 regional RR pairs that need to exchange routes with each other, you still have a near-full-mesh among the RRs themselves.

The solution is hierarchical route reflection: route reflectors organized in tiers, where lower-tier RRs are clients of higher-tier RRs.

Hierarchical Route Reflector Design (2-Tier) Tier 1 — Core Route Reflectors Core-RR1 Core-RR2 iBGP mesh US-East EU-West Asia-Pac RR-E1 RR-E2 RR-W1 RR-W2 RR-A1 RR-A2 PE1 PE2 PE3 PE4 PE5 PE6 PE7 PE8 PE9 PE10 PE11 PE12 Tier 1 Tier 2 Clients Route Propagation Example 1. PE1 learns a route via eBGP, advertises to RR-E1 and RR-E2 2. RR-E1 reflects to PE2-PE4 (clients) and Core-RR1/RR2 (non-clients) 3. Core-RR1 reflects to RR-W1, RR-W2, RR-A1, RR-A2 (its clients) 4. Regional RRs reflect to their local clients — route reaches all PEs

In a two-tier hierarchy, regional RRs are clients of the core RRs. When a PE router in US-East learns a route via eBGP and advertises it to its regional RR, the regional RR reflects it upward to the core RRs (which it treats as non-client peers). The core RR then reflects it down to all other regional RRs (which are its clients), and those regional RRs reflect it to their local PE routers. A route learned in one region reaches every router in the AS through three hops of iBGP — regional RR, core RR, remote regional RR — with no full mesh anywhere.

Three-tier hierarchies are possible but rare. Each additional tier adds latency to route propagation and another potential point of failure. Most networks find that two tiers — core and regional — provide sufficient scaling.

Route Reflector Placement Strategies

Where you place route reflectors in the network has significant implications for both redundancy and routing correctness.

On Existing Routers (Inline RRs)

The most common approach is to designate existing backbone or aggregation routers as route reflectors. These routers are already in the forwarding path and already maintain iBGP sessions, so adding the RR function is a configuration change, not a hardware deployment. This approach is simple and cost-effective, but it means the RR shares CPU and memory with forwarding duties. In networks carrying a full internet routing table, the RR function can be computationally demanding — the RR must evaluate BGP best-path selection for every prefix and potentially send updates to dozens or hundreds of clients.

Dedicated RR Servers (Out-of-Band RRs)

An increasingly popular approach is to run route reflectors on dedicated servers rather than on routers. The RR does not need to be in the forwarding path — it only needs to participate in iBGP sessions and reflect routes. This means you can run the RR on commodity server hardware (or a virtual machine) using open-source routing daemons like BIRD, OpenBGPd, or GoBGP. These daemons are specifically optimized for handling large numbers of BGP sessions and large routing tables without the overhead of a full router operating system.

Benefits of dedicated RR servers:

The key constraint is that out-of-band RRs must have reachability to all clients via the IGP (OSPF, IS-IS). They do not need to be in the data path, but they must be able to establish TCP sessions with all clients. This typically means connecting the RR server to the network at a well-connected point with low-latency IGP paths to all clients.

Virtual Route Reflectors

Cloud and virtualization platforms have enabled virtual route reflectors — RRs running as virtual machines or containers. Major vendors offer virtualized versions of their routing platforms (Cisco IOS-XRv, Juniper vRR, Nokia VSR), and open-source options like BIRD run naturally in containerized environments. Virtual RRs combine the benefits of dedicated servers with the operational convenience of cloud infrastructure: automated provisioning, easy scaling, and geographic distribution.

Large cloud providers have taken this further, building custom RR implementations tailored to their specific needs. These implementations often incorporate features beyond standard RFC 4456, such as route filtering policies on the RR, custom best-path selection, and integration with SDN controllers.

Route Reflectors vs. Confederations

Route reflectors are not the only solution to the iBGP full mesh problem. BGP confederations (RFC 5065) provide an alternative approach that divides an AS into sub-ASes, each of which runs iBGP internally and uses a variant of eBGP between sub-ASes.

The two mechanisms differ in fundamental ways:

Aspect Route Reflectors Confederations
Topology model Hub-and-spoke (RR as hub) Sub-AS federation
Client awareness Clients unaware of RR All routers must know sub-AS
Loop prevention ORIGINATOR_ID, CLUSTER_LIST Sub-AS in AS_CONFED_SEQUENCE
Path selection impact Single AS perspective (MED comparable) Sub-AS boundaries affect MED, local-pref
Incremental deployment Easy — add RR, migrate clients Complex — requires renumbering sub-ASes
External visibility None — transparent to eBGP None — sub-ASes stripped externally
Operational complexity Low High
Production adoption Near-universal Rare (some large telcos)

In practice, route reflectors have won. Their simplicity, incremental deployability, and client transparency make them the pragmatic choice for the vast majority of networks. Confederations still appear in some very large telecommunications carriers that were already using them before route reflectors became mainstream, and in academic or research contexts where the sub-AS model maps naturally to organizational structure. The two mechanisms can also be combined — route reflectors within each confederation sub-AS — though this adds significant complexity.

Optimal Route Reflection Pitfalls

Route reflectors are simple in concept but can introduce subtle routing problems if deployed without careful consideration. The fundamental issue is that a route reflector applies its own best-path selection before reflecting, which means clients may not receive all the routes they would have seen in a full mesh topology.

The Best-Path Selection Problem

When a route reflector receives multiple paths to the same prefix from different clients or eBGP peers, it selects the best path according to the standard BGP decision process and reflects only that best path to its clients. In a full mesh, each router would receive all paths and make its own independent best-path decision. With route reflectors, clients are forced to accept the RR's choice.

This matters when the RR's best path is not the best path from a client's perspective. Consider a common scenario: two eBGP exit points for the same prefix, one in New York and one in San Francisco. A route reflector in Chicago might prefer the New York exit (closer IGP cost from Chicago). But a client router in Los Angeles would prefer San Francisco. In a full mesh, the LA router would see both paths and choose SF. With the RR, it only sees the New York path — because that is what the RR chose to reflect.

This is known as the suboptimal routing problem or route oscillation problem. It can cause:

BGP Add-Paths: The Solution

The BGP Add-Paths capability (RFC 7911) addresses the suboptimal routing problem by allowing a BGP speaker to advertise multiple paths for the same prefix to a peer. Instead of selecting a single best path and reflecting only that, an RR with Add-Paths can send multiple candidate paths to each client. Each client then makes its own best-path decision from the set of paths it receives.

Add-Paths support is negotiated during BGP session establishment using a capability advertisement. The RR and client agree on whether they can send, receive, or both send and receive multiple paths. In practice, the RR typically sends multiple paths, and clients receive them.

The challenge with Add-Paths is determining how many paths to send. Sending all known paths maximizes client choice but defeats the purpose of RR scaling (each client receives as many updates as in a full mesh). Most implementations allow the operator to configure how many additional paths to advertise — for example, the best path plus one or two alternatives, or all paths with a distinct next-hop. This strikes a balance between routing optimality and scalability.

IGP/BGP Metric Interaction

Route reflectors also interact subtly with IGP metrics. BGP's best-path algorithm uses the IGP cost to the BGP next-hop as a tiebreaker (the "hot potato" routing step). If the RR is in a different location than its clients, it may evaluate IGP costs from a different perspective, selecting a path that minimizes its own cost to the next-hop rather than the client's cost.

This is another reason why RR placement matters. Placing an RR close to its clients (in IGP terms) reduces the likelihood that the RR's best-path selection diverges from what clients would choose. Some operators go further and deploy RRs that do not participate in best-path selection at all — they reflect all received paths to clients, relying on Add-Paths and letting clients make their own decisions.

MED and Route Reflection

The Multi-Exit Discriminator (MED) attribute adds another layer of complexity to route reflection. MED is an optional BGP attribute that a neighboring AS can set to indicate a preference among multiple exit points. By default, MEDs are only comparable between routes received from the same neighboring AS.

When a route reflector receives routes to the same prefix from different neighboring ASes with different MEDs, the non-comparable MEDs can lead to inconsistent route selection across different vantage points. If the RR sees paths from AS X with MED 100 and AS Y with MED 50, it might select AS Y. But if a client also has a direct eBGP session to AS X with a very low IGP cost, the client might prefer AS X if it could see both paths. The RR's MED-based filtering removes that possibility.

Some implementations offer a bgp always-compare-med option that compares MEDs across all paths regardless of the neighboring AS. This simplifies the decision but changes the semantics of MED from its RFC-defined behavior. Operators deploying route reflectors should have a clear MED policy and understand how their RR configuration interacts with it.

Operational Considerations

Graceful Restart and RR Failover

When a route reflector restarts (due to software upgrade, crash, or maintenance), all clients lose their reflected routes. Without mitigation, this causes a routing disruption until the RR re-establishes sessions and re-sends all routes. Graceful Restart (RFC 4724) mitigates this by allowing a restarting BGP speaker to preserve its forwarding state while sessions are re-established. Clients continue to use stale routes during the restart window, preventing a traffic disruption.

For planned maintenance, BGP Long-Lived Graceful Restart (LLGR, RFC 9494) extends the stale route retention timer from seconds to hours, allowing even extended maintenance windows without routing disruption. This is particularly valuable for RR upgrades, where the restart might take several minutes.

Route Target Constraint (RFC 4684)

In MPLS VPN networks, route reflectors carry VPNv4/VPNv6 routes tagged with Route Targets (RTs). Without optimization, every PE router receives every VPN route from the RR, even for VPNs it does not participate in. Route Target Constraint (RFC 4684) allows PEs to signal which RTs they are interested in, and the RR only reflects routes matching those RTs. This dramatically reduces the number of routes each PE must process and store.

Monitoring and Troubleshooting

Route reflectors add an indirection layer that can complicate troubleshooting. When a client has a suboptimal route, the cause may not be obvious — it could be the RR's best-path selection, a missing path due to a failed session, or a loop prevention discard due to ORIGINATOR_ID or CLUSTER_LIST. Operators should monitor:

Route Reflectors in Modern Networks

The role of route reflectors continues to evolve as network architectures change:

SDN and Controller-Based Routing

Software-defined networking (SDN) architectures often use a centralized controller that programs forwarding entries on network devices. In these architectures, the route reflector's role converges with the controller: the RR receives routes from all peers, computes optimal paths (potentially using algorithms more sophisticated than BGP's standard decision process), and distributes the results. Projects like Google's Espresso and Facebook's Open/R use custom RR-like systems that integrate with their SDN controllers.

BGP in the Data Center

Modern data center fabrics often run eBGP between every tier (spine, leaf, server), avoiding iBGP entirely and eliminating the need for route reflectors. This design, popularized by RFC 7938 and implementations like Cumulus Linux and SONiC, treats every switch as its own AS and uses eBGP's native loop prevention (AS_PATH). However, in networks that use iBGP within the data center — particularly in overlay network designs with EVPN/VXLAN — route reflectors remain essential for distributing MAC/IP routes across the fabric.

Segment Routing and Route Reflectors

Segment Routing (SR) changes the relationship between BGP and forwarding. In SR-MPLS and SRv6 networks, the forwarding path is determined by a segment list, not by hop-by-hop IGP lookup. This means the suboptimal routing problem caused by RR placement is less relevant — the RR's best-path decision determines the traffic engineering path, not the IGP shortest path. Some SR deployments use route reflectors specifically as centralized path computation elements, leveraging their global view of the network topology.

Explore BGP Topology

Route reflectors are invisible from outside the AS — you cannot see them by looking at BGP routes externally. But you can observe their effects. When you examine AS paths in the god.ad BGP Looking Glass, you are seeing the result of thousands of route reflectors across the internet deciding which paths to reflect to which clients. Every autonomous system in the path likely uses route reflectors internally to distribute the routes it learned from its eBGP neighbors.

Try exploring how large transit networks and cloud providers interconnect:

See BGP routing data in real time

Open Looking Glass
More Articles
What is BGP? The Internet's Routing Protocol Explained
What is an Autonomous System (AS)?
What is a BGP Looking Glass?
How to Look Up an IP Address's BGP Route
Understanding BGP AS Paths
What is RPKI? Securing BGP Routing