问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

OSPF协议报文格式详解

创作时间:
作者:
@小白创作中心

OSPF协议报文格式详解

引用
1
来源
1.
https://info.support.huawei.com/hedex/api/pages/EDOC1100277650/AZM1016J/04/resources/vrp/feature_0003998103.html

OSPF(开放最短路径优先)协议使用IP报文直接封装协议报文,协议号为89。OSPF协议主要包括5种类型的报文:Hello报文、DD(Database Description)报文、LSR(Link State Request)报文、LSU(Link State Update)报文和LSAck(Link State Acknowledgment)报文。

报文头格式

OSPF的五种报文具有相同的报文头格式,长度为24字节。如图1所示。

图1 报文头格式

表1 OSPF报文头格式字段解释

字段名
长度
含义
Version
8比特
OSPF的版本号。对于OSPFv2,其值为2。
Type
8比特
OSPF报文的类型:1:Hello报文。2:DD报文。3:LSR报文。4:LSU报文。5:LSAck报文。
Packet length
16比特
OSPF报文的总长度,包括报文头在内,单位为字节。
Router ID
32比特
发送该报文的路由器标识。
Area ID
32比特
发送该报文的路由器的所属区域。
Checksum
16比特
包含除了认证字段的整个报文的校验和。
AuType
16比特
验证类型:0:不验证。1:简单认证。2:密文认证。说明:MD5算法安全性低,存在安全风险。
Authentication
64比特
其数值根据验证类型而定:0:不对此字段作定义。1:此字段为密码信息。2:此字段包括Key ID、MD5验证数据长度和序列号的信息。

MD5验证数据添加在OSPF报文后面,不包含在Authenticaiton字段中。

Hello报文

Hello报文是最常用的一种报文,主要用于建立和维护邻接关系,周期性地在启用了OSPF的接口上发送。报文内容包括一些定时器的数值、DR(Designated Router)、BDR(Backup Designated Router)以及已知的邻居。Hello报文格式如图2所示。

图2 Hello报文格式

表2 Hello报文格式字段解释

字段名
长度
含义
Network Mask
32比特
发送Hello报文的接口所在网络的掩码。
HelloInterval
16比特
发送Hello报文的时间间隔。
Options
8比特
可选项:E:允许Flood AS-External-LSAs。MC:转发IP组播报文。N/P:处理Type-7 LSAs。DC:处理按需链路。
Rtr Pri
8比特
DR优先级。默认为1。说明:如果设置为0,则路由器不能参与DR或BDR的选举。
RouterDeadInterval
32比特
失效时间。如果在此时间内未收到邻居发来的Hello报文,则认为邻居失效。
Designated Router
32比特
DR的接口地址。
Backup Designated Router
32比特
BDR的接口地址。
Neighbor
32比特
邻居,以Router ID标识。

Hello报文在不同网络中的发送地址类型、发送时间间隔类型和时间间隔缺省值不同,参见表3。

表3 Hello报文的属性

网络类型
发送地址类型
发送时间间隔类型
时间间隔缺省值
广播
组播地址
HelloInterval
缺省情况下,接口发送Hello报文的时间间隔的值为10秒。
NBMA
单播地址
DR、BDR、有能力成为DR的路由器时,发送时间间隔为HelloInterval。邻居的状态为Down时,发送时间间隔为Pollinterval,其它情况为HelloInterval。
缺省情况下,接口发送Hello报文的时间间隔的值为30秒。缺省情况下,接口发送Pollinterval间隔为120秒。
P2P
组播地址
HelloInterval
缺省情况下,接口发送Hello报文的时间间隔的值为10秒。
P2MP
组播地址
HelloInterval
缺省情况下,接口发送Hello报文的时间间隔的值为30秒。

在同一网段上的路由器,其HelloInterval和RouterDeadInterval必须分别一致,否则不能形成邻居关系。对于NBMA网络,还存在PollInterval属性,该属性也必须两端一致。

DD报文

两台路由器在邻接关系初始化时,用DD报文描述本端路由器的LSDB(链路状态数据库),进行数据库的同步。报文内容包括LSDB中每一条LSA(链路状态通告)的Header(LSA的Header可以唯一标识一条LSA)。LSA Header只占一条LSA的整个数据量的一小部分,这样可以减少路由器之间的协议报文流量,对端路由器根据LSA Header就可以判断出是否已有这条LSA。在两台路由器交换DD报文的过程中,一台为Master,另一台为Slave。由Master规定起始序列号,每发送一个DD报文序列号加1,Slave方使用Master的序列号作为确认。

DD报文格式如图3所示。

图3 DD报文格式

表4 DD报文格式字段解释

字段名
长度
含义
Interface MTU
16比特
在不分片的情况下,此接口最大可发出的IP报文长度。
Options
8比特
可选项:E:允许Flood AS-External-LSAs。MC:转发IP组播报文。N/P:处理Type-7 LSAs。DC:处理按需链路。
I
1比特
当发送连续多个DD报文时,如果这是第一个DD报文,则置为1,否则置为0。
M(More)
1比特
当发送连续多个DD报文时,如果这是最后一个DD报文,则置为0,否则置为1,表示后面还有其他的DD报文。
M/S(Master/Slave)
1比特
当两台OSPF设备交换DD报文时,首先需要确定双方的主从关系,Router ID大的一方会成为Master。当值为1时表示发送方为Master。
DD sequence number
32比特
DD报文序列号。主从双方利用序列号来保证DD报文传输的可靠性和完整性。
LSA Headers
-
该DD报文中所包含的LSA的头部信息。

LSR报文

两台路由器互相交换过DD报文之后,需要发送LSR报文向对方请求更新LSA,内容包括所需要的LSA的摘要信息。LSR报文格式如图4所示。

图4 LSR报文格式

表5 LSR报文格式字段解释

字段名
长度
含义
LS type
32比特
LSA的类型号。
Link State ID
32比特
与LS Type一起描述路由域中唯一一个LSA。
Advertising Router
32比特
产生此LSA的路由器的Router ID。

LS type、Link State ID和Advertising Router可以唯一标识出一个LSA。当两个LSA一样时,需要根据LSA中的LS sequence number、LS checksum和LS age来判断出所需要LSA的新旧。

LSU报文

LSU报文用来向对端路由器发送其所需要的LSA或者泛洪本端更新的LSA,内容是多条LSA(全部内容)的集合。LSU报文在支持组播和广播的网络中是以组播形式将LSA泛洪出去。为了实现Flooding的可靠性传输,需要LSAck报文对其进行确认,对没有收到确认报文的LSA进行重传,重传的LSA是直接发送到邻居的。LSU报文格式如图5所示。

图5 LSU报文格式

表6 LSU报文格式字段解释

字段名
长度
含义
Number of LSAs
32比特
LSA的数量。
LSA
-
LSA的具体内容。

LSAck报文

LSAck报文用来对接收到的LSU报文进行确认,内容是需要确认的LSA的Header(一个LSAck报文可对多个LSA进行确认)。LSAck报文根据不同的链路以单播或组播的形式发送,LSAck报文格式如图6所示。

图6 LSAck报文格式

表7 LSAck报文格式字段解释

字段名
长度
含义
LSAs Headers
由需要确认的LSA的Header长度决定。
通过LSA的头部信息确认收到该LSA。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号