前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >生成树协议(STP)配置详解:避免网络环路的最佳实践

生成树协议(STP)配置详解:避免网络环路的最佳实践

作者头像
神的孩子都在歌唱
发布2025-03-05 20:24:25
发布2025-03-05 20:24:25
1800
代码可运行
举报
运行总次数:0
代码可运行

生成树协议(STP)配置详解:避免网络环路的最佳实践

前言

作者:神的孩子都在歌唱

在复杂的局域网(LAN)中,冗余链路是提高网络可靠性的重要手段,但如果不加以控制,冗余链路可能会导致网络环路(Loop),引发广播风暴、MAC地址表波动和高CPU占用,最终导致整个网络瘫痪。 生成树协议(Spanning Tree Protocol, STP)正是为了解决这一问题而设计的。它通过自动检测冗余链路并阻止环路,确保网络稳定运行。本文将深入讲解STP的原理、配置方法,以及如何优化生成树协议以提升网络性能。

如下网络配置中,当PC1访问PC2时候,发现ping不通,原因的话就是这四台交换机出现了环路,流量转发不到PC2。

image-20250305010051906
image-20250305010051906

备注:交换机S5700会默认开启stp,开启后他就会自动选举。所以为了测试先把他关了 stp disable

一、STP基本原理

STP基于树形拓扑工作,它的核心思想是:在多条冗余路径中,自动选择一条主路径,阻塞其余路径,以避免环路。STP的工作过程包括:

  1. 1. 选举根桥(Root Bridge):所有交换机通过BPDU(Bridge Protocol Data Unit)报文相互比较,选出具有最低桥ID的交换机作为根桥。
  2. 2. 计算最优路径:各交换机根据路径成本(Path Cost),计算到达根桥的最佳路径,并将其端口设为根端口(Root Port)
  3. 3. 选举指定端口(Designated Port):在每条链路上,决定哪个交换机的端口将成为指定端口,用于数据转发。 根桥所有端口都是指定端口
  4. 4. 阻塞非必要路径:将冗余路径上的端口设为阻塞状态(Blocking),防止环路形成。

二、STP 配置示例(华为交换机)

在华为交换机上,可以使用如下命令来配置生成树协议。

1. 启用生成树协议

在所有交换机上启用STP,确保环路保护机制生效。

代码语言:javascript
代码运行次数:0
复制
[Huawei] stp enable  # 启用STP

2. 配置根桥

如果你的交换机是核心设备,建议手动指定其为根桥,以防止动态选举导致网络不稳定。

代码语言:javascript
代码运行次数:0
复制
[SwitchA] stp priority 4096  # 设置优先级,数值越小,优先级越高

默认STP优先级为32768,建议核心交换机设为4096或8192,以确保它成为根桥。

也可以直接设置为根桥

代码语言:javascript
代码运行次数:0
复制
[SwitchA] stp root primary

神唱这里将SwitchA作为根桥,将SwitchB设置为备份根桥

代码语言:javascript
代码运行次数:0
复制
[SwitchB] stp root secondary

3. 查看生成树状态

使用以下命令检查当前STP状态,包括根桥选举、端口角色等信息。

代码语言:javascript
代码运行次数:0
复制
[SwitchA] display stp brief
image-20250305012529019
image-20250305012529019

可以看到根桥 SwitchA 的两个端口都是指定端口。

image-20250305012845397
image-20250305012845397

SwitchC的端口1是根端口,端口2是指定端口,端口3是禁用的。

4. 测试

我们在使用PC1 ping PC2,发现ping的通了,说明流量转发到了。

image-20250305014326340
image-20250305014326340

如果认真看文章的朋友应该很快就能知道流量是怎么发的了,如下

代码语言:javascript
代码运行次数:0
复制
PC1 -> SwitchD  -> SwitchA  -> SwitchB  -> SwitchC -> PC2 

有朋友会问为什么不直接从SwitchD -> SwitchC, 原因就是SwitchC的端口3被禁用了,可以通过抓包的方式发现流量根本没进来。

image-20250305015239058
image-20250305015239058

又有人问了,如果我就是想走D到C呢,我不想走那么多交换机。有没有设置的命令。有的,兄弟有的。

4. 调整路径成本(Path Cost)

如果希望调整特定链路的优先级(比如,让某条链路成为主路径),可以修改端口的路径成本:

代码语言:javascript
代码运行次数:0
复制
[SwitchC] interface GigabitEthernet 0/0/3
[SwitchC-GigabitEthernet0/0/3] stp cost 10  # 设置端口路径成本为10

路径成本越低,优先级越高,该路径越可能成为主路径。 ,这时我们再看 SwitchC的stp配置

image-20250305020706905
image-20250305020706905

可以发现端口3从禁用变成可转发的根端口了。我们在抓包试试。

