# Enhanced Interior Gateway Routing Protocol

The Enhanced Interior Gateway Routing Protocol (EIGRP) is an advanced communications protocol that helps automate routing decisions on a computer network. The protocol was designed by Cisco Systems to accommodate key design changes to the underlying communications protocol used on the Internet known as IPv4.[1] EIGRP was originally a proprietary protocol, which meant that it was only available on Cisco routers, but became an open protocol in 2013, allowing any router manufacturer to use it.[2]

EIGRP allows a router to share information it knows about the network with neighbouring routers within the same logical area known as an autonomous system. Contrary to other well known routing protocols, such as routing information protocol, EIGRP only shares information that a neighbouring router would not have, rather than sending all of its information. EIGRP is optimised to help reduce the workload of the router and the amount of data that needs to be transmitted between routers.

## Overview

The Enhanced Interior Gateway Routing Protocol (EIGRP) replaced the now-obsolete Interior Gateway Routing Protocol (IGRP) in 1993.[3] One of the major reasons for this was because the design of the Internet Protocol had been changed to support classless IPv4 addresses, which IGRP could not support.[3]

Almost all routers contain a routing table, which contains information needed by the router to forward traffic to a network. If the router does not contain a valid path to the network, the traffic is discarded by the router and will never reach its intended destination. EIGRP is a dynamic routing protocol that allows routers to share the information with other routers that have EIGRP correctly configured. This eases the workload on a network administrator who does not have configure changes to the routing table manually.

In addition to the routing table, EIGRP also uses the following tables to store information:-

• Neighbor Table: The neighbor table keeps a record of the IP addresses of routers that have a direct physical connection with this router. Routers that are connected to this router indirectly, through another router are not recorded in this table as they are not considered neighbours.
• Topology Table: The topology table stores routes that it has learned from neighbour routing tables. Unlike a routing table, the topology table does not store all routes, but only routes that have been determined by EIGRP. The topology table also records the metrics for each of the listed EIGRP routes, the feasible successor and the successors. Routes in the topology table are marked as "passive" or "active". Passive indicates that EIGRP has determined the path for the specific route and has finished processing. Active indicates that EIGRP is still trying to calculate the best path for the specific route. Routes in the topology table are not usable by the router until they are inserted into the routing table. The topology table is never used by the router to forward traffic. Routes in the topology table will not be inserted into the routing table if they are passive, are a feasible successor, or have a higher administrative distance than an equivalent path.[4]

Information in the topology table may be inserted into the router's routing table and can then be used to forward traffic. If the network changes, for example, a physical link fails or is disconnected, the path will become unavailable. EIGRP is designed to detect these changes and will attempt to find a new path to the destination. The old path that is no longer available is removed from the routing table as it is no longer available. Unlike most distance vector routing protocols, EIGRP does not transmit all the data in the router's routing table when a change is made but will only transmit the changes that have been made since the routing table was last updated. EIGRP does not send its routing table periodically, but will only sent routing table data when an actual change has occurred.

When a router running EIGRP is connected to another router also running EIGRP, information is exchanged between the two routers and a relationship is formed known as an adjacency. The entire routing table is exchanged between both routers at this time. After this has occurred, only differential changes are sent.

## Features

The Enhanced Interior Gateway Routing Protocol (EIGRP) supports the following features:[5]

• Support for Classless Inter-Domain Routing (CIDR) and variable length subnet masking. Routes are not summarised at the classful network boundary unless auto summary is enabled.
• The ability to use different authentication passwords at different times.
• MD5 authentication between two routers.
• Sends topology changes, rather than sending the entire routing table when a route is changed.
• Periodically checks if a route is available and propagates routing changes to neighbouring routers if any changes have occurred.
• Runs separate routing processes for Internet Protocol (IP), IPv6, IPX and AppleTalk through the use of protocol-dependent modules (PDMs).
• Backwards compatibility with the IGRP routing protocols.[6]

## Configuration

### Cisco IOS example

Example of setting up EIGRP on a Cisco IOS router for a private network. The 0.0.15.255 wildcard in this example indicates a subnetwork with a maximum of 4094 hosts—it is the bitwise complement of the subnet mask 255.255.240.0. The no auto-summary command prevents automatic route summarization on classful boundaries, which would otherwise result in routing loops in discontiguous networks.

Router> enable
Router# config terminal
Router(config)# router eigrp 1
Router(config-router)# network 10.201.96.0 ?
A.B.C.D  EIGRP wild card bits
<cr>
Router(config-router)# network 10.201.96.0 0.0.15.255
Router(config-router)# no auto-summary
Router(config-router)# end


## Technical Details

EIGRP is a distance vector routing protocol that uses the diffusing update algorithm (DUAL) (based on work from SRI International) to improve the efficiency of the protocol and to help prevent calculation errors when attempting to determine the best path to a remote network. EIGRP determines the value of the path using four metrics; load, delay, reliability and MTU.[citation needed]

