8.1.7 OSPF数据包格式
OSPF的协议号为89,当OSPF数据包多播发生时,它们的TTL设置为1,,
1.数据包头部
所有的OSPF数据包都是由一个24个八位组字节的头部开始
版本version
OSPF的版本号,OSPF的版本号为2。
类型Type
跟在头部后面的数据包类型
数据包长度 Packet Length
OSPF数据包的长度,包括数据包头部的长度,以八位组字节计
路由器ID Router ID
始发路由器的ID
区域ID Area ID
始发数据包的路由器所在的区域
校验和Checksum
对整个数据包(包括包头)的标准IP校验和
认证类型(AuType)
正在使用的认证模式
认证 Authentication
Autype = 0 不检查这个字段,可以包含任何内容
Autype = 1 包含一个最长为64位的口令
Autype = 2 包含一个Key ID,认证数据长度,不减小的加密序列号
密钥ID Key ID
表示认证算法和创建消息摘要使用的安全密钥
加密序列号
不会减小的数字,用来防止重现***
2.Hello数据包
为了形成一种邻接关系,Hello数据包携带的参数必须和它的邻居保持一致
网络掩码Network Mask
发送数据包接口的网络掩码,如果掩码和接收数据包接口的网络掩码不匹配,数据包将被丢弃。
Hello时间间隔 Hello Interval
接口上Hello数据包的传送之间的时间间隔,是一个周期性的时间段,以秒来计
可选项 Option
用来确保邻居之间的兼容性问题
路由器优先级 Router Priority
用来做DR和BDR的选举,优先级为0,不参与选举
路由器无效时间间隔 Router Dead Interval
始发路由器在宣告路由无效之前,将要等待从邻居路由器发出的Hello数据包的时长
指定路由器DR
如果没有DR(未选出或网络类型不需要DR),则此字段设置为0.0.0.0
备份指定路由器BDR
如果没有DBR,此字段设置为0.0.0.0
邻居Neighbor
如果始发路由器在过去的一个Router DeadInterval时间内,从网络上已经收到来自它的某些路由器有效的Hello数据包,那么将会在这个字段中列出所有邻居的ID
3.数据库描述数据包
数据库描述数据包的一个主要目的是描述始发路由器数据库中一些或全部的LSA信息,以便接受路由器能够确定所接收到LSA在其数据库中是否有一个匹配的LSA,此操作只需要列出LSA的头部就可以完成。
接口MTU Interface MTU
在数据包不分段的情况下,始发路由器接口可以发送的最大IP数据包的大小,以八位组字节计。
可选项 Option
包含在数据库描述数据包中,使路由器可以选择不转发某些LSA到那些没有必要的支持能力的邻居路由器
报文下一个八位组字节的前5位没有被使用,被设置为00000b
*I位,初始位Initial bit
当发送的是一系列数据库描述数据包中的最初一个数据包时,该位设置为1,后续的数据库描述数据包将把该位设置为0,I-bit为0
*M位,后继位More bit
当发送的数据包还不是一系列数据库描述数据包中的最后一个数据包时,该位设置为1
*MS位,主从位 Master/Slave bit
在数据库同步过程中,该位设置为1,用来指明数据库描述数据包的路由器是一台主路由器,从路由器设置为0,MS-bit = 0
*数据库描述序列号 DD sequence Number
在数据库同步过程中,用来确保路由器能够收到完整的数据库描述数据包序列
*LSA头部 LSA Header
4.链路状态请求数据包
链路状态类型 Link State Type
链路状态类型号,用来表示一个LSA的类型
链路状态ID Link State ID
通告路由器 Advertising Router
始发LSA通告的路由器的路由器ID
5.链路状态更新数据包
OSPF数据包是不能离开发起它们的网络,一个链路状态数据包可以携带一个或多个LSA,但是这些LSA只能传送到始发它们的路由器的直连邻居,接收LSA的邻居路由器将负责在新的LS更新数据包中重新封装相关的LSA,从而进一步泛洪扩散到它自己的邻居
LSA数量 Number of LSA
此数据包中包含的LSA的数量
链路状态通告 LSA
6.链路状态确认数据包
用来进行LSA可靠的泛洪扩散