第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 触发重新选举的条件
只有在以下情况下才会重新选举:
- DR 故障(Dead Interval 超时)→ BDR 升为 DR,重新选 BDR
- BDR 故障 → 重新选 BDR
- DR 的接口 Down → 重新选举
- 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 选举 |
八、思考
- DR/BDR 的选举依据是什么?如果链路上所有设备优先级都是默认值,谁会当选 DR?
- 为什么 DR/BDR 设计为不可抢占?
- 如果 DR 故障了,BDR 升为 DR 后,新的 BDR 如何产生?
- 在什么场景下,即使链路上只有两台路由器也需要 DR?
- 如何强制让一台路由器成为链路中的 DR?
下篇预告:第58篇《OSPF LSA 类型详解(Type1–Type7)》——全景了解 OSPF 的七种 LSA 类型及其作用范围。