OSPF五种数据包详解

发布于:2025-04-03 ⋅ 阅读:(19) ⋅ 点赞:(0)

一、OSPF头部封装

OSPF是跨四层封装协议,直接封装在网络层之上,需要IP协议使用一个协议号来标定——89。

OSPF头部结构:

版本:标识OSPF的版本,OSPFv2(2)、OSPFv3(3); 

类型:标识OSPF数据包的类型,hello(1)、DBD(2)、LSR(3)、LSU(4)、LSACK(5);

路由器ID:表示发出数据包设备的Router ID;

区域ID:表示发出数据包的接口所在区域;

认证类型:null(不认证)、simple(明文认证)、MD5(哈希认证);

注意:OSPF进行认证时,会比对两部分内容,一个是认证类型,一个是认证数据。

抓包:

二、Hello包

主要用于周期性的发现,建立以及保活邻居关系,包括DR和BDR的选举。

网络掩码:表示发出数据包接口IP地址的掩码 ;

Hello间隔、路由器失效时间:分别表示hello时间和死亡时间,其比例为1:4;

可选项:一共8位特殊标识位。其中E表示是否支持5类LSA、N表示是否支持7类LSA、NP表示是否支持7转5类LSA;

路由优先级:表示发出该数据包的接口优先级;

DR和BDR:表示指定路由器和备份指定路由器。在没有选举出来之前,使用0.0.0.0临时填充;

邻居:携带自己本地已知邻居的Router ID;

OSPF邻居关系建立的必要条件:

  1. 网络掩码一致
  2. hello时间一致
  3. 死亡时间一致
  4. 特殊区域标识位一致
  5. 认证一致

抓包(省略了头部信息):

三、DBD包

主要用于主从关系选举、共享LSA摘要信息、序列号确认

MTU:标识最大传输单元。华为设备默认没有开启MTU的检测,所以使用0来填充。若双方都开起了MTU的检测,且两边数值不一样,则会卡在Exsart状态;

可选项:一共8位特殊标识位,和Hello包中的基本一致;

R:保留位;

I:初始化位。置1代表的是进行主从关系选举的包,不携带LSA头部信息;若置0代表的是共享LSA摘要的包,需要携带LSA头部;

M:更多位。置1代表后面还有DBD包的发送;若置0表示最后一个包;

MS:主从位。置1表示该设备为主。第一次发送DBD包时都会默认自己为主;

序列号:用于保证DBD报文的顺序性和可靠性;

抓包(省略了头部信息):

四、LSR包

链路状态请求报文,基于DBD包请求未知的LSA

链路状态类型、链路状态ID、通告路由器:LSA的三元组,可以唯一的标识出一条LSA。

抓包(省略了头部信息):

五、LSU包

链路状态更新报文,携带LSA的数据包

抓包(省略了头部信息):

六、LSACK包

链路状态确认报文,充当确认包

抓包(省略了OSPF头部封装):

注:本地链路组播

凡是224.0.0.X格式的组播地址,都称为本地链路组播,这种组播包的特点是TTL设置为1,只能在当前的广播域中发送。