STP原理与配置以及广播风暴实验STP实验
学习目标
环路引起的问题
掌握STP的工作原理
掌握STP的基本配置
STP的配置
环路引起的问题
一、广播风暴(Broadcast Storm)
问题原理:
- 交换机对广播帧(如 ARP 请求、DHCP 发现报文)的处理方式是洪泛(Flooding):收到广播帧后,会从除入端口外的所有端口转发。
- 若存在环路,广播帧会在环路中无限循环转发,形成 “风暴”。
具体影响:
- 带宽耗尽:大量广播帧占用链路带宽,导致正常业务数据无法传输,网络卡顿甚至瘫痪。
- 设备负载过高:交换机 CPU 持续处理海量广播帧,性能急剧下降,可能导致设备死机。
- 终端资源浪费:主机被迫接收大量重复广播帧,消耗 CPU 和内存资源。
二、MAC 地址表震荡(MAC Table Flapping)
问题原理:
- 交换机通过接收帧的源 MAC 地址学习主机位置,并记录在 MAC 地址表中(端口 + MAC 映射)。
- 环路中,同一主机的帧可能从多个端口到达交换机,导致 MAC 地址表项频繁更新(例如:主机 A 的帧先从端口 1 进入,表项记录为 “MAC-A→端口 1”;随后同一帧从端口 2 进入,表项被更新为 “MAC-A→端口 2”,反复震荡)。
具体影响:
- 转发错误:MAC 地址表频繁变动,导致交换机无法稳定转发单播帧,部分数据可能被错误地洪泛或丢弃。
- 表项资源耗尽:交换机 MAC 地址表容量有限,震荡会加速表项老化,甚至导致合法主机的表项被覆盖。
三、多帧复制(Multiple Frame Copies)
问题原理:
- 单播帧或组播帧在环路中会沿多条路径传输,导致接收方收到多个重复帧。
具体影响:
- 应用层异常:例如,TCP 接收方可能因重复数据包触发重传机制,降低传输效率;某些应用(如数据库、实时通信)可能因重复数据导致逻辑错误。
- 流量倍增:冗余路径增加网络流量,进一步加剧带宽压力。
四、网络收敛缓慢与资源浪费
问题原理:
- 未部署环路破除机制(如 STP)时,交换机无法感知环路存在,只能被动处理异常流量。
- 即使部署 STP,环路收敛(阻塞冗余端口)需要一定时间(传统 STP 默认约 50 秒),期间网络仍可能受上述问题影响。
具体影响:
- 业务中断风险:在环路收敛完成前,网络可能处于不可用状态。
- 冗余链路未被合理利用:传统 STP 会完全阻塞冗余链路,导致带宽资源浪费(后续优化协议如 MSTP 可解决部分问题)。
五、安全隐患
问题原理:
- 环路可能被恶意利用,例如:
- 攻击者通过伪造 MAC 地址触发 MAC 表震荡,实施拒绝服务(DoS)攻击。
- 重复的广播帧可能泄露更多网络信息(如 ARP 报文包含主机 IP-MAC 映射)。
总结:环路的核心危害
| 问题类型 | 本质原因 | 典型现象 |
|---|---|---|
| 广播风暴 | 广播帧无限循环转发 | 网络带宽占满,设备负载过高 |
| MAC 地址表震荡 | 同一 MAC 通过不同端口频繁更新表项 | 单播帧转发异常,表项不稳定 |
| 多帧复制 | 帧通过多条路径到达接收方 | 接收方收到重复数据 |
| 收敛缓慢与资源浪费 | 缺乏环路破除机制或协议收敛时间长 | 业务中断、冗余链路未被利用 |
解决手段(核心思路:破除环路)
- 物理层面:避免手动连接形成环路(如不随意交叉连接交换机端口)。
- 二层协议:部署生成树协议(STP/RSTP/MSTP),通过阻塞冗余链路构建无环逻辑拓扑。
- 三层隔离:通过 VLAN 划分或三层路由(路由器 / 三层交换机)将网络分段,限制广播域范围。
环路是二层网络的 “致命缺陷”,必须通过协议(如 STP)或架构设计(如分层组网)彻底消除,以保障网络的稳定性和效率。
STP的工作原理
生成树协议(STP,Spanning Tree Protocol)是一种用于构建无环二层网络的核心技术,其核心原理是通过动态阻塞冗余链路,确保网络中只有一条逻辑路径可达,从而避免广播风暴和环路问题。以下是 STP 工作原理的详细解析:
一、核心机制:BPDU 与选举算法
STP 通过桥协议数据单元(BPDU)在交换机间传递信息,核心字段包括:
- 根桥 ID:标识当前网络中的根桥(Root Bridge)。
- 根路径开销(RPC):从当前端口到根桥的累计链路开销。
- 发送者 BID:发送该 BPDU 的交换机的桥 ID(由优先级和 MAC 地址组成)。
- 端口 ID(PID):发送端口的优先级和编号。
STP 的核心算法分为四个步骤:
- 选举根桥:全网中桥 ID 最小的交换机成为根桥。桥 ID 由优先级(默认 32768,可配置为 0-61440,步长 4096)和MAC 地址组成,优先级越小、MAC 地址越小越优先。
- 选举根端口:非根交换机上到根桥路径开销最小的端口。若开销相同,依次比较发送者 BID、发送端口 PID、接收端口 PID35。
- 选举指定端口:每个物理链路(网段)上到根桥路径开销最小的端口。若开销相同,比较发送者 BID;若仍相同,比较端口 PID79。
- 阻塞非指定端口:未被选为根端口或指定端口的端口进入阻塞状态,仅接收 BPDU 以监测拓扑变化18。
二、关键术语与选举规则
1. 路径开销(Cost)
- 计算依据:链路带宽越高,Cost 值越小(如 10Gbps 链路 Cost 为 2,1Gbps 为 4,100Mbps 为 19)10。
- 动态累加:从根桥到当前端口的所有链路 Cost 之和为根路径开销(RPC),用于根端口和指定端口的选举59。
2. 端口优先级与 PID
- 端口优先级:取值 0-240,步长 16(默认 128),优先级越高(数值越小)越优先被选为指定端口1112。
- 端口 ID(PID):由端口优先级和端口号组成(如
128.1表示优先级 128、端口号 1),用于在路径开销和发送者 BID 相同的情况下决定端口角色45。
3. 桥 ID(BID)
- 组成:16 位优先级 + 48 位 MAC 地址(如
32768.000c.29ab.cdef)。 - 选举规则:全网 BID 最小的交换机成为根桥,优先级相同时比较 MAC 地址1314。
三、STP 的工作流程
1. 初始化阶段
- 所有交换机启动时自认为根桥,通过所有端口发送 BPDU。
- 交换机收到其他设备的 BPDU 后,比较根桥 ID:
- 若收到的 BPDU 中根桥 ID 更小,则更新本地根桥信息并转发该 BPDU。
- 若收到的 BPDU 中根桥 ID 更大,则忽略该 BPDU,继续发送自己的 BPDU39。
2. 收敛阶段
- 根桥确定:经过多轮 BPDU 交换,全网选举出唯一根桥。
- 根端口选举:非根交换机根据 RPC、发送者 BID、端口 PID 选择最优上行端口。
- 指定端口选举:每条链路根据 RPC、发送者 BID、端口 PID 选择转发端口。
- 阻塞非指定端口:剩余端口进入阻塞状态,仅接收 BPDU89。
3. 拓扑维护阶段
- 根桥周期性发送 BPDU(默认 2 秒间隔),非根桥通过根端口接收并转发 BPDU。
- 端口状态迁移:
- 阻塞(Blocking):不转发数据,仅监听 BPDU(20 秒)。
- 监听(Listening):参与生成树计算,发送 BPDU(15 秒)。
- 学习(Learning):学习 MAC 地址,但不转发数据(15 秒)。
- 转发(Forwarding):正常转发数据19。
4. 拓扑变化处理
- 链路故障:若根端口或指定端口失效,交换机通过TCN BPDU向上游发送拓扑变更通知,根桥收到后发送 TC 标记的 BPDU,加速全网 MAC 表老化(从 300 秒缩短至 15 秒)12。
- 新设备接入:新交换机发送 BPDU,若其 BID 更小,可能触发根桥重新选举,导致部分端口状态迁移39。
四、STP 的局限性与优化方向
- 收敛速度慢:默认收敛时间约 50 秒(20 秒阻塞 + 15 秒监听 + 15 秒学习),不适用于高实时性场景18。
- 无法负载均衡:冗余链路被完全阻塞,未被充分利用19。
- 依赖根桥稳定性:根桥故障可能导致全网重新收敛59。
优化协议:
- RSTP(快速生成树协议):将收敛时间缩短至秒级,引入快速迁移机制。
- MSTP(多生成树协议):支持多实例生成树,实现跨 VLAN 的负载均衡18。
五、典型应用场景
- 企业园区网络:通过冗余链路提升可靠性,STP 自动阻塞冗余路径,防止环路。
- 数据中心互联:在核心层部署 STP,确保跨设备链路的稳定性。
- 临时网络搭建:快速构建无环拓扑,避免手动配置带来的错误19。
六、配置示例(华为设备)
# 全局启用STP
system-view
stp enable# 配置根桥(优先级0)
stp root primary# 配置指定端口优先级(端口GE0/0/1优先级16)
interface GigabitEthernet0/0/1
stp port priority 16# 查看STP状态
display stp brief
总结
STP 通过选举根桥、根端口和指定端口,动态阻塞冗余链路,确保网络无环。其核心依赖 BPDU 的交换和路径开销计算,但存在收敛速度慢和无法负载均衡的局限。在实际部署中,可结合 RSTP 或 MSTP 优化性能,同时通过调整优先级和路径开销灵活控制网络拓扑。
掌握STP的基本配置
对一些简单的操作不会的请参考交换机基础实验(手把手做实验)-CSDN博客
实验目的
- 观察广播风暴
- 观察STP的各种角色,端口角色。
实验步骤
1.打开eNSP新建topo(拓扑),拖动三台交换机(S5700)和一个PC机,连接起来,连接完成后启动设备,如下图所示。




