STP原理与配置以及广播风暴实验STP实验

news2025/4/22 18:29:08

学习目标

环路引起的问题

掌握STP的工作原理

掌握STP的基本配置

STP的配置

环路引起的问题

一、广播风暴(Broadcast Storm)

问题原理:
  • 交换机对广播帧(如 ARP 请求、DHCP 发现报文)的处理方式是洪泛(Flooding):收到广播帧后,会从除入端口外的所有端口转发。
  • 若存在环路,广播帧会在环路中无限循环转发,形成 “风暴”。
具体影响:
  1. 带宽耗尽:大量广播帧占用链路带宽,导致正常业务数据无法传输,网络卡顿甚至瘫痪。
  2. 设备负载过高:交换机 CPU 持续处理海量广播帧,性能急剧下降,可能导致设备死机。
  3. 终端资源浪费:主机被迫接收大量重复广播帧,消耗 CPU 和内存资源。

二、MAC 地址表震荡(MAC Table Flapping)

问题原理:
  • 交换机通过接收帧的源 MAC 地址学习主机位置,并记录在 MAC 地址表中(端口 + MAC 映射)。
  • 环路中,同一主机的帧可能从多个端口到达交换机,导致 MAC 地址表项频繁更新(例如:主机 A 的帧先从端口 1 进入,表项记录为 “MAC-A→端口 1”;随后同一帧从端口 2 进入,表项被更新为 “MAC-A→端口 2”,反复震荡)。
具体影响:
  1. 转发错误:MAC 地址表频繁变动,导致交换机无法稳定转发单播帧,部分数据可能被错误地洪泛或丢弃。
  2. 表项资源耗尽:交换机 MAC 地址表容量有限,震荡会加速表项老化,甚至导致合法主机的表项被覆盖。

三、多帧复制(Multiple Frame Copies)

问题原理:
  • 单播帧或组播帧在环路中会沿多条路径传输,导致接收方收到多个重复帧。
具体影响:
  1. 应用层异常:例如,TCP 接收方可能因重复数据包触发重传机制,降低传输效率;某些应用(如数据库、实时通信)可能因重复数据导致逻辑错误。
  2. 流量倍增:冗余路径增加网络流量,进一步加剧带宽压力。

四、网络收敛缓慢与资源浪费

问题原理:
  • 未部署环路破除机制(如 STP)时,交换机无法感知环路存在,只能被动处理异常流量。
  • 即使部署 STP,环路收敛(阻塞冗余端口)需要一定时间(传统 STP 默认约 50 秒),期间网络仍可能受上述问题影响。
具体影响:
  • 业务中断风险:在环路收敛完成前,网络可能处于不可用状态。
  • 冗余链路未被合理利用:传统 STP 会完全阻塞冗余链路,导致带宽资源浪费(后续优化协议如 MSTP 可解决部分问题)。

五、安全隐患

问题原理:
  • 环路可能被恶意利用,例如:
    • 攻击者通过伪造 MAC 地址触发 MAC 表震荡,实施拒绝服务(DoS)攻击。
    • 重复的广播帧可能泄露更多网络信息(如 ARP 报文包含主机 IP-MAC 映射)。

总结:环路的核心危害

问题类型本质原因典型现象
广播风暴广播帧无限循环转发网络带宽占满,设备负载过高
MAC 地址表震荡同一 MAC 通过不同端口频繁更新表项单播帧转发异常,表项不稳定
多帧复制帧通过多条路径到达接收方接收方收到重复数据
收敛缓慢与资源浪费缺乏环路破除机制或协议收敛时间长业务中断、冗余链路未被利用

解决手段(核心思路:破除环路)

  1. 物理层面:避免手动连接形成环路(如不随意交叉连接交换机端口)。
  2. 二层协议:部署生成树协议(STP/RSTP/MSTP),通过阻塞冗余链路构建无环逻辑拓扑。
  3. 三层隔离:通过 VLAN 划分或三层路由(路由器 / 三层交换机)将网络分段,限制广播域范围。

环路是二层网络的 “致命缺陷”,必须通过协议(如 STP)或架构设计(如分层组网)彻底消除,以保障网络的稳定性和效率。

STP的工作原理

生成树协议(STP,Spanning Tree Protocol)是一种用于构建无环二层网络的核心技术,其核心原理是通过动态阻塞冗余链路,确保网络中只有一条逻辑路径可达,从而避免广播风暴和环路问题。以下是 STP 工作原理的详细解析:

