EIGRP K Values Formula

EIGRP uses different K values to determine the best path to each destination:

  • K1
  • K2
  • K3
  • K4
  • K5

These K values are only numbers to scale numbers in the metric calculation. The formula we use for the metric calculation looks like this:

Metric = [K1*bandwidth + ((K2*bandwidth)/(256-load))+K3*delay]

If K5 is not equal to 0:

Metric = Metric*[K5/(reliability+K4)]

If you look at the formula, you can see that the bandwidth, load, delay, and reliability influence the metric. We can see what K values are enabled or disabled by default:

Router#show ip protocols 
Routing Protocol is "eigrp 1"
  Outgoing update filter list for all interfaces is not set
  Incoming update filter list for all interfaces is not set
  Default networks flagged in outgoing updates
  Default networks accepted from incoming updates
  EIGRP metric weight K1=1, K2=0, K3=1, K4=0, K5=0
  EIGRP maximum hopcount 100
  EIGRP maximum metric variance 1
  Redistributing: eigrp 1
  EIGRP NSF-aware route hold timer is 240s
  Automatic network summarization is not in effect
  Maximum path: 4
  Routing for Networks:
    1.1.1.0/24
    192.168.12.0
  Routing Information Sources:
    Gateway         Distance      Last Update
    192.168.12.2          90      00:14:30
  Distance: internal 90 external 170

In this example where I used the show ip protocols command, you can see which K-values are enabled by default. Only K1 and K3 are enabled by default.

Let’s walk through the different metric components to see what they are:

Bandwidth:

Router#show interfaces fastEthernet 0/0
FastEthernet0/0 is up, line protocol is up 
  Hardware is AmdFE, address is cc02.58a9.0000 (bia cc02.58a9.0000)
  Internet address is 192.168.12.1/24
  MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,

If you use the show interface FastEthernet 0/0 command you can see the interface information. The example above only shows part of the output. You can see the bandwidth is 100000 Kbit which is a 100Mbit interface. We can change the bandwidth of an interface:

Router(config)#interface fa0/0
Router(config-if)#bandwidth ?
  <1-10000000>  Bandwidth in kilobits
  inherit       Specify that bandwidth is inherited
  receive       Specify receive-side bandwidth

Router(config-if)#bandwidth 500

Bandwidth is a static value which can be changed by using the bandwidth command. Keep in mind this doesn’t change the actual bandwidth of the interface! This command is ONLY used to influence routing protocols like EIGRP. It’s not like you can slow down electric signals through a wire…if you want to limit the traffic on an interface you’ll need QoS (Quality of Service) which is a story for another day!

Router#show interfaces fastEthernet 0/0
FastEthernet0/0 is up, line protocol is up 
  Hardware is AmdFE, address is cc02.58a9.0000 (bia cc02.58a9.0000)
  Internet address is 192.168.12.1/24
  MTU 1500 bytes, BW 500 Kbit, DLY 100 usec,

Here you see the result of changing the bandwidth on the interface. Something to remember is that EIGRP will use the lowest bandwidth in the path from A to B (since this is the bottleneck).

Load:

Router#show interfaces fastEthernet 0/0
FastEthernet0/0 is up, line protocol is up 
  Hardware is AmdFE, address is cc02.58a9.0000 (bia cc02.58a9.0000)
  Internet address is 192.168.12.1/24
  MTU 1500 bytes, BW 500 Kbit, DLY 100 usec, 
     reliability 255/255, txload 1/255, rxload 1/255

The load will show you how busy the interface is based on the packet rate and the bandwidth on the interface. This is a value that can change over time so it’s a dynamic value.

Delay:

Router#show interfaces fastEthernet 0/0
FastEthernet0/0 is up, line protocol is up 
  Hardware is AmdFE, address is cc02.58a9.0000 (bia cc02.58a9.0000)
  Internet address is 192.168.12.1/24
  MTU 1500 bytes, BW 500 Kbit, DLY 100 usec, 
     reliability 255/255, txload 1/255, rxload 1/255

