[c-nsp] EIGRP, variance and offset-list out

Dmitry Sergienko dmitry.sergienko at gmail.com
Thu Dec 22 11:08:13 EST 2011


Hi all!

I'm observing some behaviour of EIGRP which I don't understand.
According to docs, It looks like incorrect EIGRP desicion whether
insert route into routing table or not.
My goal is to have 2 paths between 2 routes with unequal load
balancing, but main condition is to manage metrics only from one of
the routers.
I'm trying to do this with variance at R1 and offset-list out at R2.


Here is the network scheme description:

There are 2 routers: R1 (7206VXR/NPE-G2) with IP 192.168.255.254 and
R2 (871) with IP 192.168.255.200. IPs at Loopback0 interfaces.
Both of them have 2 IPsec p2p GRE tunnels T1 and T2. T1 at R1 is
connected to T1 at R2, T2 at R1 is connected to T2 at R2.
EIGRP takes in calculation only delay parameter. R2 is a stub
announcing connected and static networks, filtered to 192.168.198.0/24
only network.

So there are 2 paths between R1 and R2, and EIGRP is running over them:


R1#sh ip ei n
IP-EIGRP neighbors for process 10
H   Address                 Interface       Hold Uptime   SRTT   RTO  Q  Seq
                                            (sec)         (ms)       Cnt Num
1   192.168.255.200         Tu2               12 00:13:01    1  1458  0  494
0   192.168.255.200         Tu1               10 00:13:04    4  1458  0  480



R2 announces to R1 network 192.168.198.0:



R1#sh ip ei to 192.168.198.0
IP-EIGRP (AS 10): Topology entry for 192.168.198.0/24
  State is Passive, Query origin flag is 1, 2 Successor(s), FD is 512
  Routing Descriptor Blocks:
  192.168.255.200 (Tunnel2), from 192.168.255.200, Send flag is 0x0
      Composite metric is (512/256), Route is External
      Vector metric:
        Minimum bandwidth is 100 Kbit
        Total delay is 20 microseconds
        Reliability is 255/255
        Load is 1/255
        Minimum MTU is 1438
        Hop count is 1
      External data:
        Originating router is 192.168.255.200
        AS number of route is 0
        External protocol is Connected, external metric is 0
        Administrator tag is 0 (0x00000000)
  192.168.255.200 (Tunnel1), from 192.168.255.200, Send flag is 0x0
      Composite metric is (512/256), Route is External
      Vector metric:
        Minimum bandwidth is 100 Kbit
        Total delay is 20 microseconds
        Reliability is 255/255
        Load is 1/255
        Minimum MTU is 1438
        Hop count is 1
      External data:
        Originating router is 192.168.255.200
        AS number of route is 0
        External protocol is Connected, external metric is 0
        Administrator tag is 0 (0x00000000)



I set "delay 1" on all tunnel interfaces, so 256 is RD, 512 is FD at
this time. Variance is 2 for R1.
So, according to the manual "How Does Unequal Cost Path Load Balancing
(Variance) Work in IGRP and EIGRP?", I expect a route to be inserted
into routing table if any of paths have composite metric <=  1024 (FD
* variance = 512 * 2).
To proof this I increase delay to 3 at T2 at R1:



R1#sh ip ei top 192.168.198.0
IP-EIGRP (AS 10): Topology entry for 192.168.198.0/24
  State is Passive, Query origin flag is 1, 1 Successor(s), FD is 512
  Routing Descriptor Blocks:
  192.168.255.200 (Tunnel1), from 192.168.255.200, Send flag is 0x0
      Composite metric is (512/256), Route is External
      Vector metric:
        Minimum bandwidth is 100 Kbit
        Total delay is 20 microseconds
        Reliability is 255/255
        Load is 1/255
        Minimum MTU is 1438
        Hop count is 1
      External data:
        Originating router is 192.168.255.200
        AS number of route is 0
        External protocol is Connected, external metric is 0
        Administrator tag is 0 (0x00000000)
  192.168.255.200 (Tunnel2), from 192.168.255.200, Send flag is 0x0
      Composite metric is (1024/256), Route is External
      Vector metric:
        Minimum bandwidth is 100 Kbit
        Total delay is 40 microseconds
        Reliability is 255/255
        Load is 1/255
        Minimum MTU is 1438
        Hop count is 1
      External data:
        Originating router is 192.168.255.200
        AS number of route is 0
        External protocol is Connected, external metric is 0
        Administrator tag is 0 (0x00000000)