EIGRP routing information exchanged to a router from another router within the same autonomous system has a default administrative distance of 90. EIGRP routing information that has come from an EIGRP-enabled router outside the autonomous system has a default administrative distance of 170.[4]

EIGRP does not operate using the Transmission Control Protocol (TCP) or the User Datagram Protocol (UDP). This means that EIGRP does not use a port number to identify traffic. Rather, EIGRP is designed to work on top of layer 3 (i.e. the IP protocol). Since EIGRP does not use TCP for communication, it implements Cisco's Reliable Transport Protocol (RTP) to ensure that EIGRP router updates are delivered to all neighbours completely.[7][8] The reliable transport protocol also contains other mechanisms to maximise efficiency and support multicasting.[5] EIGRP uses protocol number 88.[5]

### Distance vector routing protocol

Cisco Systems now classifies EIGRP as a distance vector routing protocol.[6] While EIGRP is an advanced routing protocol that combines many of the features from both link-state and distance-vector routing protocol, EIGRP's DUAL algorithm contains many features which make it more of a distance vector routing protocol rather than a link-state routing protocol.[9] Despite this, EIGRP does contains many differences to most other distance-vector routing protocols, including:-[10]

• The use of explicit hello packets to discover and maintain adjacencies between routers.
• The use of a reliable protocol to transport routing updates.
• The use of a feasibility condition to select a loop-free path.
• The use of diffusing computations to involve the affected part of network into computing a new shortest path.

### EIGRP composite and vector metrics

EIGRP associates six different vector metrics with each route and considers only four of the vector metrics in computing the Composite metric:

Router1> enable
Router1# show ip eigrp topology 10.0.0.1 255.255.255.255
IP-EIGRP topology entry for 10.0.0.1/32
State is Passive, Query origin flag is 1, 1 Successor(s), FD is 40640000
Routing Descriptor Blocks:
10.0.0.1 (Serial0/0/0), from 10.0.0.1, Send flag is 0x0
Composite metric is (40640000/128256), Route is Internal
Vector metric:
Minimum bandwidth is 64 Kbit
Total delay is 25000 microseconds
Reliability is 255/255
Minimum MTU is 576
Hop count is 2

Bandwidth
Minimum Bandwidth (in kilobits per second) along the path from router to destination network.
Number in range 1 to 255; 255 being saturated
Total Delay
Delay, in 10s of microseconds, along the path from router to destination network
Reliability
Number in range 1 to 255; 255 being the most reliable
MTU
Minimum path Maximum Transmission Unit (MTU) (never used in the metric calculation)
Hop Count
Number of routers a packet passes through when routing to a remote network, used to limit the EIGRP AS. EIGRP maintains a hop count for every route, however, the hop count is not used in metric calculation. It is only verified against a predefined maximum on an EIGRP router (by default it is set to 100 and can be changed to any value between 1 and 255). Routes having a hop count higher than the maximum will be advertised as unreachable by an EIGRP router.

#### The K values

There are five K values used in the Composite metric calculation – K1 through K5. The K values only act as multipliers or modifiers in the composite metric calculation. K1 is not equal to Bandwidth, etc.

By default, only total delay and minimum bandwidth are considered when EIGRP is started on a router, but an administrator can enable or disable all the K values as needed to consider the other Vector metrics.

For the purposes of comparing routes, these are combined together in a weighted formula to produce a single overall metric:

$\bigg [ \bigg ( K_1 \cdot {\text{Bandwidth}}_{E} + \frac{K_2 \cdot {\text{Bandwidth}}_{E}}{256-\text{Load}} + K_3 \cdot {\text{Delay}}_{E} \bigg ) \cdot \frac {K_5}{K_4 + \text{Reliability}} \bigg ] \cdot 256$

where the various constants ($K_1$ through $K_5$) can be set by the user to produce varying behaviors. An important and unintuitive fact is that if $K_5$ is set to zero, the term $\tfrac {K_5}{K_4 + \text{Reliability}}$ is not used (i.e. taken as 1).

The default is for $K_1$ and $K_3$ to be set to 1, and the rest to zero, effectively reducing the above formula to $({\text{Bandwidth}}_{E} + \text{Delay}_{E}) \cdot 256$.

Obviously, these constants must be set to the same value on all routers in an EIGRP system, or permanent routing loops may result. Cisco routers running EIGRP will not form an EIGRP adjacency and will complain about K-values mismatch until these values are identical on these routers.

EIGRP scales the interface Bandwidth and Delay configuration values with following calculations:

${\text{Bandwidth}}_{E}$ = 107 / Value of the bandwidth interface command
${\text{Delay}}_{E}$ = Value of the delay interface command

On Cisco routers, the interface bandwidth is a configurable static parameter expressed in kilobits per second (setting this only affects metric calculation and not actual line bandwidth). Dividing a value of 107 kbit/s (i.e. 10 Gbit/s) by the interface bandwidth statement value yields a result that is used in the weighted formula. The interface delay is a configurable static parameter expressed in tens of microseconds. EIGRP takes this value directly without scaling into the weighted formula. However, various show commands display the interface delay in microseconds. Therefore, if given a delay value in microseconds, it must first be divided by 10 before using it in the weighted formula.

