OSPF MA 网络中 DR 与 BDR 选举规则 | 选举条件 | 选举算法
MA (Multi-Access,多访问)
在 OSPF 协议中,多访问网络是指多个路由器可以直接相互连接和通信,而不需要通过其他设备。以太网就是一个典型的例子,其中多台设备可以直接连到同一网络上,彼此 “看到” 对方。
由于多个设备共享同一个网络,为了有效传递路由信息并维护网络的稳定性,OSPF 会选出一个 DR 和一个 BDR。这两个路由器的主要作用是管理和优化网络中的路由信息交换。
DR 与 BDR 的选举规则
-
DR/BDR 的选举是非抢占式的。
-
DR/BDR 的选举是基于接口的。
-
接口的 DR 优先级越大越优先。
-
接口的 DR 优先级相等时,Router ID 越大越优先。
-
-
广播链路或者 NBMA 链路上 DR 和 BDR 的选举过程如下:
-
接口 UP 后,发送 Hello 报文,同时进入到 Waiting 状态。在 Waiting 状态下会有一个 WaitingTimer,该计时器的长度与 DeadTimer 是一样的。默认值为 40 秒,用户不可自行调整。
-
在 WaitingTimer 触发前,发送的 Hello 报文是没有 DR 和 BDR 字段的。在 Waiting 阶段,如果收到 Hello 报文中有 DR 和 BDR,那么直接承认网络中的 DR 和 BDR,而不会触发选举。直接离开 Waiting 状态,开始邻居同步。
-
假设网络中已经存在一个 DR 和一个 BDR,这时新加入网络中的路由器,不论它的 Router ID 或者 DR 优先级有多大,都会承认现网中已有的 DR 和 BDR。
-
当 DR 因为故障 Down 掉之后,BDR 会继承 DR 的位置,剩下的优先级大于 0 的路由器会竞争成为新的 BDR。
-
只有当不同 Router ID,或者配置不同 DR 优先级的路由器同时起来,在同一时刻进行 DR 选举才会应用 DR 选举规则产生 DR。
-
不同网络类型中 DR 与 BDR 的选举操作
~
| OSPF 网络类型 | 常见链路层协议 | 是否选举 DR | 是否和邻居建立邻接关系 |
|---|---|---|---|
| Broadcast | 以太网链路 | 是 | DR 与 BDR 、DRother 建立邻接关系 BDR 与 DR 、DRother 建立邻接关系 DRother 之间只建立邻居关系 |
| NBMA | 帧中继链路 | ||
| Point-to-point | PPP 链路;HDLC 链路 | 否 | 是 |
| P2MP | 需手工指定 | 否 | 是 |
- PPP(Point-to-Point Protocol):点对点协议,主要用于两个节点之间的直接连接。
- HDLC(High-Level Data Link Control):高级数据链路控制,是一种面向比特的同步数据链路层协议。
- P2MP(Point-to-Multipoint):点到多点,一个节点可以与多个节点进行通信。
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。至此,选举结束,开始邻接建立。
via: huawei
OSPF 网络可以没有 BDR (实验)
Slngen 于 2021-01-15 13:28:25 发布
以下全文基于 OSPFv2,即 IPv4 下的 OSPF,链路层协议为以太网。
OSPF 在发送 / 接收 Hello 包时,可以选举 DR/BDR。
Hello 包有一个字段为 Rtr Pri (8 bit),是 DR 的优先级,默认为 1,当 Rtr Pri 设置为 0 时,路由器不参与 DR/BDR 选举。

那么,一个网络若除了一台路由器,其余路由器优先级全为 0,也就会意味着网络中没有 BDR?这样可行吗?
结论是可以的,即 OSPF 网络可以没有 BDR。
这是以太网环境下的实验,对于其他网络类型,比如 PPP,默认没有 DR/BDR。
实验条件

如图配置,三台交换机接口处于同一网段 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 建立邻居。


到这里,实际情况可以通过 OSPF 的状态变化条件逐步推导得出,网络中的设备交流遵循我们预设的规则。
例如,目前 AR1 和 AR3 已满足邻居建立条件,因此它们可以成功建立邻接关系。
随后,配置 AR2。经过一段时间后,AR2 与 AR1 和 AR3 都形成了完全邻接(Full)关系,并更新了链路状态数据库(LSDB)。

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

结论
在 OSPF 网络中,路由器的状态是根据预定的规则运行的,它们并不意识到在没有 DR 和 BDR 的情况下可能会出现问题。在未配置 AR2 之前,OSPF 网络中甚至只有两个邻接状态的路由器,并且没有选举出 DR。
via:
-
OSPF 网络可以没有 BDR (实验)_3 台路由器建立 ospf 情况下有没有 bdr-优快云 博客 Slngen 于 2021-01-15 13:28:25 发布
https://blog.youkuaiyun.com/u014302425/article/details/112659312
1446

被折叠的 条评论
为什么被折叠?



