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

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

  • 生成树协议(STP)配置详解:避免网络环路的最佳实践
    • 一、STP基本原理
    • [二、STP 配置示例(华为交换机)](#二、STP 配置示例(华为交换机))
      • [1. 启用生成树协议](#1. 启用生成树协议)
      • [2. 配置根桥](#2. 配置根桥)
      • [3. 查看生成树状态](#3. 查看生成树状态)
      • [4. 测试](#4. 测试)
      • [4. 调整路径成本(Path Cost)](#4. 调整路径成本(Path Cost))
      • [5. 配置边缘端口(Edge Port)](#5. 配置边缘端口(Edge Port))
      • [6. 启用BPDU保护](#6. 启用BPDU保护)
    • 三、快速生成树(RSTP)与增强STP
      • [1. 启用RSTP(Rapid Spanning Tree Protocol)](#1. 启用RSTP(Rapid Spanning Tree Protocol))
      • [2. 启用MSTP(Multiple Spanning Tree Protocol)](#2. 启用MSTP(Multiple Spanning Tree Protocol))
    • 四、STP优化与排错
      • [1. 避免根桥漂移](#1. 避免根桥漂移)
      • [2. 防止环路意外发生](#2. 防止环路意外发生)
      • [3. 监控STP状态变化](#3. 监控STP状态变化)
    • 五、结语

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

前言

肝文不易,点个免费的赞和关注,有错误的地方请在评论区指出,看个人主页有惊喜。

作者:神的孩子都在歌唱

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

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

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

一、STP基本原理

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

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

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

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

1. 启用生成树协议

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

bash 复制代码
[Huawei] stp enable  # 启用STP

2. 配置根桥

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

bash 复制代码
[SwitchA] stp priority 4096  # 设置优先级,数值越小,优先级越高

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

也可以直接设置为根桥

bash 复制代码
[SwitchA] stp root primary

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

bash 复制代码
[SwitchB] stp root secondary

3. 查看生成树状态

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

bash 复制代码
[SwitchA] display stp brief

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

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

4. 测试

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

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

bash 复制代码
PC1 -> SwitchD  -> SwitchA  -> SwitchB  -> SwitchC -> PC2 

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

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

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

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

bash 复制代码
[SwitchC] interface GigabitEthernet 0/0/3
[SwitchC-GigabitEthernet0/0/3] stp cost 10  # 设置端口路径成本为10

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

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

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

bash 复制代码
PC1 -> SwitchD -> SwitchC -> PC2 

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

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

bash 复制代码
[Huawei-GigabitEthernet0/0/2] stp edged-port enable

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

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

6. 启用BPDU保护

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

bash 复制代码
[Huawei-GigabitEthernet0/0/2] stp bpdu-protection

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

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

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

1. 启用RSTP(Rapid Spanning Tree Protocol)

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

bash 复制代码
[Huawei] stp mode rstp  # 启用RSTP模式

2. 启用MSTP(Multiple Spanning Tree Protocol)

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

bash 复制代码
[Huawei] stp mode mstp  # 启用MSTP模式

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

bash 复制代码
[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错误失效而产生环路:

bash 复制代码
[Huawei] stp loop-protection

3. 监控STP状态变化

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

bash 复制代码
[Huawei] display stp brief

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

五、结语

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

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

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

作者:神的孩子都在歌唱

本人博客:https://blog.csdn.net/weixin_46654114

转载说明:务必注明来源,附带本人博客连接

相关推荐
测试工程喵9 分钟前
如何测试JWT的安全性:全面防御JSON Web Token的安全漏洞
前端·网络·功能测试·安全·json·接口测试·token
pp-周子晗(努力赶上课程进度版)1 小时前
【Linux】利用多路转接epoll机制、ET模式,基于Reactor设计模式实现
服务器·网络·设计模式
九月镇灵将1 小时前
Ubuntu服务器部署多语言项目(Node.js/Python)方式实践
服务器·ubuntu·node.js·screen·supervisor
传知摩尔狮2 小时前
MCP 协议传输机制大变身:抛弃 SSE,投入 Streamable HTTP 的怀抱
网络·网络协议·http
明天不下雨(牛客同名)3 小时前
介绍一下 MVCC
java·服务器·数据库
一只小灿灿3 小时前
Flask 与 Django 服务器部署
服务器·django·flask
Clownseven3 小时前
[安全清单] Linux 服务器安全基线:一份可以照着做的加固 Checklist
linux·服务器·安全
满怀10154 小时前
【Python中的Socket套接字详解】网络通信的核心基石
开发语言·网络·python·网络编程·socket
绝迹的星4 小时前
关于TCP三次握手
网络·网络协议·tcp/ip
为你写首诗ge4 小时前
【Unity网络编程知识】Unity的 UnityWebRequest相关类学习
网络·unity