BGP - iBGP split horizon rule

iBGP does not advertise prefixes from one iBGP neighbor to another iBGP neighbor. This is called the iBGP split horizon rule.

There is a good reason why iBGP works like this. Between different ASes, when using eBGP, BGP uses the AS_PATH attribute to avoid routing loops. A prefix will not be accepted by a BGP router if it sees its own AS number in it. However, within an autonomous system, the AS number does not change so we can’t use this loop prevention mechanism.

Without BGP split horizon, a route could be advertised like this:

ibgp-no-split-horizon.png

R1 could receive an update about a prefix that it originated itself. With the iBGP split horizon rule, this cannot ’t occur:

ibgp-split-horizon.png

R2 will never forward the iBGP prefixes that it learns from R1 towards R3. This means that in order to learn about all prefixes within an AS, all iBGP routers in an AS must become neighbors with all other iBGP routers. In other words, full-mesh iBGP peerings must be established.

In large ASes, this can become difficult to manage, and resource intensive. To resolve this, you can use a BGP Route Reflector.

Links:

https://networklessons.com/bgp/internal-bgp-border-gateway-protocol-explained#IBGP_Neighbor_Adjacencies