BGP Route Reflectors and Confederations: Scaling iBGP Beyond Full Mesh

The iBGP full-mesh requirement, briefly mentioned earlier in this series, becomes a serious scaling problem as an autonomous system grows, requiring a number of sessions that increases quadratically with router count. This article explains exactly why full mesh does not scale, walks through how route reflectors solve this by relaxing BGP's normal route-propagation rules, and covers confederations as an alternative approach that divides a single AS into smaller sub-autonomous systems.

BGP Route ReflectoriBGP Full MeshBGP Confederation

~6 min read · Updated Sep 12, 2026

Why iBGP Requires a Full Mesh in the First Place

BGP includes a loop-prevention rule specific to iBGP, discussed earlier in this series: a router will never re-advertise a route learned via iBGP to another iBGP peer. This rule exists because iBGP routes carry no AS path modification within the same AS, discussed earlier in this series regarding the AS path attribute, so BGP cannot rely on AS path loop detection the way it does between different autonomous systems.

The consequence of this rule: for every router
in an AS to actually learn every route, every
router must have a DIRECT iBGP session with
every other router in that AS -- since a route
cannot be relayed through an intermediate iBGP
peer

The Quadratic Scaling Problem

Number of required iBGP sessions for full mesh:
n(n-1)/2, where n is the number of routers

4 routers:   6 sessions
10 routers:  45 sessions
50 routers:  1,225 sessions
100 routers: 4,950 sessions

Beyond simply the administrative burden of configuring and maintaining this enormous number of individual sessions, each session consumes actual memory and CPU resources on every router, since each router must track the complete state of every one of its many neighbor relationships -- this becomes genuinely impractical well before reaching anywhere near a hundred routers.

Route Reflectors: Relaxing the Loop-Prevention Rule Safely

A Route Reflector (RR) solves this by acting as a designated exception to the standard iBGP rule: specific routers are configured to "reflect" (re-advertise) iBGP-learned routes to their other iBGP clients, eliminating the need for those clients to peer directly with every other router in the AS.

Route-Reflector(config)# router bgp 65001
Route-Reflector(config-router)# neighbor 10.0.0.2 remote-as 65001
Route-Reflector(config-router)# neighbor 10.0.0.2 route-reflector-client
Route-Reflector(config-router)# neighbor 10.0.0.3 remote-as 65001
Route-Reflector(config-router)# neighbor 10.0.0.3 route-reflector-client

-- The route-reflector-client keyword is applied
-- ONLY on the route reflector itself, identifying
-- which neighbors are its clients -- the clients
-- themselves require no special configuration
-- beyond a completely normal iBGP session

Resulting session count with a route reflector:
Clients only need ONE session each, to the RR,
rather than a direct session with every other
router -- reducing what would have been dozens
or hundreds of sessions down to just a handful
per client

Client, Non-Client, and the RR's Own Role

Route Reflector terminology:

Client: a router explicitly configured with
  route-reflector-client, receiving reflected
  routes from the RR without needing sessions
  to every other router

Non-Client: a router with a normal iBGP session
  to the RR, but WITHOUT the client keyword --
  this router still needs the traditional full
  mesh with every other non-client router,
  since the RR does not reflect routes to
  non-clients from other non-clients

Cluster: the RR together with all of its clients,
  identified by a Cluster ID used to detect
  reflection loops in more complex designs
  with multiple redundant route reflectors

Loop Prevention Within Route Reflection

Since route reflection deliberately breaks the standard "never re-advertise iBGP routes to iBGP peers" rule, two new BGP attributes exist specifically to prevent loops that this relaxation could otherwise introduce.

Originator ID: identifies the router ID of the
  route's original source within the AS -- if
  a router receives a reflected route with its
  own router ID as the Originator ID, it
  recognizes and discards this as a loop

Cluster List: similar in concept to the AS Path
  attribute, discussed earlier in this series,
  but tracking which route reflector clusters
  a route has passed through -- if a route
  reflector sees its own Cluster ID already
  present in this list, it discards the route
  as a loop

Verifying Route Reflector Operation

Route-Reflector# show ip bgp neighbors 10.0.0.2 | include reflector

  Route-Reflector Client, for the address family: IPv4 Unicast

Client-Router# show ip bgp 192.168.5.0

BGP routing table entry for 192.168.5.0/24
  Local
    10.0.0.5 from 10.0.0.1 (10.0.0.1)
      Origin IGP, metric 0, localpref 100, valid, internal, best
      Originator: 10.0.0.5, Cluster list: 10.0.0.1

The presence of an Originator and Cluster list in the route's detail confirms it was learned via reflection rather than a direct, traditional iBGP session -- useful verification when confirming a route reflector design is actually propagating routes as intended.

Confederations: An Alternative Approach