一、核心机制:BPDU 与选举算法

STP 通过桥协议数据单元(BPDU)在交换机间传递信息,核心字段包括:

  • 根桥 ID:标识当前网络中的根桥(Root Bridge)。
  • 根路径开销(RPC):从当前端口到根桥的累计链路开销。
  • 发送者 BID:发送该 BPDU 的交换机的桥 ID(由优先级和 MAC 地址组成)。
  • 端口 ID(PID):发送端口的优先级和编号。

STP 的核心算法分为四个步骤

  1. 选举根桥:全网中桥 ID 最小的交换机成为根桥。桥 ID 由优先级(默认 32768,可配置为 0-61440,步长 4096)MAC 地址组成,优先级越小、MAC 地址越小越优先。
  2. 选举根端口:非根交换机上到根桥路径开销最小的端口。若开销相同,依次比较发送者 BID、发送端口 PID、接收端口 PID35。
  3. 选举指定端口:每个物理链路(网段)上到根桥路径开销最小的端口。若开销相同,比较发送者 BID;若仍相同,比较端口 PID79。
  4. 阻塞非指定端口:未被选为根端口或指定端口的端口进入阻塞状态,仅接收 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 的局限性与优化方向

  1. 收敛速度慢:默认收敛时间约 50 秒(20 秒阻塞 + 15 秒监听 + 15 秒学习),不适用于高实时性场景18。
  2. 无法负载均衡:冗余链路被完全阻塞,未被充分利用19。
  3. 依赖根桥稳定性:根桥故障可能导致全网重新收敛59。

优化协议

  • RSTP(快速生成树协议):将收敛时间缩短至秒级,引入快速迁移机制。
  • MSTP(多生成树协议):支持多实例生成树,实现跨 VLAN 的负载均衡18。

五、典型应用场景

  1. 企业园区网络:通过冗余链路提升可靠性,STP 自动阻塞冗余路径,防止环路。
  2. 数据中心互联:在核心层部署 STP,确保跨设备链路的稳定性。
  3. 临时网络搭建:快速构建无环拓扑,避免手动配置带来的错误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博客

实验目的

  1. 观察广播风暴
  2. 观察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观察端口状态。

实验完成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2340277.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络不可达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] ,表…

【第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…

卷积神经网络(CNN)详解

文章目录 引言1.卷积神经网络(CNN)的诞生背景2.卷积神经网络(CNN)介绍2.1 什么是卷积神经网络?2.2 卷积神经网络(CNN)的基本特征2.2.1 局部感知(Local Connectivity)2.2.…

【SF顺丰】顺丰开放平台API对接(注册、API测试篇)

1.注册开发者账号 注册地址:顺丰企业账户中心 2.登录开发平台 登录地址:顺丰开放平台 3.开发者对接 点击开发者对接 4.创建开发对接应用 开发者应用中“新建应用”创建应用,最多创建应用限制数量5个 注意:需要先复制保存生产校验…

VisualSVN过期后的解决方法

作为一款不错的源代码管理软件,svn还是有很多公司使用的。在vs中使用svn,大家一般用的都是VisualSVN插件。在30天试用期过后,它就不能被免费使用了。下面给大家讲如何免费延长过期时间(自定义天数,可以设定一个很大的值…

DeepSeek智能时空数据分析(二):3秒对话式搞定“等时圈”绘制

序言:时空数据分析很有用,但是GIS/时空数据库技术门槛太高 时空数据分析在优化业务运营中至关重要,然而,三大挑战仍制约其发展:技术门槛高,需融合GIS理论、SQL开发与时空数据库等多领域知识;空…

STM32学习2

一、OLED 1.1 OLED介绍 OLED(Organic Light Emitting Diode):有机发光二极管 OLED显示屏:性能优异的新型显示屏,具有功耗低、相应速度快、宽视角、轻薄柔韧等特点 0.96寸OLED模块:小巧玲珑、占用接口少…

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…

Java写数据结构:栈

1.概念: 一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈:栈的插…

机器学习-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 为什么需…

Office文件内容提取 | 获取Word文件内容 |Javascript提取PDF文字内容 |PPT文档文字内容提取

关于Office系列文件文字内容的提取 本文主要通过接口的方式获取Office文件和PDF、OFD文件的文字内容。适用于需要获取Word、OFD、PDF、PPT等文件内容的提取实现。例如在线文字统计以及论文文字内容的提取。 一、提取Word及WPS文档的文字内容。 支持以下文件格式: …