一、生成树协议概述

1.1 生成树协议的概念

生成树协议(Spanning Tree Protocol, STP)是一种网络协议,用于在具有物理环路的网络中防止广播风暴、MAC地址表不稳定和重复帧传输等问题。它通过创建一个逻辑的无环路拓扑结构,保证网络中只有一条活动路径连接任意两个网络节点,同时保留冗余路径作为备份。

1.2 生成树协议的意义与价值

核心价值:

  1. 环路防护:消除二层网络中的环路,防止广播风暴
  2. 链路冗余:在保证无环路的同时,提供物理链路冗余
  3. 网络自愈:当主用链路故障时,自动启用备用链路
  4. 网络稳定性:维护稳定的MAC地址表,避免数据帧的重复传输

性能代价:

  • 收敛时间较长(传统STP需要30-50秒)
  • 部分链路资源被禁用,造成带宽浪费
  • 复杂网络中拓扑计算可能影响设备性能

1.3 参考命令列表

命令 用途
stp mode stp/mstp/rstp 设置STP模式
stp enable/disable 启用/禁用STP协议
stp root primary/secondary 配置主/备根桥
stp priority [value]

配置交换机优先级

<0-61440> 

优先级步长为4096

stp cost [value] 配置端口开销
stp port priority [value] 配置端口优先级
stp edged-port enable 配置边缘端口
display stp brief 显示STP简要信息
display stp interface [interface] 显示指定接口STP信息

二、STP工作原理深入解析

2.1 STP选举过程详解

STP通过交换BPDU(桥协议数据单元)进行选举,决定根桥、根端口、指定端口和阻塞端口。

选举四步法:

  1. 根桥选举比较BID(网桥ID),最低BID的交换机成为根桥

    • BID = 优先级(2字节) + MAC地址(6字节)
    • 默认优先级为32768,可手动修改
  2. 根端口选举:非根桥上到根桥开销最小的端口

    • 比较路径开销(根路径开销)
    • 若开销相同,比较上游BID
    • 若上游BID相同,比较上游端口ID
  3. 指定端口选举:每条链路上到根桥开销最小的端口

    • 比较根路径开销
    • 若开销相同,比较BID
    • 若BID相同,比较端口ID
  4. 阻塞剩余端口:既不是根端口也不是指定端口的端口

2.2 STP端口状态与计时器

STP端口五种状态:

  1. 禁用(Disabled): 端口未启用
  2. 阻塞(Blocking): 不转发数据,只接收BPDU
  3. 侦听(Listening): 准备参与帧转发,不学习MAC
  4. 学习(Learning): 学习MAC地址,不转发数据帧
  5. 转发(Forwarding): 正常转发数据帧和BPDU

关键计时器:

  • Hello Time: 根桥发送BPDU的时间间隔(默认2秒)
  • Forward Delay: 侦听和学习状态的持续时间(默认15秒)
  • Max Age: BPDU最大生存时间(默认20秒)

三、RSTP(快速生成树协议)

3.1 RSTP对STP的改进

RSTP(IEEE 802.1w)保持与STP兼容,同时大幅改进收敛性能:

  1. 端口角色扩展:

    • 根端口(Root Port)
    • 指定端口(Designated Port)
    • 替代端口(Alternate Port):替代根端口
    • 备份端口(Backup Port):备份指定端口
    • 边缘端口(Edge Port):连接终端的端口
  2. 端口状态简化:

    • 丢弃(Discarding):替代阻塞、侦听状态
    • 学习(Learning)
    • 转发(Forwarding)
  3. 快速收敛机制:

    • 交换机间协商(handshake)实现快速状态转换
    • 边缘端口直接进入转发状态
    • 指定端口快速切换机制

3.2 RSTP的BPDU机制

  1. BPDU格式改进:

    • 类型字段从0x00改为0x02
    • 新增Flags字段,包含更多状态信息
    • 所有交换机定期发送BPDU,不仅是根桥
  2. BPDU处理机制:

    • 连续3次未收到BPDU则认为链路失效
    • BPDU老化时间从Max Age减少到3个Hello时间

四、MSTP(多生成树协议)

4.1 MSTP核心概念

