I'm trying to understand the configuration behind iBGP - I understand you can run full mesh to prevent loops, run confederation or route reflectors, if you don't want full mesh, else run tunneling like GRE or MPLS for BGP free core.

However what I do not understand is why do you need the intermediary routers to speak iBGP in the first place? For instance --

edge -R1 - R2 - R3 - R4 -edge

Now iBGP does not have TTL of 1 like eBGP and also BGP has an underlying IGP to find other neighbors. So the question is why can't we just run R1 and R4 with iBGP without running iBGP on R2 and R3? (Without dealing with tunneling?) Lets say a packet came into R1 so would it not recurse the route and say it needs to reach R4 because of the peering? (And would reach R4 through the IGP?)

Tunneling I believe virtually makes the edge routers right next to each other? - Is that the correct line of thinking?

  • 3
    Your assumption is wrong. You don’t need to run ibgp on intermediate routers. But you do need connectivity between the bgp peers.
    – Ron Trunk
    Mar 29, 2019 at 21:51
  • So why do other sites, and cisco labs, mention running tunneling so the intermediary routers do not have to speak BGP? It seems to be easier without tunneling if it already works from R1 to R4 without extra configs. Mar 29, 2019 at 21:57
  • @JuniorPenguin Can you provide a quote or reference that actually shows that all intermediary routers have to be iBGP speakers? Just edit your question to include a link and maybe a short quote. Mar 29, 2019 at 22:22
  • My guess is you’re confusing mpls tunnels to carry user traffic and bgp routing to signal those tunnels. But a quote will help sort that out.
    – Ron Trunk
    Mar 29, 2019 at 22:27
  • learningnetwork.cisco.com/thread/64970 - I guess the second thread says, there would be a next hop problem without running BGP in the core. Mar 29, 2019 at 22:47

3 Answers 3


And would reach R4 through the IGP?

It would see that it can't reach R4 directly, but it can reach it via R2, so it would send the packet to R2.

But this decision is not recorded in the packet in any way. So for packets to traverse between R1 and R4 and exit the network in the desired location R2 and R3 also needs to know which outside networks are reached via R1 and which are reached via R4. The conventional way for it to get that information is through ibgp.

  • "But this decision is not recorded in the packet in any way." <-- This Mar 30, 2019 at 16:42

You are confusing a couple of concepts. In your example:

edge -R1 - R2 - R3 - R4 -edge

You could have an iBGP problem because if all the routers run iBGP then each router would need an iBGP connection (at least logical) with every other router. That does not mean that each router must be physically connected to every other router, but it does mean you need an IGP or static routes so that each router knows how to reach every other router. For example R1 knows how to reach the R2 directly connected interface, but it would not know how to reach an R2 loopback interface or R3 and R4 without some help from an IGP or static routes.

Even if you run iBGP on all the routers, you still want an IGP so that each router knows how to reach all the other routers because an iBGP learned route cannot be advertised to another iBGP speaker. For example, with iBGP, R3 can tell R2 about its link to R4, but R2 cannot tell R1 about that link because it was learned by R2 via iBGP. If you run an IGP, then the IGP can tell each router about all the routes in the AS.

Whether or not to run iBGP on all the internal router or use a tunnel between the edge routers really depends on your reason for the eBGP routes. If you do not distribute the eBGP-learned routes into your IGP (trying to configure static routes, except a default route, would really be impossible with the Internet routing table), then R2 and R3 have no idea where to send externally-destined traffic.

If you are simply needing redundant Internet connections and advertising your internal networks to the neighbor ASes via BGP, then you probably do not need to run iBGP or have a tunnel between the edge routers. Simply advertising default routes inside your AS would probably suffice, but you could redistribute eBGP learned routes into your IGP (not recommended unless you have a good reason for it)..

If your AS wants to choose the best exit router, then you could redistribute the eBGP-learned routes into the IGP (probably not a good idea, but it can be done), or you could run iBGP on all the routers.

In that case of a transit AS (traffic is expected to enter on one side of the AS and exit on the other side of the AS), then, yes, you probably do want iBGP on all the routers in your AS, or you want a tunnel between the edge routers if you do not want to burden the internal routers with the full Internet routing table.

  • Yes, in your last paragraph - that was my question - why the need for core routers to run iBGP? Mar 30, 2019 at 16:45
  • As I explained, you only need that under certain circumstances. The entire answer is the answer. If your internal routers need to forward traffic destined to external addresses, then you may need to run iBGP so the internal routers can make the correct decision. It depends on what you are doing, and the last paragraph concerns itself with one case (transit AS) that is pretty rare, unless you are an ISP.
    – Ron Maupin
    Mar 30, 2019 at 19:10

As long as each router on the path knows how to reach the destination you are fine.

If the route is advertised via iBGP from R4 to R1 then only R1 will know how to get there. R2, however, will drop the packet.

So the solution may be to teach each router on the path (R2, R3) about this prefix using any routing protocol (maybe even iBGP...why not). Or use tunneling Or use static routing.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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