Skip to content

0. 课件来源

STP / RSTP / MSTP 解决了二层环路问题,但实际网络中还存在 人为误接、私接交换机、单向链路失效、恶意攻击 等场景,仅靠选路无法覆盖。本节讲解华为设备提供的 5 种 STP 防护机制:BPDU 保护、BPDU 过滤、根保护、环路保护、TC 保护。


1. 为什么需要 STP 防护

风险场景后果对应防护机制
用户私接交换机,EP 收到 BPDU网络拓扑被篡改、终端接口变成阻塞BPDU 保护
互联端口被误配为 EP接口不收不发 BPDU,脱离生成树BPDU 过滤
外部接入更优交换机抢占根根桥被抢占,整网拓扑重算根保护
光纤单向链路失效一端收不到 BPDU,误以为链路可用导致环路环路保护
大量 TC BPDU 攻击全网 MAC 表频繁刷新,CPU 飙升TC 保护

2. BPDU 保护(bpdu-protection)

2.1 适用场景

边缘端口(EP)直连终端,正常情况下 不应收到任何 BPDU。若用户在终端接口私接了一台交换机,EP 会收到 BPDU 并失去 EP 属性,变为普通 STP 端口参与选举——这可能导致拓扑被篡改甚至环路。

BPDU 保护 的作用:EP 端口一旦收到 BPDU,立即将其 shutdown(Error-Down),阻止私接交换机影响生成树。

2.2 配置

text
# 全局开启 BPDU 保护(对设备上所有 EP 端口生效)
stp bpdu-protection

⚠️ 只能全局配置

stp bpdu-protection全局命令,没有接口级配置。开启后所有 EP 端口都被保护;若只想保护部分端口,则不要把不需要保护的端口配成 EP。

2.3 自动恢复

EP 被BPDU 保护 shutdown 后,默认需要 手工 undo shutdown 恢复。可配置自动恢复:

text
# 30 秒后自动恢复(cause 必须指定为 bpdu-protection)
error-down auto-recovery cause bpdu-protection interval 30
恢复方式命令说明
手工恢复进接口 undo shutdown默认行为
自动恢复error-down auto-recovery cause bpdu-protection interval 30全局配置,30 秒后自动恢复

3. BPDU 过滤(bpdu-filter)

3.1 作用

BPDU 过滤让端口 不收也不发 BPDU,彻底脱离生成树计算。与 BPDU 保护不同,过滤不会 Error-Down,端口仍正常转发数据。

机制收到 BPDU 的反应端口状态发不发现BPDU
BPDU 保护立即 shutdownError-Down
BPDU 过滤丢弃,不处理正常转发不收不发

3.2 配置方式

text
# 方式 1:接口级(只对该接口生效)
interface g0/0/1
 stp bpdu-filter enable

# 方式 2:全局默认(对所有 EP 端口默认开启过滤)
stp bpdu-filter default

🚫 BPDU 过滤不能配置在互联端口

若在交换机之间的 互联端口 配置 bpdu-filter,两端都不发 BPDU,该链路将 彻底脱离生成树,STP 无法在该链路上阻断环路,可能导致广播风暴。

  • stp bpdu-filter enable:仅用于明确不需要参与 STP 的终端接口
  • stp bpdu-filter default:全局让所有 EP 默认过滤,慎用

4. 根保护(root-protection)

4.1 适用场景

根桥是生成树的根基。若网络中接入了一台 优先级更高(BID 更小) 的交换机(如管理员误配、私自接入),它会抢占根桥角色,导致整网拓扑重算,业务中断。

根保护 配置在 指定端口(DP) 上,作用是:即使收到更优的 BPDU,也 不允许本端口 surrender(让出)DP 角色,强制保持 DP 并置为 Discarding,保护现有根不被抢占。

4.2 工作流程

text
1. DP 端口配置了 root-protection
2. 收到对端发来的更优 BPDU(BID 更小)
3. 本端口不做角色切换,强制保持 DP,状态置为 Discarding(不转发数据)
4. 持续监测:若 30 秒(2*Forward-Delay)内不再收到更优 BPDU
   → 恢复正常 DP Forwarding
5. 这 30 秒类似 "试错期":如果对方只是临时接入又拔走,无需人工干预即可恢复

💡 根保护 vs BPDU 保护

  • BPDU 保护:针对 EP 端口(终端方向),收到 BPDU 直接 shutdown
  • 根保护:针对 DP 端口(互联方向),收到更优 BPDU 不 shutdown,而是强制保持 DP Discarding

4.3 配置

text
interface g0/0/1
 stp root-protection         # 在 DP 上配置

5. 环路保护(loop-protection)

5.1 适用场景

光纤链路存在 单向链路失效 风险:一端能收到光信号,另一端收不到。此时收不到光信号的一端 收不到对端的 BPDU,误以为对端/上游故障,自己应该接管转发,结果两端都在转发 → 环路。

环路保护 配置在 非 DP 端口(RP / AP / BP),作用是:若这些端口 收不到最优 BPDU 超过一定时间,不切换为 Forwarding,而是 置为 Discarding 并阻塞,防止单向链路失效导致的环路。

5.2 工作行为

端口角色配置 loop-protection 后,收不到最优 BPDU 的反应
RP不切换为 Forwarding,置 Discarding(丢弃数据)
AP不切换为 Forwarding,保持 Discarding
BP不切换为 Forwarding,保持 Discarding

⚠️ 环路保护 vs 根保护配置位置

  • 环路保护:配置在 非 DP(RP/AP/BP),防单向链路失效
  • 根保护:配置在 DP,防更优 BPDU 抢占根

