当前位置: 首页 > news >正文

什么是STP环路保护

在运行生成树协议的网络中,根端口和其他阻塞端口状态是依靠不断接收来自上游设备的BPDU维持。当由于链路拥塞或者单向链路故障导致这些端口收不到来自上游交换设备的BPDU时,设备会重新选择根端口。原先的根端口会转变为指定端口,而原先的阻塞端口会迁移到Forwarding状态,从而造成网络中产生环路。
STP环路保护功能是生成树协议中的一个增强功能。启动了环路保护功能后,如果根端口或Alternate端口长时间收不到来自上游设备的BPDU报文,根端口和Alternate端口不会切换到Forwarding状态,从而不会在网络中形成环路。直到链路不再拥塞或单向链路故障恢复,端口重新收到BPDU报文进行协商,并恢复到链路拥塞或者单向链路故障前的角色和状态。

环路保护是如何工作的?

通过在交换设备上部署生成树协议STP(Spanning Tree Protocol)、快速生成树协议RSTP(Rapid Spanning Tree Protocol)、多生成树协议MSTP(Multiple Spanning Tree Protocol)或基于VLAN的生成树协议VBST(VLAN-Based Spanning Tree)可以破除二层网络环路。某些情况下,运行生成树协议设备的阻塞端口迁移到Forwarding状态时可能导致网络环路,而环路保护功能可以避免这一情况。

当网络中的设备部署了生成树协议时,设备间通过交互BPDU(Bridge Protocol Data Unit)报文计算生成无环的网络拓扑。设备通过不断更新并交互BPDU报文,计算决定部分接口阻塞流量,从而破除网络环路;部分接口成为根端口并转发流量等。

当链路拥塞或者单向链路故障时可能导致阻塞端口接收不到BPDU报文,这时阻塞端口会迁移到Forwarding状态,网络中会出现环路。

当环路保护功能使能后,生成树协议会检测根端口和Alternate端口是否能接收到BPDU报文。使能环路保护功能的端口如果接收不到BPDU报文,该端口不会迁移到Forwarding状态而是一直保持在Discarding状态,这样可以避免产生环路。

如图所示,例如当BP2-CP1之间的链路发生拥塞时,DeviceC由于根端口CP1在超时时间内收不到来自上游设备的BPDU报文,Alternate端口CP2转变成了根端口且处于Forwarding状态,根端口CP1转变成指定端口且处于Forwarding状态,导致网络中形成了二层环路。启动了环路保护功能后,如果根端口或Alternate端口长时间收不到来自上游设备的BPDU报文,根端口或Alternate的端口角色会正常转变,但端口状态不会迁移到Forwarding状态而是保持在Discarding状态不转发报文,从而不会在网络中形成环路。直到链路不再拥塞或单向链路故障恢复,端口重新收到BPDU报文进行协商,并恢复到链路拥塞或者单向链路故障前的角色和状态。


链路发生拥塞情况拓扑的变化

环路保护和STP有什么区别?

生成树协议是一种破环协议,可以破除二层网络环路。环路保护是生成树协议中的一个增强功能,可以防止端口因收不到上游交换设备的BPDU报文而产生环路。

除了环路保护功能,生成树协议还支持根保护、BPDU保护等增强功能。

  • 根保护:由于维护人员的错误配置或网络中的恶意攻击,网络中合法根桥有可能会收到优先级更高的BPDU,使得合法根桥失去根地位,从而引起网络拓扑结构的错误变动。通过根保护可以避免此类问题。启用根保护功能的指定端口收到优先级更高的BPDU时,端口将进入Discarding状态,不再转发报文。经过一段时间,如果端口一直没有再收到优先级更高的BPDU,端口会自动恢复到正常的Forwarding状态。这样可以避免网络中根桥错误切换。需要注意的是,根保护功能仅在指定端口上生效。根保护功能和环路保护功能不能同时配置在同一端口。
  • BPDU保护:在边缘端口上部署BPDU保护功能。当边缘端口收到BPDU报文,边缘端口将被error-down,但保持边缘端口属性不变,这样可以避免边缘端口收到攻击者发送的BPDU报文引起的网络拓扑变更、业务流量中断。

