生成树协议配置与分析

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除

一、相关知识

1、生成树协议简介

生成树协议STP)是一种避免数据链路层逻辑环路的机制,它通过信息交互识别环路并阻塞部分端口,形成无环路的树状网络。在网络故障发生时,STP能迅速检测并更新网络拓扑,利用冗余链路实现网络的高可用性和容错能力。

生成树协议利用网桥协议数据单元BPDU)报文在交换机间交互信息,封装在以太网帧中传输,以确定网络拓扑。通过选举根网桥,非根网桥选择根端口,网段选择指定端口转发数据,其余端口被阻塞,构建无环路的树形结构。这不仅消除了环路问题,还实现了路径冗余,增强了网络的稳定性和可靠性。

现在常用的生成树协议有:生成树协议(Spanning Tree Protocol,STP)、快速生成树协议(Rapid Spanning Tree Protocol,RSTP)和多生成树协议(Multiple Spanning Tree Protocol,MSTP);注意,++STP和RSTP基于物理以太网构建生成树++ ;MSTP 能通过配置多实例在物理网络上++为不同的VLAN建立多个独立的生成树++,从而为不同的VLAN提供不同的分组转发路径,以实现负载均衡。

2、相关CLI命令

2.1、设置STP的模式

STP有MSTP、RSTP、STP 3种模式。华为交换机支持这三种,默认采用MSTP:

Haskell 复制代码
 [Huawei]stp mode ?
   mstp  Multiple Spanning Tree Protocol (MSTP) mode
   rstp  Rapid Spanning Tree Protocol (RSTP) mode
   stp   Spanning Tree Protocol (STP) mode

2.2、启动STP

华为交换机默认启动STP:

Haskell 复制代码
 [Huawei]stp enable

2.3、显示STP状态

Haskell 复制代码
 [Huawei]display stp brief

2.4、配置交换机在指定生成树中的优先级

默认下,华为交换机在指定生成树中优先级是32768(值越小,优先级越高);

Haskell 复制代码
 [Huawei]stp priority 4096       # 配置交换机在默认生成树实例中的优先级为4096
 [Huawei]stp instance 1 priority 4096    # 配置交换机在生成树实例1中的优先级为4096

二、建立网络拓扑

三、验证生成树协议的作用

1、测试网络连通性

2、查看STP信息

华为交换机默认启用 MSTP(单实例);执行"display stp brief"命令查看各交换机的 STP 信息和 STP 接口状态信息:

Haskell 复制代码
 # LSW1 的 STP 信息和 STP 接口状态信息:
 [LSW1]display stp brief
  MSTID  Port                        Role  STP State     Protection
    0    Ethernet0/0/1               DESI  FORWARDING      NONE
    0    Ethernet0/0/2               DESI  FORWARDING      NONE
    0    GigabitEthernet0/0/1        DESI  FORWARDING      NONE
    0    GigabitEthernet0/0/2        DESI  FORWARDING      NONE
    
 # LSW2 的 STP 信息和 STP 接口状态信息:
 [LSW2]display stp brief
  MSTID  Port                        Role  STP State     Protection
    0    Ethernet0/0/1               DESI  FORWARDING      NONE
    0    Ethernet0/0/2               DESI  FORWARDING      NONE
    0    GigabitEthernet0/0/1        DESI  FORWARDING      NONE
    0    GigabitEthernet0/0/2        ROOT  FORWARDING      NONE
 ​
 #LSW3 的 STP 信息和 STP 接口状态信息:
 [LSW3]display stp brief
  MSTID  Port                        Role  STP State     Protection
    0    Ethernet0/0/1               DESI  FORWARDING      NONE
    0    Ethernet0/0/2               DESI  FORWARDING      NONE
    0    GigabitEthernet0/0/1        ROOT  FORWARDING      NONE
    0    GigabitEthernet0/0/2        ALTE  DISCARDING      NONE

3种接口角色:

  • Root Port(ROOT):根端口,去往根网桥路径开销最小的端口;可正常转发流量;
  • Designated Port(DESI):指定端口,负责转发BPDU报文的端口;++根网桥上的端口都是指定端口++,可正常转发流量;
  • Alternate Port(ALTE):阻塞端口,禁止转发流量的端口

