Professional Documents
Culture Documents
Secrets of The EIGRP Offset-List Command
Secrets of The EIGRP Offset-List Command
Secrets of The EIGRP Offset-List Command
Command
The following post is loooooong and of no interest to 99.9999999999% of the world. I was
going over EIGRP commands and had a problem with an EIGRP offset-list not altering the
EIGRP metric the way that it should have. In the process of playing with this command I think
that I’ve found the method that this command uses to alter the EIGRP metric of a route.
I did warn you that this was only interesting to a handful of geeks.
r1————r2
r1 and r2 are connected by a single serial link (s0/0 on both devices). Both routers running
EIGRP on all interfaces. There are 3 loopbacks being advertised on each device.
r1#sh ip ei int
IP-EIGRP interfaces for process 100
r1#sh ip ei nei
IP-EIGRP neighbors for process 100
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
0 10.1.12.2 Se0/0 13 00:01:47 27 200 0 3
r1#sh ip route ei
D 222.222.222.0/24 [90/2297856] via 10.1.12.2, 00:01:55, Serial0/0
2.0.0.0/24 is subnetted, 1 subnets
D 2.2.2.0 [90/2297856] via 10.1.12.2, 00:01:55, Serial0/0
22.0.0.0/24 is subnetted, 1 subnets
D 22.22.22.0 [90/2297856] via 10.1.12.2, 00:01:55, Serial0/0
r2#sh ip ei int
IP-EIGRP interfaces for process 100
Xmit Queue Mean Pacing Time Multicast Pending
Interface Peers Un/Reliable SRTT Un/Reliable Flow Timer Routes
Se0/0 1 0/0 34 0/15 147 0
Lo0 0 0/0 0 0/10 0 0
Lo1 0 0/0 0 0/10 0 0
Lo2 0 0/0 0 0/10 0 0
r2#sh ip ei nei
IP-EIGRP neighbors for process 100
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
0 10.1.12.1 Se0/0 13 00:02:15 34 204 0 3
r2#sh ip route ei
1.0.0.0/24 is subnetted, 1 subnets
D 1.1.1.0 [90/2297856] via 10.1.12.1, 00:02:19, Serial0/0
111.0.0.0/24 is subnetted, 1 subnets
D 111.111.111.0 [90/2297856] via 10.1.12.1, 00:02:19, Serial0/0
11.0.0.0/24 is subnetted, 1 subnets
D 11.11.11.0 [90/2297856] via 10.1.12.1, 00:02:19, Serial0/0
Okay to start with let’s see the routing information for net 1.1.1.0/24 on r2:
On r2 let’s add 100 to the EIGRP metrics of all EIGRP routes advertised in s0/0 from r1:
[NOTE: access-list 0 selects all networks]
r2(config)#router ei 100
r2(config-router)#offset-list 0 in 100 s0/0
Interesting…we’ve added 100 to the EIGRP metric as expected. The ‘total delay’ has also
increased by 3 microseconds (not expected). It seems that the EIGRP offset-list alters the
EIGRP variable in order to change the overall EIGRP metric. EIGRP uses this easy to remember
If k5 equals 0, the composite EIGRP metric is computed according to the following formula:
metric = [k1 * bandwidth + (k2 * bandwidth)/(256 – load) + k3 * delay]
This led me to wonder what would happen if we took delay out of the EIGRP equation. We can
do that by setting the EIGRP K-Value for delay to 0 and just leaving bandwidth K-Value (we’ll
need to do this on both routers):
r2(config)#router ei 100
r2(config-router)#metric weights 0 1 0 0 0 0
r2(config-router)#no offset-list 0 in 100 s0/0
BOOYAH! The offset-list is supposed to increase the EIGRP metric by 100. We can see that
the metric did NOT change (still 1657856), BUT the total delay increased by 3 microseconds. It
looks like we’ve discovered the mechanism used by the EIGRP offset-list to change the EIGRP
metric. We’ve also discovered that setting the delay K-Value to zero “breaks” the offset-list
function.
One last experiment. Let’s see if the offset-list is intelligent enough to handle a delay K-Value
of more than 1:
r1(config-router)#metric weights 0 1 0 4 0 0
r2(config-router)#metric weights 0 1 0 4 0 0
r2(config-router)#no offset-list 0 in 100 s0/0
Weird. I would have thought that this would have worked as we have our default K-Values but
have just increased the weight of delay 4 times. We can see that the delay was once again
increased by 3 microseconds, but the overall metric was unaffected. Weird.
Thank you to reader Rich for pointing out that 4217856 and 4218256 are NOT the same value.
The EIGRP metric increased by 400 instead of the 100 that we specified in the offset-
list. That’s because the K-Value for delay is set to 4 times the default.
Hmmm…one more experiment. Let’s set the delay K-Value back to 1 but make it the only
variable used for the EIGRP metric:
r1(config-router)#metric weights 0 0 0 1 0 0
r2(config-router)#metric weights 0 0 0 1 0 0
r2(config-router)#no offset-list 0 in 100 s0/0
It worked. So we don’t need to have the bandwidth K-Value “turned on” for the offset-list to
work.
Last experiment…I promise. Let’s set the delay K-Value to 4 and set the other K-Values to 0:
r1(config-router)#metric weights 0 0 0 4 0 0
r2(config-router)#metric weights 0 0 0 4 0 0
r2(config-router)#no offset-list 0 in 100 s0/0
Ah hah! The metric changed by 400 instead of 100 (as we had configured it to be offset). I think
that this is pretty good evidence that the EIGRP offset-list only alters the EIGRP delay variable
and is only accurate when that K-Value is set to 1.
I don’t think that this will affect you in real life (who’s changing K-Values and using offset-lists
with EIGRP?) but it could possibly come up in a lab. I could forsee a task that has you change
the K-Values and then another task that has you altering EIGRP metrics (probably for some evil
unequal-cost load-balancing task). At least now you’ll know why your perfectly executed offset-
list solution has failed.