You are on page 1of 23

EIGRP Tutorial

In this article we will mention about the EIGRP protocol.
In the past, Enhanced Interior Gateway Routing Protocol (EIGRP) is a Cisco-proprietary routing
protocol but from March-2013 Cisco opens up EIGRP as an open standard in order to help
companies operate in a multi-vendor environment. EIGRP is a classless routing protocol,
meaning that it sends the subnet mask of its interfaces in routing updates, which use a complex
metric based on bandwidth and delay.
EIGRP is referred to as a hybrid routing protocol because it has the characteristics of both
distance-vector and link-state protocols but now Cisco refers it as an advanced distance vector
Notice: the term “hybrid” is misleading because EIGRP is not a hybrid between distance vector
and link-state routing protocols. It is a distance vector routing protocol with enhanced features.
EIGRP is a powerful routing protocol and it is really standout from its ancestor IGRP. The main
features are listed below:
+ Support VLSM and discontiguous networks
+ Use Reliable Transport Protocol (RTP) to delivery and reception of EIGRP packets
+ Use the best path selection Diffusing Update Algorithm (DUAL), guaranteeing loop-free
paths and backup paths throughout the routing domain
+ Discover neighboring devices using periodic Hello messages to discover and monitor
connection status with its neighbors
+ Exchange the full routing table at startup and send partial* triggered updates thereafter (not
full updates like distance-vector protocols) and the triggered updates are only sent to routers that
need the information. This behavior is different from the link-state protocol in which an update
will be sent to all the link-state routers within that area. For example, EIGRP will send updates
when a new link comes up or a link becoming unavailable
+ Supports multiple protocols: EIGRP can exchange routes for IPv4, IPv6, AppleTalk and
IPX/SPX networks
+ Load balancing: EIGRP supports unequal metric load balancing, which allows administrators
to better distribute traffic flow in their networks.
* Notice: The term “partial” means that the update only includes information about the route
EIGRP use metrics composed of bandwidth, delay, reliability, and load. By default, EIGRP uses
only bandwidth and delay.
EIGRP use five types of packets to communicate:
+ Hello: used to identify neighbors. They are sent as periodic multicasts
+ Update: used to advertise routes, only sent as multicasts when something is changed
+ Ack: acknowledges receipt of an update. In fact, Ack is Hello packet without data. It is always
unicast and uses UDP.
+ Query: used to find alternate paths when all paths to a destination have failed
+ Reply: is sent in response to query packets to instruct the originator not to recompute the route
because feasible successors exist. Reply packets are always unicast to the originator of the query
EIGRP sends every Query and Reply message using RTP, so every message is acknowledged
using an EIGRP ACK message.
EIGRP Route Discovery
Suppose that our network has 2 routers and they are configured to use EIGRP. Let’s see what
will happen when they are turned on.
Firstly, the router will try to establish a neighboring relationships by sending “Hello” packets to
others running EIGRP. The destination IP address is which is the multicast address of
EIGRP. By this way, other routers running EIGRP will receive and proceed these multicast
packets. These packets are sent over TCP.

After hearing “Hello” from R1, R2 will respond with another “Hello” packet.

R2 will also send its routing table to R1 by “Update” packets. Remember that R2 will send its
complete routing table for the first time.

R1 confirms it has received the Update packet by an “ACK” message.

R1 will also send to R2 all of its routing table for the first time

R2 sends a message saying it has received R1′s routing table.

