「OSPF」-

DR and BDR

在 Multi-Access(MA、NBMA) Networking 中,如果多个 Router 间需要建立邻接关系:

  • 导致网络存在过多的 OSPF 邻接关系,造成增加设备负担,增加 OSPF 报文数量;
  • 当拓扑发生变化时,网络内将出现大量 LSA 泛洪,造成带宽的浪费和资源的损耗;
  • 同时,重复的 LSA 泛洪,造成造成资源浪费;
  • 需要建立 n*(n−1)/2 个邻接关系,造成管理复杂;

注意:在解释 DR 和 BDR 之前,需要先了解 OSPF 的网路类型;

针对该问题,提出概念:DR(Designated Router)、BDR(Backup Designated Router)、DR Other

  • 在 MA 中,DR 负责建立和维护邻接关系并负责 LSA 的同步;
  • DR/BDR 与 DR Other 建立邻接关系,并交换链路状态信息;
  • DR Other 间不直接交换链路状态信息;

在 MA/NBMA 中,选举 DR/BDR 的过程

选举(Election)依旧是其本质:

  • DR 基于端口的 Router Priority 进行选举(高胜出),然后在根据 Router ID 选举(高胜出);
  • 非抢占式:当原始 DR 恢复后,不会抢占 DR 角色(不可抢占,即高优先级接入,并不会发生拓扑变化);
  • 在 Tow-Way State 中,选举 DR/BDR 需要 40s 时间;

路由器交互 Hello 报文,来选举 DR 与 BDR 角色;

在 MA 或 NBMA 上,DR 和 BDR 的选举过程如下:
1)接口 UP 后,发送 Hello 报文,同时进入到 Waiting 状态。在该状态下会有个 WaitingTimer,该计时器的长度与 DeadTimer 是一样的。默认值为 40s,用户不可自行调整;
2)在 WaitingTimer 触发前,发送的 Hello 报文是没有 DR 和 BDR 字段的。在 Waiting 阶段,如果收到 Hello 报文中有 DR 和 BDR,那么直接承认网络中的 DR 和 BDR,而不会触发选举。直接离开 Waiting 状态,开始邻居同步;
3)假设网络中已经存在一个 DR 和一个 BDR,这时新加入网络中的路由器,不论它的 Router ID 或 DR 优先级有多大,都会承认现网中已有的 DR 和 BDR;
4)当 DR 因为故障 Down 掉之后,BDR 会继承 DR 的位置,剩下的优先级大于 0 的路由器会竞争成为新的 BDR;
5)只有当不同 Router ID,或者配置不同 DR 优先级的路由器同时起来,在同一时刻进行 DR 选举,才会应用 DR 选举规则产生 DR;

如果 Router Priority 全部设置为 0,则 OSPF 将无法正常工作;

网络类型 and 选举操作

在 P2P 中,Router 间也需要建立邻接关系,但为点到点链路,所以无需选举 DR 与 BDR 关系;

按需调整 OSPF 网络类型

针对网络设备,其 OSPF 的网络类型是根据接口的数据链路层封装自动设置的;

图中的路由器采用以太网接口互联,因此这些接口的网络类型缺省均为 Broadcast 类型:

但是,每段链路本质上都是点对点链路,所以在链路上选举 DR 与 BDR 是没有必要的;

然而,这实际上是没有必要而且浪费时间的(DR 及 BDR 的选举过程涉及一个等待计时器,这增加了直连路由器形成邻接关系的时间),因为这些链路其实从逻辑的角度看都是点对点的连接,选举 DR 或 BDR 实在是画蛇添足。所以为了提高 OSPF 的工作效率,加快邻接关系的建立过程,可以把这些互联接口的网络类型都修改为 P2P;

[Huawei-GigabitEthernet1/0/0] ospf network { p2p | p2mp | broadcast | nbma }

补充说明

注意,每个 MA 网络,都会选举 DR/BDR 设备。如下拓扑将选举 4 个 DR / BDR:

RTA <==> RTB <==> RTC <==> RTD <==> RTE

当存在 DR/BDR 时,路由信息的传递过程

当完成 DR 与 BDR 选举后,多个 DR Othter 间只需要保持邻居关系(停滞在 two-way 状态);

BDR 会监控 DR 状态,以在 DR 发生故障时接替其角色;

DR 监听 224.0.0.6 组播地址,DR Other 的路由信息会通过 224.0.0.6 组播地址向 DR 和 BDR 设备发送路由;
DR 通过 224.0.0.5 组播地址向下发送路由信息;