4

I have been searching this on the web. It is generally expressed as by default, iBGP does not propagate routes learned via other iBGP neighbors. I am trying to understand the underlying reason.

The answers I have found are somewhat circular: the routes are not propagated because BGP has a full mesh connection.

Why BGP has a full mesh connection?

-Because routes are not propagated.

Can someone elaborate on the underlying design cause?

6

The reason is to prevent routing loops; iBGP cannot learn iBGP learned prefixes from another iBGP speaker because its own AS will be in the AS_PATH.

If that case is allowed, iBGP Router A could learn prefixes from iBGP Router B and advertise them to iBGP Router C. After that, iBGP Router C could advertise the prefixes back to iBGP routers that have already learned the prefixes, either directly or through other iBGP routers.

The rule exists so that other iBGP speakers cannot learn the prefixes from any source other than Router B, thus preventing router loops, but that requires that the iBGP speakers are connected (at least logically) in a full mesh.

There are a couple of mitigations for the full mesh requirement: you can use Route Reflectors or Confederations.

  • 1
    Not quite true,“because its own AS will be in the AS_PATH”,this is not true. A BGP speaker DOES NOT prepend its AS number to the AS_PATH before advertising to an iBGP neighbour. It is this lack of path knowledge that may cause a routing loop inside an AS. The iBGP split horizon rule is there to stop this, without it a neighbour receiving an iBGP route would advertise it to other iBGP neighbours causing a potential loop. If BGP speakers prepended their AS before advertising to iBGP neighbours, all iBGP peerings would reject all routes received from the peer unless allowas-in or similar was used – Karl Billington Nov 10 '17 at 23:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.