Odd EIGRP behavior
Update: By most examinations, this seems to be a bug. A clever guy at the Cisco support forums might offer the reason why this happens. Thanks to everyone for clearing this up! (https://supportforums.cisco.com/message/3519430)
I was trying someting out the other day concerning EIGRP when i ran into an issue i still cant explain, so i would like to put it out there for scrutiny.
It concerns the “variance” command in EIGRP used for unequal-cost load-balancing.
To recap, the variance command introduces a multiplier that is used with the current best metric in order to allow less-prefered (higher cost/metric) route to enter the RIB.
It is a requirement that any route to be considered with the variance will already need to be a feassible successor (Ie. its Reported Distance will need to be less than the current best route’s Feasible Distance).
So for example, if you have two routes with the following metric:
Route A: FD = 100 Route B: FD = 110, RD = 80
In this scenario without variance Route A would be the current successor route with Route B to be a feassible successor (80<100).
If we were to use: “variance 2” under the EIGRP routing process, EIGRP will take Route A’s FD and multiply with 2:
100 x 2 = 200
It will then use Route B’s FD to compare to this value, and Route B’s value is less than this, it will be installed into the RIB.
110 < 200, so Route B will be installed into the routing table.
As a side note, the load-balancing types used by EIGRP is all in order to affect the traffic-share count in the RIB. (also note that this might not have the intended effect since CEF is per flow, not per-packet).
So thats the theory behind it all, now let me show you the thing i ran into. Here’s the topology and configuration:
<div id="attachment_928" style="width: 548px" class="wp-caption aligncenter">
<a href="http://www.packet-forwarding.net/wp-content/uploads/2011/12/topology.jpg"><img class="size-full wp-image-928" title="EIGRP Topology" src="http://www.packet-forwarding.net/wp-content/uploads/2011/12/topology.jpg" alt="" width="538" height="82" /></a>
<p class="wp-caption-text">
EIGRP Topology
</p>
</div>
<br /> <strong>Configuration:</strong>
R1:
router eigrp 100 redistribute connected metric 1 1 1 1 1 network 192.168.12.0 no auto-summary ! R2:
router eigrp 100 variance 2 network 192.168.12.0 network 192.168.23.0 no auto-summary R3:
router eigrp 100 redistribute connected metric 1 2 1 1 1 network 192.168.23.0 no auto-summary
Both R1 and R3 is redistributing the same network into the EIGRP domain. However R3 is setting a metric that is worse than that of R1, resulting in the following:
P 1.1.1.0/24, 1 successors, FD is 2560025856 via 192.168.12.1 (2560025856/2560000256), FastEthernet0/0, serno 22 via 192.168.23.3 (2560026112/2560000512), FastEthernet0/1
As you can see, the path through R3 is a feassible successor.
With a detailed examination of the topology table on R2, we see the following:
IP-EIGRP (AS 100): Topology entry for 1.1.1.0/24 State is Passive, Query origin flag is 1, 1 Successor(s), FD is 2560025856 Routing Descriptor Blocks: 192.168.12.1 (FastEthernet0/0), from 192.168.12.1, Send flag is 0x0 Composite metric is (2560025856/2560000256), Route is External Vector metric: Minimum bandwidth is 1 Kbit Total delay is 1010 microseconds Reliability is 1/255 Load is 1/255 Minimum MTU is 1 Hop count is 1 External data: Originating router is 192.168.12.1 AS number of route is 0 External protocol is Connected, external metric is 0 Administrator tag is 0 (0x00000000) 192.168.23.3 (FastEthernet0/1), from 192.168.23.3, Send flag is 0x0 Composite metric is (2560026112/2560000512), Route is External Vector metric: Minimum bandwidth is 1 Kbit Total delay is 1020 microseconds Reliability is 1/255 Load is 1/255 Minimum MTU is 1 Hop count is 1 External data: Originating router is 192.168.23.3 AS number of route is 0 External protocol is Connected, external metric is 0 Administrator tag is 0 (0x00000000)
Long output, however it gives us some values we need to use.
The best path has a current FD of 2560025856 where the successor route has a FD of 2560026112.
However, in our configuration we have a variance of 2, which should increase the value to compare with to:
2560025856 x 2 = 5120051712
Next, is 2560026112 less than 5120051712? Why yes it is, so why are we not seeing it in our RIB?:
C 192.168.12.0/24 is directly connected, FastEthernet0/0 1.0.0.0/24 is subnetted, 1 subnets D EX 1.1.1.0 [170/2560025856] via 192.168.12.1, 00:00:01, FastEthernet0/0 C 192.168.23.0/24 is directly connected, FastEthernet0/1
Even worse, when we use “variance 3” it DOES get inserted into the RIB:
C 192.168.12.0/24 is directly connected, FastEthernet0/0 1.0.0.0/24 is subnetted, 1 subnets D EX 1.1.1.0 [170/2560026112] via 192.168.23.3, 00:00:01, FastEthernet0/1 [170/2560025856] via 192.168.12.1, 00:00:01, FastEthernet0/0 C 192.168.23.0/24 is directly connected, FastEthernet0/1
So there’s the dilema. I hope you can give some hints as to what is going on, because so far, i dont get it.
Any comments and suggestions will be appreciated.