第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 历史 |
九、思考
- TC 报文的本质作用是什么?
- TC 风暴如何导致全网丢包?
- TC Protection 的 threshold 参数含义是什么?调大或调小分别有什么影响?
- TC Guard 和 TC Protection 有什么区别?
- 为什么边缘端口进入 Forwarding 状态不会触发 TC?
下篇预告:第104篇《VLAN 规划原则——业务与管理分离》——从实际部署角度出发,讲解 VLAN 规划的整体方法论,包括业务 VLAN、管理 VLAN、互联 VLAN 的划分原则与 IP 地址规划策略。