Q1. What are OSPF packets? What do they do?
Answer: There are 5 OSPF packets:
Hello: Discover neighbors.
DD (Data Description): Exchange LSDB catalog (LSA headers).
Request: Ask neighbor to send LSA that I don't have.
Update: Send LSA requested by neighbors.
Ack: Tell Update sending router that I have received your Update.
Q2: What are neighbor states? What do they do?
Answer: There are 7 states:
Down. Neighbor is gone. E.g. neighbor is down, stops running OSPF, or is just initialized.
Init: The node has a one-way relationship with a neighbor. It receives a Hello from the neighbor.
2-way. The node has a bidirectional relationship with a neighbor. It has received a Hello from the neighbor and the Hello's neighbor list contains my name.
ExStart. Two neighbors negotiate Master-Slave relationship before exchanging LSA.
Exchange: Exchange LSDB catalogs with neighbors and find out which LSA is missing.
Loading. Ask a neighbor to send LSAs that I don't have.
Full: Two neighbors have the same LSDB. They have the same knowledge of the topology.
Note: See the companion simulation to relate how routers change states when receiving packets.
Q3. How to groups 9 neighbor into some meaningful stages?
Answer. These states can be classified into 4 stages:
- Discover neighbors. Down, Init, 2-way. Use Hello.
- Determine Master-Slave: ExStart, Exchange. Use DD.
- Find out which LSA to exchange: Loading. Use DD, Request.
- Synchronize LSDB: Full Adjacency. Use Update, Ack.
Q4. What is Master-Slave relationship for neighbors?
Answer: When two neighbors are ready to exchange LSA catalogs, they need to use a sequence number to tag LSA catalog exchange. The first job is to decide the sequence number. Two neighbors exchange DD to indicate their Router ID. The one with the higher Router ID wins and chooses a sequence number.
Note. In the companion simulation (External link), you can click DD to see its content.
Q5. Why neighbors need to use a sequence number to track LSA catalog exchange?
Answer: Sequence numbers are used to track LSA catalog transaction sessions. A router may have a large LSA catalog that does fit into one DD packet. This router may have several neighbors to exchange LSA catalog at the same time.
Q6. Does OSPF use TCP to provide reliable transmission of LSA?
Answer: No. OSPF uses Request-Update-Ack to ensure reliable transmission of LSA.
Q7. Why doesn't OSPF use TCP to transfer LSA?
Answer: TCP is designed to transmit large chunk of data across a congested network. Its goal is to adapt to network congestion and avoid packet losses due to router queue full. It is costly to set up a TCP sessions. An OSPF router transmits LSA to directly connected neighbors. There is no network congestion is involved between sender and receiver nodes. Using a light weight send-ack reliable transmission method is sufficient.
This article is the FAQ of an interactive simulation: OSPF Neighbor state. It visualizes topology, packets, router state changes. It listed under External links.
External links for network simulation:
1. OSPF Simulation: Neighbor State (This article): http://www.visualland.net/view.php?cid=915&protocol=OSPF&title=1.5%20Neighbor%20State&ctype=1
2. More network protocol simulation: http://www.visualland.net/