通过抓包分析OSPF报文结构,了解的交互机制和过程。
理论上的东西终归需要去验证才能理解,学会自主分析才能够加强自学能力。
本文纯抓包分析,如果没了解过理论内容的请移步
https://zhuanlan.zhihu.com/p/348526404实验拓扑环境
一、五种包
1.1.HELLO报文
1.2.DBD报文
1.3.LSR报文
1.4.LSU报文
1.5.LSACK报文
二、七个状态
2.1.DOWN
不交互任何OSPF相关的报文,查看邻居状态为空。
2.2.INIT状态
2.2.1.查看router-id
1)抓包查看报文中的ROUTER-ID
2)设备上查看邻居关系的router-id
2.2.2.手动修改router-id
1)配置命令
ospf 1 router-id 1.1.1.1
reset ospf process
2)抓包查看报文中的ROUTER-ID
3)设备上查看邻居修改后生效 的router-id
2.2.3.INIT→two way条件
接收到邻居设备的hello中包含自己的router-id(报文中的Active Neighbor)
R2发送的HELLO包中1.1.1.1的router-id
2.3.TWO WAY
HELLO报文中的DR和BDR
2.3.1.DR和BDR还未选举,HELLO报文抓包
未调整优先级,默认为1
2.3.2.调整接口优先级为10
调整OSPF DR优先级
1)配置命令
int g0/0/0
ospf dr-priority 10
2)抓包查看优先级为10
2.3.3.DR优先级调整为0
1)配置命令
调整R2的DR优先级为0
int g0/0/0
ospf dr-priority 0
2)抓包查看
原来R2为DR的,现在R2不参与DR选举,R1变为DR,而且没有BDR
2.4.EXSTART
2.4.1.DBD报文中的MS位
1)还未协商完成主从的DBD
第一个DBD报文MS都是为1
R1设备上第一个DBD报文
R2设备上第一个DBD报文
2)协商完成的DBD
协商完成后,肯定有设备发出来的MS=0;
R1 MS为0,这时候R1为从设备
R2 MS为1,这是时候R2为主设备
2.4.2.DBD报文中的序列号
R2发送281的seq
R1确认281的seq
2.5.EXCHANGE
DBD报文中的M位
M=1,代表DBD报文还没发完
M=0,代表DBD报文发送完成
2.6.LOADING
R1发送LSR请求172.16.12.2的链路信息
R2回应请求
LSU中的LSA,回应对端的请求LSA序列号为0x80000003
LSACK,确认LSA序列号为0x80000004(+1)
2.7.FULL
稳定状态下的报文
10S一个HELLO稳定状态
大约过了1800S重新泛洪LSU LSACK
又过1800S 重新泛洪LSU LSACK
学习本身就是枯燥的,当理解理论内容,然后结合抓包分析,具体了解设备内部的运转情况,这时候学习反而有一种莫名的乐趣。