OSPF adjacency: the states, and where it really stops
Down, Init, 2-Way, ExStart, Exchange, Loading, Full. Which state it is stuck in tells you which thing to check, and the mapping is nearly one-to-one.
Two OSPF routers go through seven states before they exchange routes. When something is wrong they stop in one of them, and which one is a diagnosis.
The states, and what each one proves
- Down — nothing heard. The interface is not running OSPF, or hellos are
- Init — a hello arrived, but it did not contain our router ID. One
- 2-Way — each has seen itself in the other's hello. On a broadcast
- ExStart — negotiating who starts the database exchange, using the
- Exchange — swapping database descriptions.
- Loading — asking for the LSAs they are missing.
- Full — the databases match. This is the only state that means working.
R1# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
10.0.0.2 1 FULL/DR 00:00:34 10.1.12.2 Gi0/0
Stuck in Init
The hello is arriving and the reply is not getting back, or is being ignored. Check that the hello and dead timers match, that the area number matches, and that the subnet masks on the two interfaces agree. A /24 on one side and a /30 on the other means each believes the other is on a different network, and neither will list the other.
Stuck in ExStart or Exchange
Almost always MTU. The database description packet carries the sender's MTU, and a router that is offered a larger MTU than it can accept refuses to go further — silently, from the other side's point of view. It is the single most common OSPF fault in the field and it does not look like an MTU problem at all.
R1(config-if)# ip mtu 1500
Or, if the two genuinely differ and you cannot change them,
ip ospf mtu-ignore on both — which is a decision, not a fix, and should be
written down somewhere.
Stuck in 2-Way, and fine
On a broadcast network only the DR and BDR go to Full with everyone. Two routers that are both DROTHER sit at 2-Way for ever and that is the design. If you want full adjacency between two routers on a shared segment, make the segment point-to-point:
R1(config-if)# ip ospf network point-to-point
Which also skips the DR election entirely, and is what most people want on a routed link between two routers.
Authentication
A mismatch here keeps you at Down, because the hello is dropped before it is
processed. debug ip ospf adj will say so; nothing in show will.
Join the discussion
Replies, likes and bookmarks live in the community half, which needs a free account. Writing here is free too, and everything is reviewed before it is published.
Open this in the communityEverything publishedHow this works