MSTP(IEEE 802.1s)解决了STP/RSTP无法实现VLAN负载均衡的问题:

  1. MST域(MST Region):

    • 具有相同MST配置的相连交换机集合
    • 配置包括: 域名、修订级别、VLAN与实例映射
  2. MSTI(MST Instance):

    • 每个MSTI是一个单独的生成树实例
    • 可将多个VLAN映射到同一个MSTI
    • 每个MSTI有独立的拓扑和参数
  3. CST与CIST:

    • CIST(公共和内部生成树):连接所有MST域的单一生成树
    • CST(公共生成树):连接不同MST域的部分
    • IST(内部生成树):MST域内部的生成树

4.2 MSTP优势与应用场景

优势:

  • VLAN流量负载均衡
  • 网络资源高效利用
  • 多实例容错机制
  • 向下兼容STP/RSTP

典型应用场景:

  • 大型企业网络多VLAN环境
  • 数据中心网络
  • 服务提供商网络
  • 需要按业务类型隔离的网络

五、华为eNSP生成树协议配置实战

5.1 STP基础配置案例

拓扑环境: 三交换机环形连接,SW1、SW2、SW3

配置步骤:

# 1. 配置SW1为根桥
[SW1]stp mode stp  # 设置STP模式
[SW1]stp instance 0 priority 4096  # 设置优先级为4096
[SW1]stp pathcost-standard legacy  # 将路径开销计算标准设置为华为传统标准
                                   # 统一标准避免生成树计算不一致
[SW1]stp enable  # 启用STP

# 2. 配置SW2
[SW2]stp mode stp
[SW2]stp instance 0 priority 8192
[SW2]stp pathcost-standard legacy
[SW2]stp enable

# 3. 配置SW3
[SW3]stp mode stp
[SW3]stp instance 0 priority 12288
[SW3]stp pathcost-standard legacy
[SW3]stp enable

# 4. 配置边缘端口(连接PC的接口)
[SW1]interface GigabitEthernet 0/0/10
[SW1-GigabitEthernet0/0/10]stp edged-port enable  # 配置为边缘端口

验证命令:

# 查看STP简要信息
[SW1]display stp brief

# 样例输出:
 MSTID  Port                        Role  STP State     Protection
   0    GigabitEthernet0/0/1        ROOT  FORWARDING      NONE
   0    GigabitEthernet0/0/2        DESI  FORWARDING      NONE
   0    GigabitEthernet0/0/10       DESI  FORWARDING      NONE

# 查看详细STP信息
[SW1]display stp

输出解析:

-------[MSTI 0]-------
CIST Root/ERPC      :4096.4c1f-cc29-5f8e / 0  # 根桥ID/根路径开销
CIST RegRoot/IRPC   :4096.4c1f-cc29-5f8e / 0  # 本设备是根桥
CIST RootPortId     :0.0                      # 根端口ID
BPDU-Protection     :Disabled
TC or TCN received  :52
TC count per hello  :0
STP Converged       :Yes

5.2 RSTP实战配置案例

拓扑环境: 同STP实验拓扑,升级为RSTP协议

配置步骤:

# 1. 在所有交换机上配置RSTP模式
[SW1]stp mode rstp  # 切换为RSTP模式
[SW1]stp region-configuration  # 进入MST域配置视图
[SW1-mst-region]region-name huawei  # 配置MST域名称
[SW1-mst-region]active region-configuration  # 激活MST域配置
[SW1-mst-region]quit

# 2. 配置SW1为根桥
[SW1]stp instance 0 root primary

# 3. 配置边缘端口和BPDU保护
[SW1]interface GigabitEthernet 0/0/10
[SW1-GigabitEthernet0/0/10]stp edged-port enable
[SW1]stp bpdu-protection  # 启用BPDU保护

# 4. 配置RSTP专用特性
[SW1]stp tc-protection  # 启用TC保护
[SW1]stp timer hello 100  # 设置Hello时间为1秒(100厘秒)
#适当调整,需要保持一直加快收敛
#推荐设置:
#  - 小型网络: hello 150 (1.5秒)
#  - 中型网络: hello 200 (2秒, 默认)
#  - 大型网络: hello 300 (3秒)
#  - 对收敛敏感网络: hello 100 (1秒)
  
#注意:
#  - 全网Hello时间必须一致
#  - 只在根桥上配置,非根桥会自动同步
#  - 过短的Hello时间会增加CPU负载

验证与故障排查:

