skip to content

With unequal-cost load balancing on an EIGRP router, which paths does a variance multiplier admit, and why must each be a feasible successor?

level: seniorimportance: must knowfreq 24%

answer

  1. an implementation feature, not RFC
  2. two tests, both must pass
  3. multiplier times the best metric
  4. split inverse to metric

basics

~20 s

Variance, an implementation feature RFC 7868 does not define, admits a path only if it is a feasible successor and its computed distance lies within variance times the best metric; feasibility is required because only those paths are proven loop-free.

solid answer

~40 s

Unequal-cost load balancing is something EIGRP implementations offer through a **variance** multiplier; RFC 7868 only notes that a feasible successor could carry traffic when unequal-cost sharing is active. A path is used if it passes **two** tests: it is a **feasible successor** (its neighbour's reported distance is strictly below the feasible distance) and its computed distance is within `variance x` the successor's metric. The first test is not optional, because a non-feasible neighbour may be routing back through this router, and sending it traffic could loop. Raising variance therefore never admits a non-feasible path, however cheap it looks. Implementations usually share traffic in inverse proportion to each path's metric, so the better path carries more, and the split is static rather than congestion-aware.

go deeper

for a junior

Recall that EIGRP implementations can share traffic over paths of unequal cost, unlike most interior protocols, and that only loop-free backup paths qualify.

for a middle

Explain the two tests, feasible successor and within the multiplier, and why a variance of 1 means equal-cost paths only.

for a senior

Show production judgment: diagnose a missing path by feasibility first, size the split against the slower link's capacity, and label variance as an implementation feature.

for a principal

Weigh whether unequal-cost sharing earns its unpredictability, or whether resizing links or adjusting metrics gives the same capacity with simpler, equal-cost behaviour.

## Why unequal-cost sharing is unusual Most interior routing protocols forward only on their best paths. OSPF, as RFC 2328 specifies it, uses several next hops only when their costs are equal (equal-cost multipath). The reason is loop safety: if a router sends some traffic to a next hop that is not on its shortest path, nothing in a plain shortest-path protocol proves that next hop will not send the traffic straight back. EIGRP has that proof for some paths. A **feasible successor** is a neighbour whose **reported distance** (RD), its own distance to the destination, is strictly lower than this router's **feasible distance** (FD). A neighbour that is closer to the destination than this router has ever been since the route last became passive cannot be routing through this router. That guarantee, which belongs to DUAL's feasibility condition, is what makes forwarding on a costlier path safe. ## What the specification says and what implementations add RFC 7868 is Informational and describes the protocol that one vendor built. It mentions, when defining a feasible successor, that such a neighbour may not provide the least-cost path but could still be used for forwarding when equal or unequal cost load sharing is active. It does **not** define a variance multiplier, a formula or a traffic split. Those are **implementation features**. Describe them that way in an interview: "EIGRP implementations offer variance", not "the protocol's variance". ## The two tests A path enters the routing table under unequal-cost load balancing only when both hold: 1. **It is a feasible successor**: neighbour's RD < FD. 2. **Its metric is within the multiplier**: its computed distance (CD), the total through that neighbour, is within `variance x` the successor's metric. A variance of 1, the usual implementation default, means equal-cost paths only. The implementation's limit on parallel paths applies as well, so even a long list of qualifying paths is cut at that number. ```pseudocode best = min(CD[n] for n in neighbours) for n in neighbours: feasible = RD[n] < FD within = CD[n] <= variance * best if feasible and within and installed < maxPaths: install(n, weight = best / CD[n]) ``` The comparison at the boundary and the exact weighting differ between implementations; the sketch shows the order of the tests, not one product's arithmetic. ## A worked entry One prefix, 10.20.0.0/16, on router R1, abstract metric units, route stable so FD equals the best CD: | Path | RD | CD | Feasible successor? | Within 2 x 10,000? | Used with variance 2? | |---|---|---|---|---|---| | via A | 4,000 | 10,000 | yes, successor | yes | yes | | via B | 6,000 | 15,000 | yes, 6,000 < 10,000 | yes | yes | | via C | 12,000 | 14,000 | no, 12,000 >= 10,000 | yes | **no** | C is the instructive row. Its total is lower than B's, and it is comfortably inside the multiplier, yet it is excluded, because C reports a distance larger than R1's own and may be upstream. No variance value will ever admit it. ## How traffic is shared Implementations typically weight traffic in **inverse proportion to metric**. With A at 10,000 and B at 15,000, A gets about 15 shares to B's 10, a 3:2 split. Two consequences matter in production: - **The split is static.** With the default coefficients, load is not part of the metric, so the weights do not move when the slower path congests. A 3:2 split onto a link with a fraction of the capacity can saturate it. - **Flows, not packets, are spread.** The forwarding plane still hashes each flow to one next hop, the same mechanism as equal-cost multipath; one large flow lands on one path regardless of the weights. ## Operating and diagnosing it - **A path is missing from the routing table.** Check feasibility before touching variance. If the neighbour's RD is not below the FD, the fix is the topology or metrics, not a larger multiplier. - **Variance is local.** Each router applies its own setting; loop freedom still holds because every admitted next hop is downstream. - **It makes behaviour less predictable.** Flows hashed onto the slower path see more latency than flows on the faster one, so performance becomes uneven between users; use it where a backup link would otherwise sit idle and its capacity is understood. - **It is a differentiator in comparisons.** Unequal-cost sharing is often cited when EIGRP is weighed against OSPF; remember that it rides on implementation features, not the published specification.

  • An EIGRP router has variance set high but a path it expected to use is still absent; what do you check first?
    Whether that neighbour is a feasible successor at all: its reported distance must be strictly below the router's feasible distance. If it is not, no multiplier admits it. Then check the implementation's parallel-path limit and that the path's computed distance is inside the multiplier.
  • Why can EIGRP safely forward on a costlier path when a shortest-path-only protocol cannot?
    Because a feasible successor is proven downstream: it reports a distance lower than this router's own best, so it cannot be reaching the destination through this router. A protocol without such a check has no proof that a non-shortest next hop will not hand the packet back.

saying these in an interview costs you the question

  • Variance is defined in the EIGRP specification, RFC 7868.
  • Raising variance high enough admits any path in the topology table.
  • A path inside the variance multiplier is used even if it is not a feasible successor.
  • Unequal-cost traffic is split evenly across the admitted paths.
  • The variance split adapts automatically when the slower link congests.