OSPF报文格式
OSPF报文可靠性机制:
- 由于OSPF协议时通过IP承载的,而IP协议时不可靠协议,所以OSPF需要自己的可靠机制来保证报文交互的可靠性
- 在OSPF中有两种确认报文:1,显式确认报文(LSACK)2,隐式确认报文(HELLO/DBD/LSU)
OSPF 报文头部:
报文格式重要字段 |
长度(字节) |
作用 |
version |
8 |
版本 |
type |
8 |
OSPF报文类型:1为Hello,2为DD,3为LSR,4为LSU,5为LSACK |
packet length |
16 |
OSPF报文总长度 |
router-id |
32 |
自己的R-ID |
area-id |
32 |
区域id |
checksum |
16 |
除认证字段的校验和 |
autype |
16 |
认证字段:0为不认证,1为简单明文,2为MD5 |
authentication |
64 |
验证信息:0没有,1为明文密码,2为key id |
Hello报文:
报文格式重要字段 |
长度(字节) |
作用 |
network |
32 |
发送hello报文的接口所在的子网掩码 |
Hellointerval |
16 |
hello时间 |
Options |
8 |
标识发送此报文的OSPF路由器所支持的可选功能。 |
Rtr Pri |
8 |
DR优先级 |
RouterDeadlnterval |
32 |
dead时间 |
Designated Router |
32 |
DR接口ip地址 |
Backup designated Router |
32 |
BDR的接口ip地址 |
Neighbor |
32 |
所有邻居的R-ID |
- 通过查看Hello报文option字段中E的置位,判断该区域是否支持外部LSA(LSA),可以判断该区域是否为stub区域。
OPTIONS字段:
Option可选字段出现在每一个Hello数据包、DD和每个LSA中的。
Option字段允许路由器和其他路由器进行一些可选性能的通信。
DD报文:
报文格式重要字段 |
长度(字节) |
作用 |
Interface MTU |
16 |
不分片的情况下,此接口最大可发出的ip报文长度 |
Options |
16 |
标识发送此报文的OSPF路由器所支持的可选功能。 |
I 位 |
1 |
当置位为1时,表明这是第一个DD报文,否则不置位 |
M 位 |
1 |
置位为1的时候表明DD报文中还有LSA头要传递,否则不置位 |
M/S 位 |
1 |
置位为1表示自己为master,否则不置位 |
DD Sequence Number |
32 |
***,主从双方利用***来保证报文传输的可靠性和完整性 |
LSA headers |
- |
本LSDB的LSA头 |
LSA 格式:
报文格式重要字段 |
长度(比特) |
作用 |
LS Age |
16 |
LSA的生存时间 |
Options |
16 |
标识发送此报文的OSPF路由器所支持的可选功能。 |
LS type |
8 |
LSA类型 |
Link state ID |
32 |
链路状态ID,每一个LSA都有不同的描述 |
Advertising router |
32 |
自己的R-ID |
LS Sequence Number |
32 |
LSA***,越大代表该LSA越新,每产生一条,seq+1 |
LS checksum |
16 |
用于校验LSA的内容及用来确定该LSA是否最新。 |
Lenght |
16 |
LSA的总长度 |
- 路由器如何识别两个LSA是同一个:
- LSA类型
- link start id
- Advertising router
- 以上参数唯一标识一条LSA.
- 路由器怎么判断LSA的新旧:
- LS Sequence Number
- LS checksum
- LS Age
- 校验值相同,比较age,如果老化时间为3600,则选择该LSA,如果老化时间相差15min以内,说明相同,可以任意选择,如果老化时间大约15min,则选择老化时间小的。
不同类型LSA中Link State id字段的作用:
LSA类型 |
Link State id 的作用 |
Router-LSA |
生成这条LSA路由器的R-ID |
Network-LSA |
所描述网络上DR接口的IP地址 |
Network-summary-LSA |
所描述的目的网段地址 |
ABR Network-summary-LSA |
所描述ASBR路由器的R-ID |
AS-External LSA |
所描述的AS外部网段地址 |
Router-LSA中有三个flag位:
- V(Virtual link): 置1标识本地配置了vlink,为0标识不存在。
- E(ASBR):置1标识本地是ASBR,为0不是ASBR。
- B(ABR):置1标识本地是ABR,为0不是ABR。