Why does iBGP need a full mesh?
Show the answer
Say this first
An iBGP speaker never advertises a route it learned from one iBGP peer to another iBGP peer. That is the iBGP split horizon rule, and it exists because the AS_PATH does not change inside an AS, so iBGP has no way to spot a loop. The consequence is that every iBGP router must peer with every other: n(n-1)/2 sessions. Route reflectors and confederations relax the rule so big networks do not need a full mesh.
Go deeper
How fast it grows
| Routers | iBGP sessions |
|---|---|
| 5 | 10 |
| 10 | 45 |
| 50 | 1225 |
| 100 | 4950 |
| Every new router also means touching the configuration of every existing one. |
Walk through it
R1 learns 198.51.100.0/24 from ISP1 over eBGP and sends it to its iBGP peers R2 and R3. R2 does not pass it on to R4, because R2 learned it over iBGP. If R4 has no session with R1, R4 never hears of the prefix.
Which routes the rule covers
Only routes learned over iBGP. Routes from eBGP peers and routes the router originates itself go to all iBGP peers. And full mesh means BGP sessions, not physical links: the sessions ride over the IGP.
They will ask next
Without loop detection, how do route reflectors avoid loops?
With two attributes the RR adds: ORIGINATOR_ID (the router ID of the router that injected the route) and CLUSTER_LIST (the cluster IDs of each RR the route passed through). A router drops a route carrying its own ID in either.
Does the rule apply to eBGP?
No. eBGP advertises its best routes to every peer, and AS_PATH loop detection protects it.
Traps
- Saying iBGP routes are never re-advertised at all. They go to eBGP peers normally.
- Thinking a full mesh means physical links between every router.