一、STP的本质与演进
1. 协议家族
- 802.1D(基础标准):初代STP,提供环路消除但收敛慢(30-50秒)。
- PVST/PVST+:基于VLAN的每树协议,实现精细化负载均衡。
- RSTP(802.1w):快速收敛(1-2秒),替代802.1D成为主流。
- MSTP(802.1s):多实例生成树,将VLAN分组映射到独立实例,平衡资源与效率。
2. 核心目标
- 消除环路:阻断广播风暴(如MAC表震荡、数据包循环)。
- 智能冗余:主链路故障时自动切换备份链路。
- 负载均衡:通过VLAN路径优化(如PVST+)实现流量分担(如50M+50M分流)。
- 高效收敛:快速重建拓扑(RSTP/MSTP的核心优势)。
二、环路危害与STP的解决方案
1. 环路形成原理
当冗余链路存在时:
- PC发送广播帧至交换机1,记录MAC地址与接口映射。
- 帧通过冗余链路到达交换机2,交换机2更新自身MAC表。
- 帧经另一链路返回交换机1,触发MAC表覆盖更新(如接口从f0-0跳变为f0-2)。
- 数据包在环路中无限循环,导致:
- 网络时断时续、延迟飙升
- 交换机CPU负载激增
- MAC表频繁刷新失效
2. STP的解决方案
- 逻辑阻塞(Blocking):非物理断开,而是选定接口禁止数据转发(仍接收BPDU协议报文)。
- 阻塞原则:
- 优先阻塞接入层交换机接口,避免核心层抖动。
- 主链路故障时,被阻塞接口秒级切换为转发状态(Forwarding)。
关键点:STP通过“逻辑阻塞”实现“物理冗余,逻辑无环”的智能网络。
三、根桥选举
1. 根桥(Root Bridge)的核心角色
- 全网的核心,所有流量路径以其为基准。
- 特性:
- 所有接口均为指派端口(Designated Port),永不阻塞。
- 实际部署中,通常由高性能汇聚层交换机担任。
2. 选举规则:BID决胜
BID(Bridge ID)= 桥优先级 + MAC地址,小者胜出。
- 桥优先级:
- 默认值32768,需手动调整为4096的整倍数(如0、4096、8192)。
- 值越小优先级越高(0为最高)。
- MAC地址:
- 比较交换机的背板MAC(基MAC),非接口MAC。
- 二层交换机仅1个基MAC;三层交换机有“基MAC+每接口独立MAC”。
3. 选举流程
- 所有交换机初始自认根桥,广播BPDU报文。
- 收到更优BID(更小值)时,更新自身认知。
- 最终全网唯一根桥确立,非根桥同步其信息。
案例:若交换机A优先级4096、B优先级8192,则A为根桥;若优先级相同,则MAC较小者胜出。
四、路径代价与端口角色
1. 路径代价(Path Cost)
衡量链路质量的数值,值越小路径越优(带宽越高):
| 带宽 | 传统标准 | 修订标准 |
|---|---|---|
| 10Gbps | 1 | 2 |
| 1Gbps | 1 | 4 |
| 100Mbps | 10 | 19 |
| 10Mbps | 100 | 100 |
2. 端口角色分工
- 根端口(Root Port):非根桥到达根桥的最优路径接口(路径代价最小)。
- 指派端口(Designated Port):根桥所有接口 + 各网段到达根桥的最优接口。
- 非指派端口(Non-Designated Port):被阻塞的接口,仅接收BPDU。
3. 阻塞决策流程
当非根桥间存在冗余链路时:
- 比较累计路径代价至根桥(值小者优先)。
- 代价相同则比较发送者BID(小者胜)。
- BID相同则比较端口ID(PID=端口优先级+端口号)。
口诀:“查对端,比大小,根桥不断保通畅”。
五、BPDU协议
1. BPDU报文核心作用
- 全称:Bridge Protocol Data Unit(桥协议数据单元)
- 功能:携带拓扑信息,驱动选举与收敛(每2秒发送一次)。
- 关键字段:字段说明根桥ID当前公认的根桥BID路径开销发送者到根桥的累计代价发送者BID本交换机的桥ID端口ID发送端口的PID(优先级+编号)
2. 拓扑变更机制(TCN)
当链路故障时:
- 检测到变化的交换机向上游发送TCN BPDU。
- 根桥收到后广播TC(Topology Change)标志,通知全网刷新MAC表(缩短老化时间)。
传统STP缺陷:TCN传递需经根桥确认,收敛慢(30-50秒)。
六、端口状态机:从阻塞到转发的旅程
1. 802.1D的五大状态
| 状态 | 行为 | 持续时间 |
|---|---|---|
| 阻塞(Blocking) | 不转发数据,只收BPDU | 20秒(Max Age) |
| 侦听(Listening) | 参与拓扑计算,不转发数据 | 15秒 |
| 学习(Learning) | 构建MAC表,不转发数据 | 15秒 |
| 转发(Forwarding) | 正常收发数据 | 永久 |
| 禁用(Disabled) | 管理员关闭端口 | – |
2. RSTP的加速优化(802.1w)
- 合并状态:侦听+学习→学习状态(总收敛时间缩至1-2秒)。
- 新增端口角色:
- Alternate Port:根端口的备份(阻塞态,但可快速切换)。
- Backup Port:指派端口的备份。
七、阻塞端口选举实战案例
场景:三台交换机环形连接(根桥为SW1,SW2与SW3直连)。
选举逻辑:
- 根端口选择:
- SW2的Gi0/1(到SW1的cost=4)优于Gi0/2(cost=4+4=8)→ Gi0/1为根端口。
- SW2与SW3间链路阻塞:
- 比较BID:SW2 MAC < SW3 MAC → SW3的Gi0/2成为非指派端口(阻塞)。
- 路径代价决胜:
- 若SW3到根桥路径更优(如直连SW1),则阻塞SW2的Gi0/2。
配置口诀:
根桥定核心,阻塞看对端; 代价先比较,BID再决胜。
八、三层交换机的STP特殊处理
1. 必要性分析
| 场景 | STP配置要求 |
|---|---|
| 纯二层接入网络 | 必须启用(防环路) |
| 三层交换机作核心网关 | 建议启用(避免下行环路) |
| 纯三层路由环境 | 可禁用 |
2. 关键命令(Cisco示例)
010203040506! 强制指定根桥
Switch(config)# spanning-tree vlan 10 root primary !
修改端口优先级(控制阻塞点)
Switch(config-if)# spanning-tree port-priority 64 ! 必须为16的倍数 !
验证拓扑
Switch# show spanning-tree vlan 10
九、MSTP:企业级网络的终极方案
1. 传统STP的瓶颈
- PVST+:每VLAN一棵树,资源消耗大(VLAN数=实例数)。
- 无法跨VLAN负载均衡。
2. MSTP的核心创新
- 实例映射:将多个VLAN分组映射到单个生成树实例(MSTI)。
实例0:VLAN 10,20 // 走左链路 实例1:VLAN 30,40 // 走右链路 - 区域划分:通过Region Name/Revision号标识域内交换机。
3. 部署优势
- 资源消耗降低80%(百VLAN仅需2-3个实例)。
- 实现跨设备、跨链路的精细化负载均衡。
十、STP的黄金实践原则
- 根桥人为指定:
- 将汇聚层高性能交换机设为
primary root,接入层设为secondary root。
- 将汇聚层高性能交换机设为
- 阻塞点优化:
- 通过调整端口优先级,确保阻塞发生在接入层而非核心。
- 收敛加速:
- 启用RSTP(
spanning-tree mode rapid-pvst)或MSTP。
- 启用RSTP(
- 防环路加固:
- 边缘端口启用
PortFast(跳过监听/学习状态)。 - 核心链路启用
BPDU Guard(收到BPDU则禁用端口)。
- 边缘端口启用
终极忠告:STP是冗余网络的“安全气囊”,但错误配置会导致全网瘫痪。上线前务必在非高峰时段验证
show spanning-tree inconsistentports!
附录:STP故障排查速查表
| 现象 | 可能原因 | 解决措施 |
|---|---|---|
| 网络间歇性中断 | 未阻塞端口形成临时环路 | 检查BID选举与端口优先级 |
| 收敛时间超过2秒 | 使用传统802.1D | 升级为RSTP/MSTP |
| VLAN流量路径不符预期 | PVST+负载均衡配置错误 | 验证spanning-tree vlan X cost |
| 交换机CPU持续高负载 | 广播风暴或BPDU泛洪 | 启用BPDU Guard+Loop Guard |