Now both R1 & R2 learn all the paths of the neighbor and the network is converged. But there
are some notices you should know:
+ After the network converged, “Hello” messages will still be sent to indicate that the it is still
+ When something in the network changes, routers will only send partial updates to routers
which need that information.
+ Hellos are sent as periodic multicasts and are not acknowledged directly.
+ The first hellos are used to build a list of neighbors; thereafter, hellos indicate that the neighbor
is still alive
To become a neighbor, the following conditions must be met:
+ The router must hear a Hello packet from a neighbor.
+ The EIGRP autonomous system must be the same.
+ K-values must be the same.
EIGRP builds and maintains three tables:
+ Neighbor table: lists directly connected routers running EIGRP with which this router has an
+ Topology table: lists all routes learned from each EIGRP neighbor
+ Routing table: lists all best routes from the EIGRP topology table and other routing processes
Configuring EIGRP
Router(config)#router eigrp 1 Syntax: router eigrp <AS number>
Turn on the EIGRP process
1 is the Autonomous System (AS) number. It can be from 1
to 65535.
All routers in the same network must use the same AS
Router will turn on EIGRP 1 process on all the interfaces
belonging to network.
In the next part we will learn about the Feasible Distance & Administrative Distance of EIGRP
Feasible Distance (FD) and Advertised Distance (AD)
In the next part, we will define these terms and take an example to make them clear.
Advertised distance (AD): the cost from the neighbor to the destination.
Feasible distance (FD): The sum of the AD plus the cost between the local router and the next-
hop router
Successor: The primary route used to reach a destination. The successor route is kept in the
routing table. Notice that successor is the best route to that destination.
Feasible successor: The backup route. To be a feasible successor, the route must have an AD
less than the FD of the current successor route
Maybe it’s a bit confused with these terms so below is an example to make it clear.

Suppose you are in NEVADA and want to go to IOWA. From NEVADA you need to specify the
best path (smallest cost) to IOWA.
In this topology, suppose router A & B are exchanging their routing tables for the first time.
Router B says “Hey, the best metric (cost) from me to IOWA is 50 and the metric from you to
IOWA is 90″ and advertises it to router A. Router A considers the first metric (50) as the
Advertised distance. The second metric (90), which is from NEVADA to IOWA (through
IDAHO), is called the Feasible distance.
NEVADA also receives the cost path from NEVADA -> OKLAHOMA -> IOWA advertised by
router C with the Advertised distance of 70 and Feasible distance of 130.
All of these routes are placed in the topology table of router A:
Route Advertised distance Feasible distance
Router A will select the route to IOWA via IDAHO as it has the lowest Feasible distance and put
it into the routing table.
The last thing we need to consider is if the route NEVADA -> OKLAHOMA -> IOWA will be
considered as a feasible successor. To achieve this, it must satisfy the feasibility condition:
“To qualify as a feasible successor, a router must have an AD less than the FD of the
current successor route“
Maybe you will ask “why do we need this feasibility condition?” Well, the answer is because it
guarantees a loop-free path to the destination; in other words, it must not loop back to the current
If the route via the successor becomes invalid (because of a topology change) or if a neighbor
changes the metric, DUAL checks for feasible successors to the destination route. If one is
found, DUAL uses it, avoiding the need to recompute the route as the re-computation can be
processor-intensive. If no suitable feasible successor exists, a re-computation must occur to
determine the new successor.
EIGRP calls these alternative, immediately usable, loop-free routes feasible successor routes,
because they can feasibly be used as a new successor route when the current successor route
fails. The next-hop router of such a route is called the feasible successor.
In this case, the route NEVADA -> OKLAHOMA -> IOWA has an AD (70) less than the FD of
the successor route (90) so it becomes the feasible successor route.
Of course in some cases the feasibility condition will wrongly drop loop-free paths. For example,
if the metric between OKLAHOMA and IOWA is greater than 90 then the route NEVADA ->
OKLAHOMA -> IOWA will not be considered as a feasible successor route although it is loop-
free. But this condition is necessary because it can guarantee the feasible successor routes are
Notice that the feasible successors are placed in the topology table, not in the routing table.
Now router A has 3 complete tables as follows (we only consider route to IOWA network)

Now you have a basic concept of EIGRP, in the next part we will dig into the 3 tables of EIGRP
– the neighbor, topology & routing tables as understanding them is a requirement for a CCNA-
taker and learn how to calculate the metric of EIGRP.
Calculate EIGRP metric
In this part we will continue to learn about the EIGRP Routing Protocol
I built the topology with Packet Tracer to illustrate what will be mentioned. You can download
the lab file here: (please unzip &
use at least Packet Tracer v5.3 to open it)

