OSPF · · 8 min read

OSPF Neighbor States Explained (With Packet Exchange Examples)

OSPF Neighbor States Explained (With Packet Exchange Examples)

The 8 OSPF Neighbor States

1. Down

What it means:
No Hello packets have been received from the neighbor. This is the starting state.

What's happening:

What you'll see:
You usually won't see "Down" in show ip ospf neighbor because down neighbors aren't listed. The absence of a neighbor means it's in the Down state.

Next state: Init (when the first Hello is received)


2. Init

What it means:
A Hello packet has been received from the neighbor, but this router's Router ID is not yet listed in the neighbor's Hello packet.

What's happening:

Why you see this state:

What you'll see:

Router# show ip ospf neighbor
Neighbor ID     Pri   State           Dead Time   Address         Interface
192.168.1.2     1     INIT/DROTHER    00:00:33    192.168.1.2     Gi0/0

Troubleshooting:
If a neighbor is stuck in Init, there's one-way communication. Check:

Next state: 2-Way

Learn more: OSPF Neighbors Not Forming Troubleshooting (Article 18)


3. 2-Way

What it means:
Bidirectional communication has been established. Each router sees its own Router ID in the other's Hello packet.

What's happening:

Why this state is important:
On Ethernet, not all neighbors will progress past 2-Way. Only the DR and BDR will form full adjacencies with all routers. Regular routers (called "DROthers") stay at 2-Way with each other.

What you'll see:

Router# show ip ospf neighbor
Neighbor ID     Pri   State           Dead Time   Address         Interface
192.168.1.2     1     2WAY/DROTHER    00:00:34    192.168.1.2     Gi0/0

Key point:
2-Way is normal on multi-access networks if the router is not the DR or BDR. It's not normal on point-to-point links (it should quickly become Full).

Next state: ExStart (if forming full adjacency)


4. ExStart

What it means:
Routers are negotiating who will be the "master" and who will be the "slave" in the database exchange process.

What's happening:

Why it matters:
This state is usually very brief (milliseconds to a few seconds). If neighbors get stuck here, it's almost always an MTU mismatch.

What you'll see:

Router# show ip ospf neighbor
Neighbor ID     Pri   State           Dead Time   Address         Interface
192.168.1.2     1     EXSTART/DR      00:00:35    192.168.1.2     Gi0/0

Troubleshooting:
If stuck in ExStart, check for MTU mismatch:

Router# show interface gi0/0 | include MTU
  MTU 1500 bytes

Learn more: OSPF MTU Mismatch Troubleshooting (Article 20)

Next state: Exchange


5. Exchange

What it means:
Routers are exchanging Database Description (DBD) packets, which contain summaries of the LSAs in each router's LSDB.

What's happening:

Why it matters:
This is where routers figure out what LSAs they need to request.

What you'll see:

Router# show ip ospf neighbor
Neighbor ID     Pri   State           Dead Time   Address         Interface
192.168.1.2     1     EXCHANGE/BDR    00:00:36    192.168.1.2     Gi0/0

Troubleshooting:
If stuck in Exchange, suspect:

Next state: Loading (if missing LSAs) or Full (if LSDBs are identical)


6. Loading

What it means:
Routers are requesting and receiving missing LSAs.

What's happening:

Why it matters:
This is the state where LSDBs are synchronized.

What you'll see:

Router# show ip ospf neighbor
Neighbor ID     Pri   State           Dead Time   Address         Interface
192.168.1.2     1     LOADING/DR      00:00:37    192.168.1.2     Gi0/0

How long it lasts:
Usually very brief (seconds). In large networks with thousands of LSAs, it can take longer.

Next state: Full


7. Full

What it means:
The adjacency is fully formed. LSDBs are synchronized, and routers are exchanging LSA updates as needed.

What's happening:

Why it matters:
Full is the goal. This is what you want to see on all adjacencies (except DROther-to-DROther on multi-access networks).

What you'll see:

Router# show ip ospf neighbor
Neighbor ID     Pri   State           Dead Time   Address         Interface
192.168.1.2     1     FULL/DR         00:00:38    192.168.1.2     Gi0/0
192.168.1.3     1     FULL/BDR        00:00:34    192.168.1.3     Gi0/0
192.168.1.4     0     2WAY/DROTHER    00:00:39    192.168.1.4     Gi0/0

Key observations:


8. Attempt (Rare)

What it means:
Used only on NBMA (Non-Broadcast Multi-Access) networks when manually configured neighbors haven't responded.

What's happening:
The router is trying to send unicast Hellos to a manually configured neighbor, but hasn't received a response.

Where you'll see it:
Almost never, unless you're working with Frame Relay or manually configured NBMA neighbors.

What you'll see:

Router# show ip ospf neighbor
Neighbor ID     Pri   State           Dead Time   Address         Interface
10.1.1.2        1     ATTEMPT/DROTHER -           10.1.1.2        Serial0/0

OSPF Neighbor State Transition Summary

Here's the normal flow for a successful adjacency:

State What's Happening Packets Exchanged
Down No Hellos received None
Init Hello received, waiting for bidirectional Hello
2-Way Bidirectional communication established Hello
ExStart Master/slave negotiation Empty DBD (I, M, MS bits set)
Exchange LSA summaries exchanged DBD packets
Loading Missing LSAs requested LSR, LSU, LSAck
Full LSDBs synchronized Periodic Hellos, LSA updates

