1.9.b EIGRP Neighbor Relationships and Authentication¶
Blueprint 1.9.b: Troubleshoot EIGRP (classic and named mode): neighbor relationship and authentication
- How neighbors are discovered and how reliable delivery (RTP) works
- The parameters that must match, and the ones that do not have to
- Reading
show ip eigrp neighborsand the neighbor-change log messages - MD5 authentication with key chains (classic and named mode)
- HMAC-SHA-256 authentication (named mode)
- Common failure modes: passive interfaces, ACLs, static neighbors, timers, duplicate router IDs
When an EIGRP ticket starts with "a route is missing", the first question is always whether the neighbor that should advertise it is up. Most adjacency faults leave a clear trace in show ip eigrp neighbors, the %DUAL-5-NBRCHANGE log message, or a short debug eigrp packets session. This page teaches you to read those three sources.
How an adjacency forms¶
EIGRP runs directly over IP as protocol 88. Hellos go to 224.0.0.10 (IPv4) or FF02::A (IPv6) every 5 seconds on most links. When a router hears a hello that passes all the checks below, it adds the sender to its neighbor table and immediately sends it a full set of routes in unicast update packets. After that, only changes are sent.
| Packet | Opcode | Delivery | Purpose |
|---|---|---|---|
| Update | 1 | Reliable, unicast during startup, multicast for later changes | Carry routes |
| Query | 3 | Reliable | Ask neighbors for an alternate path when a route goes active |
| Reply | 4 | Reliable, unicast | Answer a query |
| Hello | 5 | Unreliable, multicast | Discover and keep neighbors |
| Ack | 5 (hello with no data) | Unreliable, unicast | Acknowledge a reliable packet |
| SIA-Query, SIA-Reply | 10, 11 | Reliable | Check on a neighbor during a long active period |
The Reliable Transport Protocol (RTP) tracks every reliable packet. If a neighbor does not acknowledge, the packet is retransmitted as unicast, waiting the RTO shown in the neighbor table between attempts. After 16 retries the neighbor is reset with the reason "retry limit exceeded". That message almost always means hellos (multicast) get through but unicast does not.
graph TB
S["Neighbor missing"] --> L{"Interface up/up and<br/>addressed?"}
L -- No --> L1["Fix Layer 1, 2 or 3 first"]
L -- Yes --> E{"Interface in<br/>show ip eigrp interfaces?"}
E -- No --> E1["network statement, passive,<br/>af-interface shutdown (IPv6)"]
E -- Yes --> H{"Hellos received?<br/>debug eigrp packets hello"}
H -- No --> H1["ACL, filter, static neighbor<br/>on one side only, Layer 2 issue"]
H -- Yes --> M{"Log or debug<br/>gives a reason?"}
M -- "K-value mismatch" --> M1["metric weights"]
M -- "auth message" --> M2["key ID, key string,<br/>mode, password"]
M -- "not on common subnet" --> M3["primary IP addresses"]
M -- "retry limit exceeded" --> M4["unicast blocked:<br/>ACL, MTU path, one-way link"]
What must match¶
| Parameter | Must match? | Symptom when wrong |
|---|---|---|
| AS number | Yes | No neighbor and no log message. Hellos from another AS are silently ignored. |
| K values | Yes | Log: Neighbor 10.1.2.2 (GigabitEthernet0/1) is down: K-value mismatch |
| Primary IPv4 subnet | Yes (IPv4 only) | Log or debug reports the neighbor is "not on common subnet" |
| Authentication | Yes | No neighbor. debug eigrp packets shows ignored packets with an authentication reason |
| Hello and hold timers | No | Can cause flapping, see below |
| Router ID | Does not have to differ for adjacency | Duplicate IDs make each router drop the other's external routes |
| MTU | Not checked | Adjacency forms; large updates may fail if the path cannot carry them |
| Named vs classic mode | No | They interoperate if the checks above pass |
Timers: why mismatched values still matter¶
Each router advertises its own hold time in its hellos. The neighbor uses that value to decide how long to wait. If R2 is changed to hello-interval 20 but its hold time stays at 15, R1 waits only 15 seconds for a hello that arrives every 20 seconds, so R1 drops R2 with "holding time expired", re-forms the adjacency, and drops it again. R2 sees nothing wrong with R1. Fix it on R2 by setting the hold time to at least three times the hello interval. When reading show ip eigrp neighbors, the Hold column counts down from the neighbor's advertised hold time. A value that counts down well past 10 before resetting shows a slow hello.
Router ID¶
The EIGRP router ID is used for loop prevention on external routes. If two routers share a router ID, each one ignores external routes that claim to originate from "itself". Internal routes and the adjacency are unaffected, so the symptom is very specific: redistributed prefixes from one router never appear on the other. show ip eigrp topology <prefix> on the originating router shows the "Originating router" field, and show ip protocols shows each router's ID.
Exam trap
EIGRP does not require hello and hold timers to match, unlike OSPF's hello and dead timers. An exhibit with different timers on two neighbors is only a fault if the hold time is shorter than the hello interval on the sending side. Do not pick "timer mismatch" as the cause of a missing adjacency.
Other adjacency killers¶
- Passive interface. No hellos are sent or processed, so no neighbor forms, but the interface's subnet is still advertised. In named mode:
af-interface Gi0/1thenpassive-interface. - Static neighbors.
neighbor 10.1.2.2 GigabitEthernet0/1makes EIGRP send unicast hellos on that interface and stop processing multicast hellos there. If only one side has theneighborcommand, the other side's multicast hellos are ignored and the adjacency fails. Every router on that segment that needs to peer must be configured with static neighbors. - ACLs. An inbound ACL must permit
eigrpfrom the neighbor's address and to 224.0.0.10. An ACL that permits only the multicast destination lets hellos through but drops unicast updates and acks, which produces "retry limit exceeded" and a neighbor that flaps every couple of minutes. - Secondary addresses. Hellos are sourced from the primary address. If R1's primary is 10.1.2.1/30 and R2's primary is 192.168.12.2/24, they are not neighbors even if they share a secondary subnet.
Reading the neighbor table¶
R1# show ip eigrp neighbors
EIGRP-IPv4 VR(CORP) Address-Family Neighbors for AS(100)
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
2 10.1.5.5 Gi0/3 13 00:42:10 4 100 0 31
1 10.1.3.3 Gi0/2 11 00:00:47 1180 5000 2 44
0 10.1.2.2 Gi0/1 12 00:42:16 2 100 0 52
| Column | Meaning | What a fault looks like |
|---|---|---|
| H | Order in which neighbors came up | |
| Hold | Seconds left before the neighbor is declared down | Counting below 10 regularly means hellos are being lost |
| Uptime | Time since the adjacency formed | A short uptime on one neighbor among long ones means it is flapping |
| SRTT | Smoothed round-trip time for reliable packets | A large value means slow acks |
| RTO | Retransmission timeout | Grows toward 5000 ms when acks go missing |
| Q Cnt | Reliable packets waiting to be sent or acknowledged | Should be 0. A value that stays above 0 means unicast is not getting through |
| Seq Num | Last sequence number received from the neighbor |
In the output, 10.1.3.3 has an uptime under a minute, an SRTT over a second, RTO at its 5000 ms ceiling and two packets queued. That is the signature of a neighbor whose hellos arrive but whose acks do not, and it will reset with "retry limit exceeded".
The log messages give you the reason directly. The most useful reasons are:
Reason in %DUAL-5-NBRCHANGE |
Meaning |
|---|---|
holding time expired |
No hello within the hold time: link loss, filter, or a slow hello from the neighbor |
retry limit exceeded |
Reliable packets not acknowledged after 16 retries |
K-value mismatch |
Metric weights differ |
Interface PEER-TERMINATION received |
The neighbor shut its process or interface down, or its configuration changed |
peer restarted |
The neighbor process restarted |
stuck in active |
The neighbor did not answer a query in time (see DUAL) |
route configuration changed |
Local configuration change (for example, authentication or a network statement) |
Authentication¶
EIGRP authentication protects against forged neighbors and route injection. Every EIGRP packet carries the authentication data, so a mismatch stops the adjacency entirely. It never partially works.
| MD5 | HMAC-SHA-256 | |
|---|---|---|
| Classic mode | Yes, with a key chain | No |
| Named mode | Yes, with a key chain | Yes, with a password under af-interface |
| Key rotation with lifetimes | Yes (key chain send-lifetime and accept-lifetime) |
Not with the inline password form |
| Must match | Key ID and key string | Password |
MD5 with a key chain¶
The sender puts the key ID in the packet along with the MD5 digest. The receiver looks up the same key ID in its own key chain and checks the digest. So both the key number and the key string must match. The key-chain name is local and does not have to match.
When a key chain holds several keys, the router sends with the first valid key, meaning the lowest key ID whose send-lifetime covers the current time, and accepts any key whose accept-lifetime is valid. Lifetimes depend on the clock, so key rollover without NTP is a classic cause of a whole region losing adjacencies at midnight.
Both commands are needed in every form. A mode with no key chain, or a key chain with no mode, does not authenticate.
HMAC-SHA-256 (named mode only)¶
router eigrp CORP
address-family ipv4 unicast autonomous-system 100
af-interface default
authentication mode hmac-sha-256 0 C0reS3cret
exit-af-interface
af-interface GigabitEthernet0/3
authentication mode md5 ! the specific interface overrides default
authentication key-chain BRANCH-KEYS
exit-af-interface
af-interface default applies to every interface in the address family. A specific af-interface block overrides it for that interface. The 0 means the password that follows is in clear text. With service password-encryption it is displayed encrypted.
Exam trap
If an exhibit shows ip authentication mode eigrp 100 hmac-sha-256 on an interface, that command does not exist in classic mode. HMAC-SHA-256 needs named mode. Equally, authentication mode under an af-interface of the IPv4 address family does nothing for the IPv6 address family. Each AF is authenticated separately.
Verifying authentication¶
R1# show ip eigrp interfaces detail GigabitEthernet0/3
EIGRP-IPv4 VR(CORP) Address-Family Interfaces for AS(100)
Xmit Queue PeerQ Mean Pacing Time Multicast Pending
Interface Peers Un/Reliable Un/Reliable SRTT Un/Reliable Flow Timer Routes
Gi0/3 1 0/0 0/0 4 0/0 50 0
Hello-interval is 5, Hold-time is 15
Split-horizon is enabled
Next xmit serial <none>
Packetized sent/expedited: 3/0
Hello's sent/expedited: 512/2
Un/reliable mcasts: 0/3 Un/reliable ucasts: 4/3
Mcast exceptions: 0 CR packets: 0 ACKs suppressed: 0
Retransmissions sent: 0 Out-of-sequence rcvd: 0
Topology-ids on interface - 0
Authentication mode is md5, key-chain is "BRANCH-KEYS"
R1# show key chain
Key-chain BRANCH-KEYS:
key 1 -- text "Br4nchKey1"
accept lifetime (always valid) - (always valid) [valid now]
send lifetime (always valid) - (always valid) [valid now]
When authentication fails, debug eigrp packets (filter it with debug eigrp packets hello on a busy router) prints one line per rejected packet, for example:
"Invalid authentication" means both sides authenticate but the key ID, key string or password differs. When only one side is configured, the reason reads "missing authentication" or "authentication off or key-chain missing", depending on which side you are on and the release. A key chain name that is referenced but does not exist produces the key-chain-missing message on the local router.
Exam trap
show running-config shows a key-string exactly as typed, including a trailing space if one was entered. Two key strings that look identical in an exhibit can differ by a trailing space. If everything else matches and the debug still says "invalid authentication", re-enter the key string on both sides.
Lab: three neighbor tickets¶
Use the module baseline from the address-family lab. Reload flash:baseline.cfg before each ticket. Prove each fix with show ip eigrp neighbors and the route the ticket names.
graph LR
R5["R5 branch"] -- "Gi0/1 MD5 key 1" --- R1["R1"]
R1 -- "Gi0/1 HMAC-SHA-256" --- R2["R2"]
R1 -- "Gi0/2 HMAC-SHA-256" --- R3["R3"]
R2 -- "HMAC" --- R4["R4"]
R3 -- "HMAC" --- R4
Ticket 3: "The branch dropped off the network after a security change on R1."
Inject on R1:
router eigrp CORP
address-family ipv4 unicast autonomous-system 100
af-interface GigabitEthernet0/3
authentication key-chain BRANCH-KEY
show ip eigrp neighborson R1: 10.1.5.5 is missing. The IPv6 neighbor FE80::5 is still up, so the link works.show ip eigrp interfaces detail Gi0/3on R1 reportskey-chain is "BRANCH-KEY".show key chainlists only BRANCH-KEYS. The referenced chain does not exist, so R1 cannot build or check digests.- Fix:
authentication key-chain BRANCH-KEYS, then confirm 10.5.50.0/24 is back in R1's routing table.
Ticket 4: "Since the core password change, R1 has no backup path to the data centre."
Inject on R3:
router eigrp CORP
address-family ipv4 unicast autonomous-system 100
af-interface GigabitEthernet0/1
authentication mode hmac-sha-256 0 C0reS3cret2026
- On R1,
show ip route 10.4.40.0lists only the path through 10.1.2.2.show ip eigrp neighborshas no 10.1.3.3. - On R3,
show ip eigrp neighborsstill shows R4, so R3's EIGRP process is healthy. debug eigrp packets helloon R1 showsignored packet from 10.1.3.3, opcode = 5 (invalid authentication).show running-config | section router eigrpon R3 shows the specificaf-interface GigabitEthernet0/1block overriding the default password. Remove it withno af-interface GigabitEthernet0/1or set the password back, and confirm both paths to 10.4.40.0/24 return on R1.
Ticket 5: "The R1 to R2 adjacency keeps bouncing every few minutes."
Inject on R2:
ip access-list extended WAN-IN
permit eigrp any host 224.0.0.10
permit icmp any any
deny ip any any log
!
interface GigabitEthernet0/1
ip access-group WAN-IN in
- On R1,
show ip eigrp neighborsshows 10.1.2.2 with a short uptime, RTO near 5000 and a Q Cnt above zero. - The log on both routers cycles through
is up: new adjacencyandis down: retry limit exceeded. - R2's ACL counters (
show ip access-lists WAN-IN) increase on thedeny ip any any logline, and the log entries show protocol 88 packets from 10.1.2.1 to 10.1.2.2. - Fix by permitting EIGRP from the link subnet to any destination, for example
permit eigrp 10.1.2.0 0.0.0.3 anyabove the deny. Watch Q Cnt return to 0 and uptime keep climbing.
Quick check¶
R1 uses key chain A with key 1 and string cisco. R2 uses key chain B with key 1 and string cisco. Do they authenticate?
Yes. Key-chain names are local. The key ID and the key string match, so the digests match.
An adjacency shows an uptime that never exceeds about 80 seconds, Q Cnt of 1 and RTO 5000. What category of fault is this?
Hellos are getting through but reliable unicast packets are not acknowledged, so the neighbor is reset with "retry limit exceeded". Look for an ACL that permits only multicast EIGRP, a one-way link, or a path that cannot carry full-size update packets.
Two routers redistribute static routes into EIGRP. Each one sees the other's internal routes but not its external routes. Everything else is normal. What do you check?
The router IDs. A router discards external routes whose originating router ID equals its own, so a duplicate EIGRP router ID hides external routes only.
References¶
- IP Routing: EIGRP Configuration Guide, Cisco IOS XE, chapters "EIGRP Message Authentication" and "EIGRP HMAC-SHA-256 Authentication" (search on cisco.com)
- Troubleshooting EIGRP neighbor issues, Cisco tech note (search on cisco.com for "EIGRP neighbor troubleshooting")
- RFC 7868: Cisco's Enhanced Interior Gateway Routing Protocol (EIGRP)
- Cisco Live On-Demand Library: search "troubleshooting EIGRP"
Unlock the full question banks and cram sheets
A free account opens every question bank, the timed practice exams, the printable cram sheets, all the simulations and the lab files. Without one you see a 5-question sample of each.
No card needed. Study tips by email are optional and off unless you tick the box. Your address is never sold or shared. Privacy policy ยท Terms
Signed in as . Your account
You're on the free account, so lessons after the first module, question banks, exams and cram sheets show a sample. See Track Pass and All-Access
Also from NetManager Systems: NetManager, network monitoring for multi-vendor networks. Try the NetManager, NetDiag, PCAP Analyzer and OpsDash demos: every new account gets a free 7-day read-only login to each.