This service is free, however donations are welcome
Data Network Resource
       Earn on the Web

Home of a wide range of data and communications products!



Traditional routing protocols are inherently prone to loops as they flood routing information throughout the network, hence why techniques such as Split Horizon, Poison Reverse and Hold Down timers are used. Also, traditional routing protocols have to recalculate their algorithms before advertising routes out, and each router has to do this, thereby making convergence slow.

Enhanced Interior Gateway Routing Protocol (EIGRP) is designed to give all the flexibility of routing protocols such as OSPF but with much faster convergence. In addition, EIGRP has Protocol-Dependent Modules that can deal with AppleTalk and IPX as well as IP. The advantage with this is that only one routing process need run instead of a routing process for each of the protocols. EIGRP provides loop-free operation and almost instant simultaneous synchronisation of all routers. Redistribution between EIGRP and other routing protocols is generally automatic. For example, if IGRP and EIGRP routers use the same AS number then by default routes are redistributed one to the other.

Whereas other routing protocols use a variant of the Bellman-Ford algorithm and calculate routes individually, EIGRP uses the Diffusing Update Algorithm (DUAL) (SRI International) where routers share the route calculations (hence 'diffuse'). A router only sends routing updates as distance vectors of directly connected routes, rather than every route that is in the network. Also, the router only sends an update of a particular if a topology change has occurred to that specific route. In addition, this update is only sent to relevant neighbour routers, not to all routers. This makes EIGRP a bandwidth-efficient routing protocol. Other routing protocols have regular routing updates that contain all route information by default.

EIGRP packet delivery is handled using Reliable Transport Protocol (RTP) which ensures delivery in order using Reliable Multicast on the multicast address EIGRP uses IP protocol number 88.

Unlike IGRP, in the IP environment, EIGRP is a Classless routing protocol since updates carry subnet mask information. Although EIGRP automatically summarises on the network boundary, it can be configured to summarise on any bit boundary. EIGRP can also be used when aggregating routes i.e. when summarising major networks.

EIGRP uses the Neighbor Table to list adjacent routers. The Topology Table lists all the learned routes to a destination whilst the Routing Table contains the best route to a destination, which is known as the Successor. The Feasible Successor is a backup route to a destination which is kept in the Topology Table.

MD5 authentication can be used to authorise EIGRP packets.


Cisco's EIGRP is similar to IGRP only in the sense that it uses the same metrics; Delay, Bandwidth, Reliability and Load. Be aware that the MTU is NOT used in the calculation of the metric, however the MTU is tracked through the path to find the smallest MTU.

As with IGRP, the 'K' values for the last three are defaulted to '0'. Only the military use 'Reliability'. Most configurations use the first two metrics Delay and Bandwidth, with Bandwidth taking precedence. The metric for EIGRP is calculated by multiplying the IGRP metric by 256. So the formula used to calculate the metric is EIGRP Metric = 256*([K1*Bw + K2*Bw/(256-Load) + K3*Delay]*[K5/(Reliability + K4)]).

The default values for weights are:
  • K1 - 1
  • K2 - 0
  • K3 - 1
  • K4 - 0
  • K5 - 0
This gives the default formula of 256*(Bw + Delay) for the EIGRP metric. The term [K5/(Reliability + K4)] is completely ignored if K5 = 0! You can change the weights if you want to. However, just as with IGRP, these weights must be the same on all the routers!.

Taking the example we used when looking at IGRP, a link where the bandwidth to a particular destination is 128k and the delay is 84000 microseconds. Using the cut down formula EIGRP metric = 256*(Bw + Delay), we obtain the value 256*(107/128 + 84000/10) which gives 256*86525 = 22150400.

EIGRP Packet Format