相关文章推荐(点击查看):

  • STP——RSTP快生成树协议讲解

  • 【实验】配置STP

  • 【干货】STP二层防环机制详解

  • 【技术】华为HCIE实验之STP

相关文章:

什么是STP环路保护

在运行生成树协议的网络中,根端口和其他阻塞端口状态是依靠不断接收来自上游设备的BPDU维持。当由于链路拥塞或者单向链路故障导致这些端口收不到来自上游交换设备的BPDU时,设备会重新选择根端口。原先的根端口会转变为指定端口,而原先的阻塞…...

Python算法基础:解锁冒泡排序与选择排序的奥秘

在数据处理和算法设计中,排序是一项基础且重要的操作。本文将介绍两种经典的排序算法:冒泡排序(Bubble Sort)和选择排序(Selection Sort)。我们将通过示例代码来演示这两种算法如何对列表进行升序排列。 一…...

QtCMake工程提升类后找不到头文件

链接: QtCMake工程提升类后找不到头文件_qt提升类找不到头文件-CSDN博客 重点: 1.原因:出现问题的原因是Qt creator通过ui文件生成的程序和存放头文件的目录不在一起,但是生成的程序里会在生成目录下找头文件,所以肯…...

Docker核心技术:Docker原理之Cgroups

云原生学习路线导航页(持续更新中) 本文是 Docker核心技术 系列文章:Docker原理之Cgroups,其他文章快捷链接如下: 应用架构演进容器技术要解决哪些问题Docker的基本使用Docker是如何实现的 Docker核心技术:…...

union的特性和大小端

一、union在c和c语言中的特性 1.共享内存空间:union的所有成员共享同一块内存空间。意味着在同一时刻,union 只能存储其成员 中的一个值。当你修改了union中的一个成员,那么其它成员的值也会被改变,因为它们实际上都是指向同一块…...

个性化IT服务探索实践

探索和实践个性化IT服务,可以为用户提供更优质、定制化的解决方案,从而提升用户体验和满意度。以下是一些具体的步骤和建议,帮助自己在未来探索和实践个性化IT服务。 一、了解用户需求 用户调研和反馈: 进行用户调研,了解用户的需求和痛点。收集用户反馈,通过问卷、采访…...

UE4-打包游戏,游戏模式,默认关卡

一.打包游戏 注意windows系统无法打包苹果系统的执行包,只能使用苹果系统打包。 打包完之后是一个.exe文件。 打包要点: 1.确定好要操控的角色和生成位置。 2.设置默认加载的关卡和游戏模式。 在这个界面可以配置游戏的默认地图和游戏的模式,…...

Unity ShaderLab基础

[原文1] [参考2] 一 基础知识 1. 1 着色器语言分类: 语言说明HLSL基于 OpenGL 的 OpenGL Shading LanguageGLSL基于 DirectX 的 High Level Shading LanguageCGNVIDIA 公司的 C for GraphicShader LabUnity封装了CG,HLSL,GLSL的Unity专用着色器语言,具有跨平台,图形化编程,便…...

用代理IP会频繁掉线是什么原因?HTTP和SOCKS5协议优劣势是什么?

在使用代理IP的过程中,频繁掉线是一个常见且令人头痛的问题。要解决这一问题,我们需要先了解其原因,然后比较HTTP和SOCKS5两种代理协议的优劣势,以选择最适合的解决方案。 一、代理IP频繁掉线的原因 1. 代理服务器稳定性 代理服…...

MongoDB教程(十三):MongoDB覆盖索引

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 文章目录 引言什么是覆盖…...

快速认识EA(Enterprise Architecture)