就这样连接,连接好之后如下图所示。

2.关闭所有交换机的生成树(STP),点击交换机敲入undo stp enable或者stp disable(都是关闭STP的命令)。(对详细的步骤不清楚的可以去翻看交换机基础实验(手把手做实验)-CSDN博客)

3.打开交换机1,敲入display stp brief,看弹出的信息

4.给PC机配置一个IP地址(这里我习惯配置192.168.10.1),然后在三台任意链路进行抓包,在PC机上随意ping一个IP地址。我们可以观察到抓包的数据会一直跳出来,会永久循环,这种情况就是广播风暴。(此处不建议大家拿真机玩这个实验)


观察完了之后给三个交换机都敲入stp enable打开STP。
5.对任意交换机敲入dis stp 查看全局信息,我们观察到交换机目前使用的全局信息是MSTP,我们需要修改模式,回车后给所有交换机敲入stp mode stp 切换到stp模式。
6.现在观察每一个交换机的Mac地址看谁最小(对比的是ccba、cce9、cc18),谁就是根桥。通过与对比发现交换机3最小,根桥是交换机3。



7.在交换机3上敲入dis stp brief会弹出0/0/2和0/0/3接口属于指定端口且处于转播状态。

8.在交换机1上敲入dis stp brief,可以看到0/0/3是根端口,0/0/1是指定端口。

