What is DUAL in EIGRP, and how does it let a router change paths after a failure without creating a routing loop?
answer
- a backup checked before it is needed
- coordinated, not uncoordinated, updates
- query, then wait for every reply
- reported distance below feasible distance
basics
~20 sDUAL, the Diffusing Update Algorithm, is how EIGRP picks routes: it keeps backup next hops that pass a loop-freedom test and switches to one at once; when none exists, it freezes the route and queries its neighbours before choosing again.
solid answer
~50 sDUAL (the Diffusing Update Algorithm) is the route computation inside EIGRP, a distance-vector protocol that began as one vendor's and was published as Informational RFC 7868 in 2016. Each router hears every neighbour's **reported distance** to a prefix and remembers its own best distance, the **feasible distance**. A neighbour whose reported distance is strictly below the feasible distance cannot be routing through this router, so it is a **feasible successor**: if the current next hop (the **successor**) fails, the router switches to it at once, without asking anyone. If no feasible successor exists, the route goes **active**: it is unusable, the router sends a `QUERY` to its neighbours and waits for a `REPLY` from every one before it picks a new path and returns to **passive**. Unlike a basic distance-vector protocol, whose routers react alone and can loop until a metric cap clears it, DUAL keeps paths loop-free throughout.
go deeper
Recall that DUAL is EIGRP's route computation, and the two outcomes after a failure: switch to a pre-checked backup at once, or query neighbours before choosing.
Explain the feasibility condition in words: a neighbour closer than this router's best distance cannot be routing through it. Define successor, feasible successor, passive and active.
Show why waiting for every reply prevents loops during reconvergence, and why that waiting is the operational cost that large query domains turn into stuck-in-active routes.
Weigh DUAL's local failover and coordinated recovery against its dependence on bounded query domains, and the fact that EIGRP is one vendor's protocol documented only as an Informational RFC.
## What DUAL is **EIGRP** (Enhanced Interior Gateway Routing Protocol) is an interior routing protocol based on distance vectors: a router does not see the topology, it hears from each neighbour how far that neighbour is from each prefix. It began as one vendor's protocol and was published in 2016 as **RFC 7868**, an Informational, independent-submission RFC rather than an Internet Standard. The part of EIGRP that decides which neighbour to use is **DUAL**, the **Diffusing Update Algorithm**. RFC 7868 traces it to academic research on loop-free routing with diffusing computations (Garcia-Luna-Aceves, 1993). Its promise, in the RFC's words, is a path that is loop-free "at every instant", including while the network is reconverging. ## The vocabulary you need | Term | Meaning | |---|---| | **Reported distance (RD)** | The distance to a prefix that a neighbour advertises | | **Computed distance** | The neighbour's RD plus the cost of the link to that neighbour | | **Feasible distance (FD)** | This router's lowest distance to the prefix since the route last became passive | | **Feasibility condition** | A neighbour's RD is strictly less than this router's FD | | **Successor** | A neighbour that meets the condition and gives the least-cost path: the next hop in use | | **Feasible successor** | A neighbour that meets the condition: a guaranteed loop-free backup | | **Passive / active** | The route is usable and settled / the route is unusable while neighbours are consulted | The key idea is the **feasibility condition**. If a neighbour says it is closer to the prefix than this router has been since the route last settled, the neighbour's path cannot run back through this router, because any path through this router would be at least as long as this router's own distance. That makes the neighbour a safe backup, decided in advance. ## Case 1: the successor fails and a feasible successor exists 1. The link to the successor fails, or the successor reports an increase. 2. The router checks its other neighbours and finds a feasible successor. 3. It makes that neighbour the new successor immediately. The route stays **passive**. 4. If its distance changed, it sends an `UPDATE` so its own neighbours learn the new value. No other router has to take part in the decision. This local switch is why EIGRP is known for very fast failover when a feasible successor exists. ## Case 2: no feasible successor exists 1. The route goes **active**. RFC 7868 treats an active route as unusable. 2. The router sends a `QUERY` for the prefix to its neighbours, asking for their current distance. 3. A neighbour that still has a loop-free path answers at once with a `REPLY`. A neighbour that was using the querying router as its successor and has no feasible successor of its own goes active too and queries its own neighbours. 4. Replies flow back. When the router has a reply from **every** neighbour it queried, it picks the best path from what it heard, resets its feasible distance to that value and returns to **passive**. The query spreads only as far as routers that are actually affected, then shrinks as replies come back. That growing-and-shrinking exchange is the **diffusing computation** that gives DUAL its name. ## Why this beats an uncoordinated distance-vector protocol A basic distance-vector protocol such as RIP updates without coordination. After a failure a router may accept a neighbour's stale advertisement that actually points back through itself, and the two count upward until the metric hits its cap. DUAL avoids that in two ways: - **Before a failure**, the feasibility condition sorts neighbours into safe backups and possibly unsafe ones. - **After a failure with no safe backup**, the router stops using the route and waits for every affected neighbour to confirm, rather than guessing. The price is the waiting in Case 2. A large network can make that computation slow, which is where stuck-in-active routes and the techniques that bound the query come in. ## Where DUAL stops DUAL decides **which neighbour** to use; it does not decide how distances are computed. EIGRP's composite metric over bandwidth and delay produces the numbers, the topology table stores every neighbour's distance, and the reliable transport protocol makes sure each query and reply is delivered. DUAL is the decision logic on top of those parts.
- Is EIGRP, and therefore DUAL, an IETF standard?No. EIGRP was one vendor's protocol until RFC 7868 described it in 2016, and that RFC is an Informational independent submission, explicitly not a candidate for any level of Internet Standard. DUAL itself comes from published academic research on loop-free routing, which the RFC cites. Few implementations outside the original exist, which matters when a network must run equipment from several sources.
- Does DUAL make EIGRP a link-state protocol?No. EIGRP routers exchange distances to prefixes, not a map of links, and each router decides from its neighbours' reported distances. RFC 7868 calls EIGRP a protocol based on distance-vector technology. DUAL adds coordination and a loop-freedom test on top of distance vectors; it does not give any router a full view of the topology.
saying these in an interview costs you the question
- DUAL is Dijkstra's shortest-path algorithm run over a full map of the network
- Any neighbour that advertises the prefix is a backup the router can switch to instantly
- When the successor fails, EIGRP waits out a holddown timer before trying another path
- DUAL avoids loops by capping the metric, the way RIP stops at 16
- A route in the active state is the one currently forwarding traffic