Enhanced Interior Gateway Routing Protocol uses composite metric calculation formula to select the best available route for destination. This formula uses five metric components. These are Bandwidth, Load, Delay, Reliability and MTU. In this tutorial we will explain these metric components in detail with examples. Later we will explain how these components are used in EIGRP Composite Metric Formula to calculate the best route for destination.
This tutorial is third part of our article “EIGRP Routing Protocol Explained with examples ". You can read other parts of this article here.
This is the first part of this article. In this part we explained basic concepts of EIGRP such as Features and characteristics of EIGRP, Neighbor Table, Topology Table, Routing Table, Protocol Dependent Modules, Metric, RTP, DUAL, Autonomous System and Administrative Distance.
This is the second part of this article. In this part we explained how two routers become EIGRP neighbor and maintain this neighborship. In order to become an EIGRP neighbor, three essential configuration values must be matched. This part explains these values with neighborship building process in detail with example.
This is the last part of this article. EIGRP is a classless protocol wearing classful mask. Unless we configure it properly it acts like a classful protocol. In this part we will learn how to configure EIGRP routing protocol properly. At the end of this article we will include most commonly used EIGRP commands with descriptions.
K-Values and EIGRP Metrics
K-Values are the most confusing part of EIGRP. Usually newbies take K Values as EIGRP metric components. K Values are not the metric components in themself. They are only the place holder or influencer for actual metric components in metric calculation formula. So when we enable or disable a K value, actually we enable or disable its associate metric component.
EIGRP uses four components out of five to calculate the routing metric.
|K1||Bandwidth||Lowest bandwidth of route|
|K2||Load||Worst load on route based on packet rate|
|K3||Delay||Cumulative interface delay of route|
|K4||Reliability||Worst reliability of route based on keep alive|
|K5||MTU||Smallest MTU in path [Not used in route calculation]|
Bandwidth is a static value. It will change only when we make some physical (layer1) changes in route such as changing cable or upgrading link types. EIGPR picks lowest bandwidth from all outing going interfaces of route to the destination network.
For example have a look on following figure.
We have two serial links. One has 56Kbps bandwidth and other has 128Kbps. So which one will be selected?
Among these bandwidths EIGRP will pick 56Kbps for composite metric calculation formula.
You may surprise why it picks the lowest instead of the highest? Well picking the highest bandwidth doesn’t give us a surety of equivalent bandwidth throughout the route. It’s a maximum cap which means we will get its equivalent or lower bandwidth in this route.
While picking the lowest bandwidth gives us a guarantee of equivalent of higher bandwidth throughout the route. Since this is the bottleneck of route.
For example have a look on following network
With highest bandwidth comparison
Highest bandwidth of Route1 (72Kbps)
Highest bandwidth of Route2 (64Kbps)
Which route provides better bandwidth?
72Kbps (Route1) > 64Kbps (Route2)
With this comparison Route1 will be selected.
With lowest bandwidth comparison
Lowest bandwidth of Route1 (28Kbps)
Lowest bandwidth of Route2 (56Kbps)
Which route provides better bandwidth?
56Kbps (Route2) > 28Kbps (Route1)
With this comparison Route2 will be selected.
Looking at lowest bandwidth gives us the actual idea of route.
Next logical question is how EIGRP determine the bandwidth?
EIGRP first looks at bandwidth command. If bandwidth is set through this command, EIGRP will use it. If bandwidth is not set, it will use interface’s default bandwidth.
When we enable an interface, router automatically assign a bandwidth value to it based on its type. For example serial interface has a default bandwidth value of 1544Kbps. Until we change this value with bandwidth command, it will be used where it is required.
Let me clear one more thing about bandwidth. Changing default bandwidth with bandwidth command does not change the actual bandwidth of interface. Neither default bandwidth nor bandwidth set by bandwidth command has anything to do with actual layer one link bandwidth.
Then what purpose does this command solve?
This command is only used to influence the routing protocol which uses bandwidth in route selection process such as EIGRP and OSPF.
Suppose we have two routes for single destination; Route1 and Route2. For some reason we want to take Route1 instead of Route2. How will we influence default metric calculation to select the Route1?
In starting of this article we talked about K-Values. K-Values allow us to influence the metric calculation. K1 is associated with bandwidth. K1 gets its weight from interface’s default bandwidth or bandwidth set through the bandwidth command. Changing default bandwidth with bandwidth command will change the K1’s value in metric calculation formula.
So to take Route1, we will have to make its lowest bandwidth higher than Route2. This can be done in two ways; either raise the lowest bandwidth of Route1 higher than Route2 or reduce the lowest bandwidth of Route2 lower than Route1. Both can be done easily with bandwidth command.
Let’s understand this with a simple example. Following figure illustrate a simple EIGRP network.
Download this example topology and load in packet tracer.
In this network R0 has two routes to reach at 126.96.36.199/8 network.
- Route1 (Via R0 – R1 – R2)
- Route2 (Via R0 – R3 – R2)
EIGRP is configured on all routers and all links have default bandwidth.
Serial link has default bandwidth of 1544Kbps. Until we change bandwidth of any route, both routes have equal lowest bandwidth.
Route1’s lowest bandwidth (1544Kbps) = Route2’s lowest bandwidth (1544Kbps)
Both routes are load balanced with equal cost value 2684416.
Ok, let’s change default bandwidth to see how bandwidth component influence the route metric.
Set bandwidth to 64Kbps (lower than default 1544Kbps) on R3’s serial 0/0/0 interface.
Route1’s lowest bandwidth (1544Kbps) > Route2’s lowest bandwidth (64Kbps)
Now Route1 has the higher lowest bandwidth so it would be selected.
Ok let’s change bandwidth at R3 again this time increase default bandwidth to 2800Kbps.
Route1’s lowest bandwidth (1544Kbps) = Route2’s lowest bandwidth (1544Kbps)
Both routes have equal lowest bandwidth. They will be load balanced.
Here I have question for you.
Why EIGRP load balanced between Route1 and Route2 while now Route2 has better bandwidth?
Because EIGRP uses the lowest bandwidth of route to calculate the path cost and that is still 1544Kbps.
Load is a dynamic value that changes frequently. It is based on packet rate and bandwidth of interface. It calculates the volume of traffic passing through the interface in comparison of maximum capacity. It is expressed on a scale of 255 where 1 represent that an interface is empty and 255 represent that an interface is fully utilized.
Since data flows from both directions, router maintains two separate metric counters;
- Txload for outgoing traffic
- Rxload for incoming traffic
If K2 is enabled, maximum Txload value will be used in composite metric calculation formula.
Delay reflects the time taken by a packet in crossing the interface. It is measured in fractions of seconds. Like as bandwidth Cisco has implicit delay values for all interfaces based on the type of interface hardware. For example a FastEthernet has default delay of 100 microseconds. Since it is a static value, we can override it with delay command.
Delay can be set anywhere from 10 to 167,772,140 microseconds.
Default delay value or value set by delay command has nothing to do with the actual delay caused by interface. Just like bandwidth, this value is also an influencer.
It is expressed in terms of tens of microseconds. To define a delay of 1000 microseconds, we need to configure 100(1000/10) on interface. Output of show interface command will automatically multiply it with ten before displaying.
Total delay is used in metric calculation formula.
Total delay = delay received from neighboring router + its own interface delay
EIGRP is an enhanced distance vector routing protocol. It also uses route poisoning, withdrawing route, split horizon and poisoned reverse for loop free optimized network. For all these mentioned techniques EIGRP use the maximum delay as the indication of the unreachable route. To denote the unreachable route EIGRP uses the delay of 16,777,215 tens of the microseconds.
Just like load, reliability is also a dynamic value. It compares all successfully received frames against all received frames. 100% reliability indicates that all the frames which we received were good. We don’t have any issue with physical link. If we have any issue with physical link, this value will be decrease.
Reliability is expressed as the fraction of 255. 255 expresses 100% reliability while 0 represents 0% reliability. If K4 is enabled in metric calculation formula, it will use minimal reliability.
MTU stands for maximum transmission unit. It is advertised with routing update but it does not actively participate in metric calculation. EIGRP allows us to load balance between equal cost paths (6 maximum, default set to 4). It is used when equal cost paths for same destination exceed the number of allowed paths set from maximum-paths command. For example we set maximum allowed paths for load balancing to 5 and metric calculates 6 equal cost paths for a single destination. In this situation path with lowest MTU will be ignored.
EIGRP Metric Calculation Formula
EIGRP uses following formula to produce a single 32 bit metric:-
At first glance this formula looks like a complicated equation. But it is not as difficult as it sound. Let’s make it easier.
As we know MTU (K5) is not actively participate in formula. So set its value to Zero. When K5 is equal to 0 then [K5/ (K4 + reliability)] is defined to be 1.
By default EIGRP does not use dynamic values in metric. This will disable two more components; load (K2) and reliability (K4).
Now only two static values remain in formula.
Use of default constants [K1 (Enabled), K2 (Disabled), K3 (Enabled), K4 (Disabled), K5 (Disabled not used)] reduce our formula to:-
Metric = (BandwidthE + DelayE)*256.
Cisco uses following configuration values for Bandwidth and delay
BandwidthE = 107/ least bandwidth of route [Lowest bandwidth from all interfaces between source and destination. Use interface default bandwidth wherever bandwidth is not set through the bandwidth command]
ValueE = cumulative delay of route [Sum of all outgoing interface’s delay. Use interface default delay, if not set through the delay command]
Putting these configuration values will make formula to look like this
Before we move further, let me explain why EIGRP keeps dynamic values disable by default.
Dynamic values change over the time. Enabling dynamic values will force EIGRP routers to calculate metric all the time and send updates each other just because the load or reliability of an interface has changed. This will create serious performance issue. To avoid such a situation EIGRP only enables static values for metric calculation.
If we only enable static values for metric calculation, EIGRP will not recalculate the metric unless it changed. Static values change only when a physical change occurred in network such as an interface is down or router is dead. This will keep EIGRP nice and clean.
Let’s see this formula in action. Earlier in this tutorial we used an example topology to explain the bandwidth component. Load that topology in packet tracer and run show ip route eigrp command from privilege mode. We have four routes for three destination networks. One destination network has two routes.
For this destination network metric cost is 2681856. Before we learn how this cost was calculated, we need to understand some key points associated with formula.
- EIGRP picks the lowest bandwidth from all interfaces in route.
- EIGRP picks delay from all outgoing interfaces in route.
- show interface [interface] command of privilege mode will display the configured value of metric components.
- While calculating the cost term least-bandwidth uses the unit of Kbps (Kilobits per second).
- show interface [interface] command list bandwidth in Kbps. So we can use listed bandwidth in formula as it is.
- While calculating the cost term cumulative-delay uses the unit of tens of microseconds.
- show interface [interface] command list delay in microseconds. So we need to divide it with 10 before using it in formula.
- Any decimal value will be rounded back to the nearest integer before performing the rest of the formula.
We have three serial interfaces between source and destination. So our first step is to find out the value of bandwidth and delay.
We can use show interface command to know the values.
All interfaces have equal bandwidth so our least bandwidth would be 1544Kbps.
We have two outgoing interfaces between source and destination. Both have a default delay of 20000 microseconds so total delay would be 40000 microseconds. As we know this delay is in microseconds and formula uses the unit of “tens of microseconds”. We need to divide 40000 with 10. So our cumulative delay would be 40000/10 = 4000.
Okay now we have least bandwidth (1544Kbps) and cumulative delay (4000) let’s put them in formula
Metric = ((10000000/1544) +4000)*256
Metric = ((6476.6839) +4000)*256
As I said “Any decimal value will be rounded back to the nearest integer before performing the rest of the formula.”
Before solving rest of the formula, convert decimal value back in positive integer.
Metric = ((6476) +4000)*256
Metric = (10476)*256
Metric = 10476*256
Metric = 2681856
Great! We have revealed the cost calculation method. Let’s do this calculation again for next route.
For this route we have lowest bandwidth 1544Kbps and cumulative delay of 4000(ten of microseconds).
Let’s put these values in our formula
Metric = ((10000000/1544)+4000)*256
Metric = (6476 + 4000) * 256
Metric = 10476 * 256
Metric = 2681856
Fine, now we have only route left. Let’s figure out its cost also.
For this destination we have two routes. Both routes have equal least bandwidth and cumulative delay. So naturally their cost will also be same. As we know EIGRP automatically load balance equal cost routes and these routes have equal cost. So they both make their way to routing table.
Metric = ((10000000/1544) + 4010) * 256
Metric = (6476 + 4010) * 256
Metric = 10486 * 256
Metric = 2684416
This is how EIGRP calculates the route cost. In job life you will rarely need to calculate the route cost manually. Still I suggest you to spend a little extra time in learning this process especially if you are a Cisco exam candidate.
That’s all for this part. In next part I will explain how to configure EIGRP step by step with examples.