Check the neighbor table of Router0 with the show ip eigrp neighbors command

Let’s analyze these columns:
+ H: lists the neighbors in the order this router was learned
+ Address: the IP address of the neighbors
+ Interface: the interface of the local router on which this Hello packet was received
+ Hold (sec): the amount of time left before neighbor is considered in “down” status
+ Uptime: amount of time since the adjacency was established
+ SRTT (Smooth Round Trip Timer): the average time in milliseconds between the transmission
of a packet to a neighbor and the receipt of an acknowledgement.
+ RTO (Retransmission Timeout): 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 count (Q Cnt): shows the number of queued EIGRP packets. It is usually 0.
+ Sequence Number (Seq Num): the sequence number of the last update EIGRP packet
received. Each update message is given a sequence number, and the received ACK should have
the same sequence number. The next update message to that neighbor will use Seq Num + 1.
As CCNA level, we only care about 4 columns: Address, Interface, Hold & Uptime. Other
columns will be discussed in CCNP so you don’t need to remember them now!

Notice that you can see a line “IP-EIGRP neighbors for process 100″. “Process 100″ here means
“AS 100″.
Next we will analyze the EIGRP topology with the show ip eigrp topology command. The output
of Router0 is shown below

The letter “P” as the left margin of each route entry stands for “Passive”. Passive state indicates
that the route is in quiescent mode, implying that the route is known to be good and that no
activities are taking place with respect to the route.
Each route shows the number of the successor it has. For example, the network,, & have only 1 successor (and no feasible successor). Only
network has 2 successors.
We notice that there are 2 numbers inside the brackets (30720/28160). The first one is the metric
from Router0 to the destination, the second is the AD of this route, advertised by the neighbor.
For example, the third route entry has:

Let’s see how to calculate them!
First you should learn the formula to calculate the metric. It’s a conditional formula a bit
complex, I think :)
metric = [K1 * bandwidth + (K2 * bandwidth)/(256 - load) + K3 * delay] * [K5/(reliability +
K4)] if K5 > 0
metric = [K1 * bandwidth + (K2 * bandwidth)/(256 - load) + K3 * delay] if K5 = 0
Note: you can check these K values with the “show ip protocols” command. Below is an
example of this command on Router0.

To change these values, use the “metric weights tos k1 k2 k3 k4 k5″ in the EIGRP router mode.
By default, K1 = 1, K2 = 0, K3 = 1, K4 = 0, K5 = 0 which means that the default values use only
bandwidth & delay parameters while others are ignored. The metric formula is now reduced:
metric = bandwidth + delay
But the bandwidth here is defined as the slowest bandwidth in the route to the destination &
delay is the sum of the delays of each link. Here is how to calculate the EIGRP metric in detail:

EIGRP uses the slowest bandwidth of the outgoing interfaces of the route to calculate the
metric. In this case we need to find out the bandwidth of Fa0/0 of Router0 & Fa0/1 of Router1 as
the destination network is

Find the bandwidth
We can find the bandwidth of each interface by the “show interfaces “. Below is an output of the
“show interfaces fa0/0″ on Router0.

All the interfaces in this topology have the bandwidth of 100,000 Kbps so we will get the same
result on interface Fa0/1 of Router1 -> The slowest bandwidth here is 100,000 Kbps. Now we
can calculate the first portion of the formula:

Notice that if the result is not an integer then the result will be rounded down. For example,
10,000,000 divided by 1024 (the speed of T1) equals 9765.625. The result will be rounded down
to 9765.
Find the delay
EIGRP also used the delay of the outgoing interfaces and it can also be found with the “show
interfaces “, the delay lies next to the bandwidth value (for example, DLY 100usec). In this case,
the delay value of both Fa0/0 of Router0 & Fa0/1 of Router1 is 100 usec (microsecond) so the
sum of delay is 100 + 100 = 200 usec. The second portion of the formula is:

