03/10/2026
# π΄ OSPF Neighbor Stuck in EXSTART? Donβt Start by Checking Hello Timers!
=====================================================
One of the most common OSPF troubleshooting mistakes is checking **area ID, authentication, Hello timers, and Dead timers** when the neighbor is already stuck in **EXSTART**.
The OSPF neighbor state itself gives you an important clue about **where the adjacency process is failing**.
# # # πΉ First, understand the OSPF process
=============================
The adjacency generally progresses through:
**DOWN β INIT β 2-WAY β EXSTART β EXCHANGE β LOADING β FULL**
If the neighbor has already reached **EXSTART**, both routers have already exchanged Hellos and established enough communication to begin database synchronization.
So instead of asking:
> β "Why aren't the Hellos working?"
Start asking:
> β
"Why can't the routers successfully exchange Database Description packets?"
# # π₯ What happens in EXSTART?
==========================
During **EXSTART**, the routers negotiate the master/slave relationship and begin exchanging **Database Description (DBD)** packets.
This is where things become interesting.
OSPF Hellos are relatively small and multicast, while DBD packets can be considerably larger and are exchanged as **unicast traffic**.
That means a network can successfully pass OSPF Hellos while still having a problem with DBD packets.
# # # Example:
**R1**
Gi0/0
IP MTU: 1500
**R2**
Tunnel0 (GRE)
IP MTU: 1400
The OSPF Hellos may successfully pass.
But when larger DBD packets are exchanged, the MTU difference can prevent the adjacency from progressing to **FULL**.
# π οΈ My troubleshooting order for OSPF EXSTART
# # # 1οΈβ£ Check the actual neighbor state
show ip ospf neighbor
Look for:
EXSTART
EXCHANGE
FULL
Also pay attention to whether the neighbor is continuously moving between:
EXSTART β EXCHANGE
A repeated state transition can indicate that the DBD exchange is failing or being restarted.
# # # 2οΈβ£ Check the interface MTU
On both routers:
show ip interface | include MTU
For example:
R1 β MTU 1500
R2 β MTU 1400
This is one of the first things I would investigate.
Why?
Because OSPF includes the interface MTU information in the **Database Description packet**.
If a router receives a DBD advertising an MTU larger than what its interface can receive, the DBD can be rejected and the adjacency may remain stuck around **EXSTART/EXCHANGE**.
# β οΈ Pay special attention to tunnels
==========================
This problem becomes particularly interesting with:
- GRE tunnels
- IPsec tunnels
- DMVPN
- MPLS environments
- VPN overlays
- Firewalls
- Provider networks
Why?
Because encapsulation adds overhead.
For example:
Original packet
β
GRE encapsulation
β
Additional IP/GRE headers
β
Available MTU becomes smaller
So an interface may appear to support a certain MTU, while the actual path cannot carry a full-size packet without fragmentation or dropping it.
# 3οΈβ£ Test the actual path MTU
Don't stop at checking the interface configuration.
Test the path.
For example:
ping size 1500 df-bit
If 1500-byte packets fail, gradually reduce the size:
ping size 1400 df-bit
ping size 1380 df-bit
ping size 1360 df-bit
The goal is to discover the **largest packet size that can cross the path without fragmentation**.
This can expose:
- Tunnel overhead
- Incorrect tunnel MTU
- Provider MTU limitations
- Firewall filtering
- PMTUD problems
- Incorrect interface configuration
# 4οΈβ£ Check whether OSPF unicast traffic is being filtered
Remember:
**OSPF = IP Protocol 89**
Hellos may be getting through while other OSPF traffic is being affected by a security device or policy.
Check:
- ACLs
- Firewall policies
- CoPP
- Control-plane policing
- Security policies
- Intermediate devices
- Tunnel policies
The important question is:
> **Can the routers exchange the DBD packets successfully?**
# 5οΈβ£ Check for duplicate Router IDs
A duplicate OSPF Router ID can create extremely confusing adjacency behavior.
Check:
show ip ospf
and:
show ip ospf neighbor
Make sure every OSPF router has a **unique Router ID** within the OSPF domain.
A duplicate Router ID can cause adjacency instability and unexpected neighbor behavior.
# 6οΈβ£ Then use OSPF debugging
Only after checking the basics, move to debugging.
For example:
debug ip ospf adj
Watch the output for a short period.
Look for messages related to:
- DBD packets
- MTU mismatch
- Master/slave negotiation
- Sequence numbers
- Retransmissions
- Adjacency resets
And remember:
β οΈ **Don't leave debugging enabled unnecessarily on a production router.**
Disable it when finished:
undebug all
# π¨ What about `ip ospf mtu-ignore`?
You may see this command recommended:
ip ospf mtu-ignore
Yes, it can allow the adjacency to establish despite an MTU mismatch.
But there is an important distinction:
# # # Workaround β Root-cause fix
If the underlying path has an MTU problem, simply ignoring the OSPF MTU check can hide the real issue.
I would treat it as a **temporary workaround or controlled design decision**, not as the first troubleshooting step.
The better approach is to understand **why the MTUs don't match** and correct the underlying path/interface configuration.
# π§ The troubleshooting rule I teach
Don't troubleshoot OSPF randomly.
Use the **neighbor state as your starting point**.
# # # If you're in INIT:
Think about:
β‘οΈ Are Hellos being received correctly?
# # # If you're in 2-WAY:
Think about:
β‘οΈ Is this network type supposed to form a full adjacency?
# # # If you're stuck in EXSTART:
Think about:
β‘οΈ **DBD exchange, MTU, unicast delivery, Router ID, and packet handling.**
# # # If you're in EXCHANGE:
Think about:
β‘οΈ **DBD synchronization, sequence numbers, retransmissions, and MTU/path issues.**
# # # If you're in LOADING:
Think about:
β‘οΈ **LSR/LSU exchange and missing LSAs.**
# # π― The key takeaway
An OSPF neighbor stuck in **EXSTART** is not simply saying:
> "OSPF is broken."
It's giving you a clue:
> **"The Hello phase worked. Now investigate the Database Description exchange."**
That shift in thinking can save a lot of troubleshooting time.
**Check the state β identify the OSPF packet exchange at that stage β investigate what can prevent those packets from succeeding.**
That's much more effective than changing random OSPF parameters until the neighbor becomes FULL. π§
# # # π¬ Question for fellow network engineers:
**What is the most unusual OSPF EXSTART issue you've encountered in a production network?**
Was it an MTU mismatch, GRE/IPsec overhead, firewall filtering, duplicate Router ID, or something completely unexpected?
Share your experience in the comments. π