You are on page 1of 3

Diffusing update algorithm

From Wikipedia, the free encyclopedia

(Redirected from Diffusing Update Algorithm)
Jump to navigationJump to search
The diffusing update algorithm (DUAL) is the algorithm used by Cisco's EIGRP[1]
routing protocol to ensure that a given route is recalculated globally whenever it
might cause a routing loop. It was developed by J.J. Garcia-Luna-Aceves at SRI
International. The full name of the algorithm is DUAL finite-state machine (DUAL
FSM). EIGRP is responsible for the routing within an autonomous system, and DUAL
responds to changes in the routing topology and dynamically adjusts the routing
tables of the router automatically.

EIGRP uses a feasibility condition to ensure that only loop-free routes are ever
selected. The feasibility condition is conservative: when the condition is true, no
loops can occur, but the condition might under some circumstances reject all routes
to a destination although some are loop-free.

When no feasible route to a destination is available, the DUAL algorithm [2]

invokes a diffusing computation [3] to ensure that all traces of the problematic
route are eliminated from the network. At which point the normal Bellman�Ford
algorithm is used to recover a new route.

DUAL uses three separate tables for the route calculation. These tables are created
using information exchanged between the EIGRP routers. The information is different
than that exchanged by link-state routing protocols. In EIGRP, the information
exchanged includes the routes, the "metric" or cost of each route, and the
information required to form a neighbor relationship (such as AS number, timers,
and K values). The three tables and their functions in detail are as follows:

Neighbor table contains information on all other directly connected routers. A

separate table exists for each supported protocol (IP, IPX, etc.). Each entry
corresponds to a neighbour with the description of network interface and address.
In addition, a timer is initialized to trigger the periodic detection of whether
the connection is alive. This is achieved through "Hello" packets. If a "Hello"
packet is not received from a neighbor for a specified time period, the router is
assumed down and removed from the neighbor table.
Topology table contains the metric (cost information) of all routes to any
destination within the autonomous system. This information is received from
neighboring routers contained in the Neighbor table. The primary (successor) and
secondary (feasible successor) routes to a destination will be determined with the
information in the topology table. Among other things, each entry in the topology
table contains the following:
"FD (Feasible Distance)": The calculated metric of a route to a destination within
the autonomous system.
"RD (Reported Distance)": The metric to a destination as advertised by a
neighboring router. RD is used to calculate the FD, and to determine if the route
meets the "feasibility condition".
Route Status: A route is marked either "active" or "passive". "Passive" routes are
stable and can be used for data transmission. "Active" routes are being
recalculated, and/or not available.
Routing table contains the best route(s) to a destination (in terms of the lowest
"metric"). These routes are the successors from the topology table.
DUAL evaluates the data received from other routers in the topology table and
calculates the primary (successor) and secondary (feasible successor) routes. The
primary path is usually the path with the lowest metric to reach the destination,
and the redundant path is the path with the second lowest cost (if it meets the
feasibility condition). There may be multiple successors and multiple feasible
successors. Both successors and feasible successors are maintained in the topology
table, but only the successors are added to the routing table and used to route

For a route to become a feasible successor, its RD must be smaller than the FD of
the successor. If this feasibility condition is met, there is no way that adding
this route to the routing table could cause a loop.

If all the successor routes to a destination fail, the feasible successor becomes
the successor and is immediately added to the routing table. If there is no
feasible successor in the topology table, a query process is initiated to look for
a new route.


+ = Router
- or | = Link
(X) = Metric of link
A (2) B (1) C
+ - - - - - + - - - - - +
| |
(2)| | (3)
| |
+ - - - - - +
D (1) E
Now a client on router E wants to talk to a client on router A. That means a route
between router A and router E must be available. This route is calculated as

The immediate neighbours of router E are router C and router D. DUAL in router E
asks for the reported distance (RD) from routers C and D respectively to router A.
The following are the results:

Destination: Router A
via D: RD(4)
via C: RD(3)
The route via C is therefore in the lowest cost. In the next step, the distance
from router E to the neighbours are added to the reported distance to get the
feasible distance (FD):

Destination: Router A
via D: RD(4), FD(5)
via C: RD(3), FD(6)
DUAL therefore finds that the route via D has the least total cost. Then the route
via D will be marked as "successor", equipped with passive status and registered in
the routing table. The route via C is kept as a "feasible successor", because its
RD is less than the FD of the successor:

Destination: Router A
via D: RD(4), FD(5) successor
via C: RD(3), FD(6) feasible successor
Cisco EIGRP official white paper, Sep 09, 2005
J.J. Garcia-Lunes-Aceves, "Loop-Free Routing Using Diffusing Computations"
IEEE/ACM Transactions on Networking, vol. 1, no, 1, pp. 130�141 Feb. 1993
E. W. Dijkstra and C. S. Scholten. �Termination detection for diffusing
computations,� Inform. Process. Lett., vol. 11, no, 1, pp. 1�4, Aug. 1980 and
Categories: Routing protocolsRouting algorithmsSRI International software
Navigation menu
Not logged inTalkContributionsCreate accountLog inArticleTalkReadEditView

Search Wikipedia
Main page
Featured content
Current events
Random article
Donate to Wikipedia
Wikipedia store
About Wikipedia
Community portal
Recent changes
Contact page
What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Wikidata item
Cite this page
Create a book
Download as PDF
Printable version

Edit links
This page was last edited on 17 July 2018, at 18:35 (UTC).
Text is available under the Creative Commons Attribution-ShareAlike License;
additional terms may apply. By using this site, you agree to the Terms of Use and
Privacy Policy. Wikipedia� is a registered trademark of the Wikimedia Foundation,
Inc., a non-profit organization.
Privacy policyAbout WikipediaDisclaimersContact WikipediaDevelopersCookie
statementMobile viewWikimedia Foundation Powered by MediaWiki