第57篇:DR/BDR 选举机制与影响

关键词

OSPF、DR、BDR、指定路由器、选举规则、优先级、抢占


一、为什么需要 DR/BDR?

在广播型多路访问(Broadcast)链路上(如以太网),如果每台路由器都与所有其他路由器建立邻接关系,那么 N 台路由器之间将有 N×(N-1)/2 个邻接关系。

邻接数量对比

路由器数量 无 DR 时的邻接数 有 DR/BDR 时的邻接数
3 3 4(每台与 DR 和 BDR 建立)
5 10 8
10 45 18
20 190 38

可以看到,当设备数量超过 5 台时,DR/BDR 机制的收益非常明显。


二、角色定义

             224.0.0.6 (DR/BDR 监听)
    ┌─────────────────────────────────────┐
    │                                     │
  RouterA(DR) ── LSDB Sync ── RouterB(BDR)
    │                                     │
    ├── LSDB Sync ── RouterC(DRother)     │
    ├── LSDB Sync ── RouterD(DRother)     │
    └── LSDB Sync ── RouterE(DRother)     │
    │                                     │
    └───────── 224.0.0.5 (所有路由器监听) ─┘
角色 全称 说明
DR Designated Router(指定路由器) 与链路上所有路由器建立邻接,负责 LSA 的集中分发
BDR Backup Designated Router(备份指定路由器) 与链路上所有路由器建立邻接,DR 故障时接替
DRother 其他路由器 只与 DR 和 BDR 建立邻接,DRother 之间不建立邻接

角色间交互

DRother → DR:发送 LSU(用组播 224.0.0.6)
DR → DRother:发送 LSU(用组播 224.0.0.5),由 DR 统一泛洪
DRother → DRother:不直接交换 LSA

三、DR/BDR 选举规则

3.1 选举依据

优先级 规则
第一优先 DR Priority 最大(范围 0~255)
第二优先 Router ID 最大

3.2 优先级说明

  • Priority = 0:不参与选举,永远不成为 DR/BDR
  • Priority = 1:默认值
  • Priority 越大:越优先成为 DR

3.3 选举过程

1. 接口 UP,进入 Waiting 状态(等待 40 秒 = Dead Interval)
2. 在 Waiting 期间,收集链路上所有路由器的 Hello 报文
3. 从 Hello 报文中提取邻居的 Priority 和 Router ID
4. 选出 Priority 最大者 → DR
5. 选出 Priority 次大者 → BDR
6. 其余路由器为 DRother

3.4 配置示例

# 修改接口的 DR 优先级
interface GigabitEthernet0/0/0
 ospf dr-priority 100     # 数值越大越优先
# 查看 DR/BDR 信息
display ospf peer          # 查看邻居状态和角色
display ospf interface     # 查看接口上的 DR/BDR

输出示例:

OSPF Process 1 with Router ID 1.1.1.1
  Interface: 10.0.12.1 (GigabitEthernet0/0/0)
  Cost: 1     State: DR     Type: Broadcast
  Designated Router: 10.0.12.1
  Backup Designated Router: 10.0.12.2

四、关键特性:DR/BDR 不可抢占

4.1 规则

DR/BDR 一旦选举完成,不会因为新加入更高优先级的设备而重新选举。

这是 OSPF 设计的刻意之举——避免 DR/BDR 频繁变动导致 LSDB 大规模震荡。

4.2 触发重新选举的条件

只有在以下情况下才会重新选举:

  1. DR 故障(Dead Interval 超时)→ BDR 升为 DR,重新选 BDR
  2. BDR 故障 → 重新选 BDR
  3. DR 的接口 Down → 重新选举
  4. OSPF 进程重启

4.3 强制重新选举

如果需要强制更换 DR,需要重启 OSPF 进程:

# 方法一:重启 OSPF 进程(影响所有接口)
reset ospf process

# 方法二:接口 Down/Up
interface GigabitEthernet0/0/0
 shutdown
 undo shutdown

4.4 实例演示

初始拓扑(优先级均为默认 1):
  RouterA(RID: 3.3.3.3)→ DR
  RouterB(RID: 2.2.2.2)→ BDR
  RouterC(RID: 1.1.1.1)→ DRother

新加入 RouterD(RID: 4.4.4.4, Priority 200):
  → DR 不变,仍是 RouterA(不可抢占)
  → 只有当 RouterA 故障后,RouterD 才会成为新的 DR

五、DR 变化对网络的影响

5.1 DR 故障切换

正常状态:              DR 故障后:
  DR = RouterA           DR = RouterB(原 BDR)
  BDR = RouterB          BDR = 重新选举
  DRother = C, D, E      邻接重新建立

影响分析:

阶段 影响
DR 故障瞬间(0~40s) BDR 感知 Dead 超时
BDR 升为 DR(40s) 新 DR 立刻开始工作
新 BDR 选举 再等待一个 Wait Timer(40s)
LSDB 同步 新 BDR 需要与其他路由器同步 LSDB

5.2 DR 故障对业务的影响

  • LSA 泛洪中断:DR 故障期间,新 LSA 无法通过 DR 分发
  • 路由收敛延迟:40~80 秒的切换时间
  • 建议:尽量选择性能好、稳定的设备作为 DR

六、P2P 链路的规避策略

既然 DR/BDR 选举会带来一定的复杂度,实际网络部署中有一个常见优化策略——在 Ethernet 子接口上改为 P2P 网络类型

interface GigabitEthernet0/0/0.10
 vlan-type dot1q 10
 ip address 10.0.12.1 255.255.255.252
 ospf network-type p2p       # 避免 DR 选举

优点: - 无需 DR/BDR,直接建立邻接 - 收敛更快(不需要 Waiting 时间) - 不产生 Type2 Network LSA,LSDB 更精简


七、总结

知识点 核心要点
DR/BDR 作用 减少 Broadcast 网络中的邻接数量
选举标准 优先级 > Router ID
不可抢占 DR/BDR 不因更高优先级设备加入而重新选举
切换时间 DR 故障后 BDR 升为 DR 约 40s,新 BDR 选举再 40s
优化方案 子接口使用 P2P 网络类型规避 DR 选举

八、思考

  1. DR/BDR 的选举依据是什么?如果链路上所有设备优先级都是默认值,谁会当选 DR?
  2. 为什么 DR/BDR 设计为不可抢占?
  3. 如果 DR 故障了,BDR 升为 DR 后,新的 BDR 如何产生?
  4. 在什么场景下,即使链路上只有两台路由器也需要 DR?
  5. 如何强制让一台路由器成为链路中的 DR?

下篇预告:第58篇《OSPF LSA 类型详解(Type1–Type7)》——全景了解 OSPF 的七种 LSA 类型及其作用范围。