Skip to content

OSPF 邻居建立

本节主要介绍 ospf Neighbor & Adjacency 建立过程 ospf_neighbor.pcapng

拓扑结构


拓扑结构比较简单 2 台路由器 f0/0 口互联。

ospf_neighbor_topology

建立过程


  1. INIT: R2 发送第一个 Hello包,R1收到第一个 Hello 包,并且双方收到这个 Hello 包中发现没有自己的 route-id(只有发起方route-id)。此时收到第一个包的路由器就进入INIT状态。(第一个Hello包只有 44 字节)

    • R2 发送的第一个 hello 包 ospf_first_hello
    • R1 发送的第一个 hello 包 ospf_first_hello_R1
  2. 2-Way: R2 发送第二个Hello包,R1收到第二个 Hello 包,发现有自己的 route-id(如果是 MA 网络选举 DR/BDR),然后进入 2-Way 状态,反之如此。当双方均进入 2-Way 状态说明已经建立邻居关系(第二个hello包48字节多了对端 Route-ID )

    • a. R2 发送第二个 hello 包 ospf_second_hello_R2
    • b. R1 发送第二个 hello 包 ospf_second_hello_R1
  3. Exstart:第一个 DBD 确认主从关系(route-id大为主),在此阶段检查 MTU,如果 MTU 不一致将卡在 Exstart 状态。DBD 传输中通过序列号隐式确认的方式保证可靠性。

  4. Exchange: 通过后续的DBD交换LSA头部信息。

    • a. 通过下面两个包可以看到R2的 Maser 置位为1,R1 为0。所以 R2 成为了Master ospf_neighbor_master_R2ospf_neighbor_master_R1
    • b. DBD 隐式确认 (通过下图表分析)
    INITMoreMaster/SlaveSequence备注
    R211186371-2个 DBD 包确立主从关系
    R111196631-2个 DBD 包确立主从关系
    R211186373个包已经确立R2为主
    R101086374个包用 seq 隐式确认
    R20018638后续都通过 seq 隐式确认
    R10008638后续都通过 seq 隐式确认
  • first dbd: first dbd 不携带LSA头部信息,通过first dbd确认主从关系。主的作用是为了控制序列号的同步,以保证可靠传输。Route-id大的为主。
  • 普通 dbd: 只携带 LSA 头部信息,没有携带 LSA 的具体信息。承载完整 LSA 的是LSU包。
  • R1 和 R2 相互发送 LSR 、LSU 、LSACK。
  1. Loading:DBD交换完成进入。
  2. 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