In this article we will mention about the EIGRP protocol.
Enhanced Interior Gateway Routing Protocol (EIGRP) is a Cisco-proprietary routing protocol. 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 protocol.
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.
+ 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 changes.
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
+ 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 224.0.0.10 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 alive.
+ 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
+ After the network converged, “Hello” messages will still be sent to indicate that the it is still alive.
+ 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.
+ 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 adjacency
+ 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
+ Neighbor table: lists directly connected routers running EIGRP with which this router has an adjacency
+ 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 number.
|
Router(config-router)#network 192.168.1.0 |
Router will turn on EIGRP 1 process on all the interfaces belonging to 192.168.1.0/24 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
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 |
NEVADA -> IDAHO -> IOWA | 50 | 90 |
NEVADA -> OKLAHOMA -> IOWA | 70 | 130 |
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 successor.
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 loop-free.
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.
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.
+ 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 192.168.2.0, 192.168.1.0,192.168.3.0 & 192.168.4.0 have only 1 successor (and no feasible successor). Only network 192.168.5.0 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 bit complex, I think :)
metric = [K1 * bandwidth + (K2 * bandwidth)/(256 - load) + K3 * delay] * [K5/(reliability + K4)]
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 192.168.3.0/24.
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:
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 192.168.3.0/24
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 http://www.digitaltut.com/route-eigrp-simlet. 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 routecommand 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 10.10.1.0/24 and 10.10.2.0/24 are separated by a 2.0.0.0/8 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 2.0.0.0
R1(config-router)#network 10.10.1.0 (or network 10.0.0.0)
R1(config-router)#network 2.0.0.0
R1(config-router)#network 10.10.1.0 (or network 10.0.0.0)
R2(config)#router eigrp 1
R2(config-router)#network 2.0.0.0
R2(config-router)#network 10.10.2.0 (or network 10.0.0.0)
R2(config-router)#network 2.0.0.0
R2(config-router)#network 10.10.2.0 (or network 10.0.0.0)
You can try to use the more specific “network 10.10.1.0″ instead of “network 10.0.0.0″, 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 10.10.1.0 has been summarized to network 10.0.0.0 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 10.10.1.0/24 network but it doesn’t have any information about the far-away 10.10.2.0/24 network and a ping to 10.10.2.1 cannot be successful (but notice that we can ping to that directly connected network, 10.10.1.2, 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 10.0.0.0/8 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(config-router)#no auto-summary
R1#show ip route
-> Nothing changes!
R2#show ip route
-> R2 has just learned about the new “10.10.1.0/24″ 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.
Reference : http://www.9tut.com/eigrp-routing-protocol-tutorial/
Great article.. thanks
ReplyDelete