Note: “usec” here means microsecond (which is 1/1000 miliseconds). According to this
ml#eigrpmetrics: “The delay as shown in the show ip eigrp topology or show interface
commands is in microseconds”. We have to divide by 10 to get the “ten of microsecond” unit
used in the metric formula above.
Get the metric
Now just sum up two portions of the formula and multiplied by 256 to get the result:

The result is 30720 and it matches the value shown in the topology table of the route to

Using the formula above, we can easily calculate the AD of that route (with slowest bandwidth =
100,000Kpbs; sum of delay = 10)
metric = (100 + 10) * 256 = 28160
This metric matches with the second parameter of the above route.
Note: The output of “show ip eigrp topology” command shows only feasible successors while
the output of “show ip eigrp topology all-links” shows all neighbors, whether feasible successors
or not. To learn more about the “show ip eigrp topology all-links” please read Although it belongs to CCNP exam but CCNA
level can read it too.
EIGRP Routing table
The last table we will discuss is the routing table. This is the most used table to check the
operation of EIGRP. Here is the output of the show ip route command on Router0:

The routing table has two parameters [90/30720] but the first one is the administrative distance
of EIGRP. EIGRP has a default administrative distance of 90 for internal routes and it is often
the most preferred routing protocol because it has the lowest administrative distance.
Administrative distance is the measure used by Cisco routers to select the best path when there
are two or more different routes to the same destination from two different routing protocols.
Below is the administrative distances of the most popular routing protocols used nowadays.
Notice that the smaller is the better.

So, if a network running two routing protocols at the same time, for example EIGRP and OSPF,
which routing protocol will the router choose? Well, the answer is EIGRP as it has lower
Administrative Distance than OSPF ( 90 < 110).
The second parameter, as you can guess, is the metric of that route as we discussed above.
“no auto-summary” with EIGRP
One of the features of EIGRP is “support VLSM and discontiguous networks”. Discontiguous
networks are networks that have subnets of a major network separated by a different major
network. Below is an example of discontiguous networks where subnets and are separated by a network.

Now let’s see what will happen when we turn on EIGRP on both of the routers. To turn on
EIGRP you will use these commands:
R1(config)#router eigrp 1
R1(config-router)#network (or network
R2(config)#router eigrp 1
R2(config-router)#network (or network
You can try to use the more specific “network″ instead of “network″, hoping
that EIGRP will understand it is a sub-network. But if we check the configuration with the “show
running-config” command we will notice that EIGRP has auto-summarized our network.
R1#show running-config

-> Network has been summarized to network because it knows 10.x.x.x
network belongs to class A.
The same thing happens for R2. Now we should check the routing table of R1 with the “show ip
route” command
R1#show ip route

From the output above we learn that R1 only knows about the directly connected
network but it doesn’t have any information about the far-away network and a ping
to cannot be successful (but notice that we can ping to that directly connected network,, for example).
So we can conclude that if a router receives the same route with what it is advertising then it will
not learn that route. In the above example, the “collision” occurs because both of the routers
summarize into network and advertise it to other router. The neighboring router
realizes that it is also advertising this network so it drops this network information.
Now if we use the “no auto-summary” command on both routers then the problem will surely be
solved but first let’s try to use that command only on R1 router.
R1(config)#router eigrp 1
R1(config-router)#no auto-summary
R1#show ip route

-> Nothing changes!
R2#show ip route

-> R2 has just learned about the new “″ network which is advertised from R1 so R2
can ping this network

In conclusion when we enable “no auto-summary” on R1 then R1 will advertise its network with
their subnet mask so R2 can learn them correctly.
To grasp how to configure EIGRP, please read my article Configuring EIGRP with GNS3
In this tutorial we will learn how to use EIGRP to run a small network with 5 routers. Below is
the topology of this lab

