OSPF的数据包格式
数据包头部
版本:ospf 版本号是2,ipv6使用ospfv3 版本号是3
类型:就是5种数据包类型,1 是指 hello包,2 是DBD,3 是LSR,4 是LSU,5 是LSAck
数据包长度:包括数据包头部在内的 ospf 数据包的长度
路由器ID:始发路由器的ID
区域ID:始发路由器所在区域,注意虚链路被认为是骨干区域
认证类型:正在使用的认证模式
认证类型代码 | 认证类型 |
---|---|
0 | 没有认证 |
1 | 简单(明文)口令认证 |
2 | 加密校验和(MD5) |
密钥ID:标识认证算法和创建消息摘要要使用的安全密钥
认证数据包长度:指附在ospf数据包尾部的消息摘要长度
加密序列号:是一个不会减少的数字,用来防止重现攻击
Hello数据包
Hello数据包是用来建立和维护邻接关系的。为了形成一种邻接关系,Hello数据包的参数必须和邻居保持一致。
前面就是OSPF头部
Hello时间间隔:缺省下Broadcast,P2P类型接口发送hello时间间隔为 10s;P2MP,NBMA,虚链路上发送hello时间间隔为 30s。死亡时间都为 4倍。
路由器优先级:DR和BDR选举。0位放弃,做过一个实验,若所有路由器的dr-priority为0,那就不选举DR和BDR,邻居间只能维持在 2-way状态。
路由器无效时间间隔:四倍hello时间
DR/BDR:指定路由器/备份指定路由器
邻居:Hello包中会在这个字段列出所有有效邻居的RID
数据库描述包
接口MTU:数据包不分段情况下,始发路由器可以放松的最大IP数据包大小。在虚链路上传送时,字段设置为:0x0000
I位,初始位(Initial bit):数据包最初一个包,该位置1.
M位,后继位(More bit):不是最后一个DBD,该位置1
MS位,或称为主/从位(Master/Slave bit):在数据库同步过程中,该位置1,用来指明始发数据库描述数据包的路由器是一台“主”路由器,从路由器置0
请注意这三位,能帮助理解建邻过程
数据库描述序列号:数据库同步过程中,用来确保路由器能够收到完整的数据库描述数据包序列。这个序列号由主路由器最初发送的数据库描述包中设置唯一数值,而后续序列号一次增加。这里有两种确认方式,不多讲,可以看ospf基础知识
LSA头部:列出了始发路由器的链路状态数据库中部分或全部LSA头部
链路状态请求数据包
链路状态类型:指明LSA标识是几类LSA
链路状态ID:不同LSA不同
通告路由器:始发LSA通告的路由器第路由器ID
链路状态更新数据包
OSPF数据包是不能离开发起它们的网络的。因此,一个链路状态数据包可以携带一个或多个LSA,但是这些LSA只能传送到始发它们的路由器的直连邻居。接收LSA的邻居路由器负责在新的LS更新数据包中重新封装相关的LSA,从而进一步泛红扩散到它自己打邻居。
LSA:在ospf协议的LSA数据包格式中描述的全部LSA。每一个更新数据包都可以携带多个LSA,它的大小可以达到传送该数据包的链路允许的最大数据包尺寸。
链路状态确认数据包
OSPF的LSA格式
LSA的头部
LSA头部在所有LSA的开始处。
注:在LSA头部中有3个字段可以唯一标识每个LSA:类型,链路状态ID,通告路由器
注:可以唯一的识别一个LSA的最新实例:老化时间,序列号和校验和
详见OSOP基础知识
路由器LSA
网络LSA
网络汇总LSA和ASBR汇总LSA
自主系统外部LSA
NSSA外部LSA
可选项字段
整理截取了TCP/IP路由技术书中的知识,谢谢