OSPF用IP报文直接封装协议报文,协议号是89.



OSPF分为5种报文:Hello报文,DD报文,LSR报文,LSU报文,LSAck报文。



它们具有相同的报文头,长度均为24字节。



(1)version:8bit,代表OSPF的版本号,对于OSPFv2来说,其值为2.



(2)type:8bit,代表OSPF报文的类型。1代表hello报文,2代表DD报文,3代表LSR报文,4代表LSU报文,5代表LSack报文。



(3)Packet length,16bit,OSPF报文的总长度,包括报文头在内,单位是字节。



(4)Router ID,32bit,发送该报文的路由器标识。



(5)Area ID,32bit,发送该报文的所属区域。
(6)Checksum,16bit,包含除了认证字段的整个报文的校验和。



(7)Autype:16bit,代表验证类型。0代表不验证,1代表简单验证,2代表MD5验证。



(8)Authentication,64bit,其数值根据验证类型而定。当验证类型为0时未作任何定义;类型为1时此字段为密码信息;类型为2时此字段包含KeyID、MD5验证数据长度和序列号的信息。



Hello报文:



最常用的一种报文,其作用为建立和维护邻接关系,周期性的在使能了OSPF的接口上发送。报文内容包括一些定时器的数值、DR、BDR以及自己已知的邻居。下面是除了上面介绍的报文头下面的Hello报文独有部分。



(1)Network Mask:32bit,发送hello报文的接口所在网络掩码。



(2)hellointerval:16bit,发送hello报文的时间间隔。默认为10秒。



(3)Options:8bit:E:允许Flood AS-external-LS AS;MC:转发IP组播报文;N/P:处理Type-7 LSAs;DC:处理按需链路。



(4)RTr Pri:8bit,DR优先级。默认为1.
(5)RouterDeadInterval:32bit,失效时间。如果在此时间内没有收到邻居发来的Hello报文,则认为邻居失效。默认为30秒。



(6)Designated Router:32bit,DR的接口地址。
(7)Backup Designated Router:32bit,BDR的接口地址。



(8)Neighbor:32bit,邻居,以Router ID标识。



在同一网段上的路由器,其Hellointerval和RouterDeadInterval必须分别一致,否则不能称为邻居关系。



在广播链路上:Hello报文每hellointerval发送往组播地址。



在虚连接链路上:hello报文以单播形式每hellointerval发送到对端。



在P2P和P2MP链路:Hello报文每Hellointerval发送往组播地址。



在NBMA链路上,Hello报文以单播发送。



DD报文:



两台路由器在邻接关系初始化时,用DD报文(Database Description Packet)来描述自己的LSDB,进行数据库的同步。



(1)Interface MTU:16bit,在不分片的情况下,此接口最大可发出的IP报文长度。
(2)Options:8bit,E:允许Flood AS-external-LS AS;MC:转发IP组播报文;N/P:处理Type-7 LSAs;DC:处理按需链路。



(3)I:1bit,当发送连续多个DD报文时,如果这是第一个DD报文,则置为1,否则置为0.



(4)M:1bit,当发送连续多个DD报文时,如果这是最后一个DD报文,则置为0,否则置为1.



(5)M/S:1bit,当两台OSPF路由器交换DD报文时,首先需要确定双方的主从关系,RouterID大的一方会称为Master。当值为1时表示发送方为Master。



(6)DD Sequence number:32bit,DD报文序列号。主从双方利用序列号来保证DD报文传输的可靠性和完整性。



LSR报文:



两台路由器互相交换过DD报文之后,知道对端的路由器有哪些LSA是本地的LSDB多缺少的和哪些LSA是已经失效的,这时需要发送LSR(Link state Request)报文向对方请求所需的LSA。



(1)LS type:32bit,LSA的类型号。
(2)Link State ID:32bit,根据LSA中的LS Type和LSA description在路由域中描述一个LSA。



(3)Advertising Router:32bit,产生此LSA的路由器的RouterID。



LSU报文:



用来向对端的路由器发送所需要的LSA,内容是多条LSA的集合。



(1)Number of LSAs:32bit,LSA的数量。



LSAck报文:



用来对接收到的LSU报文进行确认。



(1)LSAs Headers:通过LSA的头部信息确认收到的该LSA。