Point-to-Point Flow:

Down → Init → 2-Way → ExStart → Exchange → Loading → Full

Broadcast (Ethernet) Flow (DR/BDR):

Down → Init → 2-Way → ExStart → Exchange → Loading → Full

Broadcast (Ethernet) Flow (DROther-to-DROther):

Down → Init → 2-Way (STOPS HERE)

What "FULL/DR," "FULL/BDR," and "2WAY/DROTHER" Mean

When you run show ip ospf neighbor, you see two pieces of information in the State column:

Format: [State]/[Role]

Examples:

FULL/DR

FULL/BDR

2WAY/DROTHER

FULL/-


When to Expect Full Adjacencies vs 2-Way

Full Adjacencies Form:

✅ On point-to-point links (e.g., WAN serial links, GRE tunnels)
✅ Between all routers and the DR
✅ Between all routers and the BDR
✅ On point-to-multipoint networks

2-Way is Normal:

✅ Between DROthers on multi-access networks (Ethernet, etc.)

Example:
On an Ethernet segment with 5 routers:

Adjacencies:

This design reduces overhead. Without DR/BDR, 5 routers would need 10 full adjacencies (N × (N-1) / 2). With DR/BDR, only 8.

Learn more: OSPF DR and BDR Explained (Article 5)


Troubleshooting Stuck Neighbor States

Stuck in Init

Problem: One-way communication

Common causes:

How to verify:

Router# debug ip ospf adj
OSPF-1 ADJ Gi0/0: Rcv hello from 192.168.1.2 area 0
OSPF-1 ADJ Gi0/0: 2-Way communication to 192.168.1.2 on Gi0/0, state 2WAY

If you don't see "2-Way communication," the neighbor isn't seeing your Hellos.

Learn more: OSPF Neighbors Not Forming (Article 18)


Problem: Should progress to ExStart, but doesn't

Common causes:

How to check:

Router# show ip ospf interface gi0/0 | include Network Type
  Process ID 1, Router ID 10.0.0.1, Network Type BROADCAST

How to fix:

Router(config)# interface gi0/0
Router(config-if)# ip ospf network point-to-point

Learn more: OSPF Network Types Explained (Article 17)


Stuck in ExStart or Exchange

Problem: MTU mismatch

Common causes:

How to check:

Router# show interface gi0/0 | include MTU
  MTU 1500 bytes

How to fix (option 1):
Match MTU on both routers:

Router(config-if)# ip mtu 1500

How to fix (option 2):
Tell OSPF to ignore MTU:

Router(config-if)# ip ospf mtu-ignore

Learn more: OSPF MTU Mismatch Troubleshooting (Article 20)


Neighbors Flapping (Up/Down)

Problem: Adjacency forms, then drops, then forms again

Common causes:

How to check timers:

Router# show ip ospf interface gi0/0 | include Timer
  Timer intervals configured, Hello 10, Dead 40

How to check for duplicate Router ID:

Router# show ip ospf
%OSPF-4-DUP_RTRID1: Detected router with duplicate router ID 10.0.0.1

Learn more: OSPF Timers Explained (Article 16), Duplicate Router ID Troubleshooting (Article 22)


Monitoring Neighbor State Changes

See current neighbors

Router# show ip ospf neighbor

Watch neighbor state changes in real time

Router# debug ip ospf adj

Example output:

*Mar 17 12:34:56.789: OSPF-1 ADJ Gi0/0: Rcv hello from 192.168.1.2 area 0
*Mar 17 12:34:56.791: OSPF-1 ADJ Gi0/0: 2-Way communication to 192.168.1.2, state 2WAY
*Mar 17 12:34:56.795: OSPF-1 ADJ Gi0/0: Nbr 192.168.1.2 has larger Router ID
*Mar 17 12:34:56.796: OSPF-1 ADJ Gi0/0: Send DBD to 192.168.1.2 seq 0x123 opt 0x52 flag 0x7 len 32
*Mar 17 12:34:56.801: OSPF-1 ADJ Gi0/0: Rcv DBD from 192.168.1.2 seq 0x456 opt 0x52 flag 0x7 len 32 state EXSTART
*Mar 17 12:34:56.802: OSPF-1 ADJ Gi0/0: NBR Negotiation Done. We are the SLAVE
*Mar 17 12:34:56.850: OSPF-1 ADJ Gi0/0: Loading Done, state FULL

Turn off debug:

Router# undebug all

⚠️ Warning: debug commands generate CPU-intensive output. Use carefully in production.


Summary: Neighbor State Checklist

Now you know:

8 OSPF neighbor states and what each means
Normal state progression from Down to Full
When 2-Way is normal (DROthers on Ethernet)
When Full is expected (point-to-point, DR/BDR adjacencies)
Common stuck states and their causes (Init, ExStart, Exchange)
How to troubleshoot state issues with show and debug commands

Next Step:
Understanding neighbor states is half the battle. The other half is understanding why DR and BDR exist. Read OSPF DR and BDR Explained next.


Screenshot Suggestions:

  1. Topology with 4 routers on Ethernet showing which neighbors reach Full vs 2-Way
  2. show ip ospf neighbor output with annotations explaining State/Role
  3. debug ip ospf adj output showing state transitions
  4. Flowchart: Down → Init → 2-Way → ExStart → Exchange → Loading → Full

Internal Links:

Read next

© 2025 Ping Labz. All rights reserved.