And there are 2 routes in routing table, variance works as expected:


R1#sh ip route 192.168.198.0
Routing entry for 192.168.198.0/24
  Known via "eigrp 10", distance 170, metric 512, type external
  Redistributing via eigrp 10
  Last update from 192.168.255.200 on Tunnel2, 00:04:19 ago
  Routing Descriptor Blocks:
  * 192.168.255.200, from 192.168.255.200, 00:04:19 ago, via Tunnel1
      Route metric is 512, traffic share count is 2
      Total delay is 20 microseconds, minimum bandwidth is 100 Kbit
      Reliability 255/255, minimum MTU 1438 bytes
      Loading 1/255, Hops 1
    192.168.255.200, from 192.168.255.200, 00:04:19 ago, via Tunnel2
      Route metric is 1024, traffic share count is 1
      Total delay is 40 microseconds, minimum bandwidth is 100 Kbit
      Reliability 255/255, minimum MTU 1438 bytes
      Loading 1/255, Hops 1


Now I return delay to 1 at T2 at R1 interface and set "offset-list 0 out
512 Tunnel2" at router R2 in "router eigrp 10" section:


R1#sh ip ei top 192.168.198.0
IP-EIGRP (AS 10): Topology entry for 192.168.198.0/24
  State is Passive, Query origin flag is 1, 1 Successor(s), FD is 512
  Routing Descriptor Blocks:
  192.168.255.200 (Tunnel1), from 192.168.255.200, Send flag is 0x0
      Composite metric is (512/256), Route is External
      Vector metric:
        Minimum bandwidth is 100 Kbit
        Total delay is 20 microseconds
        Reliability is 255/255
        Load is 1/255
        Minimum MTU is 1438
        Hop count is 1
      External data:
        Originating router is 192.168.255.200
        AS number of route is 0
        External protocol is Connected, external metric is 0
        Administrator tag is 0 (0x00000000)
  192.168.255.200 (Tunnel2), from 192.168.255.200, Send flag is 0x0
      Composite metric is (1024/768), Route is External
      Vector metric:
        Minimum bandwidth is 100 Kbit
        Total delay is 40 microseconds
        Reliability is 255/255
        Load is 1/255
        Minimum MTU is 1438
        Hop count is 1
      External data:
        Originating router is 192.168.255.200
        AS number of route is 0
        External protocol is Connected, external metric is 0
        Administrator tag is 0 (0x00000000)


And routing table has only one path for 192.168.198.0 :

R1#sh ip route 192.168.198.0
Routing entry for 192.168.198.0/24
  Known via "eigrp 10", distance 170, metric 512, type external
  Redistributing via eigrp 10
  Last update from 192.168.255.200 on Tunnel1, 00:00:34 ago
  Routing Descriptor Blocks:
  * 192.168.255.200, from 192.168.255.200, 00:00:34 ago, via Tunnel1
      Route metric is 512, traffic share count is 1
      Total delay is 20 microseconds, minimum bandwidth is 100 Kbit
      Reliability 255/255, minimum MTU 1438 bytes
      Loading 1/255, Hops 1



Experimentally I've found out that the threshold for offset-list value
should be no more than half of FD minus one:

Setting "offset-list 0 out 255 Tun2" at R2, result at R1:


R1#sh ip route 192.168.198.0
Routing entry for 192.168.198.0/24
  Known via "eigrp 10", distance 170, metric 512, type external
  Redistributing via eigrp 10
  Last update from 192.168.255.200 on Tunnel2, 00:00:01 ago
  Routing Descriptor Blocks:
  * 192.168.255.200, from 192.168.255.200, 00:00:01 ago, via Tunnel1
      Route metric is 512, traffic share count is 3
      Total delay is 20 microseconds, minimum bandwidth is 100 Kbit
      Reliability 255/255, minimum MTU 1438 bytes
      Loading 1/255, Hops 1
    192.168.255.200, from 192.168.255.200, 00:00:01 ago, via Tunnel2
      Route metric is 767, traffic share count is 2
      Total delay is 29 microseconds, minimum bandwidth is 100 Kbit
      Reliability 255/255, minimum MTU 1438 bytes
      Loading 1/255, Hops 1



