OSPF troubleshooting is operationally critical primarily when a fault does not present as a complete outage but as intermittent behavior: neighbor relationships remain stuck in an intermediate state, individual prefixes are missing, or the convergence (time until a stable routing state after a change) is significantly longer than expected. OSPF (Open Shortest Path First) is a link-state routing protocol: routers exchange state information (LSAs, Link-State Advertisements) and locally compute the shortest path from that. That exact mechanism provides very good diagnostic signals—if you proceed in a structured way.
This article is intended as a runbook: first safety rails (impact, rollback), then a clear verification sequence for neighbor relationships, LSAs/LSDB and convergence problems. Where commands are shown, they are deliberately generic: syntax differs by platform (Cisco IOS/IOS-XE, NX-OS, Juniper Junos, FRRouting, MikroTik, etc.), but the states, counters and cause patterns are largely identical in OSPF.
OSPF-Troubleshooting: 1) Before intervention: scope, risk and rollback strategy
Before you change „anything“ in OSPF, clarify three points: what is affected (scope), what is the potential impact, and how you will get back (rollback). OSPF often reacts to changes immediately; a wrongly set parameter can reset a neighbor relationship, reflood LSAs and thereby stress CPU/control plane—especially on central nodes.
Quickly narrow the scope
- Only one link / one neighbor? Then it is often interface-, MTU-, Auth- or timer-related.
- Multiple neighbors in an area? Then area type, filters, virtual links, network type or DR/BDR consensus are suspect.
- „Routes missing“ without a neighbor problem? Then more likely LSA types, summarization, filtering, Max-LSA, stub/NSSA logic or redistribution.
- Convergence slow with otherwise correct neighbor relationships: SPF/LSA throttling, LSA flapping, interface errors, CPU, or an oversized LSDB.
Rollback strategy (practical)
In OSPF operations it is proven practice to plan every change so it can be reverted without „major“ OSPF operations:
- Config backup (versioning, change reference, timestamp).
- One parameter per change (not Hello, Auth and network type at the same time).
- Maintenance window for potential neighbor resets (Auth/MTU/network-type/area change).
- Plan B: temporary static route, temporary cost adjustment (OSPF cost), or controlled shutdown/No-Shutdown of individual links – but deliberately as an intervention, not as „Try & Error“.
2) OSPF neighbor relationships: understand states and targeted tests
The OSPF neighbor states are your first compass. Important: depending on the network type not every adjacency is “FULL”. On broadcast and NBMA networks the adjacency to the DR/BDR (Designated Router / Backup Designated Router) is often the only one that is FULL; others remain at 2-WAY, which can be correct. On point-to-point links FULL between the two routers is normal.
The states and what they mean in operation
- DOWN: no Hello packets seen. Causes often L2/L3/ACL/multicast/interface down.
- INIT: Hellos received, but the local router ID is not echoed back in the Hello. Typical for unidirectional traffic or filters/ACLs.
- 2-WAY: bidirectional, but (on Broadcast/NBMA) not adjacent to the DR/BDR. Can be correct.
- EXSTART/EXCHANGE: database synchronization (DBD). Often MTU mismatch or faulty packet fragmentation/filtering.
- LOADING: LSR/LSU (Link State Request/Update) are in progress but not complete. Often LSA filtering, packet loss, MTU/fragmentation, or an overloaded control plane.
- FULL: LSDB synchronized (for the adjacency in question).
Troubleshooting sequence for “neighbor not becoming FULL”
Work from the outside in: first connectivity and the interface, then OSPF parameters, then LSDB/exchange.
Step A: Is L3 connectivity for OSPF possible at all?
OSPF uses IP protocol 89 (not TCP/UDP). On broadcast networks Hellos are sent to 224.0.0.5 (AllSPFRouters) and 224.0.0.6 (AllDRouters). On point-to-point it can also be multicast, depending on platform/network type. Firewalls, ACLs, security groups or CoPP (Control Plane Policing) must allow this.
Minimal capture approach (Linux-Host as tap/span analysis; routers often provide integrated packet-capture features):
# Auf einem Mirror-Port oder Capture-Host:
# OSPF-Protokoll 89 und Multicast-Ziele prüfen
sudo tcpdump -ni eth0 'ip proto 89 or (ip multicast and (host 224.0.0.5 or host 224.0.0.6))'What you want to see: regular Hello packets (default 10s on broadcast, 30s on NBMA – varies). If only one direction is visible, that corresponds to INIT (unidirectional). If nothing is visible at all: L2/VLAN, interface, or filters.
Step B: Do the “must-match” parameters align?
For an OSPF adjacency central parameters must match. Which exactly depends on the network type and feature set, but these are the classics:
- Area ID: both sides must be in the same OSPF area context (e.g. Area 0 as the backbone).
- Hello/Dead interval: must match, otherwise the neighbor ignores the Hellos.
- Network type (Broadcast, Point-to-Point, NBMA): affects DR/BDR election and adjacency expectations.
- Authentication: type (e.g. simple/MD5/HMAC depending on platform) and keys must match. Important: auth is often “silent” – wrong keys lead to Down/Init.
- Stub flag/area type: in Stub/NSSA areas area types must be consistent, otherwise the adjacency fails.
Operational pitfall: changes to the area type or to authentication often cause immediate neighbor resets. Plan this as an operational event (monitoring, maintenance window).
Step C: Properly investigate MTU mismatch
MTU mismatch is one of the most common reasons for EXSTART/EXCHANGE. OSPF negotiates packet sizes during database synchronization; if one side sends larger packets than the other accepts, you will see retransmits, exchange loops, or stuck states. This often occurs after VLAN/MPLS/tunnel changes when only one side had its L2 MTU adjusted.
- Indicator: Neighbor toggles between EXSTART and EXCHANGE or remains stuck there.
- Why: DBD/LSU packets are discarded or fragmented/blocked.
- Risk: a ‚quick fix‘ via MTU-Ignore can mask symptoms, but real fragmentation/path-MTU issues remain.
Operationally sensible: set the MTU consistently on both sides and, if needed, verify Path MTU along the path (e.g., for L3 port-channels, QinQ, GRE/IPsec, VXLAN underlay).
Step D: DR/BDR and network type as a source of errors
On broadcast or NBMA segments a DR/BDR is elected. That affects with whom a full adjacency is established. If you expect ‚all-to-all FULL‘, but you’re on a broadcast network with DR/BDR, 2-WAY to non-DR neighbors is normal. It becomes problematic when the DR/BDR continuously changes (flapping) or the DR is unreachable.
- Typical causes: an unstable L2 domain, packet loss, differing priorities, or gateway restarts.
- Impact: repeated LSDB synchronization, increased LSA flooding, convergence problems.
3) LSAs and LSDB: When routes are missing or appear ‚inconsistent‘
If neighbors are FULL but routes are missing or incorrectly weighted, LSAs and the Link-State Database (LSDB, the OSPF internal topology database) are the next focus. OSPF does not compute from ’nothing‘: if information is not present as an LSA in the LSDB, it cannot appear in the routing table.
LSA types in practice (brief and operational)
- Type 1 (Router-LSA): describes links of a router within an area. Basis for SPF.
- Type 2 (Network-LSA): generated by the DR on Broadcast/NBMA and describes the shared network segment.
- Type 3 (Summary-LSA): from ABRs (Area Border Routers) for summarized or forwarded networks between areas.
- Type 4 (ASBR-Summary): shows the path to an ASBR (Autonomous System Boundary Router) that injects external routes.
- Type 5 (External-LSA): external routes (redistribution), not allowed in stub areas.
- Type 7 (NSSA-External): external routes in NSSA areas; translated to Type 5 at the ABR.
Why this matters: for example, if you suddenly expect Type-5 External LSAs in a stub area, it is not ‚OSPF broken‘ but rather the design or the area definition does not match the expectation.
Diagnostic path: ‚Route missing‘ in five steps
- Is the prefix present in the LSDB? If not: check source/redistribution/ABR/filter.
- Is it present in the correct LSA type? External (Type 5/7) vs. internal (Type 1/3).
- Does it originate from the expected area? Check area design and ABR paths.
- Is it being installed? Administrative distance, RIB failure, route preference, or policy can prevent installation.
- Is it being re-advertised? Filters, summarization, NSSA translation, or Max-LSA/LSA-refresh issues.
For data collection it is helpful to create a standardized “show” collection per platform. Example (as a placeholder runbook; adapt the specific commands to your OS):
# Runbook: Daten sammeln (als Vorlage, Kommandos je nach Plattform ersetzen)
# 1) OSPF Nachbarn + Zustände
# 2) OSPF Interface-Details (Timer, Netztyp, MTU, Auth)
# 3) LSDB-Auszug: relevante LSA-Typen und betroffene Präfixe
# 4) Routingtabelle: Präfix vorhanden? über welchen Next-Hop?
# 5) Logs: Neighbor-Resets, Auth-Fehler, MTU/DBD-HinweiseTypical causes for missing or unexpected LSAs
- Area mismatch / incorrect area type: Stub/NSSA inconsistent, backbone design violated, virtual links not stable.
- OSPF filters or route policies: inbound or outbound filtering of summary/external LSAs (platform-dependent).
- Summarization: ABR summarizes; individual prefixes no longer appear granular. This is intentional, but can complicate troubleshooting.
- Redistribution issues: External routes are not injected (e.g. missing matching rules) or redistributed with the wrong type (E1/E2).
- Max-LSA / LSDB limits: Some platforms may drop neighbors or reject LSAs on LSDB overflow — relevant in large domains.
4) Convergence issues: when OSPF takes “too long” or appears unstable
Convergence is not just “routing eventually comes back”. In operations what matters is whether your applications (VoIP, ERP, VDI, storage, API gateways) are stable within defined seconds. OSPF convergence consists of several time components: event detection (dead timer or BFD), flooding of LSAs, SPF calculation, installation into the routing table and, if applicable, FIB programming in hardware.
First distinguish: slow vs. unstable
- Slow: after a link event it reproducibly takes “too long”, but then stabilizes.
- Unstable: neighbors flap, LSAs are constantly reflooded, routes change frequently.
Common causes for slow convergence
- Dead interval too high: event detection takes too long (classically 40s). Remedy: timer tuning or BFD (Bidirectional Forwarding Detection; fast liveness check below OSPF).
Common causes of unstable convergence (flapping)
- Physical: CRC errors, duplex/speed mismatch, unstable optics, fluctuating wireless/WAN links.
- ECMP/asymmetry: Traffic takes different paths, return paths are filtered (INIT symptom).
- DR/BDR changes on broadcast segments due to L2 instability or priority conflicts.
- Misconfiguration: mismatched timers, auth key rotation only on one side, MTU not adjusted everywhere after a change.
Measurement and observation strategy (monitoring-ready)
- Neighbor uptime and flap rate: Number of state transitions per hour/day.
- LSA churn: How many LSAs are newly generated/refreshed/retransmitted per unit time.
- SPF runs: Frequency and duration of SPF computations (if the platform provides metrics).
- Interface error rates: CRC, input drops, queue drops, optical power (for fiber).
- Event correlation: Link down/up, OSPF neighbor change, CPU spike, followed by application alarms.
For „Monitoraggio“ what matters is that you don’t just debug convergence once, but make it measurable on an ongoing basis:
If you only measure „ping is back“, you miss micro-interruptions that, for example, cause TCP reset storms or packet loss.
5) Practical checklists: quickly ensure you haven’t overlooked anything
Checklist A: Neighbor does not come up
- Interface up/up, correct VLAN/tagging/trunking
- IP addressing / subnet mask correct, no duplicate IP
- OSPF enabled on the correct interface (check passive-interface)
- Hello/dead timers match
- Area ID and area type match (stub/NSSA)
- Authentication: method + key/key ID consistent
- MTU consistent on both sides; fragmentation/PMTUD not blocked
- Network type consistent (p2p vs broadcast); DR/BDR behavior understood
- ACL/firewall/CoPP allows IP proto 89 and multicast
Checklist B: Neighbors FULL, but route missing
- Prefix present in LSDB? If not: source/redistribution/ABR/filter
- LSA type plausible (internal vs external; NSSA translation)
- Summarization on ABR active? Check expectations regarding detailed routes
- Routing table/RIB installed? Administrative distance/policy/recursive next hop
- Forwarding/FIB correct? (hardware programming, VRF context)
Checklist C: Convergence too slow
- Event detection: dead interval vs. BFD
- LSA flooding: packet loss, retransmits, interface errors
- SPF: CPU/memory, SPF throttling parameters, LSDB size
- Design: areas too large, too many ABRs/ASBRs, unnecessary redistribution
- Source of change: unstable links, flapping port channels, faulty optics
6) Implementation: typical fixes – and when they fail
In troubleshooting it’s tempting to apply „quick“ workarounds. Better is: isolate the cause, then apply a fix with a clear side-effect analysis.
Timer tuning and BFD
Timer tuning (reducing Hello/Dead) can speed up convergence, but increases sensitivity to jitter and short packet losses. BFD is often the cleaner option: it provides fast link/path detection while OSPF retains the topology logic. BFD can fail due to asymmetric paths, hardware offload bugs, or overly aggressive intervals in the WAN.
Resolving MTU and Path-MTU issues
The sustainable solution is consistency: identical MTU, identical encapsulation, and no blocking of ICMP if PMTUD (Path MTU Discovery) is used. „MTU Ignore“ can help short-term, but is risky: large LSUs or application traffic can still fragment or be dropped.
Streamline area design
Many convergence and LSA issues are consequences of design: oversized flooding domains, unnecessary externals, or unclear area boundaries. Clean Area-0 planning, limited redistribution and sensible summarization reduce LSA churn. This can fail for organizational reasons (change effort) or due to dependencies when applications expect „hard“ IP paths.
Stabilizing DR/BDR
If DR/BDR flapping is an issue, clear priorities and stable L2 segments help. In some designs, point-to-point (where possible) is easier to operate than large broadcast domains. This can fail if the L2 design (e.g., campus VLANs) cannot be changed readily.
7) Documentation and operational routine: turning troubleshooting into stability
OSPF problems recur when operational knowledge is not integrated into the process. Two simple building blocks have proven effective:
- Standardized diagnostic package: Which outputs do you collect during Neighbor-/LSA-/Convergence-Events? Where are they stored? Who analyzes them?
- Change guardrails: For auth-key rotation, MTU changes, area changes and redistribution there is a short runbook with before/after checks and rollback.
Also plan capacity limits: if the LSDB grows (sites, VRFs, new externals), not only memory requirements increase, but also CPU and flooding load. Early trend detection is more valuable here than a one-off „after the expansion everything was slow.“
Conclusion: OSPF problems become manageable with a fixed diagnostic sequence
OSPF troubleshooting becomes significantly easier if you consistently separate diagnosis into three levels: neighbor relationships (states and must-match parameters), LSAs/LSDB (is the information present at all and of the correct type?), and convergence (event detection, flooding, SPF, installation). With a clear runbook, reproducible captures and monitoring for flaps, LSA churn and interface errors you find causes faster — and avoid fixes that merely move symptoms.
OSPF neighbor relationships and OSPF LSAs are also important for this topic. This article places these aspects in a clear context and shows what matters in day-to-day operations.