OSPF MA 网络中 DR 的选举算法机制 | BDR (实验)

MA (Multi-Access,多访问)

在 OSPF(开放最短路径优先)协议中,多访问网络是指多个路由器可以直接相互连接和通信,而不需要通过其他设备。以太网就是一个典型的例子,其中多台设备可以直接连到同一网络上,彼此 “看到” 对方。

由于多个设备共享同一个网络,为了有效传递路由信息并维护网络的稳定性,OSPF 会选出一个 “指定路由器”(Designated Router,简称 DR)和一个 “备份指定路由器”(Backup Designated Router,简称 BDR)。这两个路由器的主要作用是管理和优化网络中的路由信息交换。

DR 和 BDR 选举条件

MA 网络中,同时选举 DR 和 BDR, 需要该 MA 网络中路由器都要与 DR 和 BDR 建立完全 FULL 邻接关系(FULL adjacency)。其中,DR 与 BDR 之间也是 FULL 的邻接关系,DRother 与 DRother 之间则只存在邻居关系,状态为 2-Way

MA 网络可以没有 BDR, 但不能没有 DR

DR 的选举依靠 Hello 报文,在 2-way 之后,交互 Hello 报文完成 DR/BDR 的选举。

每台路由器根据 “听到” 的所有邻居的 Hello 报文,构建自己接口的数据结构,并按照以下算法,计算出 DR 和 BDR。

DR/BDR 选举算法

(1)路由器接口数据结构中维持三个集合,分别是:

  • DR 集合:通过 Hello 学习到的所有 DR 路由器;

  • BDR 集合:通过 Hello 学习到的所有 BDR 路由器;

  • DRother 集合:没有被选举为 DR/BDR 的路由器(优先级不为 0)。

(2)算法工作时,在 DR 集合中选择最好的路由器,使其成为 DR。在 BDR 集合中选择最好的路由器,使其成为 BDR。

DR 选举

在 DR 的集合中应用以下规则:

如果 DR 集合为非空,则从中选择最好的路由器成为 DR:

如果 DR 集合为空,则把当前 BDR 提升为 DR;而如果 BDR 集合为空,则要先从 DRother 集合中选出 BDR, 再将其提升为 DR。

BDR 选举

在 BDR 的集合中应用以下规则:

如果 BDR 集合为非空,则从中选择最好的路由器为 BDR;

如果 BDR 集合为空,则从 DRother 集合中选择最好的路由器成为 BDR 路由器。

DR 和 BDR 选举过程

OSPF 路由器在 DR/BDR 未选举出来之前,Hello 报文中关于 DR 和 BDR 的字段为全 0, 即为 0.0.0.0。选举完成后,DR 和 BDR 的字段记录已知的 DR 和 BDR 的 RouterlD。
路由器接口根据听到的 Hello 报文,生成邻居表并在接口维持三个集合:

  • DR 集合

  • BDR 集合

  • DRother(非 DR 非 BDR 但是有资格成为 DR 和 BDR 的路由器)集合

过程

  • 当 OSPF 接口开启后,在 Hello 报文中设置 DR/BDR 字域为全 0, 此时 DR/BDR 未知。同时,Wait timer 启动,时长为 4 倍的 Hello 间隔。

  • 如果收到的 Hello 报文中 DR 及 BDR 字域为非空,则 Wait 计时器停止,接受当前 DR/BDR 的选择。

  • 如果在 Wait 计时器超时后,仍未学习到 DR/BDR, 则开始 DR/BDR 选举。

  • 如果 DR 集合为空,则从 BDR 集合选举 DR;如果 BDR 集合为空,则从 DRother 集合选举 BDR。

  • 据此,如果在没有 DR/BDR 的网络上,Wait 计时器超时后,网络上的每台路由器都会先从 DRother 集合选择 BDR, 然后把 BDR 提升为 DR;再重新从 DRother 集合选择 BDR。至此,选举结束,开始邻接建立。


OSPF 网络可以没有 BDR (实验)

以下全文基于 OSPFv2,即 IPv4 下的 OSPF,链路层协议为以太网。

OSPF 在发送 / 接收 Hello 包时,可以选举 DR/BDR。

Hello 包有一个字段为 Rtr Pri (8 bit),是 DR 的优先级,默认为 1,当 Rtr Pri 设置为 0 时,路由器不参与 DR/BDR 选举

img

那么,一个网络若除了一台路由器,其余路由器优先级全为 0,也就会意味着网络中没有 BDR?这样可行吗?

结论是可以的,即 OSPF 网络可以没有 BDR

这是以太网环境下的实验,对于其他网络类型,比如 PPP,默认没有 DR/BDR

实验条件

img

如图配置,三台交换机接口处于同一网段 123.0.0.0 24。

将 AR1 和 AR3 接口 OSPF DR 优先级设置为 0,即不参与 DR/BDR 选举。

实验结果

先将 AR1 和 AR3 配置刷入,不管 AR2。

这时 AR1 和 AR2 正常发送 Hello 包,所以两者成为邻居 (2-Way) 关系。但他们没有选举出 DR/BDR。

如图,AR3 发送的 Hello 包中,DR 和 BDR 都属于未选举状态,但已经和 AR1 建立邻居。

img

img

到这里,实际情况可以通过 OSPF 的状态变化条件逐步推导得出,网络中的设备交流遵循我们预设的规则。

例如,目前 AR1 和 AR3 已满足邻居建立条件,因此它们可以成功建立邻接关系。

随后,配置 AR2。经过一段时间后,AR2 与 AR1 和 AR3 都形成了完全邻接(Full)关系,并更新了链路状态数据库(LSDB)。

img

验证 AR2 的 Hello 包,OSPF 网络中确实没有选举 BDR。

img

结论

在 OSPF 网络中,路由器的状态是根据预定的规则运行的,它们并不意识到在没有 DR 和 BDR 的情况下可能会出现问题。在未配置 AR2 之前,OSPF 网络中甚至只有两个邻接状态的路由器,并且没有选举出 DR。


via:

  • 13
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值