image-20250305020846028
image-20250305020846028

这回流量是从端口3进来了。也就是

代码语言:javascript
代码运行次数:0
复制
PC1 -> SwitchD -> SwitchC -> PC2 

5. 配置边缘端口(Edge Port)

如果某个端口连接的是终端设备(如PC或服务器),而非交换机,为了加速端口收敛,可以配置为边缘端口(即快速转发模式,等效于Cisco的PortFast):

代码语言:javascript
代码运行次数:0
复制
[Huawei-GigabitEthernet0/0/2] stp edged-port enable

这样,该端口在上线时无需经历**Listening(监听)和 Learning(学习)**阶段,可以立即进入转发状态,加快网络恢复速度。

简单理解就是提前预习了。不需要等到你请求的时候在学习。

6. 启用BPDU保护

如果边缘端口意外接收到BPDU报文,可能意味着环路风险。可以启用BPDU保护,以防止错误连接交换机:

代码语言:javascript
代码运行次数:0
复制
[Huawei-GigabitEthernet0/0/2] stp bpdu-protection

当启用该功能的端口收到BPDU报文后,会自动进入Err-Disable状态,避免环路形成。

三、快速生成树(RSTP)与增强STP

传统STP收敛速度较慢(通常需要50秒),对于现代网络来说可能过于迟缓。因此,我们可以选择 快速生成树(RSTP)增强型生成树(MSTP) 来提高收敛速度。

1. 启用RSTP(Rapid Spanning Tree Protocol)

RSTP的主要优势是可以加快端口的状态转换速度,使网络更快恢复。启用RSTP的方法如下:

代码语言:javascript
代码运行次数:0
复制
[Huawei] stp mode rstp  # 启用RSTP模式

2. 启用MSTP(Multiple Spanning Tree Protocol)

如果你在网络中部署了多个VLAN,并希望不同VLAN使用不同的生成树实例,可以使用MSTP,它比传统STP和RSTP更高效:

代码语言:javascript
代码运行次数:0
复制
[Huawei] stp mode mstp  # 启用MSTP模式

然后,你需要手动配置MSTP实例,将VLAN映射到不同的实例,以优化流量路径。

代码语言:javascript
代码运行次数:0
复制
[Huawei] stp region-config
[Huawei-mst-region] instance 1 vlan 10 20 30
[Huawei-mst-region] instance 2 vlan 40 50 60
[Huawei-mst-region] active region-configuration

这样,不同的VLAN可以使用不同的路径,有效均衡网络流量。

四、STP优化与排错

1. 避免根桥漂移

如果STP根桥在网络运行过程中频繁变化,可能会引起网络不稳定。为了防止这一问题,可以在核心交换机上手动设置较低的优先级,并在接入交换机上提高优先级,确保根桥始终由核心交换机担任。

2. 防止环路意外发生

在接入层交换机上,建议启用环路保护功能(Loop Guard),以防止因STP错误失效而产生环路:

代码语言:javascript
代码运行次数:0
复制
[Huawei] stp loop-protection

3. 监控STP状态变化

定期检查STP状态,避免误配置导致网络问题。

代码语言:javascript
代码运行次数:0
复制
[Huawei] display stp brief

如果发现某些端口状态频繁变化,可能需要检查物理连接或路径成本设置是否合理。

五、结语

生成树协议(STP)是避免网络环路的重要技术,它可以自动选择最佳路径,并阻塞冗余链路,以确保网络稳定运行。

  • STP适用于所有以太网交换网络,但收敛速度较慢。
  • RSTP提高了收敛速度,适用于大部分企业网络
  • MSTP适用于多VLAN环境,可以优化不同VLAN的流量路径

在实际部署时,建议优先使用RSTP或MSTP,并结合边缘端口、BPDU保护、环路防护等优化措施,以提高网络的稳定性和安全性。

作者:神的孩子都在歌唱 本人博客:https://blog.csdn.net/weixin_46654114 转载说明:务必注明来源,附带本人博客连接

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-03-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 神的孩子都在歌唱 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 生成树协议(STP)配置详解:避免网络环路的最佳实践
    • 一、STP基本原理
    • 二、STP 配置示例(华为交换机)
      • 1. 启用生成树协议
      • 2. 配置根桥
      • 3. 查看生成树状态
      • 4. 测试
      • 4. 调整路径成本(Path Cost)
      • 5. 配置边缘端口(Edge Port)
      • 6. 启用BPDU保护
    • 三、快速生成树(RSTP)与增强STP
      • 1. 启用RSTP(Rapid Spanning Tree Protocol)
      • 2. 启用MSTP(Multiple Spanning Tree Protocol)
    • 四、STP优化与排错
      • 1. 避免根桥漂移
      • 2. 防止环路意外发生
      • 3. 监控STP状态变化
    • 五、结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档