Appearance
OSPF 邻居建立
本节主要介绍 ospf Neighbor & Adjacency 建立过程 ospf_neighbor.pcapng
拓扑结构
拓扑结构比较简单 2 台路由器 f0/0
口互联。
建立过程
INIT: R2 发送第一个 Hello包,R1收到第一个 Hello 包,并且双方收到这个 Hello 包中发现没有自己的 route-id(只有发起方route-id)。此时收到第一个包的路由器就进入INIT状态。(第一个Hello包只有 44 字节)
- R2 发送的第一个 hello 包
- R1 发送的第一个 hello 包
- R2 发送的第一个 hello 包
2-Way: R2 发送第二个Hello包,R1收到第二个 Hello 包,发现有自己的 route-id(如果是 MA 网络选举 DR/BDR),然后进入
2-Way
状态,反之如此。当双方均进入2-Way
状态说明已经建立邻居关系(第二个hello包48字节多了对端 Route-ID )- a. R2 发送第二个 hello 包
- b. R1 发送第二个 hello 包
- a. R2 发送第二个 hello 包
Exstart:第一个 DBD 确认主从关系(route-id大为主),在此阶段检查 MTU,如果 MTU 不一致将卡在 Exstart 状态。DBD 传输中通过序列号隐式确认的方式保证可靠性。
Exchange: 通过后续的DBD交换LSA头部信息。
- a. 通过下面两个包可以看到R2的 Maser 置位为1,R1 为0。所以 R2 成为了Master
- b. DBD 隐式确认 (通过下图表分析)
INIT More Master/Slave Sequence 备注 R2 1 1 1 8637 1-2个 DBD 包确立主从关系 R1 1 1 1 9663 1-2个 DBD 包确立主从关系 R2 1 1 1 8637 3个包已经确立R2为主 R1 0 1 0 8637 4个包用 seq 隐式确认 R2 0 0 1 8638 后续都通过 seq 隐式确认 R1 0 0 0 8638 后续都通过 seq 隐式确认 - a. 通过下面两个包可以看到R2的 Maser 置位为1,R1 为0。所以 R2 成为了Master
- first dbd: first dbd 不携带LSA头部信息,通过first dbd确认主从关系。主的作用是为了控制序列号的同步,以保证可靠传输。Route-id大的为主。
- 普通 dbd: 只携带 LSA 头部信息,没有携带 LSA 的具体信息。承载完整 LSA 的是LSU包。
- R1 和 R2 相互发送 LSR 、LSU 、LSACK。
- Loading:DBD交换完成进入。
- Full:完成邻接关系建立
补充 hello 包主要内容
1. 始发路由器 router-id
2. 始发路由器接口 area-id
3. 始发路由器接口的地址掩码
4. 始发路由器接口的 authentication type 和 authentication message
5. 始发路由器接口的 hello-interval
6. 始发路由器接口的 dead-interval
7. 路由器优先级
8. 指定 DR 和 BDR
9. 标识可选性能的5个标志位
10. 始发路由器的所有有效邻居的 router-id