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

关键词

TC(Topology Change)、TCN BPDU、MAC 地址表刷新、TC Protect、TC Snooping


一、什么是拓扑变更(TC)?

在 STP/RSTP 网络中,当链路状态发生变化(如端口 Up/Down、链路故障恢复)时,交换机会发送 TCN(Topology Change Notification) BPDU,通知全网刷新 MAC 地址表项。

     Core1
       │
   汇聚交换机
     │    │
   SW-A  SW-B

SW-A 的 uplink 端口故障 ──► 发送 TCN ──► 汇聚交换机 ──► Core1
     │                        │
     └── 收到 TC 后:         └── 所有交换机清空 MAC 表
         本交换机也清空 MAC 表      重新学习

二、TC 的正常作用

拓扑变更通知是 STP 的必要机制——当链路切换时,旧的 MAC 表项指向的不是最优路径。清空 MAC 表让交换机重新学习,确保流量走新路径。

2.1 STP 中的 TC 处理

步骤 内容
1. 检测变更 非边缘端口进入 Forwarding 状态
2. 发送 TCN 向根桥方向逐跳发送 TCN BPDU
3. 根桥确认 根桥回复 TCA(Topology Change Acknowledgement)
4. 根桥广播 TC 根桥向所有端口发送 TC 置位的 Configuration BPDU
5. MAC 表老化 收到 TC 的交换机将 MAC 表老化时间从默认 300s 缩短为 Forward Delay(15s)

2.2 RSTP 中 TC 的差异

RSTP 不再需要逐跳 TCN——检测到变更的交换机直接向所有端口发送 TC 置位的 RSTP BPDU,传播速度更快。


三、TC 风暴:频繁拓扑变更的危害

3.1 什么是 TC 风暴

短时间内发生大量拓扑变更(如端口频繁 Flapping、大量链路同时 Up/Down),导致: - MAC 表被反复清空,无法建立稳定的转发表 - 交换机 CPU 被 TC 处理占满 - 全网间歇性丢包——帧在未学习到 MAC 时被泛洪,泛洪又可能触发新的 TC

3.2 TC 风暴的典型场景

    核心汇聚
       │
   接入交换机──连接──终端 PC
       │
   端口频繁 Up/Down
   (终端网线接触不良 / 电源不稳)

一个端口每 10 秒 Flapping 一次,每次触发 TC:

第 0s:端口 Down → TC → 全网 MAC 表清空 → 部分流量泛洪
第 10s:端口 Up → TC → 全网 MAC 表再次清空
第 20s:端口 Down → TC → 再次清空
……

在这个循环中,全网交换机忙于处理 TC,正常数据转发受到严重影响。


四、TC Protection(TC 保护)

4.1 作用

限制单位时间内 TC 报文的处理次数,防止 TC 风暴冲击交换机 CPU 和 MAC 表。

4.2 华为配置

# 全局配置:每秒最多处理 1 次 TC,超出部分丢弃
stp tc-protection
stp tc-protection threshold 1

# 查看 TC 统计
display stp tc-bpdu statistics

4.3 参数说明

参数 默认值 说明
stp tc-protection 开启 启用 TC 保护功能
threshold 1 指定时间内的 TC 次数上限,超出部分丢弃

4.4 效果

启用后,即使接入端口每秒 Flapping 10 次,交换机也只处理 1 次 TC。

无保护:每 0.1s 清空一次 MAC 表 → 流量持续中断
有保护:每 1s 处理一次 TC → 首 1s 丢少量包,后续恢复稳定

五、TC Snooping(拓扑变更侦听)

5.1 在什么场景需要 TC Snooping

非 STP 场景下的环网保护技术中(如 Smart Link、RRPP),链路切换时没有标准的 STP TC 通知,下游交换机不知道要刷新 MAC 表。

TC Snooping 的作用:侦听链路切换事件,主动生成 TC 通知,触发下游设备刷新 MAC 表

5.2 配置

# 华为交换机:在 Smart Link 场景启用
interface GigabitEthernet0/0/1
 stp tc-snooping enable

# 全局启用 TC Snooping
stp tc-snooping enable

5.3 与 TC Protection 的区别

特性 TC Protection TC Snooping
目标 限制 TC 处理频率 主动生成 TC
场景 所有 STP 场景 非 STP 环网保护(Smart Link 等)
效果 降频 补发

六、TC 相关的其他保护机制

6.1 TC Guard(TC 攻击防护)

防止伪造的 TC 报文引起 MAC 表频繁刷新:

interface GigabitEthernet0/0/1
 stp tc-guard enable

启用后,端口不再向外发送 TC 置位的 BPDU。

6.2 MAC 表老化时间调整

如果 TC 风暴无法完全避免,可以适当调大 MAC 表老化时间,降低 TC 影响:

mac-address aging-time 600   # 默认 300s,改为 600s

但在正常场景不建议修改默认值。


七、TC 问题排查实战

7.1 查看 TC 统计

# 华为
display stp tc-bpdu statistics
-------------------------------
端口          TC 发送    TC 接收
GE0/0/1       0          256
GE0/0/24      0          12780    ← 异常高

7.2 定位 Flapping 端口

# 查看端口频繁 Up/Down
display interface brief | include up|down
# 定位到 GE0/0/1

# 检查该端口的错误计数器
display interface GigabitEthernet0/0/1
# 看 CRC 错误、FCS 错误是否激增

# 查看日志
display logbuffer | include up|down

7.3 确认 TC Protection 生效

# 查看 TC Protection 丢弃的报文数
display stp
# 如果有 "TC or TCN received: 5000, TC protection discarded: 4800"
# 说明 TC Protection 有效拦截了 96% 的 TC 报文

八、最佳实践总结

场景 建议
接入层端口连接终端 边缘端口 + BPDU Guard(减少 TC 触发源)
所有交换机 启用 TC Protection(防止 TC 风暴)
非 STP 环网保护场景 启用 TC Snooping(补发 TC 通知)
防 TC 攻击 上行端口启用 TC Guard
日常监控 定期检查 TC 统计和端口 Flapping 历史

九、思考

  1. TC 报文的本质作用是什么?
  2. TC 风暴如何导致全网丢包?
  3. TC Protection 的 threshold 参数含义是什么?调大或调小分别有什么影响?
  4. TC Guard 和 TC Protection 有什么区别?
  5. 为什么边缘端口进入 Forwarding 状态不会触发 TC?

下篇预告:第104篇《VLAN 规划原则——业务与管理分离》——从实际部署角度出发,讲解 VLAN 规划的整体方法论,包括业务 VLAN、管理 VLAN、互联 VLAN 的划分原则与 IP 地址规划策略。