网络协议——STP(生成树协议)

1. 什么是环路?

        信息经过一系列的转化或传递,然后再返回到起始点,形成一个闭合的循环。

2. 环路的危害
  •      广播风暴(广播报文充斥着整个网络)
  •      MAC地址漂移,从而导致MAC地址表震荡。
  •      使用 display mac-address flapping record查询发现MAC地址漂移次数持续增高MAC地址漂移上限次数65535
  • 3. 什么是生成树?

        在网络中部署生成树后,交换机之间会进行生成树协议报文的交互并进行无环拓扑计算,最终将网络中的某个(或某些)接口进行阻塞,从而打破环路。

 4. STP 协议

        STP是一个用于局域网中消除环路的协议。运行该协议的设备通过彼此交互信息而发现网络中的环路,并对某些接口进行阻塞以消除环路。

  •      BID:桥ID,由16比特的桥优先级与48比特MAC地址组成,取值范围0~61440,默认32768,步长4096
  •     Root ID : 根桥,最小BID的设备会被选作根桥,先比优先级,优先级相同再比MAC地址
  •     Cost :  开销值,每个激活STP的接口都会维护一个开销,接口带宽越大开销值越小。Cost值=100/接口带宽。
  •     RPC :根路径开销,非根交换机从某个接口到达根桥的RPC等于从根桥到该设备沿途所有入方向接口的Cost累加
  •     Port ID : 接口ID由两部分构成的,高4 bit是接口优先级,低12 bit是接口编号。
5. BPDU : BPDU是STP的协议报文。

6. BPDU比较原则
  •  最小的根桥 :用于选举根桥
  •  最小的RPC :选举根接口和指定接口
  •  最小网桥ID :选举根接口和指定接口
  •  最小接口ID :选举根接口和指定接口
  •  本端接口:
  •          根端口用于接收BPDU指定端口用于发送BPDU,根端口的对端一定是指定端口,指定端口的对端不一定是根端口
7. STP接口状态

8. STP接口状态迁移

9. 根桥故障

        桥发生故障,停止发送BPDU报文,非根桥设备等待Max Age计时器(20 s)超时,接收不到新的BPUD,非根桥会互相发送配置BPDU,重新选举新的根桥,非根桥会在BPDU老化之后开始根桥的重新选举。根桥故障会导致50 s左右的恢复时间

10. 直连链路故障

        当检测到根端口的链路发生故障,则其备用端口会经过两倍的Forward Delay(15s)时间进入用户流量转发状态检测到直连链路物理故障后,会将预备端口转换为根端口。直连链路故障,备用端口会经过30s后恢复转发状态

11. 非直连链路故障

        非直连链路故障后,备用端口恢复到转发状态,非直连故障会导致50s左右的恢复时间。

12. STP的不足
  •  收敛速度慢
  • 拓扑频繁发生变化就会导致通信频繁中断
13. STP计算过程

   1、比较BID竞选根桥(在一个连续的STP交换网络中有且仅有一个根桥)

   2、竞选根端口:每一个非根交换机选举一个根端口,根端口是每一个非根设备收到最优BPDU的端口

   3、竞选指定端口:每一条链路选举一个指定端口、根据链路两端的BPDU进行比较更优的一端为指定端口,反之为非指定端口

   4、STP计算最后一步,阻塞非根非指定端口。

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

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

相关文章

Rust 基础语法和数据类型

数据类型 Rust提供了一系列的基本数据类型,包括整型(如i32、u32)、浮点型(如f32、f64)、布尔类型(bool)和字符类型(char)。此外,Rust还提供了原生数组、元组…

医学图像处理 利用pytorch实现的可用于反传的Radon变换和逆变换

医学图像处理 利用pytorch实现的可用于反传的Radon变换和逆变换 前言代码实现思路实验结果 前言 Computed Tomography(CT,计算机断层成像)技术作为如今医学中重要的辅助诊断手段,也是医学图像研究的重要主题。如今,随…

Mac安装配置Appium

一、安装 nodejs 与 npm 安装方式与 windows 类似 ,官网下载对应的 mac 版本的安装包,双击即可安装,无须配置环境变量。官方下载地址:https://nodejs.org/en/download/ 二、安装 appium Appium 分为两个版本,一个是…

yolov9训练自己的数据—vehicle 4类

yolov9训练自己的数据 1 conda环境安装指定版本torch 2 预训练模型测试3 训练自己的数据集3.1 制作数据3.2 创建模型配置文件3.3 创建数据加载配置文件3.4 使用ClearML跟踪训练日志3.5 训练3.6 模型测试3.7 转换成TensorRT模型 4 参考文档 1 conda环境 下载yolov9代码&#xf…

C语言:顺序表专题

目录 一、数据结构之顺序表/链表1.数据结构相关概念1.1什么是数据结构1.2为什么需要数据结构 二、顺序表1.顺序表的概念及结构2.顺序表分类3.动态顺序表的实现 一、数据结构之顺序表/链表 1.数据结构相关概念 1.1什么是数据结构 数据结构是由“数据”和“结构”两词组合而来…

解锁ETLCloud中Kettle的用法

随着大数据时代的到来,数据的处理和管理成为各行各业不可或缺的一环。ETL(Extract-Transform-Load)工具作为数据处理的重要环节,扮演着将数据从源端抽取出来、经过转换处理,最终加载至目标端的关键角色。在众多ETL工具…

