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 选举。
那么,一个网络若除了一台路由器,其余路由器优先级全为 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-CSDN 博客 Slngen 于 2021-01-15 13:28:25 发布