EIGRP Packet

  • Version - there has only been one version
  • Opcode - this is the EIGRP packet type:
    • 1 - Update
    • 3 - Query
    • 4 - Reply
    • 5 - Hello
    • 6 - IPX SAP
  • Checksum - this is calculated for the whole EIGRP portion of the IP datagram
  • Flags - The LSB (0x00000001) is the Init bit meaning that the route in this packet is the first in a new neighbour relationship. The next bit (0x00000002) is the Conditional Receive bit used in Cisco's Reliable Multicasting algorithm.
  • Sequence - the 32-bit sequence number used by RTP.
  • ACK - the 32-bit sequence last heard from the neighbour. A Hello packet with a non-zero value is an ACK.
  • AS Number - the Autonomous System number of the EIGRP domain.
  • Type/Length/Value (TLV) - There are a number of TLVs, all of them begin with a 16 bit Type field and a 16 bit Length field. There then follows a number of fields that vary depending on the type as given below.
    • General TLVs
      • 0x0001 - General EIGRP parameters (applies to any EIGRP packet regardless of protocol)
      • 0x0003 - Sequence (used by Cisco's Reliable Multicast)
      • 0x0004 - EIGRP software version, the original version being 0 and the current version being 1 (used by Cisco's Reliable Multicast)
      • 0x0005 - Next Multicast Sequence (used by Cisco's Reliable Multicast)
    • IP TLVs
      • 0x0102 - IP internal routes
      • 0x0103 - IP external routes
    • AppleTalk TLVs
      • 0x0202 - AppleTalk internal routes
      • 0x0203 - AppleTalk external routes
      • 0x0204 - AppleTalk cable setup
    • IPX TLVs
      • 0x0302 - IPX internal routes
      • 0x0303 - IPX external routes
The above diagram illustrates the General TLV (containing the 'K' values) and the IP TLVs (containing details such as the five metrics). Of most interest are the IP TLVs, and these are detailed below:

Type 0x0102 IP internal routes TLV

  • Type 0x0102
  • Length - Length of the TLV
  • Next Hop - The next hop route for this route
  • Delay - The number of 10 microsecond chunks which is the sum of delays
  • Bandwidth - 256 * IGRP bandwidth
  • MTU - The smallest MTU encountered along the route to this particular destination network.
  • Hop Count - A number between 0x00 (directly connected network) and 0xFF.
  • Reliability - A number between 0x01 and 0xFF to indicate the error rates totalled along the route. 0xFF is reliable.
  • Load - A number between 0x01 and 0xFF expressing the total load along a route where 0xFF is totally loaded.
  • Reserved - 0x0000 and not used.
  • Prefix Length - The number of bits used for the mask
  • Destination - Destination network

Type 0x0103 IP external routes TLV

  • Type 0x0103
  • Length - Length of the TLV
  • Next Hop - The next hop route for this route
  • Originating Autonomous System - The AS from where the route came
  • Tag - Used with Route Maps to track routes
  • External Protocol Metric - The metric for this route used by the external routing protocol e.g. IGRP, OSPF, RIP
  • Reserved - 0x0000 and not used.
  • External Protocol ID - identifies the external protocol advertising this particular route
    • 0x01 - IGRP
    • 0x02 - EIGRP (a different AS)
    • 0x03 - Static Route
    • 0x04 - RIP
    • 0x05 - Hello
    • 0x06 - OSPF
    • 0x07 - IS-IS
    • 0x08 - EGP
    • 0x09 - BGP
    • 0x0A - IDRP
    • 0x0B - directly connected
  • Flags - 0x01 means the route is an external route whereas 0x02 means that the route could be a default route.
  • Delay - The number of 10 microsecond chunks which is the sum of delays
  • Bandwidth - 256 * IGRP bandwidth
  • MTU - The smallest MTU encountered along the route to this particular destination network.
  • Hop Count - A number between 0x00 (directly connected network) and 0xFF.
  • Reliability - A number between 0x01 and 0xFF to indicate the error rates totalled along the route. 0xFF is reliable.
  • Load - A number between 0x01 and 0xFF expressing the total load along a route where 0xFF is totally loaded.
  • Reserved - 0x0000 and not used.
  • Prefix Length - The number of bits used for the mask
  • Destination - Destination network

Neighbour Discovery and Adjacencies

Neighbour discovery is achieved via the periodic use of Hello packets. The Hello Interval is every 5 seconds on LANs and fast WANs using multicast Hellos, and every 60 seconds on slow WAN links (except point-to-point sub-interfaces), using Unicast Hellos. The multicast Hello packets are sent to the multicast address since it is not necessary to send unicast packets specifically to each neighbour. These neighbour/peer relationships only occur over primary interface addresses NOT via any secondary addresses that may be configured!

EIGRP uses Reliable Transport Protocol to provide guaranteed, ordered packet delivery to all the neighbours with mixed unicast and multicast packets. On multiaccess networks, Hellos are multicast without the requirement for Acknowledgements i.e. Unreliable Multicast. Updates on the other hand, DO require Acknowledgements. The Hellos are the only regular communication. Once a neighbour has been discovered, the router attempts to form an adjacency with that neighbour whereby routing Updates are sent.

Routing Updates are NOT regularly sent, thereby minimising bandwidth usage, instead Updates are sent when there are changes to routes, and even then, the Updates are only sent to those routers that need them. If one router requests an Update, the Update is unicast, but if a number of routers require an Update (e.g. because of a topology change), then the Update is multicast.

The Hello packet contains a Hold Time which is 3 times the Hello Interval. This Hold Time is the time that the receiving router should expect to wait before declaring the neighbour as unreachable. For most networks, this Hold Time is 3 x 5 = 15 seconds which is alot faster than traditional routing protocols Hold time (e.g. 180 seconds for RIP).

A Neighbour Table is built up and contains the following information:
  • H is the order in which the neighbours were discovered
  • IP Address of neighbour
  • Interface on which the Hello was received
  • Hold Time in seconds
  • Up Time i.e. how long the neighbour has been up
  • Smooth Round Trip Time (SRTT) - the average time in milliseconds between the transmission of a packet to a neighbour and the receipt of an acknowledgement.
  • Retransmission Timeout (RTO) - if a multicast has failed, then a unicast is sent to that particular router, the RTO is the time in milliseconds that the router waits for an acknowledgement of that unicast.
  • Queue - shows the number of queued packets.
  • Sequence Number of the last EIGRP packet received.
The SRTT indicates generally indicates the speed of the link(s) along the path to that particular neighbour. The RTO defaults to 200ms and increases if a neighbour fails to respond to a query. You can test this by clearing one neighbour and seeing the increase in the RTO on the other neighbour(s). Over time as and when updates are sent, the RTO starts to come down, this only happens if changes occur in the network since EIGRP only sends updates when changes occur.

EIGRP uses Split Horizon and Poison Reverse to ensure that routes learned on a particular interface are not re-advertised out of that same interface, or if they are, that they are advertised as unreachable. If a router has an interface with a secondary address configured say on a LAN, then other routers on that LAN will not learn of that subnet from that router because of Split Horizon being enabled (by default).

EIGRP Topology Table and DUAL

Once a neighbour relationship has been formed, called an Adjacency, the routers exchange routing update information and each router builds its own topology table. The Updates contain all the routes known by the sender. For each route, the receiving router calculates a distance for that route based on the distance that is conveyed and the cost to that neighbour that advertised the particular route. If the receiving router sees several routes to a particular network with different metrics, then the route with the lowest metric becomes the Feasible Distance (FD) to that network. The Feasible Distance is the metric of a network advertised by the connected neighbour plus the cost of reaching that neighbour. This path with the best metric is entered into the routing table because this is the quickest way to get to that network.

With the other possible routes to a particular network with larger metrics, the receiving router also receives the Reported Distance (RD) to this network via other routers. The Reported Distance being the total metric along a path to a destination network as advertised by an upstream neighbour. The Reported Distance for a particular route is compared with the Feasible Distance that it already has for that route. If the Reported Distance is larger than the Feasible Distance then this route is not entered into the Topology Table as a Feasible Successor. This prevents loops from occurring. If the Reported Distance is smaller than the Feasible Distance, then this path is considered to be a Feasible Successor and is entered into the Topology table. The Successor for a particular route is the neighbour/peer with the lowest metric/distance to that network.

If the receiving router has a Feasible Distance to a particular network and it receives an update from a neighbour with a lower advertised distance (Reported Distance) to that network, then there is a Feasibility Condition. In this instance, the neighbour becomes a Feasible Successor for that route because it is one hop closer to the destination network. There may be a number of Feasible Successors in a meshed network environment, up to 6 of them are entered into the Topology table thereby giving a number of next hop choices for the local router should the neighbour with the lowest metric fail. What you should note here, is that the metric for a neighbour to reach a particular network (i.e. the Reported Distance) must always be less than the metric (Feasible Distance) for the local router to reach that same network. This way routing loops are avoided. This is why routes that have Reported Distances larger than the Feasible Distance are not entered into the Topology table, so that they can never be considered as successors, since the route is likely to loop back through that local router.

DUAL therefore uses distance information to select the optimum routes that do not create loops. There could be a number of routers that can lead to a particular destination network with the potential for loops. DUAL uses this concept of Feasible Successor, which is a router that has a least cost path to a network and therefore does not form part of a loop since the router will not choose a path that runs back through itself again.

The Topology Table consists of the advertised metric to reach a network by a neighbour and the Feasible Distance to that destination network, via that particular EIGRP neighbour. A network could have a number of entries. Each entry will have the following information:
  • The Feasible Distance
  • Feasible Successors
  • Each Feasible Successor's distance to the network
  • The locally calculated metric to the network via each Feasible Successor.
  • The interface on which each Feasible Successor is discovered.
For example the composite metric 327168/326912 would mean that the locally calculated metric is 327168 and the advertised Feasible Successor's distance (RD) to the network is 326912.

For each network listed in the Topology table the one with the lowest metric is added to the Route table and the neighbour that advertises that route becomes the Successor.

Maintaining a Topology Table allows a router to make sure that all its own metrics to destination networks are larger than its neighbours, thereby avoiding routing loops. EIGRP therefore does not need Hold Down or Flush timers since loops are avoided anyway.

If a route becomes unreachable e.g. the link to the Successor fails, then the router looks in its Topology Table for another route with a lower metric than its Feasible Distance i.e. a Feasible Successor, and that one becomes the Successor. This requires no neighbour querying and is therefore very fast.

If a neighbour fails, after three failed hello messages, the router sends an update. If the backup route fails, only then does it query its neighbours for an alternate route. When route information changes, the router just sends an update about that link only, and only to the routers that need it. This is in contrast to OSPF where the whole link state database needs to be synchronised across the whole area.

In the routing table, because EIGRP relies on the Topology table for updating its routes, the routing entries can become very old. The Topology table contains the known routes and the successors for each route with each interface indicated on which the successors are connected.

By default, if there are multiple equal-cost paths to a destination the router will load share across up to four paths. Generally with most routing protocols, you can change this in the routing process with the command maximum-paths number and have up to 6 paths. By default, on interfaces where fast switching is enabled, the router will perform per-destination load balancing. If fast-switching is turned off then all packets will be examined by the CPU and be load-balanced on a per-packet basis. The load on the CPU can be extensive. Using Cisco Express Forwarding (CEF), you can choose to load balance on a per-packet or per-destination basis with less impact on the CPU.

You can also load share over unequal cost paths. To do this we use the variance feature in the EIGRP routing process. The variance is defined with a multiplier that represents the difference between the metrics of the paths. The default variance is '1' which means that the multiple paths must have the same metrics.

The DUAL Finite State Machine and Diffusing Computation

The principles of DUAL are:
  • Neighbour loss or detection occurs within a finite time.
  • Messages are correctly received and in order, within a finite time.
  • Messages are processed in the order in which they are received, within a finite time.
In a steady state situation where the Successors for each network are known and the Feasible Distances are the lowest, then each network listed in the Topology Table will be in the Passive state meaning that no diffusing calculations are being performed.

The list of Feasible Successors for a particular route will be reassessed locally if there is a change to the cost of the link, a change of state or if update, query or reply packets are received. It could be that the Feasible Distance changes, or that the Feasible Successor takes over from the existing Successor. Provided that a Feasible Successor is found, this is advertised via Updates whilst all the while remaining in Passive state. The idea with this is that if a topology change occurs, the router should be able to find an alternate route without having to recompute the route.

If no neighbour exists with a metric for a particular network that is less than the Feasible Distance, i.e. no Feasible Successor exists, then the local router goes into Active state and queries its neighbours for routing information. If no Feasible Successor is available for a route, then a Diffusing Computation must be implemented, thereby slowing down re-convergence. The local router sets a Reply Status flag to track all the queries to its neighbours.

When performing the Diffusing Computation, queries are sent to all the neighbours and these contain the new locally calculated distance for the network. If a neighbour has Feasible successors, it will recalculate its own local distance to the network and send this back. If a neighbour does not have a Feasible Successor, then it will itself move into Active state.

The originating router does not consider the Diffusing Computation to be complete until replies have been received from all the neighbours. There is an Active Timer that has a default value of 3 minutes. This timer is used to time how long it takes to perform the Diffusing Computation. On a large network where a chain of routers may end up performing the Diffusing Computation, it may be a while before the originating router completes. If all the replies are not received within this 3 minutes, then the route is said to be Stuck-in-Active (SIA). The neighbour involved is removed from the neighour table and the metric for that route set to infinity so that another neighbour can meet the Feasibility Condition and become a Feasible Successor. If an EIGRP network is particularly large, or there are a number of low bandwidth links such that it takes a while for replies to get back, then those neighbours that have yet to reply have their Reply Status flag set. If no reply is received from a particular neighbour before the Active timer times out, then the neighbour will be removed from the neighbour table. If a reply DOES come back after the Active timer has timed out then the neighbour gets reinstated. This disappearance and reappearance of neighbours acts to cause extra Diffusing computations and extra changes to the routing table. Examining the Topology tables of the routers as you chase the SIA neighbour entries helps to track the issues causing the SIA.

Using DUAL, routers maintain up to six backup routes in case the main one fails, and this is carried out by storing neighbour's routing tables. Using the DUAL Finite State Machine results in very fast convergence as it keeps track of all routes advertised by all neighbours.

Valid HTML 4.01 Transitional

IntroDelta     Earn on the Web    

All rights reserved. All trademarks, logos, and copyrights are property of their respective owners.