【Python】数据挖掘与机器学习(一)

【Python】数据挖掘与机器学习(一) 大家好 我是寸铁👊 总结了一篇【Python】数据挖掘与机器学习(一)sparkles: 喜欢的小伙伴可以点点关注 💝 【实验1】预测鲍鱼年龄 问题描述 请从一份数据中预测鲍鱼的年龄,数据集在abalone.cvs中&#xff…

【Qt】:常用控件(二:QWidget核心属性)

常用控件(二) 一.cursor(光标形状)二.font(字体信息)三.toolTip(提示显示)四.focusPolicy(焦点)五.styleSheet(文本样式) 一.cursor&a…

Java BigDecimal类

原因 为什么要有BigDecimal类因为二进制的缘故&#xff0c;直接对浮点数进行运算&#xff0c;会导致精度丢失的问题下例&#xff1a;出现了0.1 0.2 <> 0.3 常见的API 这些API中&#xff0c;并不推荐由double类型转换的BigDecimal,因为底层还是double推荐使用由string 类…

QT5-qmediaplayer播放视频及进度条控制实例

qmediaplayer是QT5的播放视频的一个模块。它在很多时候还是要基于第三方的解码器。这里以Ubuntu系统为例&#xff0c;记录其用法及进度条qslider的控制。 首先&#xff0c;制作一个简单的界面文件mainwindow.ui&#xff1a; 然后&#xff0c;下载一个mp4或其他格式视频&#x…

【算法集训】基础算法:二分查找 | 概念篇

二分枚举&#xff0c;也叫二分查找&#xff0c;指的就是给定一个区间&#xff0c;每次选择区间的中点&#xff0c;并且判断区间中点是否满足某个条件&#xff0c;从而选择左区间继续求解还是右区间继续求解&#xff0c;直到区间长度不能再切分为止。 由于每次都是把区间折半&am…

小程序实现订阅功能和测试发送订阅信息

现在一次性订阅是只能用户点一次才能发送一次&#xff0c;而针对长期模板只有规定的几种类目政务、民生、交通等等的才可以&#xff0c;所以说感觉这功能其实已经不是很适合使用了&#xff0c;只适合一些特别的场景才可以使用。 地址&#xff1a;https://developers.weixin.qq…

where 函数

Pandas 中的 where 函数 在 Pandas 中&#xff0c;where 函数用于替换不满足条件的值。具体来说&#xff0c;它返回一个与原始 DataFrame 或 Series 形状相同的新对象&#xff0c;但所有不满足条件的值都被替换为指定的值&#xff08;默认为 NaN&#xff09;。 对于 DataFram…

【Web应用技术基础】JavaScript(7)——案例:点击文字则放大字体

视频已发。截图如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</titl…

2024.4.6-day11-CSS 背景和精灵图

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 作业2024.4.6学习笔记1 背景2 背景图片3 CSS 精灵图 作业 <!DOCTYPE html&…

项目中 使用 spring cache redis 出现大量keys* 慢查询排查以及修复

前言 业务反馈 redis里有大量的慢查询 而且全是keys 的命令 排查 首先登录 阿里云查看redis的慢查询日志 如下 主要使用到redis cache的注解功能 分别是 CacheEvict 和 Cacheable 注意 CacheEvict 这个比较特殊 会进行驱逐缓存 说白就会删除缓存或者让缓存失效 第一时间想…

第十四届蓝桥杯省赛大学C组(C/C++)填充

原题链接&#xff1a;填充 有一个长度为 n 的 01 串&#xff0c;其中有一些位置标记为 ?&#xff0c;这些位置上可以任意填充 0 或者 1&#xff0c;请问如何填充这些位置使得这个 01 串中出现互不重叠的 0 和 1 子串最多&#xff0c;输出子串个数。 输入格式 输入一行包含一…

【保姆级教程】如何在 Windows 上实现和 Linux 子系统的端口映射

写在前面 上次分享【保姆级教程】Windows上安装Linux子系统&#xff0c;搞台虚拟机玩玩&#xff0c;向大家介绍了什么是虚拟机以及如何在Windows上安装Linux虚拟机。对于开发同学而言&#xff0c;经常遇到的一个问题是&#xff1a;很多情况下代码开发需要依赖 Linux 系统&…

多线程代码设计模式之单例模式

目录 设计模式引入 饿汉模式 懒汉模式 单例模式总结 设计模式引入 1.1.什么是设计模式 &#xff08;1&#xff09;设计模式就是一种代码的套用模板。例如&#xff1a;一类题型的步骤分别有哪些&#xff0c;是可以直接套用的。 &#xff08;2&#xff09;像棋谱&#xff…

代码随想录算法训练营DAY17|C++二叉树Part.4|110.平衡二叉树、257.二叉树的所有路径、404.左叶子之和

文章目录 110.平衡二叉树思路伪代码CPP代码 257.二叉树的所有路径思路伪代码实现CPP代码 404.左叶子之和思路伪代码CPP代码 110.平衡二叉树 力扣题目链接 文章讲解&#xff1a;110.平衡二叉树 视频讲解&#xff1a;后序遍历求高度&#xff0c;高度判断是否平衡 | LeetCode&…