IGRP uses the same basic formula for computing the overall metric, the only difference is that in IGRP, the formula does not contain the scaling factor of 256. In fact, this scaling factor was introduced as a simple means to facilitate backward compatility between EIGRP and IGRP: In IGRP, the overall metric is a 24-bit value while EIGRP uses a 32-bit value to express this metric. By multiplying a 24-bit value with the factor of 256 (effectively bit-shifting it 8 bits to the left), the value is extended into 32 bits, and vice versa. This way, redistributing information between EIGRP and IGRP involves simply dividing or multiplying the metric value by a factor of 256, which is done automatically.

### Feasible successor

A feasible successor for a particular destination is a next hop router that is guaranteed not to be a part of a routing loop. This condition is verified by testing the feasibility condition.

Thus, every successor is also a feasible successor. However, in most references about EIGRP the term feasible successor is used to denote only those routes which provide a loop-free path but which are not successors (i.e. they do not provide the least distance). From this point of view, for a reachable destination there is always at least one successor, however, there might not be any feasible successors.

A feasible successor provides a working route to the same destination, although with a higher distance. At any time, a router can send a packet to a destination marked "Passive" through any of its successors or feasible successors without alerting them in the first place, and this packet will be delivered properly. Feasible successors are also recorded in the topology table.

The feasible successor effectively provides a backup route in the case that existing successors become unavailable. Also, when performing unequal-cost load-balancing (balancing the network traffic in inverse proportion to the cost of the routes), the feasible successors are used as next hops in the routing table for the load-balanced destination.

By default, the total count of successors and feasible successors for a destination stored in the routing table is limited to four. This limit can be changed in the range from 1 to 6. In more recent versions of Cisco IOS (e.g. 12.4), this range is between 1 and 16.

### Active and passive state

A destination in the topology table can be marked either as passive or active. A passive state is a state when the router has identified the successor(s) for the destination. The destination changes to active state when the current successor no longer satisfies the feasibility condition and there are no feasible successors identified for that destination (i.e. no backup routes are available). The destination changes back from active to passive when the router received replies to all queries it has sent to its neighbors. Notice that if a successor stops satisfying the feasibility condition but there is at least one feasible successor available, the router will promote a feasible successor with the lowest total distance (the distance as reported by the feasible successor plus the cost of the link to this neighbor) to a new successor and the destination will remains in the passive state.

### Feasibility condition

The feasibility condition is a sufficient condition for loop freedom in EIGRP-routed network. It is used to select the successors and feasible successors that are guaranteed to be on a loop-free route to a destination. Its simplified formulation is strikingly simple:

If, for a destination, a neighbor router advertises a distance that is strictly lower than our feasible distance, then this neighbor lies on a loop-free route to this destination.

or in other words,

If, for a destination, a neighbor router tells us that it is closer to the destination than we have ever been, then this neighbor lies on a loop-free route to this destination.

It is important to realize that this condition is a sufficient, not a necessary condition. That means that neighbors which satisfy this condition are guaranteed to be on a loop-free path to some destination, however, there may be also other neighbors on a loop-free path which do not satisfy this condition. However, such neighbors do not provide the shortest path to a destination, therefore, not using them does not present any significant impairment of the network functionality. These neighbors will be re-evaluated for possible usage if the router transitions to Active state for that destination.

## References

1. ^ http://www.differencebetween.net/technology/internet/difference-between-igrp-and-eigrp/
2. ^ Cisco Systems (2013), Enhanced Interior Gateway Routing Protocol (EIGRP) Informational RFC Frequently Asked Questions, retrieved 14 September 2013
3. ^ a b http://www.differencebetween.net/technology/internet/difference-between-igrp-and-eigrp
4. ^ a b Cisco Systems (2013), What is Administrative Distance?, retrieved 14 September 2013
5. ^ a b c Cisco Training White Paper, Global Knowledge Training LLC, 2013, retrieved 17 September 2013
6. ^ a b http://www.cisco.com/en/US/tech/tk365/technologies_tech_note09186a0080093f07.shtml
7. ^ "RTP in EIGRP". Packet Life. 2009-01-17.
8. ^ Shamim,Aziz,Liu, Martey 2002, Troubleshooting IP Protocols, Cisco Press USA, accessed 23 November 2013, <http://books.google.com.au/books?id=fzBOZDGBDDgC&lpg=PA214&ots=eyWtKIr1dc&dq=reliable%20transport%20protocol%20eigrp&pg=PA214#v=onepage&q=reliable%20transport%20protocol%20eigrp&f=true>
9. ^ Ashraf, Muhammad Irfan, et al. "Comparative Analysis of Link State and Hybrid Routing Protocols."
10. ^ Albrightson, R., Garcia-Luna-Aceves, J. J., & Boyle, J. (1994, May). EIGRP a fast routing protocol based on distance vectors. In Proc. Networld/Interop (Vol. 94, pp. 136-147).