Skip to main content
PacketMentor logo
Open menu
Home
Training
Learn
CCNA Library (74)
Browse all CCNA topics →
Network (13)
Device Operations (5)
Network Access (12)
Wireless (6)
IP Connectivity (10)
IP Services (11)
Security (10)
Automation (7)
Network+ Library (77)
Browse all Network+ topics →
1.0Networking Concepts (22)
2.0Network Implementation (17)
3.0Network Operations (16)
4.0Network Security (15)
5.0Network Troubleshooting (7)
NSE 4 Library (45)
CCNP Library (33)
Practice
All practice →
Troubleshooting Labs
Packet Tracer Labs
Interactive Simulators
Mock ExamPricing
Contact 📞 +1 (860) 556-3010 Book a Call
← All topics
CCNP IP Connectivity Advanced

BGP Route Reflectors — Scaling iBGP Beyond Full-Mesh

How Route Reflectors break the iBGP full-mesh requirement, letting one router re-advertise iBGP routes to clients. Cluster-id, hierarchical RRs, redundant RR design, and the loop-prevention attributes ORIGINATOR_ID and CLUSTER_LIST.

Quick summary
  • iBGP has a **full-mesh rule**: every iBGP router must peer with every other iBGP router in the AS (because iBGP doesn't re-advertise routes learned from another iBGP peer).
  • **Route Reflectors** break the rule. An RR takes iBGP routes from one client and re-advertises them to other clients. N routers → N peerings to the RR instead of N(N−1)/2 in full mesh.
  • Loop prevention: routes carry **ORIGINATOR_ID** (originating RR) and **CLUSTER_LIST** (which RR clusters the route traversed). Reflectors drop routes whose lists include their own cluster-id.

The one-sentence mental model

iBGP is broken by default at scale. Every internal router must talk to every other → N routers = N(N−1)/2 iBGP sessions. At 100 routers that’s 4,950 sessions. Route Reflectors solve it: designate one (or a few) as reflectors, everyone peers only with the reflectors, RRs relay routes between clients.

The rule that causes the pain

Split-horizon rule for iBGP: a router that learns a route via iBGP will NOT re-advertise it to other iBGP peers.

This prevents iBGP loops (there’s no AS-path prepending inside an AS to detect loops via path). But it forces every iBGP router to hear every route directly from every other, which means a full mesh.

Route Reflectors — the exception

A Route Reflector (RR) is an iBGP router configured to violate the split-horizon rule in a controlled way. When it learns a route from an iBGP peer that is marked as a client, it re-advertises that route to other clients and non-client iBGP peers.

Roles:

  • RR (Route Reflector) — does the re-advertisement
  • Client — an iBGP router that peers only with the RR (not with every other iBGP router)
  • Non-client — a normal iBGP router that isn’t a client of this RR (typically another RR or an iBGP router in a different cluster)

RR advertisement rules:

  • Route from eBGP → advertise to clients + non-clients (normal iBGP behavior)
  • Route from a client → advertise to all other clients + non-clients (this is the special reflection)
  • Route from a non-client → advertise to clients only (not to other non-clients — prevents loops)

Config

router bgp 65001
  neighbor 10.0.0.10 remote-as 65001
  neighbor 10.0.0.10 route-reflector-client
  neighbor 10.0.0.11 remote-as 65001
  neighbor 10.0.0.11 route-reflector-client
  neighbor 10.0.0.12 remote-as 65001                ! non-client (another RR)

Adding route-reflector-client under a neighbor makes that neighbor a client of this RR. Clients don’t need any special config — they just peer with the RR as normal iBGP.

Cluster-ID for redundant RRs

For redundancy you deploy two RRs in the same location. Both must have the same cluster-id so their reflected routes are seen as coming from one logical cluster.

router bgp 65001
  bgp cluster-id 1.1.1.1

By default, cluster-id = RR’s router-id. Set it explicitly when running redundant RRs so both RRs use the same cluster-id.

Loop prevention attributes

Without full-mesh’s AS-path loop check, RR needs its own loop prevention:

  • ORIGINATOR_ID — the router-id of the router that first advertised the route into iBGP. If a route comes back to the originating router, it drops it.
  • CLUSTER_LIST — list of cluster-ids the route has traversed. An RR checks its own cluster-id against the list; if present, drops the route (already traversed my cluster, would loop).

Both attributes are added by RRs on reflection. Non-RR routers don’t touch them.

Hierarchical RR design

Big networks build hierarchies of RRs:

  • Top-tier RRs peer with each other in a full mesh (small set).
  • Regional RRs are clients of top-tier RRs, and have local clients under them.
  • Edge routers peer only with their regional RR.

Cluster-ids are per-tier or per-region. Loop prevention still holds because CLUSTER_LIST accumulates as you go up the hierarchy.

Alternatives to RRs

  • BGP Confederations — split the AS into sub-ASes, each running its own full-mesh iBGP, with eBGP-like peerings between sub-ASes. Less common, more complex.
  • Full mesh — still valid for < ~30 routers.

Common exam / real-world mistakes

  1. Deploying RRs without setting cluster-id on redundant pair. Each RR uses its own router-id as cluster-id → reflected routes look like separate clusters → loops possible during transient states.
  2. Making an RR a client of another RR. Confusing role model — an RR should peer with other RRs as non-clients (regular iBGP), not as clients.
  3. Adding a new iBGP router but forgetting to make it a client of the RR. New router won’t get any iBGP routes; nothing looks broken until traffic patterns shift.
  4. Missing next-hop-self on eBGP-facing routers. eBGP next-hops don’t auto-recurse across the AS. Without next-hop-self, iBGP-received routes have unreachable next-hops.
  5. Confusing route-reflection direction. Client → RR is a normal iBGP session. RR → client re-advertises reflected routes. The route-reflector-client command goes on the RR, not the client.

Verifying

show ip bgp neighbors 10.0.0.10                    ! look for "Route reflector client: Yes"
show ip bgp <prefix>                                ! look for Originator ID and Cluster list
show ip bgp summary                                 ! session count reduced vs full mesh

Cheat strip

Problem       iBGP split-horizon → full mesh N(N-1)/2 sessions
Solution      Route Reflector — re-advertises routes between clients

Roles         RR (does reflection) | Client | Non-client
Config        neighbor X route-reflector-client (on the RR)
Cluster       bgp cluster-id X.X.X.X (same on redundant RR pair)

Loop prevent  ORIGINATOR_ID + CLUSTER_LIST attributes
              RR drops routes whose CLUSTER_LIST includes its cluster-id

Design        Simple: single RR pair per site
              Hierarchical: top-tier RRs + regional RRs + edge clients
Alternative   Confederations (rare)

Gotcha        remember next-hop-self on eBGP borders
              redundant RRs need same cluster-id
Master this on a real network

Want this drilled into reflex?

1:1 weekly sessions, live feedback on your labs, and US interview prep — built around the CCNP® exam blueprint. Free first session. No card on file until you decide.

Claim my free session →

Get the free CCNA 12-week roadmap

You're already reading up on BGP Route Reflectors — Scaling iBGP Beyond Full-Mesh. The roadmap is the order I recommend studying every CCNA topic in — with what to lab each week and where BGP Route Reflectors — Scaling iBGP Beyond Full-Mesh fits. A written personal reply, not an autoresponder. Expect it within one business day.

Personal reply from a senior network engineer. No third-party tracking. Unsubscribe any time.