The diffusing update algorithm (DUAL) is the
algorithm
In mathematics and computer science, an algorithm () is a finite sequence of rigorous instructions, typically used to solve a class of specific problems or to perform a computation. Algorithms are used as specifications for performing ...
used by
Cisco's
EIGRP
Enhanced Interior Gateway Routing Protocol (EIGRP) is an advanced distance-vector routing protocol that is used on a computer network for automating routing decisions and configuration. The protocol was designed by Cisco Systems as a proprietary pr ...
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
SRI International (SRI) is an American nonprofit organization, nonprofit scientific research, scientific research institute and organization headquartered in Menlo Park, California. The trustees of Stanford University established SRI in 1946 as ...
. The full name of the algorithm is DUAL
finite-state machine (DUAL FSM). EIGRP is responsible for the routing within an
autonomous system Autonomous system may refer to:
* Autonomous system (Internet), a collection of IP networks and routers under the control of one entity
* Autonomous system (mathematics), a system of ordinary differential equations which does not depend on the inde ...
, 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 invokes a diffusing computation
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 EWD687a
/ref> 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.
Operation
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
Link-state routing protocols are one of the two main classes of routing protocols used in packet switching networks for computer communications, the others being distance-vector routing protocols. Examples of link-state routing protocols include ...
. 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 packets.
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.
Example
''Legend:''
:+ = 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 follows:
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
References
{{DEFAULTSORT:Diffusing Update Algorithm
Routing protocols
Routing algorithms
SRI International software