And the result with "offset-list 0 out 256 tun2":



R1#sh ip route 192.168.198.0
Routing entry for 192.168.198.0/24
  Known via "eigrp 10", distance 170, metric 512, type external
  Redistributing via eigrp 10
  Last update from 192.168.255.200 on Tunnel1, 00:00:00 ago
  Routing Descriptor Blocks:
  * 192.168.255.200, from 192.168.255.200, 00:00:00 ago, via Tunnel1
      Route metric is 512, traffic share count is 1
      Total delay is 20 microseconds, minimum bandwidth is 100 Kbit
      Reliability 255/255, minimum MTU 1438 bytes
      Loading 1/255, Hops 1

R1#


This effect does not depend on any value of variance. I've tried
several values from 2 to 128, effect is the same.
debug eigrp fsm shows nothing interesting about why variance is
ignored. All values of FD and RD just duplicate the same as shown
above.

Tests were made on IOS 12.4(24)T5, 12.4(11)T2, 12.2(33)SRE2 with the
same result.

Does anyone understands what's going on with EIGRP, variance and
offset-list out?


Below are parts of configs of R1 and R2:

R1
---------------------------
!
interface Loopback0
 ip address 192.168.255.254 255.255.255.255
!
interface Tunnel1
 ip unnumbered Loopback0
 ip tcp adjust-mss 1360
 ip summary-address eigrp 10 192.168.192.0 255.255.240.0 5
 load-interval 30
 delay 1
 tunnel source 192.168.3.190
 tunnel destination 10.245.200.2
 tunnel mode ipsec ipv4
 tunnel protection ipsec profile tun
 max-reserved-bandwidth 100
!
interface Tunnel2
 ip unnumbered Loopback0
 ip tcp adjust-mss 1360
 ip summary-address eigrp 10 192.168.192.0 255.255.240.0 5
 load-interval 30
 delay 1
 tunnel source 192.168.3.187
 tunnel destination 10.245.200.6
 tunnel mode ipsec ipv4
 tunnel protection ipsec profile tun
 max-reserved-bandwidth 100
!
router eigrp 10
 variance 2
 redistribute connected
 redistribute static
 passive-interface Loopback0
 network 10.245.13.0 0.0.0.3
 network 10.245.200.0 0.0.0.255
 network 10.245.250.0 0.0.0.255
 network 192.168.255.0
 metric weights 0 0 0 1 0 0
 no auto-summary
 eigrp router-id 192.168.255.254
!
---------------------------


R2
---------------------------
!
interface Loopback0
 ip address 192.168.255.200 255.255.255.255
!
interface Tunnel1
 ip unnumbered Loopback0
 ip tcp adjust-mss 1360
 load-interval 30
 delay 1
 tunnel source 10.245.200.2
 tunnel destination 192.168.3.190
 tunnel mode ipsec ipv4
 tunnel protection ipsec profile tun
 max-reserved-bandwidth 100
!
interface Tunnel2
 ip unnumbered Loopback0
 ip tcp adjust-mss 1360
 load-interval 30
 delay 1
 tunnel source 10.245.200.6
 tunnel destination 192.168.3.187
 tunnel mode ipsec ipv4
 tunnel protection ipsec profile tun
 max-reserved-bandwidth 100
!
interface Vlan1
 description LOCAL_net
 ip address 192.168.198.1 255.255.255.0
 delay 1
!
router eigrp 10
 variance 2
 redistribute connected
 redistribute static
 passive-interface Loopback0
 offset-list 0 out 256 Tunnel2
 network 10.245.13.0 0.0.0.3
 network 10.245.250.0 0.0.0.255
 network 192.168.255.0
 metric weights 0 0 0 1 0 0
 distribute-list 10 out
 no auto-summary
 eigrp router-id 192.168.255.200
 eigrp stub connected static
!
---------------------------


--
Best wishes,
Dmitry Sergienko


More information about the cisco-nsp mailing list