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.