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 740 Lessons. More Lessons Added Every Week!
  • Content created by Rene Molenaar (CCIE #41726)

541 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. Hello Rene,

    this was a really good post! One statement that I personally dont liked:

    “ou 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.”

    I think everyone would love to have a routing protocol that dynamically adapts to the network state but the processing overhead for the routers in your network would be a nightmare.

    Thank you for this post.

    Marek

  2. Hi Rene,

    AFAIK the formula when considered only BW and delay should be:

    Metric= [ (10^7/ Minimum BW) + (sum of delay/10) ] * 256

  3. Hello Rene,
    Excellent explanation on the metric values used by EIGRP to determine “best” path (route) to take when trying to reach another non-local network. I always was curious how 'best" path was determine by EIGRP when deciding which way to send the packet when multiple paths exists, excellent. Of course this has no real bearing on “stub” networks I take.

    Thanks again for your concise explanations on Networking w/ Cisco

    Darren

  4. Hi Darren,

    You are welcome. If you want to take a closer look at this then I can recommend to boot up some routers and look at the EIGRP topology table. Spend some time looking at the successor and feasible successor routers and check why it installed certain things in the routing table.

    Rene

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

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