Delay reflects the time it will take for packets to cross the link and is a static value. Cisco IOS will have default delay values for the different types of interface. A FastEthernet interface has a default delay of 100 usec.

Router(config)#interface fa0/0
Router(config-if)#delay ?
  <1-16777215>  Throughput delay (tens of microseconds)

Router(config-if)#delay 50

If you use the delay command you can change this value to influence routing protocols like EIGRP. It doesn’t actually change the delay for this interface but it is only used to influence routing protocols.

Router#show interfaces fastEthernet 0/0
FastEthernet0/0 is up, line protocol is up 
  Hardware is AmdFE, address is cc02.58a9.0000 (bia cc02.58a9.0000)
  Internet address is 192.168.12.1/24
  MTU 1500 bytes, BW 500 Kbit, DLY 500 usec,

Above you see the delay that I changed. EIGRP will accumulate all the delay values in the path from A to B.

Reliability:

Router#show interfaces fastEthernet 0/0
FastEthernet0/0 is up, line protocol is up 
  Hardware is AmdFE, address is cc02.58a9.0000 (bia cc02.58a9.0000)
  Internet address is 192.168.12.1/24
  MTU 1500 bytes, BW 500 Kbit, DLY 500 usec, 
     reliability 255/255, txload 1/255, rxload 1/255

Reliability at 255/255 is 100%. This means that you don’t have issues on the physical or data-link layer. If you are having issues this value will decrease. Since this is something that can change it’s a dynamic value.

MTU:

Router#show interfaces fastEthernet 0/0
FastEthernet0/0 is up, line protocol is up 
  Hardware is AmdFE, address is cc02.58a9.0000 (bia cc02.58a9.0000)
  Internet address is 192.168.12.1/24
  MTU 1500 bytes, BW 500 Kbit, DLY 500 usec, 
     reliability 255/255, txload 1/255, rxload 1/255

MTU or Maximum Transmission Unit is being exchanged between EIGRP neighbors but not used for the metric calculation.

By default, only K1 and K3 are enabled and we don’t use K2 or K4. This means that only bandwidth and delay are used in the formula.

Why not? Because loading and reliability are dynamic values and they can change over time. You don’t want your EIGRP routers calculating 24/7 and sending updates to each other just because the load or reliability of an interface has changed. We want routing protocols to be nice and quiet and only base their routing decisions on static values like bandwidth and delay. If you only use those two static values our EIGRP routers don’t have to do any recalculation unless an interface goes down or a router died.

Since only K1 and K3 are enabled we can simplify the EIGRP formula:

Metric = bandwidth (slowest link) + delay (sum of delays)
  • Bandwidth: [107 / minimum bandwidth in the path] * 256.
  • Delay: sums of delays in the path multiplied by 256 (in tens of microseconds).

So the formula looks like:

Metric = (107 / minimum bandwidth) * 256 + (sum of delays) * 256

The multiplication of 256 is done so EIGRP is compatible with IGRP (the predecessor of EIGRP).

Let me show you an example so we can break down this formula:

We're Sorry, Full Content Access is for Members Only...

If you like to keep on reading, Become a Member Now! Here is why:

  • Learn any CCNA, CCNP and CCIE R&S Topic. Explained As Simple As Possible.
  • Try for Just $1. The Best Dollar You've Ever Spent on Your Cisco Career!
  • Full Access to our 651 Lessons. More Lessons Added Every Week!
  • Content created by Rene Molenaar (CCIE #41726)

567 Sign Ups in the last 30 days

satisfaction-guaranteed
100% Satisfaction Guaranteed!
You may cancel your monthly membership at any time.
No Questions Asked!

Forum Replies

  1. sorry i figured it out, myself, smaller metric is better, its all for influencing, i understand that now, thanks

  2. Hi Diego,

    That is correct, I just fixed it. Thanks for reporting!

    Rene

  3. ... Continue reading in our forum

  4. Nice explanation Lazaros thank you very much.

28 more replies! Ask a question or join the discussion by visiting our Community Forum