Guide

How to Configure EIGRP on Cisco (Step by Step)

EIGRP is Cisco's advanced distance-vector IGP — faster to configure than OSPF, with quick convergence and none of the area-design overhead, which is why it still shows up throughout the CCNA and CCNP blueprints. The whole config comes down to three moves: start the process with a matching AS number, advertise your networks, and turn off classful auto-summary. Here's the flow on Cisco IOS, the verify commands to trust it, and the handful of mistakes that quietly keep neighbors from forming — the kind of thing that's easy to read about and harder to get right until you've typed it into a real router and checked your config against a working answer key.

Step 1 — Start the EIGRP process

EIGRP runs as a process tied to an autonomous-system (AS) number. Unlike an OSPF process ID, this number is NOT locally significant — it must match exactly on every router you want to peer with, or the two sides will never form a neighbor relationship. Pick one AS number and use it on every router in the domain.

Enter router configuration mode for that process before you configure anything else.

R1(config)# router eigrp 100
R2(config)# router eigrp 100

Step 2 — Advertise networks and disable auto-summary

Under the EIGRP process, a network statement does two things: it enables EIGRP on any local interface whose IP falls inside that range, and it advertises that interface's subnet to neighbors. The wildcard mask is the inverse of the subnet mask — 0.0.0.3 for a /30, 0.0.0.255 for a /24 — and it has to actually cover the interface's IP, or that interface silently never comes up in EIGRP.

Also disable auto-summary. Older IOS defaults to summarizing routes at classful network boundaries, which breaks reachability the moment your subnets are discontiguous (split across routers by another major network). Turning it off makes EIGRP advertise the actual subnets you configured, not a rolled-up classful summary.

R1(config)# router eigrp 100
R1(config-router)# network 10.0.12.0 0.0.0.3
R1(config-router)# network 192.168.1.0 0.0.0.255
R1(config-router)# no auto-summary

Step 3 — Verify neighbors and routes

Check for a formed adjacency before you trust anything downstream of it — no neighbor means no routes, no matter how correct your network statements look. show ip eigrp neighbors should list the peer's IP and interface with an uptime that's actually counting up.

Once the neighbor is up, confirm the routes landed and the process is configured the way you intended.

R1# show ip eigrp neighbors
R1# show ip route eigrp
R1# show ip protocols

A Complete Two-Router Example You Can Type Out

Reading the steps is one thing; watching two routers actually peer is where it clicks. Picture R1 and R2 joined by a point-to-point WAN link on 10.0.12.0/30 — R1 owns .1, R2 owns .2 — with each router also hosting a LAN: 192.168.1.0/24 behind R1 and 192.168.2.0/24 behind R2. A /30 is the right mask for the link because it yields exactly two usable host addresses (2^2 − 2), one for each router, with nothing wasted.

The config below is deliberately symmetric. Both routers use AS 100, both advertise their WAN link with a 0.0.0.3 wildcard (the inverse of a /30) and their LAN with a 0.0.0.255 wildcard, and both disable auto-summary. Notice that each network statement's wildcard genuinely covers the interface IP it is meant to enable — that is the single most common place a beginner's EIGRP silently fails to bring an interface into the process.

Once both sides are configured, the verification tells the whole story. In 'show ip eigrp neighbors' the Uptime column counts upward, which is your proof the adjacency actually formed and stayed up rather than bouncing. In the routing table, the leading 'D' marks an EIGRP-learned route, and the pair in brackets — [90/3072] — is the administrative distance (90, EIGRP internal) followed by the composite metric. If that D route for the far LAN is present and a ping to 192.168.2.1 from R1 succeeds, the control plane and data plane agree and the lab is genuinely working.

! R1 — WAN link plus its LAN
R1(config)# interface GigabitEthernet0/0
R1(config-if)#  ip address 10.0.12.1 255.255.255.252
R1(config-if)#  no shutdown
R1(config-if)# interface GigabitEthernet0/1
R1(config-if)#  ip address 192.168.1.1 255.255.255.0
R1(config-if)#  no shutdown
R1(config-if)# router eigrp 100
R1(config-router)#  network 10.0.12.0 0.0.0.3
R1(config-router)#  network 192.168.1.0 0.0.0.255
R1(config-router)#  no auto-summary
!
! R2 — mirror image on the far end
R2(config)# interface GigabitEthernet0/0
R2(config-if)#  ip address 10.0.12.2 255.255.255.252
R2(config-if)#  no shutdown
R2(config-if)# interface GigabitEthernet0/1
R2(config-if)#  ip address 192.168.2.1 255.255.255.0
R2(config-if)#  no shutdown
R2(config-if)# router eigrp 100
R2(config-router)#  network 10.0.12.0 0.0.0.3
R2(config-router)#  network 192.168.2.0 0.0.0.255
R2(config-router)#  no auto-summary
!
! Verify on R1
R1# show ip eigrp neighbors
EIGRP-IPv4 Neighbors for AS(100)
H   Address      Interface   Hold  Uptime    SRTT  RTO   Q  Seq
0   10.0.12.2    Gi0/0       13    00:04:12  8     100   0  6

R1# show ip route eigrp
D  192.168.2.0/24 [90/3072] via 10.0.12.2, 00:04:05, GigabitEthernet0/0

How EIGRP Actually Picks the Path: Metric, Feasible Distance, and the Topology Table

The number in brackets on an EIGRP route isn't magic — it comes from a formula. With the default K-values (K1 and K3 set to 1, K2/K4/K5 set to 0), the composite metric reduces to 256 × (10,000,000 ÷ minimum-bandwidth-in-Kbps + total-delay-in-tens-of-microseconds). Bandwidth is the lowest interface bandwidth anywhere along the path, and delay is cumulative across every outgoing interface. Because both routers must agree on those K-values for the math to be comparable, mismatched K-values are a real (if rare) reason two routers refuse to become neighbors — exactly the case where 'show ip protocols' earns its keep.