# 查看RSTP端口角色和状态
[SW1]display stp interface GigabitEthernet 0/0/1

输出解析:

GigabitEthernet0/0/1
  Port Role: Root Port  # 端口角色:根端口
  Port State: FORWARDING  # 端口状态:转发
  Port Priority: 128  # 端口优先级
  Port Cost(Dot1T ) : Config=auto / Active=20000  # 端口开销
  Designated Bridge/PortId: 8000.4c1f-cc29-4b33 / 128.2  # 指定桥/端口ID
  Port Times: Hello 2s MaxAge 20s FwDly 15s RemHop 20  # 计时器
  BPDU sent/received: 156/78  # BPDU发送/接收计数

快速收敛测试:

  1. 关闭SW1与SW2之间的链路
  2. 观察SW2端口状态变化
  3. 使用display stp brief命令查看收敛时间
  4. 对比STP和RSTP的收敛速度差异

5.3 MSTP多实例配置案例

拓扑环境: 四台交换机,多个VLAN环境

需求:

  • VLAN 10, 20映射到MSTI 1,使SW1成为根桥
  • VLAN 30, 40映射到MSTI 2,使SW2成为根桥

配置步骤:

# 1. 配置MST域(所有交换机相同配置)
[SW1]stp region-configuration
[SW1-mst-region]region-name enterprise  # MST域名称
[SW1-mst-region]revision-level 1  # 修订级别
[SW1-mst-region]instance 1 vlan 10 20  # 将VLAN 10,20映射到实例1
[SW1-mst-region]instance 2 vlan 30 40  # 将VLAN 30,40映射到实例2
[SW1-mst-region]active region-configuration  # 激活配置
[SW1-mst-region]quit

# 2. 配置实例1和2
[SW1]stp instance 1 root primary  # 设置SW1为实例1根桥
[SW1]stp instance 2 root secondary  # 设置SW1为实例2的备根桥

[SW2]stp instance 1 root secondary
[SW2]stp instance 2 root primary

# 3. 配置全局STP参数
[SW1]stp mode mstp  # 启用MSTP模式
[SW1]stp enable

# 4. 配置端口开销(优化路径选择)
[SW3]interface GigabitEthernet0/0/1
[SW3-GigabitEthernet0/0/1]stp instance 1 cost 10000  # 设置实例1开销
[SW3-GigabitEthernet0/0/1]stp instance 2 cost 200000  # 设置实例2开销

验证命令:

# 查看MST域配置
[SW1]display stp region-configuration

# 样例输出:
Oper Configuration
Format selector     :0
Revision level      :1
Name                :enterprise
Vlan mapping table
MSTI 1              :Vlan 10 20
MSTI 2              :Vlan 30 40

# 查看MSTI实例信息
[SW1]display stp instance 1 brief

# 样例输出:
 MSTID  Port                        Role  STP State     Protection
   1    GigabitEthernet0/0/1        ROOT  FORWARDING      NONE
   1    GigabitEthernet0/0/2        DESI  FORWARDING      NONE

多实例验证:

# 验证实例1拓扑
[SW1]display stp instance 1

# 验证实例2拓扑
[SW1]display stp instance 2

六、生成树协议优化与排错

6.1 生成树优化技术

1. 根桥设计原则:

  • 将核心交换机配置为主根桥
  • 分布层交换机配置为备用根桥
  • 避免接入层交换机成为根桥
[Core-SW]stp instance 0 root primary
[Distr-SW1]stp instance 0 root secondary

2. 端口开销优化:

  • 根据链路带宽调整端口开销,优化路径选择
  • 不同标准下的默认开销对比

    链路速率

    legacy标准

    dot1d-1998标准

    dot1t标准

    推荐手动设置值

    10 Mbps

    2,000

    2,000,000

    2,000,000

    2,000

    100 Mbps

    200

    200,000

    200,000

    200

    1 Gbps

    20

    20,000

    20,000

    20或19

    10 Gbps

    2

    2,000

    2,000

    2或4

    100 Gbps

    2

    200

    200

    2

# 千兆链路设为19,万兆链路设为4
[SW1]interface GigabitEthernet0/0/1
[SW1-GigabitEthernet0/0/1]stp cost 19

3. 端口优先级调整:

  • 在多链路连接时,通过端口优先级控制根端口选择