前言 企业架构,英文是:Enterprise Architecture,简称:EA,是承接企业战略规划与IT建设之间的桥梁,是企业信息化的核心,主要包括业务架构和IT架构。 架构的本质是管理和解决系统的复杂性&#x…...

词云图制作

词云图制作 一、什么是词云 这就是词云。 “词云”的概念最早是美国西北大学新闻学副教授、新媒体专业主任里奇•戈登( Rich Gordon )提出的。词云( Word Cloud ),又称文字云、标签云( Tag Cloud &#x…...

AndroidStudio与手机进行无线调试

(一)、前提条件 一部手机一条USB数据线一部电脑手机和电脑连接到同一个 Wifi开启手机的USB调试功能开启手机的无线调试功能 (二)、操作步骤 1、 将手机和电脑用USB数据线连接 2、 打开 终端,输入 adb devices ,查看手机和电脑是否连接成功。如下图: 2、…...

脉冲编码调制(PCM,Pulse Code Modulation)简介

脉冲编码调制(PCM,Pulse Code Modulation) 脉冲编码调制(PCM,Pulse Code Modulation)是一种将模拟信号转换为数字信号的技术。在音频处理、电话通信以及其他许多领域都有广泛应用。PCM通过采样、量化、编码等三个主要步骤将模拟信号转换为数…...

Pytorch transforms 的研究

绝对路径与相对路径差别 transforms的使用 from torchvision import transforms from PIL import Imageimg_path "dataset/train/bees/16838648_415acd9e3f.jpg" img Image.open(img_path) tensor_trans transforms.ToTensor() tensor_img tensor_trans(img) prin…...

一个C++模板工厂的编译问题的解决。针对第三方库的构造函数以及追加了的对象构造函数。牵扯到重载、特化等

一窥模板的替换和匹配方式:偏特化的参数比泛化版本的还要多:判断是不是std::pair<,>。_stdpair模板参数太多-CSDN博客 简介 在一个项目里,调用了第三封的库,这个库里面有个类用的很多,而且其构…...

《昇思 25 天学习打卡营第 20 天 | Pix2Pix实现图像转换 》

《昇思 25 天学习打卡营第 20 天 | Pix2Pix实现图像转换 》 活动地址:https://xihe.mindspore.cn/events/mindspore-training-camp 签名:Sam9029 Pix2Pix模型概述 Pix2Pix是一种基于条件生成对抗网络(cGAN)的图像转换模型&#x…...

关于c#的简单应用三题

#region 输入一个正整数&#xff0c;求1~这个数的阶乘 public static void Factorial(int a) { int result 1; for (int i 1; i < a; i) { result result * i; } Console.WriteLine(result); } #endregion #region 一个游戏&#…...

(十三)Spring教程——依赖注入之工厂方法注入

1.工厂方法注入 工厂方法是在应用中被经常使用的设计模式&#xff0c;它也是控制反转和单例设计思想的主要实现方法。由于Spring IoC容器以框架的方式提供工厂方法的功能&#xff0c;并以透明的方式开放给开发者&#xff0c;所以很少需要手工编写基于工厂方法的类。正是因为工厂…...

Redission中的Lua脚本写法、理解

对于Redission看门狗机制中的为了保证原子性的Lua脚本的写法规则是什么样的呢 &#xff1f; 对于源码中的Lua脚本又是什么意思&#xff1f; 我们一起来看一下 首先&#xff0c;我们先基本的熟悉一下lua脚本的逻辑 在Lua脚本中&#xff0c;if (…) then … end 语句的执行过程…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

Vue 模板语句的数据来源

&#x1f9e9; Vue 模板语句的数据来源&#xff1a;全方位解析 Vue 模板&#xff08;<template> 部分&#xff09;中的表达式、指令绑定&#xff08;如 v-bind, v-on&#xff09;和插值&#xff08;{{ }}&#xff09;都在一个特定的作用域内求值。这个作用域由当前 组件…...