OSPF Packet Types
OSPF sends packets to neighbors to establish and maintain adjacencies, send and receive requests, ensure reliable delivery of Link-state advertisements (LSAs) between neighbors, and to describe link-state databases. Link-state databases are generated from all the LSAs that an area router sends and receives. The link-state database is then used to calculate the shortest-path spanning tree, using the Shortest Path First (SPF) algorithm.
There are 5 different types of OSPF packets. (1-byte)
1- Hello packet
2- Database Descriptor packet
3- Link State Request packet
4- Link State Update packet
5- Link State Acknowledgment packet
Before we discuss different packet types in detail, let’s understand the OSPF packet header.
All OSPF packets share a common OSPF Header of 24-bytes. This header allows the receiving router to validate and process the packets. The format of the standard OSPF header is-
Version- 2 (1-byte)
Type– It specifies the type of OSPF packet.
Packet Length- Total length of the OSPF packet (2-bytes)
Router ID- The Router ID of the advertising router
Area ID- 32-bit Area ID assigned to the interface sending the OSPF packet (4-bytes)
Checksum- Standard IP Checksum of OSPF packet excluding Authentication field (2-bytes)
AuType- Authentication Type (2-bytes)
0- No Password
1- Plain-text password
2- MD5 authentication
Authentication- Authentication data to verify the packet’s integrity (8-bytes)
Hello packets are OSPF packet type 1. These packets are multicast periodically to 126.96.36.199 multicast address on all interfaces (unicast on virtual-links) enabling dynamic discovery of neighbors and maintain neighbor relationships. On broadcast and NBMA networks, Hello packets are used to elect DR and BDR.
Network Mask- Subnet mask of the advertising OSPF interface. For unnumbered point-to-point interfaces and virtual-links, it is set to 0.0.0.0 (4-bytes)
HelloInterval- Interval at which Hello packets are advertised. By default, 10 seconds for the point-to-point link and 30 seconds for NBMA/Broadcast links (2-bytes)
Options- The local router advertises its capabilities in this field. (1-byte)
Rtr Pri- The Priority of the local router. It is used for DR/BDR election. If set to 0, the router is ineligible for the election. (1-byte)
RouterDeadInterval- The Dead Interval as requested by the advertising router. By default, 40 seconds for the point-to-point link and 120 seconds for NBMA/Broadcast links (4-bytes)
Designated Router- The IP address of the current DR. Set to 0.0.0.0 if no DR is elected yet. (4-bytes)
Backup Designated Router- The IP address of the current BDR. Set to 0.0.0.0 if no BDR is elected yet. (4-bytes)
Neighbor- The Router IDs of all OSPF routers from whom a valid Hello packet has been seen on the network.
The following is a sample packet capture of an OSPF Hello packet.
The fields Area ID, HelloInterval, RouterDeadInterval, and Authentication information (AuType & Authentication) should match on neighbors to form an adjacency. For example, when the Hello interval is changed on a router, the receiving router does not accept the Hello packet due to a mismatch of Hello timer. The following message is displayed.
Database Descriptor packet
For the link-state routing protocol, it is required that the link-state databases for all routers remain synchronized. The synchronization starts as soon as the adjacency is formed between neighbors. OSPF uses Database Descriptor (DBD) packets for this purpose.
The DBD packets are OSPF packet type 2. The OSPF router summarizes the local database and the DBD packets carry a set of LSAs belonging to the database. When a neighbor sees an LSA that is more recent than its database copy, it requests this newer LSA from the neighbor.
Interface MTU- Contains the MTU value of the outgoing interface. For virtual-links, this field is set to 0x0000. (2-bytes)
Options- Same as Options field in a Hello packet (1-byte)
I- Initial Bit. This indicates this is the first in the series of DBD packets (1-bit)
M- More bit. Indicates whether the DBD packet is the last in the series of packets. The last packet has a value of 0, while all previous packets have a value of 1. (1-bit)
MS- Master/ Slave bit. Master=1, Slave=0 (1-bit)
DD Sequence Number- Used to sequence the collection of DBD packets. The initial value should be unique. The sequence number then increments by 1 until the complete database description has been sent. (4-bytes)
LSA Header- This field contains the LSA headers describing the local router’s database. (variable length)
During the DBD packet exchange, a Master/ Slave relationship is established between the neighbors. The router with the highest Router ID becomes the Master and initiates DBD packet exchange. The Interface MTU should match on neighbors otherwise FULL adjacency is not reached.
The following packet capture shows a sample OSPF database. The DBD packets contain the LSA header which contains the summary of this database i.e the Type of LSA, Link State ID, Advertising Router, etc. The neighbors then request further information about these LSAs using Link State Request packets.
Link State Request packet
The Link State Request (LSR) packet is an OSPF packet Type 3. After the DBD packets exchange process, the router may find it does not have an up-to-date database. The LSR packet is used to request pieces of the neighbor database that is more up-to-date.
LS Type- Type of LSA requested (4-bytes)
Link State ID- Depends upon the type of LSA (4-bytes)
Advertising Router- Router ID of the requesting router (4-bytes)The following packet capture shows the LSR sent for Router-LSA (Type-1) to an OSPF neighbor after the DBD packet exchange process is over.
Link State Update packet
Link State Update (LSU) packets are OSPF packet type 4. These packets implement the flooding of LSAs. Each LSA contains routing, metric, and topology information to describe a portion of the OSPF network. The local router advertises LSA within an LSU packet to its neighboring routers. Also, the local router advertises the LSU packet with information in response to an LSR packet.
# LSAs- Number of LSAs within an LSU packet (4-bytes)
LSAs- The complete LSA is encoded within this field. The LSU may contain single or multiple LSAs.
The following output shows what the router responds to LSR.