第102篇:BPDU 保护、根保护、环路保护配置

关键词:BPDU Guard、Root Guard、Loop Guard、STP 保护机制、边缘端口、生成树安全


一、引言

在上篇文章中,我们深入了解了 STP/RSTP/MSTP 的基本原理与根桥选举机制。然而,仅有生成树协议本身是远远不够的。在实际网络中,由于配置失误、非法设备接入或链路异常,生成树拓扑可能被恶意或意外破坏。本文介绍三种 STP 保护机制——BPDU 保护、根保护和环路保护,它们共同构成了生成树的"安全护栏"。

二、核心概念

2.1 三种保护机制概述

保护机制 触发条件 动作 应用场景
BPDU 保护(BPDU Guard) 边缘端口收到 BPDU 关闭端口(Err-Disable) 接入层连接终端的端口
根保护(Root Guard) 指定端口收到更优 BPDU 端口强制为 Root-Inconsistent 状态 防止非法设备成为根桥
环路保护(Loop Guard) 非指定端口停止收到 BPDU 端口进入 Blocking 状态 防止单向链路导致环路

2.2 保护机制的应用位置

保护机制的应用位置 - 图示

  • 核心层:启用根保护,防止下层交换机意外成为根桥
  • 汇聚层:启用环路保护,防止上行链路单向故障
  • 接入层:启用 BPDU 保护,防止终端私自接入交换机

三、技术细节

3.1 BPDU 保护(BPDU Guard)

BPDU 保护用于边缘端口(Edge Port / Portfast Port)。边缘端口的定义是连接终端设备(PC、打印机、服务器等)的端口,这些端口不应该收到任何 BPDU 报文。

工作原理:

BPDU 保护(BPDU Guard) - 图示

触发后的恢复方式:

恢复方式 配置命令 说明
自动恢复 errdisable detect cause bpdu-guard recovery interval 300 300 秒后自动恢复
手动恢复 shutdown + undo shutdown 管理员手动重启端口

3.2 根保护(Root Guard)

根保护确保启用了该功能的端口永远不会成为根端口,即使收到更优的 BPDU。

工作原理:

  • 当指定端口收到比自己当前根桥更优的 BPDU 时,端口被强制置为 Root-Inconsistent 状态(等价于 Discarding)
  • 该端口停止转发数据帧
  • 当不再收到更优 BPDU 后,端口自动恢复正常转发

与降低优先级的区别:

对比项 降低根桥优先级 根保护
保护方式 主动成为根桥 被动防御
恢复方式 永久生效 动态恢复
适用场景 确定根桥位置 防止非法根桥入侵

3.3 环路保护(Loop Guard)

环路保护解决的是单向链路故障场景。当单向链路故障发生时,某端口无法收到对端发来的 BPDU,但仍然可以发送数据,这可能导致环路。

触发场景分析:

  1. 正常情况:端口 A ↔ 端口 B 双向通信,BPDU 正常交互
  2. 单向故障:端口 B → 端口 A 方向中断(光纤只断了一芯),端口 A 收不到 BPDU
  3. 无环路保护:端口 A 超时后将自身选为指定端口,进入 Forwarding → 环路形成
  4. 有环路保护:端口 A 收不到 BPDU 后进入 Blocking → 环路避免

环路保护(Loop Guard) - 图示

四、实战配置/案例分析

4.1 华为交换机完整保护配置

# ========== BPDU 保护 ==========
# 全局启用 BPDU 保护(对所有 Edge Port 生效)
[HUAWEI] stp bpdu-protection

# 在端口级别配置 Edge Port
[HUAWEI] interface GigabitEthernet 0/0/1
[HUAWEI-GigabitEthernet0/0/1] stp edged-port enable

# 配置 Err-Disable 自动恢复
[HUAWEI] errdisable detect cause bpdu-guard recovery interval 300

# ========== 根保护 ==========
# 在汇聚交换机的下行端口启用根保护
[HUAWEI] interface GigabitEthernet 0/0/24
[HUAWEI-GigabitEthernet0/0/24] stp root-protection

# ========== 环路保护 ==========
# 全局启用环路保护
[HUAWEI] stp loop-protection

# 也可以在端口级别单独配置
[HUAWEI] interface GigabitEthernet 0/0/23
[HUAWEI-GigabitEthernet0/0/23] stp loop-protection

4.2 故障案例:终端私接交换机引发环路

场景描述:某办公园区,接入交换机 SW-ACC-05 的 GE0/0/10 端口连接了一台 PC。某天该 PC 用户私自连接了一台家用无线路由器(开启了 LAN 口),导致网络出现环路告警。

排查过程:

  1. 网管系统报警:SW-ACC-05 产生大量 MAC 地址漂移告警
  2. 登录交换机查看 STP 状态:
[SW-ACC-05] display stp brief
# 发现 GE0/0/10 端口处于 Forwarding 状态
  1. 检查端口配置:
[SW-ACC-05] display current-configuration interface GigabitEthernet 0/0/10
# 发现配置了 stp edged-port enable,但未启用 bpdu-protection
  1. 用户私接的无线路由器作为一台二层交换机,开始发送 BPDU,但由于端口是 Edge Port,STP 未正确处理。

处理措施:

# 第一步:关闭故障端口
[SW-ACC-05] interface GigabitEthernet 0/0/10
[SW-ACC-05-GigabitEthernet0/0/10] shutdown

# 第二步:启用全局 BPDU 保护
[SW-ACC-05] stp bpdu-protection

# 第三步:恢复端口(BPDU 保护会在下次收到非法 BPDU 时自动关闭端口)
[SW-ACC-05-GigabitEthernet0/0/10] undo shutdown

后续验证:当用户再次私接无线路由器时,GE0/0/10 端口在收到 BPDU 后立即进入 Err-Disable 状态,并在网管系统产生端口关闭告警,运维人员及时联系用户整改。

4.3 根保护实战:防止汇聚层抢占根桥

# 核心交换机(根桥)
[HUAWEI-Core] stp priority 4096

# 汇聚交换机下行端口启用根保护
[HUAWEI-Agg] interface range GigabitEthernet 0/0/21 to 24
[HUAWEI-Agg] stp root-protection

# 验证根保护状态
[HUAWEI-Agg] display stp brief
# 查看端口状态,正常应为 FORWARDING
# 如果收到更优 BPDU,端口状态变为 ROOT_INCONSISTENT

五、总结

项目 说明
BPDU 保护 用于边缘端口,收到 BPDU 即关闭端口,防终端私接交换机
根保护 用于指定端口,收到更优 BPDU 即阻塞端口,防非法根桥
环路保护 用于非指定端口,收不到 BPDU 即阻塞端口,防单向链路故障
部署原则 接入端口 → BPDU 保护;下行端口 → 根保护;上行/互联端口 → 环路保护
华为推荐 全局启用 bpdu-protection 和 loop-protection,按需配置 root-protection
注意事项 BPDU 保护关闭端口后需配置自动恢复或手动恢复

思考

  1. 如果在互联端口(交换机到交换机)上也启用了 BPDU 保护,会导致什么问题?为什么 BPDU 保护只能用于边缘端口?

  2. 根保护触发后,端口进入 Root-Inconsistent 状态。如果非法设备断开连接后重新接入,端口能否自动恢复?这与 BPDU 保护的恢复机制有什么区别?

  3. 环路保护与 STP 的 Max Age 超时机制有什么不同?为什么 Max Age 超时不足以应对单向链路故障?

下篇预告:第103篇:TC 保护与拓扑变更优化