Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >生成树协议(STP)配置详解:避免网络环路的最佳实践

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

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

生成树协议(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
代码运行次数:1
运行
AI代码解释
复制
[Huawei] stp enable  # 启用STP

2. 配置根桥

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

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

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

也可以直接设置为根桥

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

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

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

3. 查看生成树状态

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[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
运行
AI代码解释
复制
PC1 -> SwitchD  -> SwitchA  -> SwitchB  -> SwitchC -> PC2 

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

image-20250305015239058
image-20250305015239058

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[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
运行
AI代码解释
复制
PC1 -> SwitchD -> SwitchC -> PC2 

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

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

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

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

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

6. 启用BPDU保护

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[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
运行
AI代码解释
复制
[Huawei] stp mode rstp  # 启用RSTP模式

2. 启用MSTP(Multiple Spanning Tree Protocol)

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[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
运行
AI代码解释
复制
[Huawei] stp loop-protection

3. 监控STP状态变化

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【玩转Lighthouse】Valheim英灵神殿服务器搭建指南
之前参与了Lighthouse的活动,购买了四年的服务器。在跑项目的同时发现可以升配到4C4G的配置。正巧最近在和朋友玩英灵神殿,不如直接在这里分享下服务器搭建经验。
DylanC
2022/04/12
2.9K0
求生之路2服务器搭建教程
《求生之路2》(英语:Left 4 Dead 2)是2008年由V社开发、以丧尸为主题的恐怖生存类游戏《求生之路》的续作,游戏初次于2009年电玩E3展亮相,并已在2009年11月17日于PC以及Xbox 360平台上发行。本教程将解释如何准备您的腾讯云CVM服务器,安装SteamCMD,然后在Debian或Ubuntu上安装和配置Left 4 Dead 2。
GeekZ
2018/08/15
19.8K3
求生之路2服务器搭建教程
快速搭建饥荒游戏服务器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
cnguu
2020/10/23
6K0
快速搭建饥荒游戏服务器
搭建自己的饥荒Don't Starve服务器,摆脱联机卡顿和小伙伴快乐联机
饥荒官方服务器经常无法连接,无法和小伙伴玩耍;如何搭建自己的饥荒服务器呢?和小伙伴随时随地,快乐联机。
Mintimate
2022/07/14
19.9K4
搭建自己的饥荒Don't Starve服务器,摆脱联机卡顿和小伙伴快乐联机
Ubuntu搭建饥荒服务器教程
买阿里云或者腾讯云服务器 1核2G 1M 差不多2-3 人,不是很卡,人数变多的话,就会很卡的,100 块 看自己个人需求 一般的话 2核 4G , 8人左右,差不多 400块
全栈程序员站长
2022/09/05
8.8K4
Ubuntu搭建饥荒服务器教程
如何在Ubuntu上搭建方舟:生存进化服务器
《方舟:生存进化》(英语:Ark: Survival Evolved)是一款由Studio Wildcard制作与发行的生存类沙盒动作冒险游戏,使用虚幻4引擎打造,于2017年8月29日发行,游戏舞台设定在一座充满恐龙的神秘岛屿“方舟”,玩家必须运用技巧与智慧在危机四伏的世界中生存。游戏以第一人称或第三人称视角进行。在游戏世界中,玩家可以步行或者骑恐龙,可以使用枪械或简易武器来对抗敌对人类和生物,建立基地用以防御。玩家也可以利用从游戏中搜刮的资源打造自己的武器。游戏可以选择单人游戏或多人游戏,其中多人游戏可以允许多名玩家同时在线参与。
小翼111
2018/08/14
20.8K4
如何在Ubuntu上搭建方舟:生存进化服务器
【玩转Lighthouse】搭建属于自己求生之路2服务器
求生之路2是一款非常适合开黑的生存游戏,拥有极多的mod和地图,和朋友一起玩再适合不过了
用户9373361
2022/04/18
4.6K0
【玩转Lighthouse】搭建属于自己求生之路2服务器
如何搭建自己的CS GO服务器和小伙伴快乐联机,并配合Sourcemod设置管理员
CS GO确实是一个经久不衰的游戏。如何搭建自己的CS GO私人服务器呢?体验自己当服主,随时联机的快乐。
Mintimate
2022/10/06
12.8K4
如何搭建自己的CS GO服务器和小伙伴快乐联机,并配合Sourcemod设置管理员
在腾讯轻量云Linux上搭建 CSGO 服务器
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz #下载steamcmd
奈月希
2023/02/16
5.1K0
用轻量云搭建幻兽帕鲁服务器
最近一款《幻兽帕鲁》的游戏十分流行Steam玩家已破135万。今天来教大家怎么搭建自己的幻兽帕鲁服务器,首先需要有一台性价比高的服务器。为了确保游戏的稳定体验,使用腾讯云轻量应用服务器作为服务器不仅有BGP加成!下面来看看怎么搭建幻兽帕鲁服务器吧~
奈月希
2024/01/23
1.6K0
用轻量云搭建幻兽帕鲁服务器
0基础搭建幻兽帕鲁服务器,支持校园网联网
本文提供两种服务器搭建方案:Linux平台、Windows平台。两种方式均设置默认参数,如需修改请参考官网配置页面进行修改:自定义参数。
用户6948990
2025/04/03
1500
0基础搭建幻兽帕鲁服务器,支持校园网联网
如何在Ubuntu上搭建饥荒服务器
饥荒(英语:Don't Starve,直译为别饿死)是一款由加拿大公司Klei Entertainment开发的开放世界生存游戏。这个游戏围绕在一位名叫Wilson的科学家,他发现自己身处黑暗阴暗的世界,必须尽可能长时间生存。为此,玩家必须保持Wilson的健康、食物和精神稳定来避免了各种超现实和超自然的敌人杀死和吞噬他。
圣人惠好可爱
2018/08/14
13.7K6
如何在Ubuntu上搭建饥荒服务器
幻兽帕鲁服务器搭建,腾讯云轻量云保姆级部署教程
针对热门多人在线游戏《幻兽帕鲁》(Palworld),腾讯云轻量应用服务器提供了高效的部署途径,让玩家能够快速建立并管理自己的游戏世界。
用户9433031
2024/02/19
3.8K0
幻兽帕鲁服务器搭建,腾讯云轻量云保姆级部署教程
5分钟搭建PalWorld(幻兽帕鲁)游戏服务器
官方地址https://openvpn.net/client/client-connect-vpn-for-windows/
小宇-xiaoyu
2024/01/22
13.3K4
5分钟搭建PalWorld(幻兽帕鲁)游戏服务器
幻兽帕鲁Palworld服务器搭建教学
幻兽帕鲁最近在社区呈现了爆火的趋势,在线人数已突破百万级别,官方服务器也开始出现不稳定,卡人闪退的情况。对于有一定财力的小伙伴,搭建一个私人服务器是一个最稳定而
黄杨峻
2024/01/22
45.8K58
幻兽帕鲁Palworld服务器搭建教学
幻兽帕鲁自建服务器教程
下载解压双击打开 steamcmd.exe 自动下载软件 出现Steam>即为安装完成
残浔
2024/01/24
1.8K5
幻兽帕鲁自建服务器教程
Debian10搭建CS1.6服务器
因为室友前段时间搭了个CSGO服务器,感觉挺有意思。自己手头上还有一台吃灰中的腾讯云轻量,突发奇想要不搭个CS1.6玩玩,反正吃灰也是吃灰。
SakuraRain
2021/09/17
3.6K0
Debian10搭建CS1.6服务器
幻兽帕鲁自建多人游戏专属服务器喂饭教程
最近被誉为“医术高明”、“缝合圣手”的一款游戏火出圈了,早晨一觉醒来群里和朋友圈都是讨论这个游戏的,这个游戏想必大家都耳熟能详了,没错,就是幻兽帕鲁。
星橙
2024/01/23
2.1K3
《僵尸毁灭工程》 Linux开服
配置:CPU: 1核 内存: 2GB 带宽5Mbps 镜像信息: CentOS 8.0
用户4614070
2021/05/09
7K3
轻松与朋友组队!《幻兽帕鲁》新手小白服务器搭建攻略!(持续更新)
《幻兽帕鲁》大火啦!这游戏上线才几天,卖了 500 万份,Steam 在线人数还创历史第五!比起《赛博朋克 2077》,简直是超级巨星!
用户1340495
2024/01/26
1.5K5
轻松与朋友组队!《幻兽帕鲁》新手小白服务器搭建攻略!(持续更新)
推荐阅读
相关推荐
【玩转Lighthouse】Valheim英灵神殿服务器搭建指南
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验