OSPF DBD数据包是如何单播的,它如何知道邻居接口IP?

网络工程 ospf
2021-07-07 10:28:39

在 OSPF DBD 数据包中,即使在广播网络类型中也是作为单播数据包发送的,对吗?

这里的问题是,OSPF 路由器如何知道 LAN 中邻居的接口地址?

它已经交换的唯一信息是 HELLO 数据包,它具有邻居的路由器 ID 以及 DR 和 BDR 的接口地址。也是局域网的子网掩码。

2个回答
  1. Hello 数据包源自该链路上路由器的单播地址,为接收者提供单播目的地。
  2. 接收路由器通过在 Hello 数据包的报头中看到自己,知道开始形成新的邻接。它在 Hello 数据包的“邻居”字段中看到自己的路由器 ID,如果它还不知道邻居,则开始交换。

来自https://www.ietf.org/rfc/rfc2328.txt:(搜索“Hello Protocol”和“Receiving Hello Packets”)

Hello 协议负责建立和维护邻居关系。它还确保邻居之间的通信是双向的。Hello 数据包会定期从所有路由器接口发送出去。 当路由器看到自己列在邻居的 Hello 数据包中时,表示双向通信。

如果接收接口连接到广播、点对多点或 NBMA 网络,则源由Hello 的 IP 标头中IP 源地址标识。

如果找不到匹配的邻居结构(即,这是第一次检测到邻居),则创建一个。新创建的邻居的初始状态设置为 Down。

接收 hello 的路由器接收来自单播 ip 地址的数据包。这允许路由器为相邻路由器的接口地址进行 arp,并将其用于 DBD 数据包。