EIGRP unequal cost load balancing and feasible successor trap
EIGRP's unequal cost load balancing is one of its most powerful features, yet it remains a common source of confusion and misconfigurations. Unlike OSPF, which load-balances only across equal-cost paths, EIGRP can distribute traffic across routes with different metrics. However, this capability comes with strict rules: violate them, and your traffic takes unexpected paths or fails to load-balance at all. Understanding the feasible successor concept is essential to getting this right.
Successor, feasible successor, and the metric hierarchy
In EIGRP, every destination has a successor: the neighbor advertising the lowest feasible distance (FD) to that destination. Traffic for the destination uses the successor by default. A feasible successor is a backup route that meets one critical condition: its advertised distance (AD) must be less than or equal to the current successor's feasible distance.
This constraint prevents routing loops. If a neighbor's AD exceeds your current FD, accepting that route could create a loop because the neighbor may be routing traffic back through you. EIGRP will reject such a route as a feasible successor, no matter how attractive its metric appears.
Successor: Router A -> Destination X Advertised Distance (AD) from neighbor: 100 Your Feasible Distance (FD): 200 Feasible Successor candidate: Router B -> Destination X Advertised Distance (AD) from neighbor: 150 Your current FD: 200 Result: VALID feasible successor (AD 150 < FD 200) Invalid candidate: Router C -> Destination X Advertised Distance (AD) from neighbor: 250 Your current FD: 200 Result: REJECTED (AD 250 > FD 200) - loop risk
The variance command and unequal cost load balancing
The variance command allows EIGRP to load-balance across routes with different metrics. Variance is a multiplier: if you set variance 2, any feasible successor with a metric less than or equal to 2 times the successor's metric becomes eligible for load balancing.
Router(config-router)# variance 2 Example: Successor metric: 1000 Variance threshold: 1000 x 2 = 2000 Feasible successor metric: 1500 Result: Load-balance enabled (1500 < 2000)
The critical point: variance does NOT remove the feasible successor requirement. A route must still satisfy the AD less than or equal to FD rule. Variance only expands which feasible successors participate in load balancing; it cannot resurrect routes that failed the feasibility condition.
The feasible successor trap
The most common misconfiguration occurs when an engineer sets variance hoping to load-balance across a specific alternate path, only to find that path is not used. The reason: that path is not a feasible successor.
- →Verify feasible successors with 'show ip eigrp topology' or 'show ip eigrp topology all-links'
- →Check the AD of each neighbor's route; if AD > current FD, it will never be a feasible successor
- →Confirm variance is set appropriately: variance 1 (default) means equal-cost only
- →Use 'debug eigrp packets' to observe which routes EIGRP considers during topology changes
- →Remember: variance is a multiplier of the successor metric, not an absolute threshold
Router# show ip eigrp topology 10.0.0.0/24
EIGRP topology entry for 10.0.0.0/24
State is Passive
Successor(s) (via 192.168.1.1)
FD is 2000, serno 42
Feasible successor(s)
via 192.168.2.1 (FD is 2500, serno 41)
Rx peers: 2Practical configuration example
router eigrp 100 network 10.0.0.0 0.0.0.255 network 192.168.1.0 0.0.0.255 network 192.168.2.0 0.0.0.255 variance 2 maximum-paths 4 !
This configuration allows up to 4 equal or unequal cost paths to the same destination. Without feasible successors, only the successor is used. With feasible successors that meet the variance threshold, traffic is distributed. The maximum-paths command limits how many routes are installed in the routing table; the default is 4 on most platforms.