The 'show ip eigrp topology' output below makes the internals visible. For the far LAN you'll see two numbers in parentheses, like (3072/2816): the first is this router's own feasible distance (FD) to the destination through that neighbor, and the second is the neighbor's advertised or reported distance (RD). In this all-Gigabit example the neighbor's directly connected LAN costs 256 × (10 + 1) = 2816, and crossing one more Gigabit link adds another unit of delay to make the local FD 256 × (10 + 2) = 3072 — the same 3072 you saw in the routing table.

This is also where the feasibility condition lives, and understanding it demystifies EIGRP's fast convergence. A neighbor qualifies as a loop-free backup (a feasible successor) only when its reported distance is strictly lower than the current successor's feasible distance — RD < FD. That single inequality is why DUAL can promote a backup path in milliseconds without querying anyone: the router already proved, at the moment it learned the route, that the backup can't be pointing back through itself. When no neighbor meets that test, there is no feasible successor, and that is precisely the condition that forces a route active and can lead to the SIA behavior worth watching for in larger designs.

R1# show ip eigrp topology
EIGRP-IPv4 Topology Table for AS(100)/ID(192.168.1.1)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
       r - reply Status, s - sia Status

P 192.168.2.0/24, 1 successors, FD is 3072
        via 10.0.12.2 (3072/2816), GigabitEthernet0/0
P 10.0.12.0/30, 1 successors, FD is 2816
        via Connected, GigabitEthernet0/0
P 192.168.1.0/24, 1 successors, FD is 2816
        via Connected, GigabitEthernet0/1

! Reading it: FD 3072 is R1's best metric to 192.168.2.0/24;
! 2816 is R2's reported distance. A second neighbor would be a
! feasible successor only if ITS reported distance were < 3072.

Common problems (and the fix)

No neighbors at all: the AS numbers don't match between the two routers. This is the single most common cause — double-check `router eigrp <AS>` is identical on both sides.

An interface you expected to run EIGRP isn't advertised: the wildcard mask on your network statement doesn't actually cover that interface's IP. Recalculate it, or use the interface's exact host address with a 0.0.0.0 wildcard if you want to be precise.

Neighbors won't form even with a matching AS: check for mismatched K-values (metric weights) with `show ip protocols` — both routers must use the same K-value set — and check for mismatched EIGRP authentication if you've configured it.

Routes appear, then some disappear or take an unexpected path: auto-summary is still on somewhere in a discontiguous network, rolling multiple subnets into one classful advertisement. Confirm `no auto-summary` is set on every router.

An interface has a neighbor on paper but no hellos are ever seen: it's been set passive (directly, or via a blanket `passive-interface default`) and is suppressing EIGRP hellos. Remove it from the passive list, or explicitly enable it with `no passive-interface`.

Frequently asked questions

EIGRP vs OSPF — which should I actually use, and why does one win when both are running?

EIGRP has a lower administrative distance (90 for internal routes) than OSPF (110), so a router installs the EIGRP path when it learns the same prefix from both. EIGRP is a Cisco-designed advanced distance-vector protocol that builds its metric from bandwidth and delay and needs no area hierarchy, while OSPF is a link-state standard that uses cost and requires area design. EIGRP is now published as informational RFC 7868 but remains Cisco-centric in practice, so it is common on all-Cisco networks while OSPF is the safer pick in multivendor environments.

What's the difference between a successor and a feasible successor in EIGRP?

The successor is the neighbor offering the lowest total metric (feasible distance) to a destination, and its route is what gets installed in the routing table. A feasible successor is a pre-qualified backup neighbor whose reported distance to that destination is lower than the successor's feasible distance, which mathematically guarantees the backup is loop-free. If a feasible successor exists, DUAL fails over to it instantly; if none exists, EIGRP must go active and query neighbors before it can recompute a path.

Why does my EIGRP route show as 'Active' or get flagged Stuck-in-Active (SIA)?

A prefix goes active when its successor fails and there is no feasible successor, forcing the router to query neighbors for an alternate path. If a queried neighbor doesn't reply within the active timer (three minutes by default) the route is declared Stuck-in-Active and that neighbor adjacency is torn down. Typical causes are unidirectional or flapping links, high CPU or congestion on a distant router, or an oversized query domain, so route summarization and EIGRP stub configuration are the usual fixes because they bound how far queries travel.

Can EIGRP load-balance over unequal-cost paths?

Yes, and it is the only IGP that can, using the variance command under the routing process. Variance takes a multiplier from 1 to 128 (default 1); any feasible successor whose feasible distance is less than variance times the successor's distance gets installed, and traffic is shared roughly in proportion to the metrics. The candidate path must still satisfy the feasibility condition, so raising variance alone will never use a path that isn't already a loop-free feasible successor.

Is 'no auto-summary' even needed anymore, and does EIGRP named mode change any of this?

On very old IOS, EIGRP enabled auto-summary by default, but modern releases (roughly IOS 15 onward) ship with it disabled, so confirm the actual state with 'show ip protocols' rather than assuming either way. EIGRP also has a newer named configuration mode (router eigrp NAME with an address-family) that groups IPv4, IPv6, and authentication settings under one hierarchy, where the AS number is set per address-family and still must match neighbors. The classic 'router eigrp 100' style shown here remains fully valid and is what most CCNA material tests.

Practice this on graded Cisco labs

Reading is step one — build EIGRP on real Cisco IOS and grade your own config, or try a free sample lab first.