华为eNSP模拟器综合实验之-STP生成树
生成树协议(STP)是用于防止网络环路的二层协议,通过构建无环拓扑确保网络稳定性。文章详细解析了STP及其演进协议RSTP、MSTP的工作原理:STP通过根桥选举和端口状态管理消除环路;RSTP优化了收敛时间;MSTP支持多实例实现VLAN负载均衡。重点介绍了华为设备配置方法,包括根桥设置、端口开销调整及防护机制,并提供了企业网络设计原则和故障排查案例。最后强调,虽然SDN等新技术正在发展,掌握生
一、生成树协议概述
1.1 生成树协议的概念
生成树协议(Spanning Tree Protocol, STP)是一种网络协议,用于在具有物理环路的网络中防止广播风暴、MAC地址表不稳定和重复帧传输等问题。它通过创建一个逻辑的无环路拓扑结构,保证网络中只有一条活动路径连接任意两个网络节点,同时保留冗余路径作为备份。
1.2 生成树协议的意义与价值
核心价值:
- 环路防护:消除二层网络中的环路,防止广播风暴
- 链路冗余:在保证无环路的同时,提供物理链路冗余
- 网络自愈:当主用链路故障时,自动启用备用链路
- 网络稳定性:维护稳定的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(桥协议数据单元)进行选举,决定根桥、根端口、指定端口和阻塞端口。
选举四步法:
-
根桥选举:比较BID(网桥ID),最低BID的交换机成为根桥
- BID = 优先级(2字节) + MAC地址(6字节)
- 默认优先级为32768,可手动修改
-
根端口选举:非根桥上到根桥开销最小的端口
- 比较路径开销(根路径开销)
- 若开销相同,比较上游BID
- 若上游BID相同,比较上游端口ID
-
指定端口选举:每条链路上到根桥开销最小的端口
- 比较根路径开销
- 若开销相同,比较BID
- 若BID相同,比较端口ID
-
阻塞剩余端口:既不是根端口也不是指定端口的端口
2.2 STP端口状态与计时器
STP端口五种状态:
- 禁用(Disabled): 端口未启用
- 阻塞(Blocking): 不转发数据,只接收BPDU
- 侦听(Listening): 准备参与帧转发,不学习MAC
- 学习(Learning): 学习MAC地址,不转发数据帧
- 转发(Forwarding): 正常转发数据帧和BPDU
关键计时器:
- Hello Time: 根桥发送BPDU的时间间隔(默认2秒)
- Forward Delay: 侦听和学习状态的持续时间(默认15秒)
- Max Age: BPDU最大生存时间(默认20秒)
三、RSTP(快速生成树协议)
3.1 RSTP对STP的改进
RSTP(IEEE 802.1w)保持与STP兼容,同时大幅改进收敛性能:
-
端口角色扩展:
- 根端口(Root Port)
- 指定端口(Designated Port)
- 替代端口(Alternate Port):替代根端口
- 备份端口(Backup Port):备份指定端口
- 边缘端口(Edge Port):连接终端的端口
-
端口状态简化:
- 丢弃(Discarding):替代阻塞、侦听状态
- 学习(Learning)
- 转发(Forwarding)
-
快速收敛机制:
- 交换机间协商(handshake)实现快速状态转换
- 边缘端口直接进入转发状态
- 指定端口快速切换机制
3.2 RSTP的BPDU机制
-
BPDU格式改进:
- 类型字段从0x00改为0x02
- 新增Flags字段,包含更多状态信息
- 所有交换机定期发送BPDU,不仅是根桥
-
BPDU处理机制:
- 连续3次未收到BPDU则认为链路失效
- BPDU老化时间从Max Age减少到3个Hello时间
四、MSTP(多生成树协议)
4.1 MSTP核心概念
MSTP(IEEE 802.1s)解决了STP/RSTP无法实现VLAN负载均衡的问题:
-
MST域(MST Region):
- 具有相同MST配置的相连交换机集合
- 配置包括: 域名、修订级别、VLAN与实例映射
-
MSTI(MST Instance):
- 每个MSTI是一个单独的生成树实例
- 可将多个VLAN映射到同一个MSTI
- 每个MSTI有独立的拓扑和参数
-
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发送/接收计数
快速收敛测试:
- 关闭SW1与SW2之间的链路
- 观察SW2端口状态变化
- 使用
display stp brief命令查看收敛时间 - 对比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 多生成树最佳实践
-
MST域设计:
- 每个物理区域一个MST域
- 域内所有交换机配置一致
- 限制域规模(建议不超过50台设备)
-
实例规划:
- 按业务类型划分实例
- 限制MSTI数量(建议不超过16个)
- 预留实例用于未来扩展
-
负载均衡设计:
- 通过实例映射实现VLAN流量均衡
- 考虑链路带宽和延迟
- 避免单链路过载
八、综合实验:企业网络生成树部署
8.1 拓扑设计
[Core-SW1]
/ \
/ \
[Distr-SW1] [Distr-SW2]
/ \ / \
/ \ / \
[Acc-SW1] [Acc-SW2] [Acc-SW3] [Acc-SW4]
8.2 需求分析
- 核心交换机Core-SW1作为主根桥
- Distr-SW1和Distr-SW2作为备用根桥
- VLAN 10-100映射到MSTI 1
- VLAN 101-200映射到MSTI 2
- 实现流量负载均衡
- 防止非法设备接入
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 优化建议
-
调整Hello时间: 在稳定网络中,可将Hello时间从2秒减少到1秒,加快故障检测
[Core-SW1]stp timer hello 100 -
配置TC保护阈值: 防止频繁拓扑变更影响网络
[Core-SW1]stp tc-protection threshold 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 -
监控与告警: 配置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计时器 |
实践建议
- 网络设计阶段合理规划生成树拓扑
- 设备选型时考虑支持RSTP/MSTP的设备
- 配置管理中保持MST域配置一致性
- 运维监控中关注STP拓扑变更事件
- 技术演进中了解SDN对传统生成树的替代趋势
在现代网络中,虽然新兴技术正在逐步替代传统生成树,但理解生成树协议原理对于网络工程师仍然至关重要。建议结合实验拓扑,在eNSP中反复实践各种场景,深入理解生成树协议的工作机制。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)