9.在交换机2上敲入dis stp brief,可以看到0/0/2是根端口,0/0/3是指定端口,0/0/1端口处于discarding状态(丢弃状态,不再进行数据转发),因此环路消失。

如果要改变交换机的优先级该如何操作?
1.紧接上面步骤,在你想使优先的交换机上敲入stp priority 0(priority有讲究不能乱改,priority的步长是4096,因此只能改为4096×n的数字),此时我拿交换机2来演示,先敲入stp priority 0敲入dis stp brief,我们发现这两个端口都处于discarding状态,这个是状态变迁过程,我会在之后发布的笔记里总结。这里就不断的敲dis stp brief,弹出的信息会从discarding变成learning再变成forwarding。
2.再分别对剩下的交换机敲入dis stp brief观察端口状态。
实验完成
相关文章:
STP原理与配置以及广播风暴实验STP实验
学习目标 环路引起的问题 掌握STP的工作原理 掌握STP的基本配置 STP的配置 环路引起的问题 一、广播风暴(Broadcast Storm) 问题原理: 交换机对广播帧(如 ARP 请求、DHCP 发现报文)的处理方式是洪泛࿰…...
网络不可达network unreachable问题解决过程
问题:访问一个环境中的路由器172.16.1.1,发现ssh无法访问,ping发现回网络不可达 C:\Windows\System32>ping 172.16.1.1 正在 Ping 172.16.1.1 具有 32 字节的数据: 来自 172.16.81.1 的回复: 无法访问目标网。 来自 172.16.81.1 的回复:…...
力扣经典拓扑排序
207. 课程表(Course Schedule) 你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。先修课程按数组 prerequisites 给出,其中 prerequisites[i] [ai, bi] ,表…...
Session与Cookie的核心机制、用法及区别
Python中Session与Cookie的核心机制、用法及区别 在Web开发中,Session和Cookie是两种常用的用于跟踪用户状态的技术。它们在实现机制、用途和安全性方面都有显著区别。本文将详细介绍它们的核心机制、用法以及它们之间的主要区别。 一、Cookie的核心机制与用法 1…...
【第16届蓝桥杯C++C组】--- 2025
hello呀,小伙伴们,这是第16届蓝桥杯第二道填空题,和第一道填空题一样也是十分基础的题目,有C语言基础基本都可以解,下面我讲讲我当时自己的思路和想法,如果你们有更优化的代码和思路,也可以分享…...
前端基础之《Vue(7)—生命周期》
一、什么是生命周期 1、生命周期 组件从“生”到“死”的全过程。 每一个组件都有生命周期。 2、生命周期四大阶段 创建阶段:beforeCreate、created 挂载阶段:beforeMount、mounted 更新阶段:beforeUpdate、updated 销毁阶段:be…...
C语言高频面试题——指针数组和数组指针
指针数组和数组指针是 C/C 中容易混淆的两个概念,以下是详细对比: 1. 指针数组(Array of Pointers) 定义:一个数组,其元素是 指针类型。语法:type* arr[元素个数]; 例如:int* ptr_a…...
Linux服务器配置Anaconda环境、Pytorch库(图文并茂的教程)
引言:为了方便后续新进组的 师弟/师妹 使用课题组的服务器,特此编文(ps:我导从教至今四年,还未招师妹) ✅ NLP 研 2 选手的学习笔记 笔者简介:Wang Linyong,NPU,2023级&a…...
Android端使用无障碍服务实现远程、自动刷短视频
最近在做一个基于无障碍自动刷短视频的APP,需要支持用任意蓝牙遥控器远程控制, 把无障碍服务流程大致研究了一下,从下面3个部分做一下小结。 1、需要可调整自动上滑距离和速度以适配不同的屏幕和应用 智能适配99%机型,滑动参数可…...
搭建用友U9Cloud ERP及UAP IDE环境
应用环境 Microsoft Windows 10.0.19045.5487 x64 专业工作站版 22H2Internet Information Services - 10.0.19041.4522Microsoft SQL Server 2019 - 15.0.2130.3 (X64)Microsoft SQL Server Reporing Services 2019 - 15.0.9218.715SQL Server Management Studio -18.6 laster…...
多模态大语言模型arxiv论文略读(二十九)
Temporal Insight Enhancement: Mitigating Temporal Hallucination in Multimodal Large Language Models ➡️ 论文标题:Temporal Insight Enhancement: Mitigating Temporal Hallucination in Multimodal Large Language Models ➡️ 论文作者:Li Su…...
Java开发中的设计模式之观察者模式详细讲解
观察者模式(Observer Pattern)是一种行为型设计模式,它定义了对象之间的一种一对多的依赖关系。当一个对象的状态发生改变时,所有依赖于它的对象都会自动收到通知并更新。这种模式在Java开发中非常常见,尤其是在事件驱…...
基于SpringAI Alibaba实现RAG架构的深度解析与实践指南
一、RAG技术概述 1.1 什么是RAG技术 RAG(Retrieval-Augmented Generation)检索增强生成是一种将信息检索技术与生成式AI相结合的创新架构。它通过以下方式实现智能化内容生成: 知识检索阶段:从结构化/非结构化数据源中检索相关…...
卷积神经网络(CNN)详解
文章目录 引言1.卷积神经网络(CNN)的诞生背景2.卷积神经网络(CNN)介绍2.1 什么是卷积神经网络?2.2 卷积神经网络(CNN)的基本特征2.2.1 局部感知(Local Connectivity)2.2.…...
element-plus添加暗黑模式
main.ts文件 //引入暗黑模式样式 import "element-plus/theme-chalk/dark/css-vars.css"; style.scss文件 // 设置默认主题色 :root {--base-menu-min-width: 80px;--el-color-primary-light-5: green !important;--route--view--background-color: #fff !import…...
【SF顺丰】顺丰开放平台API对接(注册、API测试篇)
1.注册开发者账号 注册地址:顺丰企业账户中心 2.登录开发平台 登录地址:顺丰开放平台 3.开发者对接 点击开发者对接 4.创建开发对接应用 开发者应用中“新建应用”创建应用,最多创建应用限制数量5个 注意:需要先复制保存生产校验…...
VisualSVN过期后的解决方法
作为一款不错的源代码管理软件,svn还是有很多公司使用的。在vs中使用svn,大家一般用的都是VisualSVN插件。在30天试用期过后,它就不能被免费使用了。下面给大家讲如何免费延长过期时间(自定义天数,可以设定一个很大的值…...
代码随想录算法训练营第二十一天
LeetCode题目: 93. 复原 IP 地址78. 子集90. 子集 II2364. 统计坏数对的数目 其他: 今日总结 往期打卡 93. 复原 IP 地址 跳转: 93. 复原 IP 地址 学习: 代码随想录公开讲解 问题: 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能…...
21. git apply
基本概述 git apply 的作用是:应用补丁文件 基本用法 1.命令格式 git apply [选项] <补丁文件>2.应用补丁 git apply patchfile.patch将补丁应用到工作目录,但不会自动添加到暂存区(需手动 git add) 常用选项 1.检查…...
DeepSeek智能时空数据分析(二):3秒对话式搞定“等时圈”绘制
序言:时空数据分析很有用,但是GIS/时空数据库技术门槛太高 时空数据分析在优化业务运营中至关重要,然而,三大挑战仍制约其发展:技术门槛高,需融合GIS理论、SQL开发与时空数据库等多领域知识;空…...
STM32学习2
一、OLED 1.1 OLED介绍 OLED(Organic Light Emitting Diode):有机发光二极管 OLED显示屏:性能优异的新型显示屏,具有功耗低、相应速度快、宽视角、轻薄柔韧等特点 0.96寸OLED模块:小巧玲珑、占用接口少…...
数据处理: 亲和聚类
Affinity Propagation(亲和传播)是一种基于"消息传递"概念的聚类算法,由Brendan Frey和Delbert Dueck于2007年提出。与K-Means等需要预先指定簇数量的算法不同,Affinity Propagation能够自动确定最佳簇的数量࿰…...
LabVIEW液压系统远程监控与故障诊断
开发了一种基于LabVIEW的远程液压系统监控解决方案,通过先进的数据采集与分析技术,有效提升工程机械的运作效率和故障响应速度。该系统结合现场硬件设备和远程监控软件,实现了液压系统状态的实时检测和故障诊断,极大地提升了维护效…...
Idea中实用设置和插件
目录 一、Idea使用插件 1.Fitten Code智能提示 2.MyBatisCodeHelperPro 3.HighlightBracketPair 4.Rainbow Brackets Lite 5.GitToolBox(存在付费) 6.MavenHelperPro 7.Search In Repository 8.VisualGC(存在付费) 9.vo2dto 10.Key Promoter X 11.CodeGlance…...
安卓处理登录权限问题
在安卓应用中实现登录权限控制,需确保用户登录后才能访问特定功能。以下是分步骤的解决方案: 1. 保存和检查登录状态 使用安全存储保存登录凭证: 推荐使用 EncryptedSharedPreferences 存储敏感信息(如Token、用户ID)…...
Java写数据结构:栈
1.概念: 一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈:栈的插…...
使用Unity Cache Server提高效率
2021年1月20日19:04:28 1 简介 Unity Cache Server,翻译过来就是Unity缓存服务器 1.1 缓存服务器の官方介绍 Unity 有一个完全自动的资源管线。每当修改 .psd 或 .fbx 文件等源资源时,Unity 都会检测到更改并自动将其重新导入。随后,Unity 以内部格式存储从文件导入的数…...
29个常见的Terraform 面试问题
问题 1:假设您使用 Terraform 创建了一个 EC2 实例,创建完成后,您从状态文件中删除了该条目,那么运行 Terraform Apply 命令时会发生什么? 由于我们已从该状态文件中删除了该条目,因此 Terraform 将不再管…...
机器学习-08-推荐算法-案例
总结 本系列是机器学习课程的系列课程,主要介绍机器学习中关联规则 参考 机器学习(三):Apriori算法(算法精讲) Apriori 算法 理论 重点 MovieLens:一个常用的电影推荐系统领域的数据集 23张图&#x…...
LLM中的N-Gram、TF-IDF和Word embedding
文章目录 1. N-Gram和TF-IDF:通俗易懂的解析1.1 N-Gram:让AI学会"猜词"的技术1.1.1 基本概念1.1.2 工作原理1.1.3 常见类型1.1.4 应用场景1.1.5 优缺点 1.2 TF-IDF:衡量词语重要性的尺子1.2.1 基本概念1.2.2 计算公式1.2.3 为什么需…...