[SW1]interface GigabitEthernet0/0/1
[SW1-GigabitEthernet0/0/1]stp port priority 64  # 降低优先级(值越小越优先)

4. 防护机制配置:

# BPDU保护:边缘端口收到BPDU时关闭端口
[SW1]stp bpdu-protection

# 根保护:防止更高优先级的BPDU改变根桥
[SW1]interface GigabitEthernet0/0/2
[SW1-GigabitEthernet0/0/2]stp root-protection

# 环路保护:当根端口或替代端口收不到BPDU时,将其置于Discarding状态
[SW1]interface GigabitEthernet0/0/1
[SW1-GigabitEthernet0/0/1]stp loop-protection

6.2 生成树故障排查案例

案例1: 意外根桥选举

  • 问题现象: 网络性能下降,流量路径异常
  • 排查步骤:
    # 1. 检查当前根桥
    [SW1]display stp
    
    # 2. 检查优先级配置
    [SW1]display current-configuration | include stp priority
    
    # 3. 重新配置根桥
    [Core-SW]stp instance 0 priority 0  # 设置最高优先级

案例2: 端口震荡

  • 问题现象: 端口频繁在转发/阻塞状态切换
  • 排查步骤:
    # 1. 检查物理链路
    [SW1]display interface GigabitEthernet0/0/1
    
    # 2. 检查BPDU统计
    [SW1]display stp interface GigabitEthernet0/0/1
    
    # 3. 启用TC保护
    [SW1]stp tc-protection
    
    # 4. 配置端口震荡抑制
    配置STP边缘端口,并启用BPDU保护,这样当端口收到BPDU时,会进入error-down状态,避免震荡。
    
    [SW1]interface GigabitEthernet0/0/1
    [SW1-GigabitEthernet0/0/1]stp edged-port enable
    [SW1-GigabitEthernet0/0/1]stp bpdu-protection

案例3: MSTP域边界问题

  • 问题现象: MSTP域之间无法通信
  • 排查步骤:
    # 1. 检查MST域配置一致性
    [SW1]display stp region-configuration
    
    # 2. 检查域边界端口状态
    [SW1]display stp brief
    
    # 3. 确保域边界交换机配置正确
    [SW1]interface GigabitEthernet0/0/24
    [SW1-GigabitEthernet0/0/24]stp disable  # 临时禁用STP
    [SW1-GigabitEthernet0/0/24]stp enable   # 重新启用

七、生成树协议在企业网络中的设计原则

7.1 分层网络中的STP设计

核心层:

  • 配置为主根桥
  • 高速链路优化
  • 冗余路径设计

分布层:

  • 配置为备用根桥
  • 控制VLAN边界
  • 路径优化

接入层:

  • 边缘端口配置
  • BPDU保护
  • 端口安全集成

7.2 多生成树最佳实践

  1. MST域设计:

    • 每个物理区域一个MST域
    • 域内所有交换机配置一致
    • 限制域规模(建议不超过50台设备)
  2. 实例规划:

    • 按业务类型划分实例
    • 限制MSTI数量(建议不超过16个)
    • 预留实例用于未来扩展
  3. 负载均衡设计:

    • 通过实例映射实现VLAN流量均衡
    • 考虑链路带宽和延迟
    • 避免单链路过载

八、综合实验:企业网络生成树部署

8.1 拓扑设计

                      [Core-SW1]
                         /  \
                        /    \
             [Distr-SW1]      [Distr-SW2]
               /      \        /      \
              /        \      /        \
          [Acc-SW1]  [Acc-SW2]  [Acc-SW3]  [Acc-SW4]

8.2 需求分析

  1. 核心交换机Core-SW1作为主根桥
  2. Distr-SW1和Distr-SW2作为备用根桥
  3. VLAN 10-100映射到MSTI 1
  4. VLAN 101-200映射到MSTI 2
  5. 实现流量负载均衡
  6. 防止非法设备接入

8.3 配置实现

# 1. 配置MST域(所有交换机)
[Core-SW1]stp region-configuration
[Core-SW1-mst-region]region-name enterprise-network
[Core-SW1-mst-region]revision-level 1
[Core-SW1-mst-region]instance 1 vlan 10 to 100
[Core-SW1-mst-region]instance 2 vlan 101 to 200
[Core-SW1-mst-region]active region-configuration