BGP Confederations solve the same full-mesh scaling problem through a fundamentally different mechanism: dividing one large AS into multiple smaller sub-autonomous systems, with eBGP-like sessions (though using a special confederation-aware variant) between the sub-AS, while the entire confederation still appears as a single AS to the outside world.

Router(config)# router bgp 65501
Router(config-router)# bgp confederation identifier 65001
Router(config-router)# bgp confederation peers 65502 65503

-- 65501, 65502, 65503 are private sub-AS numbers,
-- visible only within this organization's own
-- network
-- 65001 is the single AS number the outside
-- world actually sees when peering with this
-- organization via normal eBGP

Why this reduces the mesh requirement:
Full mesh is still required, but only WITHIN
each smaller sub-AS, not across the entire
original large AS -- dividing 100 routers into
4 sub-AS of 25 routers each reduces the total
mesh sessions from n(n-1)/2 for 100 routers
down to 4 separate meshes of only 25 routers
each, a dramatically smaller total number

Comparing Route Reflectors and Confederations

Route Reflectors:
  - Simpler to implement on an existing network,
    since it only requires configuration changes
    on the designated reflector routers themselves
  - Client routers require essentially no
    special configuration
  - The most commonly deployed solution in
    real-world large-scale networks

Confederations:
  - Requires re-numbering routers into sub-AS
    groups, a more significant redesign effort
  - Provides a clearer visual/administrative
    division that can align with an
    organization's own internal structure
    (e.g., separate sub-AS per region or
    data center)
  - Less commonly deployed than route reflectors
    in practice, due to the greater
    reconfiguration effort involved

Why Both Solutions Address the Same Fundamental Constraint

Both route reflectors and confederations exist specifically to work around the same underlying iBGP loop-prevention rule discussed at the start of this article, using entirely different mechanisms -- one relaxes the propagation rule for designated routers, the other restructures the AS itself into smaller pieces where full mesh remains locally practical. Understanding this shared root cause, rather than simply memorizing each solution's configuration syntax, is what allows an engineer to correctly diagnose which approach best fits a specific network's existing topology and administrative structure when the standard iBGP full mesh has become impractical to maintain.

Written & researched by Dr. Shahin Siami

Related Articles

Systematic Network Troubleshooting: A Methodology Tying Everything Together

Every protocol and technology covered throughout this series is only useful if a problem involving it can actually be diagnosed and fixed efficiently under real-world pressure. This article presents a systematic troubleshooting methodology built around the OSI layers, walks through applying it to a realistic connectivity problem, and shows how the specific verification commands covered throughout this entire series fit into a structured diagnostic process.

Continue

NETCONF, YANG, and Python: Programmatic Network Configuration at Scale

The REST APIs and JSON/YAML formats covered earlier in this series represent one approach to network automation, but NETCONF and YANG provide a more structured, standards-based alternative purpose-built for network device configuration. This article explains what distinguishes NETCONF from a simple REST API, covers how YANG models define exactly what configuration data looks like, and walks through using Python to programmatically interact with network devices.

Continue

IPsec VPN Fundamentals: Securing Traffic Across Untrusted Networks

Connecting two sites across the public internet exposes traffic to interception unless it is properly encrypted, and IPsec provides the standard framework for building secure, authenticated tunnels between sites. This article explains the two-phase IKE negotiation process, covers the distinction between AH and ESP protocols, walks through configuring a basic site-to-site IPsec VPN, and covers essential verification commands.

Continue

MPLS Fundamentals: Label Switching Explained

Traditional IP routing requires every router along a path to perform a full routing table lookup on every packet, but MPLS takes a fundamentally different approach by making that forwarding decision once and attaching a simple label that every subsequent router can use instead. This article explains the core label-switching concept, walks through how the Label Distribution Protocol builds the label forwarding tables that make this possible, and covers the practical benefits MPLS provides in real provider networks.

Continue

OSPF Area Types Deep Dive: Stub, Totally Stubby, and NSSA

Multi-area OSPF, covered earlier in this series, already reduces database size by separating a network into areas, but OSPF offers further specialized area types that reduce routing table size even more aggressively by filtering out unnecessary external routes entirely. This article explains the LSA types that must be suppressed to create each specialized area type, walks through configuring stub, totally stubby, and not-so-stubby areas, and covers the specific trade-offs each design choice involves.

Continue

BGP Path Manipulation: Route Maps and Communities for Traffic Engineering

The basic BGP path selection process, covered earlier in this series, follows a fixed order of attributes, but real networks need to actively influence which path gets chosen rather than passively accepting the default outcome. This article explains how route maps filter and modify BGP routing information, covers Local Preference and MED as the two primary levers for influencing path selection, and introduces BGP communities as a flexible tagging mechanism for coordinating policy across an entire network.

Continue