This lab consists of 5 routers and we need to configure EIGRP among them. It is done when we
can successfully ping among R2, R3, R4 & R5 and the routing tables of these routers show that
they are running EIGRP (with letter “D”).
IOS used in this tutorial: c2600-bin-mz.123-6f.bin (with a minimum of 64 MB RAM) but you
can use other IOS.
Note: If you are not sure about EIGRP, please read my EIGRP Routing Protocol tutorial first
IP addresses of routers:
+ R1:
s0/0 –
s0/1 –
s0/2 –
f0/0 –
+ R2:
s0/0 –
+ R3:
f0/0 –
+ R4:
s0/0 –
+ R5:
s0/0 –
If you are not sure about EIGRP, please read my article about this routing protocol at
Some important notes about EIGRP:
+ All routers must use the same Autonomous System (AS) number to recognize each other. In
this case the chosen AS is 100.
+ The major network in this lab is & so there will be discontiguous
networks -> need to use the “no auto-summary” command.
Now let’s begin the lab!
Step 1 – Configuring IP addresses on the routers
*On R1:
R1#config t
R1(config)#int s0/0
R1(config-if)#ip address
R1(config-if)#no shut
R1(config-if)#int s0/1
R1(config-if)#ip address
R1(config-if)#no shut
R1(config-if)#int s0/2
R1(config-if)#ip address
R1(config-if)#no shut
R1(config-if)#int f0/0
R1(config-if)#ip address
R1(config-if)#no shut
*On R2:
R2#config t
R2(config)#int s0/0
R2(config-if)#ip address
R2(config-if)#no shut
*On R3:
R3#config t
R3(config)#int f0/0
R3(config-if)#ip address
R3(config-if)#no shut
*On R4:
R4#config t
R4(config)#int s0/0
R4(config-if)#ip address
R4(config-if)#no shut
*On R5:
R5#config t
R5(config)#int s0/0
R5(config-if)#ip address
R5(config-if)#no shut
Now all the interfaces are up. We should check the interfaces on R1 to confirm this with the
“show ip int brief” command

Notice that all both the “Status” and “Protocol” of the connected interfaces were up.
We can see all the neighbors of R1 with the “show cdp neighbors” command on R1:

At this time we can ping between two directly connected interfaces. For example a ping from
s0/0 of R1 to s0/0 of R2 ( will be successful.

but a ping between two far-away interfaces is not successful. For example a ping from R2 to s0/0
of R4 ( will be unsuccessful.

If we use the “show ip route” on these routers we will only see directly connected link.
Step 2 – Enable EIGRP on all the routers
*On R1
R1(config)#router eigrp 100
R1(config-router)#no auto-summary
*On R2
R2(config)#router eigrp 100
R2(config-router)#no auto-summary
*On R3
R3(config)#router eigrp 100
R3(config-router)#no auto-summary
*On R4
R4(config)#router eigrp 100
R4(config-router)#no auto-summary
*On R5
R5(config)#router eigrp 100
R5(config-router)#no auto-summary
After typing above commands we will see the neighbors adjacency on these routers are up. For
example on R1 we will see

Now the EIGRP process is up and we can ping from anywhere. For example a ping from R2 to
s0/0 of R4 ( will be successful now.

By checking the routing table of R2, R3, R4 & R5 we can confirm EIGRP has been implemented
successfully. For example, using the “show ip route” command on R5 we see

Notice that the routes to & are marked with a letter “D”, meaning it
is learned via EIGRP. Maybe you are wondering “why is the letter “D” used for EIGRP, not
“E”? Well, the answer is the letter “E” has been “stolen” for EGP – an external routing protocol
– but it is not popular nowadays :)
We can check the neighbor relationships on these routers with the “show ip eigrp neighbors”
command. Below is an example of R1:

To see the topologies of these routers, use the “show ip eigrp topology” command. Below is the
output of R4

Download the configured network
In this part, we created a faulty network and your task is to find out and fix the errors to make the
network run perfectly. You can download the files here: Download faulty network