Posted on Friday, 16th September 2005 by
One FAQ I see on CCIE lab lists is How do I load balance two paths in EIGRP without using the variance command?
It’s an interesting problem, because the solution illustrates how EIGRP works.
First of all, the variance command assigns a multiplier that says when two routes are “close enough” to load balance. Normally, when presented with a route of metric 100 and one of metric 200, routing protocols will choose the former and ignore the latter. With “variance 2″, both routes will be considered equal and make it to the routing table. Depending on the setting of “traffic-share”, the routes will be used proportionally to their metrics. How Does Unequal Cost Path Load Balancing (Variance) Work in IGRP and EIGRP? describes it in detail.
Without using a variance, the only way to get multiple routes to be promoted to the routing table is to make their metrics the same. I know of two ways to do this:
- Manipulate the components of the composite metric to make the route look the same
- Add a static offset with the offset-list command
Consider two routers, r0 and r3, connected with both an Ethernet and a frame-relay connection out their serial interfaces.
r0#show ip eigrp neighbors
IP-EIGRP neighbors for process 42
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
1 192.168.1.2 Se0 166 00:00:13 1 5000 2 0
0 10.50.0.2 Et0 14 00:00:13 12 200 0 2
The 10.3.3.0/24 network is a loopback on R3, and is the one we’ll try to load balance. We can see that it uses Ethernet0 because the metric is better:
r0#show ip route 10.3.3.1
Routing entry for 10.3.3.0/24
Known via "eigrp 42", distance 90, metric 409600, type internal
Redistributing via eigrp 42
Last update from 10.50.0.2 on Ethernet0, 00:00:39 ago
Routing Descriptor Blocks:
* 10.50.0.2, from 10.50.0.2, 00:00:39 ago, via Ethernet0
Route metric is 409600, traffic share count is 1
Total delay is 6000 microseconds, minimum bandwidth is 10000 Kbit
Reliability 255/255, minimum MTU 1500 bytes
Loading 1/255, Hops 1
r0#show ip eigrp topology 10.3.3.0/24
IP-EIGRP (AS 42): Topology entry for 10.3.3.0/24
State is Passive, Query origin flag is 1, 1 Successor(s), FD is 409600
Routing Descriptor Blocks:
10.50.0.2 (Ethernet0), from 10.50.0.2, Send flag is 0x0
Composite metric is (409600/128256), Route is Internal
Vector metric:
Minimum bandwidth is 10000 Kbit
Total delay is 6000 microseconds
Reliability is 255/255
Load is 1/255
Minimum MTU is 1500
Hop count is 1
Since the feasibility condition is not met, we only see the one route.
Method 1: Manipulate metric with bandwidth/delay
r0(config)#int s0 r0(config-if)#bandwidth 10000 r0(config-if)#delay 100
That makes the serial interface on R0 look like the ethernet interface. How do I know this?
r0#show int e0 | include DLY MTU 1500 bytes, BW 10000 Kbit, DLY 1000 usec,
(Don’t forget that the bandwidth command is in Kbits/sec, and Delay is in tens of usec)
The link properties are added on the receiving router (this is the difference between the feasible distance and the advertised distance), so if R3 is generating the route and we want to affect R0, the change goes on R0:
r0#show ip route 10.3.3.0
Routing entry for 10.3.3.0/24
Known via "eigrp 42", distance 90, metric 409600, type internal
Redistributing via eigrp 42
Last update from 192.168.1.2 on Serial0, 00:01:10 ago
Routing Descriptor Blocks:
* 10.50.0.2, from 10.50.0.2, 00:01:10 ago, via Ethernet0
Route metric is 409600, traffic share count is 1
Total delay is 6000 microseconds, minimum bandwidth is 10000 Kbit
Reliability 255/255, minimum MTU 1500 bytes
Loading 1/255, Hops 1
192.168.1.2, from 192.168.1.2, 00:01:10 ago, via Serial0
Route metric is 409600, traffic share count is 1
Total delay is 6000 microseconds, minimum bandwidth is 10000 Kbit
Reliability 255/255, minimum MTU 1500 bytes
Loading 1/255, Hops 1
Method 2: Use an offset-list
An offset-list adds a value to the metric of a given route from a given interface. The question is “how much is required?”. The easiest way is to write down the current metric (409600), artificially inflate the route so that the second route takes hold, then figure out the delta. Note that here we’re making the ethernet look worse by adding to the metric, where in the previous example the technique was to make the serial interface look better:
r0(config-router)#access-list 5 permit host 10.3.3.0
r0(config)#router eigrp 42
r0(config-router)#offset-list 5 in 2147483647 e0
r0#show ip route 10.3.3.0
Routing entry for 10.3.3.0/24
Known via "eigrp 42", distance 90, metric 2297856, type internal
Redistributing via eigrp 42
Last update from 192.168.1.2 on Serial0, 00:02:00 ago
Routing Descriptor Blocks:
* 192.168.1.2, from 192.168.1.2, 00:02:00 ago, via Serial0
Route metric is 2297856, traffic share count is 1
Total delay is 25000 microseconds, minimum bandwidth is 1544 Kbit
Reliability 255/255, minimum MTU 1500 bytes
Loading 1/255, Hops 1
Now, 2297856-409600=1888256, so adjusting the offset-list gives
r0#show ip route 10.3.3.0
Routing entry for 10.3.3.0/24
Known via "eigrp 42", distance 90, metric 2297856, type internal
Redistributing via eigrp 42
Last update from 10.50.0.2 on Ethernet0, 00:00:08 ago
Routing Descriptor Blocks:
* 192.168.1.2, from 192.168.1.2, 00:00:08 ago, via Serial0
Route metric is 2297856, traffic share count is 1
Total delay is 25000 microseconds, minimum bandwidth is 1544 Kbit
Reliability 255/255, minimum MTU 1500 bytes
Loading 1/255, Hops 1
10.50.0.2, from 10.50.0.2, 00:00:08 ago, via Ethernet0
Route metric is 2297856, traffic share count is 1
Total delay is 79760 microseconds, minimum bandwidth is 10000 Kbit
Reliability 255/255, minimum MTU 1500 bytes
Loading 1/255, Hops 1
Apply Offsets to Routing Metrics describes the use of offset-list . They can be done on all interfaces, some interfaces, and incoming or outgoing. Here we chose incoming on one interface.
Which one should I use?
Method #1 is the easiest, but is really only practical when the two routers are direct neighbours. That’s not to say it can’t be done (or you couldn’t manipulate k values to do the same thing).
Method #2 is more difficult, but is very precise. If the routers weren’t dually connected as they were in this example (say the ethernet link transited R1), this would be a good choice.
No related posts.
Related posts brought to you by Yet Another Related Posts Plugin.
Posted in Routing | Comments (5)

January 19th, 2006 at 2:29 pm
Assuming they are adjacent wouldnt just using CEF and per packet distribution on both end accomplish this as well?
January 19th, 2006 at 2:30 pm
Assuming they are adjacent wouldnt just using CEF and per packet distribution on both end accomplish this as well?
January 26th, 2006 at 11:47 pm
You can also modify the T0 through T5 EIGRP parameters to get rid of the delay multiplier – saves a lot of aggravation when trying to match the metrics.
P.
April 20th, 2009 at 4:39 am
awesome reply
September 16th, 2010 at 10:54 pm
such a great way to explain it..just 2 great