OSPF - 较低的 RID 被选为 DR?

网络工程 ospf
2021-07-14 06:20:23

两个路由器,以太网链接,优先级都设置为默认值 1,R1 仅位于区域 1 中,RID:192.168.23.3。R2 是通往 AREA 0 的 ABR,RID:192.168.23.2。区域 1 中没有其他路由器。

为什么R2能赢得DR选举?这看起来很简单,192.168.23.3 RID 应该在这个分段中获胜。透视选举过程的输出:

*Dec 29 14:57:54.291: OSPF-10 ADJ   Fa0/0: DR/BDR election
*Dec 29 14:57:54.295: OSPF-10 ADJ   Fa0/0: Elect BDR 192.168.23.3
*Dec 29 14:57:54.295: OSPF-10 ADJ   Fa0/0: Elect DR 192.168.23.2
*Dec 29 14:57:54.295: OSPF-10 ADJ   Fa0/0: Elect BDR 192.168.23.3
*Dec 29 14:57:54.299: OSPF-10 ADJ   Fa0/0: Elect DR 192.168.23.2
*Dec 29 14:57:54.299: OSPF-10 ADJ   Fa0/0: DR: 192.168.23.2 (Id)   BDR: 192.168.23.3 (Id)
3个回答

R1 不会成为 DR,因为 OSPF 中的 DR 选举不是抢占式的。这意味着一旦路由器(在本例中为 R2)成为 DR,即使与具有更高 RID 的另一个路由器形成新的邻接关系,它仍然是 DR。

In other words, a DR gets elected "President for Life."

您确实没有提供足够的信息来完全确定,但是首先出现的路由器将决定它是 DR,如果已经有 DR,则除非 DR 关闭,否则不会进行 DR 选举。此外,根据RFC 2328, OSPF Version 2,首先选择 BDR,这在您的问题中似乎就是这种情况。如果路由器 2 是 DR,则路由器 1 被选举为 BDR。

9.4节DR/BDR选举算法:

  1. 请注意网络的指定路由器和备用指定路由器的当前值。这稍后用于比较目的。
  2. 如下计算网络的新备份指定路由器。只有列表中未将自己声明为指定路由器的路由器才有资格成为备用指定路由器。如果这些路由器中的一个或多个已声明自己为备用指定路由器(即,它们当前在其 Hello 数据包中将自己列为备用指定路由器,但未将自己列为指定路由器),则将具有最高路由器优先级的路由器声明为备用指定路由器. 如果出现平局,则选择具有最高路由器 ID 的那个。如果没有路由器声明自己为备份指定路由器,则选择具有最高路由器优先级的路由器(再次排除那些声明自己为指定路由器的路由器),并再次使用路由器 ID 打破联系。
  3. 如下计算网络的新指定路由器。如果一个或多个路由器已声明自己为指定路由器(即,它们当前在其 Hello 数据包中将自己列为指定路由器),则将具有最高路由器优先级的路由器声明为指定路由器。如果出现平局,则选择具有最高路由器 ID 的那个。If no routers have declared themselves Designated Router, assign the Designated Router to be the same as the newly elected Backup Designated Router.
  4. 如果路由器 X 现在是新的指定路由器或新的备份指定路由器,或者现在不再是指定路由器或不再是备份指定路由器,则重复步骤 2 和 3,然后继续执行步骤 5。 例如,如果路由器X 现在是指定路由器,当重复第 2 步时,X 将不再有资格进行备份指定路由器选举。除此之外,这将确保没有路由器会同时声明自己的备份指定路由器和指定路由器。
  5. 作为这些计算的结果,路由器本身现在可能是指定路由器或备用指定路由器。请参阅第 7.3 节和第 7.4 节,了解这将带来的额外职责。应该相应地设置路由器的接口状态。如果路由器本身现在是指定路由器,则新的接口状态为 DR。如果路由器本身现在是备份指定路由器,则新的接口状态为备份。否则,新的接口状态为 DR Other。
  6. 如果连接的网络是 NBMA 网络,并且路由器本身刚刚成为指定路由器或备用指定路由器,它必须开始向那些没有资格成为指定路由器的邻居发送 Hello 数据包(参见第 9.5.1 节)。这是通过为每个路由器优先级为 0 的邻居调用邻居事件 Start 来完成的。
  7. 如果上述计算导致指定路由器或备份指定路由器的身份发生变化,则需要修改与此接口相关联的邻接集。一些邻接可能需要形成,而另一些邻接可能需要被打破。为此,调用事件 AdjOK? 在状态至少为 2-Way 的所有邻居上。这将导致重新审查他们的邻接资格(见第 10.3 和 10.4 节)。

信用: Ron Trunk 和 Ron Maupin 生成了所有的答案内容,我只是出于组织目的/为未来的读者清晰起见而制作了这篇文章。

根本原因: R2 通过某种机制已经被视为共享链路 R1/R2 的 DR,因此,无论它具有较低的 RID,它都保持其作为该链路的 DR 的位置,因为 DR 状态在 OSPF 中是非抢占式的。

附加上下文: 如果链路上只有一个路由器通常会选择 DR/BDR,则该路由器可以声明自己为 DR。DR 状态的重选只会在 AdjOK 触发时发生?事件。看起来,在 OSPF 的 Cisco 实现中,这可以通过两种方式生成:

  1. 关闭 DR 接口(破坏性)
  2. 将 DR 接口优先级设置为 0(无中断)