1. OSPF报文头
主要字段的解释如下:
Version:OSPF 的版本号。对于OSPFv2 来说,其值为2。
Type:OSPF 报文的类型。数值从1 到5,分别对应Hello 报文、DD 报文、LSR 报文、LSU报文和LSAck 报文。
Packet length:OSPF 报文的总长度,包括报文头在内,单位为字节。
AuType:验证类型。可分为不验证、简单验证和MD5 验证,其值分别为0、1、2。
Authentication:其数值根据验证类型而定。当验证类型为0 时未作定义,为1 时此字段为密码信息,类型为2 时此字段包括Key ID、MD5 验证数据长度和序列号的信息。
2. Hello报文
主要字段解释如下:
Network Mask:发送Hello 报文的接口所在网络的掩码。
HelloInterval:发送Hello 报文的时间间隔。如果相邻两台路由器的Hello 间隔时间不同,则不能建立邻居关系。
Rtr Pri:DR 优先级。如果设置为0,则路由器不能成为DR/BDR。
RouterDeadInterval:失效时间。如果在此时间内未收到邻居发来的Hello 报文,则认为邻居失效。如果相邻两台路由器的失效时间不同,则不能建立邻居关系。
3. DD报文
两台路由器进行数据库同步时,用DD 报文来描述自己的LSDB,内容包括LSDB 中每一条LSA 的Header(LSA 的Header 可以唯一标识一条LSA)。LSA Header 只占一条LSA 的整个数据量的一小部分,这样可以减少路由器之间的协议报文流量,对端路由器根据LSA Header 就可以判断出是否已有这条LSA。
主要字段的解释如下:
Interface MTU:在不分片的情况下,此接口最大可发出的IP 报文长度。
I(Initial):当发送连续多个DD 报文时,如果这是第一个DD 报文,则置为1,否则置为0。
M(More):当发送连续多个DD 报文时,如果这是最后一个DD 报文,则置为0。否则置为1,表示后面还有其他的DD 报文。
MS(Master/Slave):当两台OSPF 路由器交换DD 报文时,首先需要确定双方的主从关系,Router ID 大的一方会成为Master。当值为1 时表示发送方为Master。
DD Sequence Number:DD 报文序列号,由Master 方规定起始序列号,每发送一个DD 报文序列号加1,Slave 方使用Master 的序列号作为确认。主从双方利用序列号来保证DD 报文传输的可靠性和完整性。
4. LSR报文
两台路由器互相交换过 DD 报文之后,知道对端的路由器有哪些LSA 是本地的LSDB 所缺少的,这时需要发送LSR 报文向对方请求所需的LSA。内容包括所需要的LSA 的摘要。
主要字段解释如下:
LS type:LSA 的类型号。例如Type1 表示Router LSA。
Link State ID:即LSA 头格式中的字段,根据LSA 的类型而定。
Advertising Router:产生此LSA 的路由器的Router ID。
5. LSU报文
用来向对端路由器发送所需要的 LSA,内容是多条LSA(全部内容)的集合。
6. LSAck报文
用来对接收到的 LSU 报文进行确认。内容是需要确认的LSA 的Header(一个LSAck 报文可对多个LSA 进行确认)。