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