OSPF MA 网络中 DR 与 BDR 选举规则 | 选举算法 | BDR (实验)

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-pointPPP 链路;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

实验条件

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:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值