生成树协议(STP)

一、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. 环路形成原理
当冗余链路存在时:

  1. PC发送广播帧至交换机1,记录MAC地址与接口映射。
  2. 帧通过冗余链路到达交换机2,交换机2更新自身MAC表。
  3. 帧经另一链路返回交换机1,触发MAC表覆盖更新(如接口从f0-0跳变为f0-2)。
  4. 数据包在环路中无限循环,导致:
    • 网络时断时续、延迟飙升
    • 交换机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. 选举流程

  1. 所有交换机初始自认根桥,广播BPDU报文。
  2. 收到更优BID(更小值)时,更新自身认知。
  3. 最终全网唯一根桥确立,非根桥同步其信息。

案例:若交换机A优先级4096、B优先级8192,则A为根桥;若优先级相同,则MAC较小者胜出。


四、路径代价与端口角色

1. 路径代价(Path Cost)
衡量链路质量的数值,值越小路径越优(带宽越高):

带宽传统标准修订标准
10Gbps12
1Gbps14
100Mbps1019
10Mbps100100

2. 端口角色分工

  • 根端口(Root Port):非根桥到达根桥的最优路径接口(路径代价最小)。
  • 指派端口(Designated Port):根桥所有接口 + 各网段到达根桥的最优接口。
  • 非指派端口(Non-Designated Port):被阻塞的接口,仅接收BPDU。

3. 阻塞决策流程
当非根桥间存在冗余链路时:

  1. 比较累计路径代价至根桥(值小者优先)。
  2. 代价相同则比较发送者BID(小者胜)。
  3. BID相同则比较端口ID(PID=端口优先级+端口号)。

口诀:“查对端,比大小,根桥不断保通畅”。

五、BPDU协议

1. BPDU报文核心作用

  • 全称:Bridge Protocol Data Unit(桥协议数据单元)
  • 功能:携带拓扑信息,驱动选举与收敛(每2秒发送一次)。
  • 关键字段字段说明根桥ID当前公认的根桥BID路径开销发送者到根桥的累计代价发送者BID本交换机的桥ID端口ID发送端口的PID(优先级+编号)

2. 拓扑变更机制(TCN)
当链路故障时:

  1. 检测到变化的交换机向上游发送TCN BPDU
  2. 根桥收到后广播TC(Topology Change)标志,通知全网刷新MAC表(缩短老化时间)。

传统STP缺陷:TCN传递需经根桥确认,收敛慢(30-50秒)。


六、端口状态机:从阻塞到转发的旅程

1. 802.1D的五大状态

状态行为持续时间
阻塞(Blocking)不转发数据,只收BPDU20秒(Max Age)
侦听(Listening)参与拓扑计算,不转发数据15秒
学习(Learning)构建MAC表,不转发数据15秒
转发(Forwarding)正常收发数据永久
禁用(Disabled)管理员关闭端口

2. RSTP的加速优化(802.1w)

  • 合并状态:侦听+学习→学习状态(总收敛时间缩至1-2秒)。
  • 新增端口角色
    • Alternate Port:根端口的备份(阻塞态,但可快速切换)。
    • Backup Port:指派端口的备份。

七、阻塞端口选举实战案例

场景:三台交换机环形连接(根桥为SW1,SW2与SW3直连)。

选举逻辑

  1. 根端口选择
    • SW2的Gi0/1(到SW1的cost=4)优于Gi0/2(cost=4+4=8)→ Gi0/1为根端口。
  2. SW2与SW3间链路阻塞
    • 比较BID:SW2 MAC < SW3 MAC → SW3的Gi0/2成为非指派端口(阻塞)。
  3. 路径代价决胜
    • 若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的黄金实践原则

  1. 根桥人为指定
    • 将汇聚层高性能交换机设为primary root,接入层设为secondary root
  2. 阻塞点优化
    • 通过调整端口优先级,确保阻塞发生在接入层而非核心。
  3. 收敛加速
    • 启用RSTP(spanning-tree mode rapid-pvst)或MSTP。
  4. 防环路加固
    • 边缘端口启用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