可以发现交换机LSW1被作为根网桥,而交换机LSW3的GE0/0/2接口被阻塞。就得到生成树拓扑,避免了环路;

3、关闭STP导致广播风暴

关闭所有交换机的STP:

Haskell 复制代码
 [LSW1]undo stp enable
 [LSW2]undo stp enable
 [LSW3]undo stp enable

测试PC1的ARP缓存,执行ping命令与其他PC的连通性,发现无法连通;

在交换机LSW1的GE0/0/1接口启动抓包,会捕获大量的ARP广播帧和重复的ARP单播帧:

由于停止运行STP后,交换机间产生环路,从而导致广播风暴,交换机无法正常工作;

四、验证单实例生成树对VLAN的作用

恢复启用各交换机的STP:

Haskell 复制代码
 [LSW1]stp enable
 [LSW2]stp enable
 [LSW3]stp enable

1、配置VLAN

在交换机LSW1、LSW2和LSW3中创建VLAN 10、VLAN 20和VLAN 30;

复制代码
Haskell 复制代码
 # 进入系统视图步骤省略
 LSW1:
 vlan batch 10 20 30
 int e0/0/1
 port link-type access
 port default vlan 10
 int e0/0/2
 port link-type access
 port default vlan 30
 int g0/0/1
 port link-type access
 port default vlan 10
 int g0/0/2
 port link-type access
 port default vlan 30

对LSW2和LSW3进行类似配置;

2、测试同一VLAN内PC间的连通性

由于MSTP的MST单实例配置模式下多个VLAN共享生成树拓扑,交换机LSW3接口GE0/0/2被阻塞,因此PC3与PC4无法连通;

五、MSTP的多实例配置与验证

在MSTP多实例模式下,若每个实例对应一个VLAN,则可以为每个VLAN生成一个独立的生成树拓扑。配置MST多实例时,同一MST域中,必须具有相同的域名、修订级别和VLAN到MST实例的映射关系

1、配置MST多实例

Haskell 复制代码
LSW1:
 stp region-configuration            # 进入 MST 域视图
 region-name Huawei                  # 配置 MST 域名为Huawei
 revision-level 1                    # 配置 MST 修订级别为1,默认为0
 instance 1 vlan 10                  # 指定 VLAN 10 映射到 MST 1
 instance 2 vlan 20                  # 指定 VLAN 20 映射到 MST 2
 instance 3 vlan 30                  # 指定 VLAN 30 映射到 MST 3
 active region-configuration         # 激活 MST 域配置

对交换机LSW2和LSW3做同样配置

2、测试同一VLAN内PC间的连通性

发现PC间均能ping通 ;执行 display stp brief 查看各交换机的STP信息和STP接口状态信息;可以看到每个 MST 实例都进行独立的生成树计算,在 MST 实例 1、 2、3 的生成树拓扑中,均没有端口被阻塞,因为 VLAN 10、VLAN 20 和 VLAN 30 的拓扑本身就没有环路。

六、配置Trunk链路,验证生成树协议的功能

将交换机LSW1、LSW2和LSW3之间的链路配置为Trunk链路,并允许所有VLAN通过。这样,任何一条链路出现故障,各VLAN都还能保证连通;

七、总结

  • 生成树协议用于在一个存在冗余路径的以太网中为终端之间建立没有环路的交换 路径。
  • MSTP 可以基于 VLAN 构建多个生成树拓扑,在实现容错的同时实现负载均衡。

致谢

在此,我要对所有为知识共享做出贡献的个人和机构表示最深切的感谢。同时也感谢每一位花时间阅读这篇文章的读者,如果文章中有任何错误,欢迎留言指正。

学习永无止境,让我们共同进步!!

相关推荐
BingoGo1 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack1 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo2 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack2 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
Sinclair3 天前
简单几步,安卓手机秒变服务器,安装 CMS 程序
android·服务器
JaguarJack3 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo3 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
Rockbean4 天前
用40行代码搭建自己的无服务器OCR
服务器·python·deepseek
茶杯梦轩4 天前
CompletableFuture 在 项目实战 中 创建异步任务 的核心优势及使用场景
服务器·后端·面试
JaguarJack4 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel