EIGRP Reference
Enhanced Interior Gateway Routing Protocol — an advanced distance-vector (hybrid) IGP that uses the DUAL algorithm for loop-free, fast-converging routing. Originally Cisco-proprietary, now an open standard (RFC 7868).
Key Characteristics
| Property | Value |
|---|---|
| Type | Advanced Distance-Vector (Hybrid) IGP |
| Algorithm | DUAL (Diffusing Update Algorithm) |
| Protocol Number | IP 88 |
| Admin Distance (Internal) | 90 |
| Admin Distance (External) | 170 |
| Admin Distance (Summary) | 5 |
| Multicast Address | 224.0.0.10 |
| Transport | RTP (Reliable Transport Protocol — EIGRP’s own, not the media RTP) |
| Authentication | MD5, SHA-256 (named mode) |
| Standards | RFC 7868 (informational) |
| Supports | IPv4, IPv6 (via separate instances or address-family in named mode) |
EIGRP vs OSPF Quick Comparison
| Property | EIGRP | OSPF |
|---|---|---|
| Type | Distance-Vector (with link-state traits) | Link-State |
| Convergence | Fast (feasible successor = instant failover) | SPF recalculation required |
| CPU/Memory | Lower (no full topology map) | Higher (full LSDB per area) |
| Scalability | Good with stub routing | Excellent with areas |
| Multi-Vendor | Limited (historically Cisco-only) | Universal |
| Metric | Composite (bandwidth + delay by default) | Cost (bandwidth-based) |
| Loop Prevention | DUAL Feasibility Condition | SPF algorithm |
| Equal-Cost Load Balancing | Yes | Yes |
| Unequal-Cost Load Balancing | Yes (variance command) | No |
Packet Types
| Type | Name | Purpose | Reliable? |
|---|---|---|---|
| 1 | Hello | Discover and maintain neighbors | No |
| 2 | Update | Send route information (full or partial) | Yes (requires ACK) |
| 3 | Query | Ask neighbors for a route when successor is lost | Yes (requires ACK) |
| 4 | Reply | Response to a Query with route info or unreachable | Yes (requires ACK) |
| 5 | ACK | Acknowledge receipt of a reliable packet | N/A |
Hello packets are always multicast (224.0.0.10) on broadcast/multipoint and unicast on point-to-point.
Update packets are sent as multicast when a new neighbor comes up (full update) and unicast for partial updates triggered by topology changes.
Default Timers
| Interface Type | Hello Interval | Hold Time |
|---|---|---|
| Broadcast (Ethernet, etc.) | 5 seconds | 15 seconds (3x Hello) |
| Low-speed (T1 and below / multipoint) | 60 seconds | 180 seconds (3x Hello) |
| Point-to-Point (serial, tunnel) | 5 seconds | 15 seconds |
| Other Timer | Default | Purpose |
|---|---|---|
| Active Timer | 3 minutes | Max time a route stays in Active state before Stuck-in-Active (SIA) |
| SIA Timer (Named Mode) | 90 seconds | Half the active timer — sends SIA-Query to check if neighbor is still working |
Hold time does not have to match between neighbors (unlike OSPF). Each router independently declares how long the other should wait.
Metric Calculation
Classic Metric Formula
Metric = 256 * [(K1 * BW) + (K2 * BW)/(256 - Load) + (K3 * Delay)] * [K5/(K4 + Reliability)]
Default K-Values (Simplified)
With defaults (K1=1, K2=0, K3=1, K4=0, K5=0), the formula simplifies to:
Metric = 256 * (BW + Delay)
Where:
BW = 10^7 / minimum bandwidth (kbps) along the path
Delay = sum of delays along the path (in tens of microseconds)
| K-Value | Component | Default | Meaning |
|---|---|---|---|
| K1 | Bandwidth | 1 (enabled) | Minimum bandwidth along the path |
| K2 | Load | 0 (disabled) | Interface load — disabled by default (unstable) |
| K3 | Delay | 1 (enabled) | Cumulative delay along the path |
| K4 | Reliability | 0 (disabled) | Link reliability — disabled by default (unstable) |
| K5 | Reliability | 0 (disabled) | Additional reliability factor |
K-values must match between neighbors or the adjacency will not form.
Wide Metrics (Named Mode)
Classic metrics max out at 4,294,967,295 (32-bit) — not granular enough for high-speed links (10G, 40G, 100G all calculate the same metric).
| Property | Classic | Wide (Named Mode) |
|---|---|---|
| Metric Width | 32-bit | 64-bit |
| Delay Granularity | Tens of microseconds | Picoseconds |
| Reference Bandwidth | 10^7 kbps | 10^7 * 65536 |
| Differentiate 10G vs 40G? | No | Yes |
DUAL Concepts
| Term | Definition |
|---|---|
| Feasible Distance (FD) | The best (lowest) metric to a destination from the local router’s perspective. This is the metric of the current best path. |
| Reported Distance (RD) | The metric to a destination as reported by a neighbor (also called Advertised Distance). This is the neighbor’s own best metric to the destination. |
| Successor | The neighbor providing the best path (lowest FD) to a destination. This is the active next-hop. |
| Feasible Successor (FS) | A backup neighbor whose Reported Distance is less than the current Feasible Distance. Pre-validated as loop-free — instant failover. |
| Feasibility Condition | RD of neighbor < FD of current successor. If this is true, the neighbor is a Feasible Successor. |
| Passive State | Normal operation — the route has a successor and is stable. |
| Active State | Successor lost, no feasible successor available — DUAL sends Queries to find a new path. |
Why the Feasibility Condition Prevents Loops
If a neighbor’s distance to the destination (its RD) is less than your current best distance (your FD), then the neighbor cannot be routing through you — it already has a shorter path. This guarantees a loop-free alternate without needing a full topology recalculation.
DUAL Convergence Flow
Route goes down
│
├─ Feasible Successor exists?
│ ├─ YES → Instant failover (stays Passive)
│ │ New Successor = former FS
│ │ Sub-second convergence
│ │
│ └─ NO → Go Active
│ Send Query to all neighbors
│ Wait for Reply from every neighbor
│ │
│ ├─ All Replies received
│ │ └─ New best path found → Install, go Passive
│ │
│ └─ Active Timer expires (3 min)
│ └─ Stuck-in-Active (SIA)
│ └─ Neighbor relationship reset
Named Mode vs Classic Mode
Named mode (introduced in IOS 15.0(1)M) consolidates all EIGRP configuration under a single hierarchical structure.
| Feature | Classic Mode | Named Mode |
|---|---|---|
| Config Location | Under router eigrp <ASN> + interface-level | Under router eigrp <name> with sub-modes |
| IPv4 + IPv6 | Separate process for each | Single process, address-family sub-mode |
| Wide Metrics | Not supported | Supported (64-bit) |
| SHA-256 Auth | Not supported | Supported |
| Per-Interface Config | Under the interface | Under af-interface within address-family |
Classic Mode Example
router eigrp 100
network 10.0.0.0 0.0.0.255
no auto-summary
interface GigabitEthernet0/0
ip hello-interval eigrp 100 5
ip hold-time eigrp 100 15
Named Mode Example
router eigrp MYNET
address-family ipv4 unicast autonomous-system 100
network 10.0.0.0 0.0.0.255
af-interface GigabitEthernet0/0
hello-interval 5
hold-time 15
exit-af-interface
topology base
exit-af-topology
exit-address-family
Stub Routing
Stub routing limits the Query scope — stub routers will not be sent Queries (they answer with an immediate Reply of “unreachable”). This dramatically improves convergence in hub-and-spoke designs.
| Stub Type | What the Stub Advertises |
|---|---|
| connected | Directly connected networks only |
| static | Redistributed static routes |
| summary | Summary routes |
| receive-only | Nothing — only receives routes (most restrictive) |
| redistributed | Redistributed routes from other protocols |
Default: eigrp stub connected summary
Use case: Branch routers behind a single WAN link — they have no alternate paths, so Querying them is wasteful and slows convergence.
Unequal-Cost Load Balancing
EIGRP is unique in supporting load balancing across paths with different metrics using the variance command.
| Concept | Description |
|---|---|
| Variance | Multiplier applied to the FD. Any Feasible Successor with a metric ≤ FD * variance is eligible for traffic. |
| Traffic Share | Traffic is distributed inversely proportional to metric — better paths get more traffic. |
| Requirement | The alternate path must be a Feasible Successor (passes the Feasibility Condition). Variance alone is not enough. |
Example: FD = 1000, Variance = 2. Any Feasible Successor with metric ≤ 2000 is used for load balancing.
Troubleshooting
| Symptom | Likely Cause | What to Check |
|---|---|---|
| Neighbor not forming | K-value mismatch, AS number mismatch, auth mismatch | show eigrp protocols — verify K-values and ASN match on both sides |
| Neighbor flapping | Unstable link, Hello/Hold timer issues, CPU overload | Interface error counters, hold time vs actual delivery time |
| Stuck-in-Active (SIA) | Neighbor not responding to Query within Active Timer (3 min) | Query scope too broad (use stub routing), unidirectional link, CPU overload on queried router |
| Suboptimal path | Feasible Successor chosen over better path that fails FC | Check RD vs FD — the better path may not meet the Feasibility Condition |
| Routes not redistributed | Missing redistribute command or route-map filtering | show route-map, show ip protocols — verify redistribution config |
| Metric mismatch | K-value mismatch between neighbors | show eigrp protocols — if K-values differ, adjacency won’t form |
| High CPU from DUAL | Excessive Queries due to large topology change | Summarization, stub routing, and limiting redistribution reduce Query scope |