二者配合可在所有关键端口形成完整防护。

5.3 配置

text
interface g0/0/1
 stp loop-protection        # 配置在非 DP 端口

6. TC 保护(tc-protection)

6.1 适用场景

拓扑变更(TC)发生时,交换机会 刷新 MAC 地址表重新学习。若网络上短时间内涌入大量 TC BPDU(攻击或故障抖动),每次都刷新 MAC 表会导致:

  • MAC 表频繁清空 → 大量未知单播泛洪
  • CPU 飙升 → 设备性能下降甚至瘫痪

TC 保护 的作用:限流(速率限制),在指定时间窗口内只处理限定次数的 TC BPDU,超出部分统一处理一次。

6.2 工作原理

text
默认参数:
  interval  = 10 秒(时间窗口)
  threshold = 3 次(阈值)

工作流程:
1. 收到 TC BPDU,每收到一次就处理一次(刷新 MAC 表)
2. 同时启动 10 秒计时窗口
3. 若 10 秒内处理次数 < 3 次 → 正常逐次处理
4. 若 10 秒内处理次数 ≥ 3 次 → 超出阈值
   → 仅在窗口结束时统一处理一次,不再每次都刷表
5. 10 秒窗口结束后,计数清零,开始新一轮统计

6.3 配置

text
# 全局配置(对所有端口生效)
stp tc-protection interval 10 threshold 3
参数默认值含义
interval10 秒统计时间窗口
threshold3 次窗口内允许逐次处理的最大次数

💡 TC 保护不是"丢弃"TC

TC 保护 不丢弃 超出阈值的 TC BPDU,而是 合并处理。窗口内超过 3 次后,只在窗口结束时处理一次。这样既防止 MAC 表频繁刷新,又不遗漏真实拓扑变更信息。


7. 五种防护机制全景对比

防护机制配置位置防护目标触发条件动作恢复方式
BPDU 保护全局,作用于所有 EP防止 EP 私接交换机EP 收到 BPDU端口 Error-Down(shutdown)手工 undo shutdown 或自动恢复 30s
BPDU 过滤接口/全局端口彻底脱离 STP主动配置不收不发 BPDU需 undo 配置
根保护DP 端口防止更优交换机抢占根DP 收到更优 BPDU强制保持 DP,置 Discarding30s 内无更优 BPDU 自动恢复
环路保护非 DP 端口防单向链路失效环路收不到最优 BPDU置 Discarding 阻塞收到最优 BPDU 后恢复
TC 保护全局防大量 TC 攻击抖动10s 内 TC BPDU ≥ 3 次超出阈值统一处理一次自动(窗口结束清零)

8. 综合配置示例

text
# ── 全局配置 ──
stp mode rstp                          # 使用 RSTP 模式
stp bpdu-protection                    # 全局 BPDU 保护(保护所有 EP)
error-down auto-recovery cause bpdu-protection interval 30  # 自动恢复
stp tc-protection interval 10 threshold 3                   # TC 保护

# ── 终端接口(应配 EP + 全局 BPDU 保护已覆盖)──
interface g0/0/1
 stp edged-port enable                 # 标记为边缘端口

# ── 互联接口(DP 方向配根保护,非 DP 方向配环路保护)──
interface g0/0/24                      # 假设此端口为 DP
 stp root-protection                   # 根保护

interface g0/0/23                      # 假设此端口为 RP/AP
 stp loop-protection                   # 环路保护

9. 易混淆点与考前速记

对比项结论
BPDU 保护 vs 过滤保护收到 BPDU 就 shutdown;过滤是不收也不发,端口正常转发
BPDU 保护默认自动恢复?否,需手工 undo shutdown 或配 error-down auto-recovery
根保护配在哪DP 端口,收到更优 BPDU 强制保持 DP Discarding
环路保护配在哪非 DP 端口(RP/AP/BP),收不到最优 BPDU 阻塞防单向链路
根保护恢复时间30 秒(2×Forward-Delay),无更优 BPDU 自动恢复
TC 保护默认参数interval 10 秒,threshold 3 次
TC 保护是否丢弃 TC不丢弃,超出阈值后窗口结束统一处理一次
bpdu-filter 能配在哪接口级 enable 或全局 default禁止配在互联端口

考前速记 8 条

  1. BPDU 保护:EP 收到 BPDU → shutdown(Error-Down),全局命令 stp bpdu-protection
  2. BPDU 保护自动恢复:error-down auto-recovery cause bpdu-protection interval 30
  3. BPDU 过滤:不收不发 BPDU,端口正常转发,禁止配在互联端口
  4. 根保护:配在 DP,收到更优 BPDU 强制保持 DP Discarding
  5. 根保护恢复:30 秒内无更优 BPDU 自动恢复 Forwarding
  6. 环路保护:配在非 DP(RP/AP/BP),收不到最优 BPDU 阻塞防单向链路失效
  7. TC 保护:interval 10 threshold 3,10 秒内超过 3 次统一处理一次,不丢弃
  8. 根保护 → DP;环路保护 → 非 DP;BPDU 保护 → EP

🤖 AI 伴学

想快速记住 5 种防护机制的配置位置和触发条件,可以让 AI 做"场景推演":

"请用5个不同的'网络运维事故场景'(用户私接交换机、光纤单向失效、外部抢占根、TC攻击、互联端口误配EP),分别对应说明应选哪种 STP 防护机制、配置在什么端口、触发后的具体动作,最后统一总结一张'事故→防护'映射表。"

真人撰写written by human