cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Announcements

Community Helping Community

Troubleshooting EIGRP Variance Command

35675
Views
40
Helpful
7
Comments

     

    Introduction

    EIGRP provides a mechanism to load balance over unequal cost paths throungh Variance Command. Variance is a number (1 to 128), multiplied by the local best metric then includes the routes with the lesser or equal metric. The default Variance value is 1, which means equal-cost load balancing.

     

    A condition, Feasibility Condition, must be met for all routes to be installed in routing table via Variance Command.

    What is Feasibility Condition?

    If, for a destination, a neighbour router advertises a distance that is stricktly lower than our feasible distance, then this neighbour lies on a loop free route to this destination.

    Prerequisite

    Understanding of EIGRP routing protocol

    Topology Diagram

     

    Topology Diag.bmp

    Background

    In this document we are trying to understand the feasibility condition and the working of variance command. All routers depcited in the topology diagram are configured with EIGRP routing protocol. The Lo3 address (3.3.3.3/32) is redistributed in EIGRP via redistribute connected command under the EIGRP process.

     

    Router R1 has three paths to the route 3.3.3.3/32

    1. Path R1-R2-R3
    2. Path R1-R4-R3
    3. Path R1-R5-R3

     

    Specifically, we have used different interface selection to provide unequal cost.

     

    With default configuration, the route R1-R2-R3 is chosen over the others as the overall metric of this path is less as compared to that of the paths. Please see the output of the command "show ip route eigrp".

     

    ip route wo variance.bmp

     

    So far so good. Everything is working as expected.

     

    As we desire, EIGRP with load balancing functionality, the route 3.3.3.3/32 should be available with R1 via R4 and R5. We verify the minimum and the maximum cost to reach 3.3.3.3 network from R1 via command "show ip eigrp topology all-links". R1 from its EIGRP topology table is learning the route 3.3.3.3/32 from all the sources but installed the route learned via neighbour R2 in its routing table.

     

    The lowest metric is 435200 (that of path R1-R2-R3) and the maximum 2809856 (that of path R1-R5-R3).

     

    eigrp topology.bmp

     

    Doing a small calculation to find the variance number, 2809856/435200 = 6.4567. I wil use a variance value of 7. Now 7*435200 = 3046400, routes with metric less than this value should be included.

     

    On configuring command "variance 7" under EIGRP process, the route 3.3.3.3/32 now has two sources, R2 and R4. This can be verified by command "show ip route eigrp" on R1.

     

    EIGRP Config.bmp

     

    ip route variance.bmp

     

    The output is not what we desired, the expected result was route 3.3.3.3 to be available from all the three neighbours i.e. R2, R4 and R5. Why the route from R4 was included and the route R5 discarded?

     

    For R1 and R4

     

    1. If, for a destination (3.3.3.3), a neighbour router (R4) advertises a distance (409600) that is stricktly lower than our feasible distance (435200), then this neighbour lies on a loop free route to this destination.
    2. Metric learned from R4 (2323456) < Metric Calculated via Variance Multiplier (3046400)

     

    For R1 and R5,  this condition is not met as R5 advertises a distance 2297856 which is much higher that the feasible distance (435200) on R1.

     

    Note: Even though the overall metric from R5 (2323456) is less than the Metric Calculated via Variance Multiplier (3046400), the route 3.3.3.3 is discarded as it does not meet the Feasibility Condition.

    Configurations

    Please see attached files.

    References

    EIGRP Commands

    Troubleshooting EIGRP

    Cisco Support for EIGRP

    Comments
    Beginner

    . Very easy & clear explanation.

    Good and useful post.

    Beginner

    Kunal,

    Thanks for your kind words!

    Regards,

    Sunil.

    Beginner

    Nice doc as topic is always create confusion but in this doc it is so easy to understand.

    Beginner

    Hi,

    How can we check if the packet is passing through on all 3 interfaces?  I tried traceroute but it seems on my lab, it only passes through the serial interface that has the lowest metric than the 2?

    R1
    22.0.0.0/24 is subnetted, 1 subnets
    D 22.22.22.0 [90/2700800] via 122.122.122.2, 00:14:55, Virtual-Access4
    [90/2297856] via 12.12.12.2, 00:14:55, Serial1/0
    [90/1468928] via 1.1.1.2, 00:14:55, MFR1

    R1(config-router)#do traceroute 22.22.22.22
    Type escape sequence to abort.
    Tracing the route to 22.22.22.22
    VRF info: (vrf in name/id, vrf out name/id)
    1 122.122.122.2 21 msec 20 msec *
    R1(config-router)#do traceroute 22.22.22.22
    Type escape sequence to abort.
    Tracing the route to 22.22.22.22
    VRF info: (vrf in name/id, vrf out name/id)
    1 122.122.122.2 20 msec 13 msec *
    R1(config-router)#do traceroute 22.22.22.22
    Type escape sequence to abort.
    Tracing the route to 22.22.22.22
    VRF info: (vrf in name/id, vrf out name/id)
    1 122.122.122.2 15 msec 20 msec *
    R1(config-router)#do traceroute 22.22.22.22
    Type escape sequence to abort.
    Tracing the route to 22.22.22.22
    VRF info: (vrf in name/id, vrf out name/id)
    1 122.122.122.2 20 msec 20 msec *
    R1(config-router)#do traceroute 22.22.22.22
    Type escape sequence to abort.
    Tracing the route to 22.22.22.22
    VRF info: (vrf in name/id, vrf out name/id)
    1 122.122.122.2 22 msec 20 msec *

    R1(config-router)#do sh run | s router eigrp
    router eigrp 12
    variance 3
    network 0.0.0.0

    R2
    11.0.0.0/24 is subnetted, 1 subnets
    D 11.11.11.0 [90/2700800] via 122.122.122.1, 00:14:55, Virtual-Access4
    [90/2297856] via 12.12.12.1, 00:14:55, Serial2/0
    [90/1468928] via 1.1.1.1, 00:14:55, MFR2

    R2(config-router)#do traceroute 22.22.22.22
    Type escape sequence to abort.
    Tracing the route to 22.22.22.22
    VRF info: (vrf in name/id, vrf out name/id)
    1 22.22.22.22 5 msec 3 msec *
    R2(config-router)#do traceroute 22.22.22.22
    Type escape sequence to abort.
    Tracing the route to 22.22.22.22
    VRF info: (vrf in name/id, vrf out name/id)
    1 22.22.22.22 5 msec 1 msec *
    R2(config-router)#do traceroute 22.22.22.22
    Type escape sequence to abort.
    Tracing the route to 22.22.22.22
    VRF info: (vrf in name/id, vrf out name/id)
    1 22.22.22.22 5 msec 4 msec
    R2(config-router)#do traceroute 11.11.11.11
    Type escape sequence to abort.
    Tracing the route to 11.11.11.11
    VRF info: (vrf in name/id, vrf out name/id)
    1 122.122.122.1 21 msec 19 msec *
    R2(config-router)#do traceroute 11.11.11.11
    Type escape sequence to abort.
    Tracing the route to 11.11.11.11
    VRF info: (vrf in name/id, vrf out name/id)
    1 122.122.122.1 21 msec 18 msec *

    R2(config-router)#do sh run | s router eigrp
    router eigrp 12
    variance 3
    network 0.0.0.0

    *As you can see it only use 1 link (Virtual-access 4)

    *** NEVERMIND!!! IF YOU DISABLE CEF, YOU CAN SEE LOAD-BALANCING WORKS, :))

    Which then brings me to the question, if CEF then use the per-flow algorithm (source and destination), how can we then benefit on the variance feature if it keeps on using the best link ???

    Beginner
    Good explanation
    Beginner

    SunilKhanna Thank you for the very good and clear explanation 

    Beginner

    Hi SunilKhana

    Very clear..

    Thank you so much !

    CreatePlease to create content
    Content for Community-Ad
    FusionCharts will render here