# 2. 配置根桥
[Core-SW1]stp instance 1 root primary
[Core-SW1]stp instance 2 root primary

[Distr-SW1]stp instance 1 root secondary
[Distr-SW1]stp instance 2 priority 8192

[Distr-SW2]stp instance 1 priority 8192
[Distr-SW2]stp instance 2 root secondary

# 3. 配置防护机制
[Core-SW1]stp bpdu-protection
[Core-SW1]stp tc-protection         
[Core-SW1]stp loop-protection        #端口下

# 4. 接入层交换机配置
[Acc-SW1]stp edged-port enable interface GigabitEthernet0/0/1 to GigabitEthernet0/0/24
[Acc-SW1]stp bpdu-protection
[Acc-SW1]error-down auto-recovery cause bpdu-protection interval 300
# 作用:配置BPDU保护触发端口error-down后的自动恢复功能,并设置自动恢复的时间间隔为300秒

# 5. 优化端口开销
[Distr-SW1]interface GigabitEthernet0/0/1
[Distr-SW1-GigabitEthernet0/0/1]stp instance 2 cost 200000  
# 增大实例2开销,使实例1优先使用此链路

8.4 验证与测试

# 1. 验证MST域配置
[Core-SW1]display stp region-configuration

# 2. 验证实例映射
[Core-SW1]display stp instance 1 brief
[Core-SW1]display stp instance 2 brief

# 3. 模拟链路故障
[Core-SW1]interface GigabitEthernet0/0/1
[Core-SW1-GigabitEthernet0/0/1]shutdown  # 模拟链路故障
# 观察STP收敛时间
[Core-SW1]display stp topology-change  # 查看拓扑变更记录

# 4. 验证流量路径
# 从VLAN 10和VLAN 101的PC分别进行traceroute测试

8.5 优化建议

  1. 调整Hello时间: 在稳定网络中,可将Hello时间从2秒减少到1秒,加快故障检测

    [Core-SW1]stp timer hello 100
  2. 配置TC保护阈值: 防止频繁拓扑变更影响网络

    [Core-SW1]stp tc-protection threshold 3
  3. 边缘端口优化: 确保所有连接终端的端口配置为边缘端口

    [Acc-SW1]port-group pg-edge
    [Acc-SW1-port-group-pg-edge]group-member GigabitEthernet0/0/1 to GigabitEthernet0/0/24
    [Acc-SW1-port-group-pg-edge]stp edged-port enable
  4. 监控与告警: 配置MSTP事件日志和告警

    [Core-SW1]info-center source MSTP channel loghost log level warning

九、华为设备生成树协议命令速查表

命令类别 命令 作用
模式配置 stp mode {stp|rstp|mstp} 设置STP工作模式
全局配置 stp enable/disable 全局启用/禁用STP
根桥配置 stp root primary/secondary 配置主/备根桥
优先级配置 stp [instance-id] priority value 配置交换机优先级
域配置 stp region-configuration 进入MST域配置视图
实例映射 instance instance-id vlan vlan-id-list 配置VLAN映射到MSTI
端口配置 stp cost value 配置端口开销
端口配置 stp port priority value 配置端口优先级
端口配置 stp edged-port enable 配置边缘端口
保护机制 stp bpdu-protection 启用BPDU保护
保护机制 stp root-protection 启用根保护
保护机制 stp loop-protection 启用环路保护
信息查看 display stp brief 显示STP简要信息
信息查看 display stp interface [interface-type interface-number] 显示指定接口STP信息
信息查看 display stp topology-change 显示拓扑变更信息
调试命令 debugging stp [all|event|packet] 启用STP调试
计时器配置 stp timer {hello|max-age|forward-delay} centisecond-value 配置STP计时器

实践建议

  1. 网络设计阶段合理规划生成树拓扑
  2. 设备选型时考虑支持RSTP/MSTP的设备
  3. 配置管理中保持MST域配置一致性
  4. 运维监控中关注STP拓扑变更事件
  5. 技术演进中了解SDN对传统生成树的替代趋势

在现代网络中,虽然新兴技术正在逐步替代传统生成树,但理解生成树协议原理对于网络工程师仍然至关重要。建议结合实验拓扑,在eNSP中反复实践各种场景,深入理解生成树协议的工作机制。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