生成树协议 STP/RSTP/MSTP
冗余链路会产生二层环路,导致广播风暴、MAC 表震荡、帧重复。生成树协议通过逻辑阻塞冗余端口,构建无环树形拓扑,同时保留备份链路。
环路危害
- 广播风暴:广播帧在环路中无限转发,耗尽带宽与 CPU
- MAC 地址表震荡:同一 MAC 从多个端口学习,表项不断刷新
- 帧重复:接收方收到重复帧,上层协议异常
STP 原理(802.1D)
四个选举步骤
- 选举根桥(Root Bridge):Bridge ID 最小者。Bridge ID = 优先级(默认 32768,步长 4096)+ MAC
- 选举根端口(RP):非根桥上到达根桥代价最小的端口
- 选举指定端口(DP):每个网段上到达根桥代价最小的端口
- 阻塞其余端口:既非 RP 也非 DP 的端口进入 Blocking
端口开销:带宽越大开销越小(10M=100,100M=19,1G=4,10G=2)。
端口状态
| 状态 | 是否转发 | 是否学习 MAC | 说明 |
|---|---|---|---|
| Disabled | 否 | 否 | 端口关闭 |
| Blocking | 否 | 否 | 仅收 BPDU |
| Listening | 否 | 否 | 选举中(15s) |
| Learning | 否 | 是 | 学习 MAC(15s) |
| Forwarding | 是 | 是 | 正常转发 |
STP 收敛时间约 30~50s(Listening + Learning + 链路故障检测)。
BPDU
- 配置 BPDU:根桥每 2s 发送,包含根桥 ID、根路径开销、发送者 ID 等
- TCN BPDU:拓扑变化通知,触发全网 MAC 表刷新
RSTP(802.1w)改进
| 改进 | 说明 |
|---|---|
| 端口角色细分 | 增加 Alternate(备份根端口)、Backup(备份指定端口) |
| 快速收敛 | 根端口/指定端口可立即进入转发,收敛约 1~3s |
| P/A 机制 | Proposal/Agreement 握手实现快速迁移 |
| 边缘端口 | 连接终端的端口直接转发,不参与生成树计算 |
| BPDU 保护 | 边缘端口收到 BPDU 立即关闭,防交换机误接入 |
[Huawei] stp mode rstp // 全局开启 RSTP(默认)
[Huawei] stp root primary // 设为根桥
[Huawei] stp root secondary // 设为备用根桥
[Huawei] interface GigabitEthernet0/0/1
[Huawei-GigabitEthernet0/0/1] stp edged-port enable // 边缘端口
[Huawei-GigabitEthernet0/0/1] stp bpdu-protection // BPDU 保护MSTP(802.1s)
- 通过多实例实现 VLAN 负载均衡:不同实例运行独立生成树,流量分流到不同链路
- 实例与 VLAN 映射:
instance 1 vlan 10 20 - 每个实例有独立的根桥/根端口
[Huawei] stp mode mstp
[Huawei] stp region-configuration
[Huawei-mst-region] region-name HUAWEI
[Huawei-mst-region] instance 1 vlan 10 20
[Huawei-mst-region] instance 2 vlan 30 40
[Huawei-mst-region] active region-configuration
[Huawei] stp instance 1 root primary
[Huawei] stp instance 2 root secondary常用命令
<Huawei> display stp brief // 查看端口角色与状态
<Huawei> display stp // 查看本机 STP 信息
<Huawei> display stp instance 1 // 查看实例 1
<Huawei> display stp topology-change // 查看拓扑变化统计常见故障
| 现象 | 原因 |
|---|---|
| 全网瘫痪、CPU 高 | 环路未收敛/生成树未开启(所有设备需开启 STP) |
| 收敛慢 | 未启用 RSTP,或端口未配边缘端口 |
| 错连终端导致重启 | 边缘端口未开 BPDU 保护 |
| 某 VLAN 流量走备份链路 | MSTP 实例映射配置不一致 |
🔗 相关笔记:03.01_VLAN与VLAN间路由 03.03_链路聚合与堆叠