Network Notes: EIGRP
Published: 8th of July 2018
EIGRP is an 'advanced' distance vector routing protocol and is the evolution of IGRP. Originally EIGRP was a Cisco proprietary protocol but in 2013 Cisco announced its intention to make EIGRP on open standard. At the time of writing there is an only informational RFC: RFC7868.
EIGRP has been assigned protocol number 88 and implements its own reliable transport protocol for delivery of unicast and multicast packets. It does not use TCP or UDP.
There are 6 K coefficient values used in the EIGRP metric calculation. Bandwidth (K1), load (K2), cumulative delay (K3), reliability (K4), MTU (K5) and extended metrics (K6). There is also a hop count parameter but that is used to prevent routing loops, not for best path selection.
K1-5 + hop count are considered to be the EIGRP classic metrics. EIGRP was further enhanced to support so called wide metrics. Wide metrics accommodate for interface speeds greater than 10G. Additionally the K6 coefficient was added and bandwidth is referred to as throughput while delay is referred to as latency.
|K1||Transmission speed of an interface.||Auto assigned based in interface speed/type.|
|Load||K2||Dynamically estimated load of an interface.||Calculated based on the amount of traffic in/out of an interface vs its maximum capacity.|
|K3||Estimated serialization delay of an interface||Auto assigned based in interface type.|
|Reliability||K4||Dynamically estimated reliability of an interface.||Calculated based on the number of frames received vs the number of frames transmitted by a neighbor.|
|MTU||K5||Minimum MTU along a route to a destination.||Advertised by EIGRP but not used in best path selection.|
|Extended Metrics||K6||Placeholders for future extensions, not yet implemented.||Three defined: Jitter, Energy and Quiescent energy.|
|Hop Count||N/A||Number of hops to a destination. Used to prevent routing loops. Not used in best path selection.||100|
Best Path Selection
EIGRP uses the K values to calculate the best path to a destination. All routers in an EIGRP autonomous system should use the same K values to compute the best path. By default only the lowest bandwidth (K1) and cumulative delay (K3) to a destination are used in the best path calculation.
Essentially the default metric is calculated as follows:
(256 x 107 / lowest_bandwidth) + (256 x sum_of_delays)
For reference the full calculation for both classic and wide metrics are below:
Classic Composite Metric Computation Formula 
Wide Composite Metric Computation Formula 
Cisco does not recommend turning on any of the non-default metrics and most of them exist for backwards compatibility with IGRP. The recommended method to influence best path selection is by altering the delay metric.
For an EIGRP neighborship to be established the following must be true.
- Matching autonomous system number
- Matching K Values
- Matching Multicast (dynamic) or Unicast (static) neighbor configuration
- Matching Authentication Parameters
- Neighbor primary interface IP address resides in a common subnet
Neighbor Packet Types
EIGRP has 7 types of neighbor packets.
|Hello||5||Identify and verify neighbor compatibility while also acting as a keepalive mechanism. Hello packets are multicast to 22.214.171.124 and FF02::A or unicast if static neighbor is configured.|
|Acknowledgment||5||Unicast response to an; Update, Query, Reply, SIA-Query or SIA-Replay packet An acknowledgment is a Hello packet with no TLV's with the Acknowledgment field set to the sequence number of the packet it is acknowledging. An Acknowledgement can also piggy back onto the Acknowledgment field of ANY unicasted reliable packet by setting that packets sequence number in the Acknowledgement field.|
|Update||1||Contain routing information updates and also advise of the reachability of remote destinations. Can be either unicast or multicast, p2p links and statically configured neighbors use unicast updates.|
|Query||3||Unicast or multicast packets used to involve a neighbor in the search for the best route to a destination.|
|Reply||4||Unicast response to a reply packet with the senders current distance to the destination|
|SIA-Query||10||Unicast packet that is used to ask a neighbor if it is still working on a Query during a prolonged diffusing computation.|
|SIA-Reply||11||Unicast packet sent in reponse to a SIA-Query if the neighbor is still working on the original Query.|
Reliable Transport Protocol
Reliable transport protocol (RTP) ensures that EIGRP packets are not only delivered, but also delivered in the correct order. There is no separate RTP packet format, instead RTP is build into the EIGRP messages using sequence numbers and forced acknowledgements. The reliable EIGRP packets types (Update, Query, Reply, SIA-Update and SIA-Reply) must be acknowledged, this ensures the delivery of EIGRP messages.
Diffusing Update Algorithm
Diffusing Update Algorithm (DUAL) is used as the convergence algorithm in EIGRP. DUAL replaces the Bellman-Ford algorithm used in other distance vector protocols. DUAL computes the shortest path using the concept of "diffusing computations" to ensure a loop free topology during the shortest path computation.
During a topology change, if the shortest path provided by a neighbor is already a feasible successor in the topology table the feasible successor is elevated to the successor route without needing to query its neighbors. This is known as a local computation.
During a topology change, if the shortest path provided by a neighbor is not a feasible successor, the router will commence a diffusing computation by sending a Query packet to its neighbors with the prefix and its computed distance to the destination.
DUAL Finite State Machine
The DUAL Finite state machine (FSM) is used to use handle multiple topology changes during a single diffusing computation.
DUAL uses the following parameters in the diffusing computation.
|Reported Distance||The distance to a destination from the perspective of a neighboring router.|
|Computed Distance||Total distance to a destination calculated as: The distance between a router and its neighbor plus the neighbors reported distance.|
|Feasible Distance||The last known computed distance to a destination when the route transitioned from active to passive.|
|Feasibility Condition||If a neighboring routers reported distance to a destination is smaller than the routers current feasible distance to the destination the path through that neighbor cannot cause a routing loop.|
EIGRP stores all its routing information in the topology table. EIGRP will perform a feasibility condition check on routes received by a neighbor to confirm that neighbor can provide a loop free path to the destination. Routes that satisfy the feasibility condition may be installed in the routing table.
Any loop free path to a destination will be installed in the topology table as one of two types of routes.
|Successor||This is the shortest loop free path to a destination and is installed in the routing table.|
|Feasible Successor||Alternate loop free path to a destination. Can be installed in the routing table if the Successor route fails.|
Routes in the topology table go through a number of states.
|Passive||Loop free path to the destination has been computed. This is the normal state.|
|Active||EIGRP is actively trying to compute the best path and querying its neighbors.|
|SIA||If a reply to a Query for a destination is not received within the holdown timer (180 sec or 360 sec with SIA-Reply) the route is considered Stuck-In-Active.|
Basic EIGRP message format
EIGRP exchanges a full routing table when a neighborship is initially established with only partial updates exchanged after that. For a router to accept routing updates from a neighbor the router-id must be different to its local router-id.
EIGRP is a classless routing protocol and can summarize networks at any bit boundary.
|Feasibility Condition||Neighbors reported distance to a destination is lower than the current feasible distance.|
|Split horizon with poison reverse ||Routes learned from an interface are re-advertised out the same interface with an infinite metric.|
|Hop Count||Used to limit the maximum size of a EIGRP AS. The default is 100.|
EIGRP supports both MD5 and SHA-256 authentication. SHA-256 is only available in EIGRP named mode.
Various EIGRP PCAPs can be found here.
|1||CCIE Routing and Switching v5.0 Official Cert Guide, Volume 1 - Chapter 8: EIGRP - Page 364|
|2||CCIE Routing and Switching v5.0 Official Cert Guide, Volume 1 - Chapter 8: EIGRP - Page 367|
|Kocharians, N. and Paluch, P. (2014) CCIE Routing and Switching v5.0 Official Cert Guide, Volume 1, 5th Edition - Chapter 8: EIGRP. Indianapolis: Cisco Press|
|Edgeworth, B. Foss, A. Rios, G. R. (2014) IP Routing on Cisco IOS, IOS XE and IOS XR - Chapter 5: EIGRP. Indianapolis: Cisco Press|
|cisco.com (2017) Enhanced Interior Gateway Routing Protocol. Available at https://www.cisco.com/c/en/us/support/docs/ip/enhanced-interior-gateway-routing-protocol-eigrp/16406-eigrp-toc.html (Accessed: 8 Jul 2018)|