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。