EIGRP Loop Prevention Logic

Hamid sent me the following question:

I have already memorized (bad idea, BTW) that a loop can occur if FD < RD. Could you please tell me how a loop could occur assuming FD < RD and we ignore the feasibility condition.

I’ll use a simple three-router network (see the following diagram) to illustrate why EIGRP cannot figure out whether an alternate more expensive path could lead to a loop or not.

Based on the link costs (I’m using scalar metrics for simplicity), C advertises the LAN IP prefix with cost=5. B adds its own incoming link cost (12), reporting the total cost of 17 to A (RD = 17).

A receives a similar update from C and adds its incoming cost (10). The total cost of getting from A to LAN prefix behind C is 15 (FD = 15).

However, A does not know whether B has an alternate path to C or whether it reports the path through A back to A.

Assuming EIGRP split horizon is disabled on B (which might be required for NBMA networks like DMVPN), B could increase the total cost to C and report the increased cost back to A.

We know that’s not the case because we can see the whole topology of the network. A doesn’t have that much visibility (that’s the main difference between EIGRP and OSPF); the only safe course of action it can take is not to use alternate paths with RD > FD.

4 comments:

  1. So this is usually relevant when Spit-Horizon is disabled? I always have a difficult time coming up with a situation where Split-Horizon is enabled but a loop might still occur if not for the Feasibility Condition.

    ReplyDelete
  2. The simple rule is once a new route passes through a router with a particular metric, the looped route via the same router can NEVER have a metric lower than the intial metric...this is the crux of FC.

    ReplyDelete
  3. To Yosef's point - The situation in the final picture can only happen with split-horizon disabled. If not, B will not advertise the route to the segment back to A since it learned it on that interface. I've always wondered as well if there is a situation where you could end up with looped routes based purely on metrics with traditional prevention mechanisms like split-horizon enabled or of the FC was designed to deal specifically with situations like shown above...

    ReplyDelete
  4. The FC check prevents the feasible successor from being immediately installed in the routing table, and forces the query/response game (using the last known good metric as the measuring stick). If you increase the diameter just a bit (like adding D between A and B), it's easier to see a race condition of advertisements, that IF they were installed in the routing table immediately, temporary loops would occur (until re-reconvergence). Even if split horizon is enabled, when all links are healthy, A and B do exchange their best path (directly to C), and if both links to C go down (silly, I know, since C owns the subnet), and A and B ignored the feasibily check, they would temporarily route traffic to C's LAN IP until they poison-reversed, etc. If we add a few routers in the mix, it gets messier during convergence, which is why there is a feasibility check. My question has always been (and this article reminded me), why FD must be less than RD, and not less than OR equal to. If RD is higher, we know loops can occur, but I cannot come up with a situation where if AD=RD, there is a loop.

    ReplyDelete

You don't have to log in to post a comment, but please do provide your real name/URL. Anonymous comments might get deleted.

Ivan Pepelnjak, CCIE#1354, is the chief technology advisor for NIL Data Communications. He has been designing and implementing large-scale data communications networks as well as teaching and writing books about advanced technologies since 1990. See his full profile, contact him or follow @ioshints on Twitter.