生成树协议 - STP
目录
BPDU
STP选举机制
STP端口状态
STP计时器
STP拓扑变更机制
生成树协议(Spanning Tree Protocol),简写为STP。
STP是二层网络中用于消除环路的协议,通过阻塞冗余链路,使可用链路在拓扑上呈现出无环的树结构,消除网络中可能存在的环路。当前活动链路发生故障时,激活冗余链路,恢复网络连通性。
BPDU
桥协议数据单元,用于传递STP协议相关的报文。
分类
-
配置BPDU
-
传递STP配置信息,用来进行生成树的选举。
-
网桥(交换机)通过交互配置BPDU,获取STP计算所需的参数。
-
配置BPDU基于二层组播方式发送,组播地址是:01-80-C2-00-00-00。
-
配置BPDU只由根桥周期性发出,发送周期(Hello Time)为2秒。
-
-
TCN BPDU
-
通告拓扑变更信息。
-
非根交换机发的拓扑变化通知,用于报错使用。
-
STP数据帧格式
-
Protocol ID
-
协议ID,表明使用的协议。
-
-
Protocol Version ID
-
协议版本标识符,STP协议中该值为0。
-
RSTP为2。
-
MSTP为3。
-
-
BPDU Type
-
BPDU类型。
-
STP的配置BPDU:0x00。
-
STP的TCN BPDU:0x80。
-
MSTP或者RSTP的BPDU:0x02。
-
-
Flags
-
8个标记位。最左边(最高位)置位时,表示TCA;最右边(最低位)置位时,表示TC。中间的6位保留。
-
TC,根桥发出的用来描述拓扑变化信息的,其他交换机收到后会将MAC地址表老化时间由300秒缩短至15秒。
-
TCA,拓扑变化确认。交换机收到拓扑变化报文后回复,表示收到了。
-
两者属于配置BPDU中因Flags置位不同而产生的两种消息。
-
-
Root ID
-
网桥ID都是8个字节,前两个字节是网桥优先级,后6个字节是网桥MAC地址。
-
-
Root Path Cost
-
根路径开销,本端口累计到根桥的开销。
-
-
Bridge ID
-
发送者BID,本交换机的BID。
-
-
Port ID
-
发送端口PID,发送该BPDU的端口ID。
-
-
Message Age
-
该BPDU消息存在于交换机中的时间(老化时间)。
-
-
Max Age
-
类似于保活时间,交换机间周期发送配置BPDU保活,每2秒发送一次,10次后还没收到回包(20秒),就判定对方宕机。MAX Age = 10 * Hello Time。
-
-
Hello Time
-
发送两个相邻BPDU间的时间间隔,一般2秒。
-
-
Forward Delay
-
控制Listening和Learning状态的持续时间。
-
STP选举机制
根桥的选举
在所有交换机中选出一台作为根网桥(Root Bridge),其他交换机都为非根网桥。
-
选举规则
-
Bridge id小的优先。
-
-
Bridge id
-
桥ID,用来标识交换机的身份,简写为BID。
-
格式:优先级 - MAC地址
-
默认优先级为32768,优先级必须是4096的倍数。
-
根端口的选举
每台非根网桥选举出一个根端口(Root Port)。
-
选举规则
-
到达根网桥开销值小的优先。
-
对端交换机BID小的优先。
-
端口ID小的优先。
-
-
端口ID
-
格式:优先级+端口号(交换机接口编号)。
-
优先级取值为0 - 240,默认为128,端口优先级必须是16的倍数。
-
-
开销
-
即cost,代表路径耗费的代价和成本,带宽越大,开销越小。
-
指定端口的选举
每个物理段上选举出一个指定端口(Designated Port)。
-
选举规则
-
到达根网桥开销小的优先。
-
本机BID小的优先。
-
端口ID小的优先。
-
闭塞端口的选举
上面的角色选举完成后,剩下的端口就是闭塞端口(Blocked Port)。
注意
-
根桥和端口角色的选举同步进行,不存在先后关系。
-
选举时间(STP计算的时间)为30秒。
STP端口状态
Disable
-
禁用状态,被手动关闭的端口。
-
不发送配置BPDU,不进行MAC地址表的学习,不收发数据。
-
不接收来自根桥的配置BPDU。
Blocking
-
阻塞状态,闭塞端口所在的状态。
-
不发送配置BPDU,不进行MAC地址表的学习,不收发数据。
Listening
-
监听状态,是一个过度状态,持续时间为15秒。
-
发送配置BPDU,不进行MAC地址表的学习,不收发数据。
Learning
-
学习状态,也是一个过度状态,持续时间为15秒。
-
发送配置BPDU,进行MAC地址表的学习,不收发数据。
Forwarding
-
转发状态。
-
发送配置BPDU,进行MAC地址表的学习,收发数据。
当网络出现变化(有交换机故障),整个网络的角色将会重新计算,这个过程至少需要30秒(因为Listening和Learning两个状态)。
STP计时器
Hello Time
-
配置BPDU的发送周期,2秒。
Max Age
-
判断链路故障的时间,10 * Hello Time = 20秒。
Forwarding Delay
-
状态切换延迟,15秒。
STP的收敛时间
-
初次收敛时间 --- 30秒
-
存在故障接口的交换机能迅速接收到来自其他交换机转发的配置BPDU,只需要等待两个状态切换延迟就能收敛。
-
-
拓扑故障再收敛时间 --- 50秒
-
存在故障接口的交换机不能接收来自其他交换机转发的配置BPDU,此情况下,需要等待一个Max Age和两个状态切换延迟才能收敛。
-
STP拓扑变更机制
STP协议收敛时间为30秒或50秒,当网络中出现故障时,等待STP收敛后就可以正常转发数据了吗?
当网络收敛完成,交换机的MAC地址表是否会有300秒的老化时间。在MAC地址表没刷新前,数据包按照之前的路径走,肯定不可能顺利到达目的地。STP也有解决该问题的方案。
处理方案
-
交换机感知到拓扑变更,交换机向根桥发送TCN BPDU。
-
Max Age超时、有接口状态变更,都判定为拓扑变更。
-
-
沿途的非根网桥收到TCN BPDU后,会继续向根桥转发。
-
根桥收到TCN BPDU后,在下一轮配置BPDU中将TC置位,通告拓扑变更。
-
所有交换机收到根桥TC置位的配置BPDU后,将MAC地址表老化时间由300秒缩短到15秒。并向根桥回复TCA置位的配置BPDU。
该机制和收敛同时进行。
相关文章:

生成树协议 - STP
目录 BPDU STP选举机制 STP端口状态 STP计时器 STP拓扑变更机制 生成树协议(Spanning Tree Protocol),简写为STP。 STP是二层网络中用于消除环路的协议,通过阻塞冗余链路,使可用链路在拓扑上呈现出无环的树结构&…...

计算机指令分类和具体的表示的方式
1.关于计算机的指令系统 下面的这个就是我们的一个简单的计算机里面涉及到的指令: m就是我们的存储器里面的地址,可以理解为memory这个意思,r可以理解为rom这样的单词的首字母,帮助我们去进行这个相关的指令的记忆,不…...

mvc-service引入
什么是业务层 1)Model1(JSP)和Model2(模糊的mvc): MVC:Model(模型),View(视图),Controller(控制器) 视图层:用于数据展示以及用户交互的界…...

基于微信小程序的城市特色旅游推荐应用的设计与实现
💗博主介绍💗:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示:文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…...

【暗光图像增强】【基于CNN的方法】2020-AAAI-EEMEFN
EEMEFN:Low-Light Image Enhancement via Edge-Enhanced Multi-Exposure Fusion Network EEMEFN:基于边缘增强多重曝光融合网络的低光照图像增强 AAAI 2020 论文链接 0.论文摘要 本研究专注于极低光照条件下的图像增强技术,旨在提升图像亮度…...

【Linux】ssh命令 – 安全的远程连接服务
原创:厦门微思网络 SSH命令的概念 ssh命令的功能是安全地远程连接服务器主机系统,作为OpenSSH套件中的客户端连接工具,ssh命令可以让我们轻松地基于SSH加密协议进行远程主机访问,从而实现对远程服务器的管理工作。 语法 ssh 参…...

AT9850B—单北斗导航定位芯片
AT9850B是一款高性能低功耗双频单北斗卫星导航接收机SOC单芯片。芯片集成射频前端和数字基带、多模式卫星信号处理引擎、电源管理功能,集成度高,外围应用电路简洁。 支持中国北斗B1I/B1C单频定位或B1I/B1C/B2a双频定位,支持北斗二号和三号&a…...
【开源Agent框架】CAMEL:角色扮演+任务分解
一、项目概览:重新定义智能体协作范式 CAMEL(Communicative Agents for “Mind” Exploration of Large Language Model Society)是由camel-ai社区开发的开源多智能体框架,致力于探索智能体的规模法则(Scaling Laws)。该项目通过构建包含百万级智能体的复杂社会系统,研…...

工业4G路由器IR5000公交站台物联网应用解决方案
随着城市化进程的加速,公共交通是智慧城市的重要枢纽。城市公共交通由无数的公交站台作作为节点组合而成,其智能化升级成为提升城市出行效率与服务质量的关键。传统公交站台信息发布滞后、缺乏实时性,难以满足乘客对公交信息快速获取的需求&a…...

idea中Lombok失效的解决方案
Lombok 是一个 Java 库,旨在通过注解简化 Java 代码的编写,减少样板代码,提高开发效率。它通过自动生成常见的代码(如 getter、setter、构造函数等)来减少开发者的手动编码工作。 一般Lombok失效有四步排查方案&#…...
如何借助iPaaS集成平台做好API 版本管理
在当今数字化快速发展的浪潮中,API 作为企业连接内外部系统、实现数据交互与业务协同的关键桥梁,在企业发展进程中扮演着至关重要的角色。它不仅支撑着企业的日常运营,更是企业拓展业务边界、提升竞争力的核心要素之一。然而,API …...

黑马k8s(九)
1.Pod-生命周期概述 2.Pod生命周期-创建和终止 3.Pod生命周期-初始化容器...

【超分辨率专题】一种考量视频编码比特率优化能力的超分辨率基准
这是一个Benchmark,超分辨率视频编码(2024) 专题介绍一、研究背景二、相关工作2.1 SR的发展2.2 SR benchmark的发展 三、Benchmark细节3.1 数据集制作3.2 模型选择3.3 编解码器和压缩标准选择3.4 Benchmark pipeline3.5 质量评估和主观评价研…...

vs2019及以后版本cmd指定编译环境文件的路径
1、找到文件路径 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build 2、使用方法,启动cmd,依次输入对应指令,即可切换到相应环境...
【kafka】基本命令
创建 Kafka Topic 的命令 以下是创建 Kafka Topic 的几种常用方法: 1. 使用 kafka-topics.sh 基础命令(Kafka 自带工具) bin/kafka-topics.sh --create \--bootstrap-server <broker地址:端口> \--topic <topic名称> \--parti…...
提权脚本Powerup命令备忘单
1. 获取与加载 从 GitHub 下载:(New-Object Net.WebClient).DownloadFile("https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Privesc/PowerUp.ps1", "C:\Temp\PowerUp.ps1")本地加载:Import-Module .\Power…...
人工智能 (AI) 在无线接入网络 (RAN) 中的变革性作用
随着电信行业向更智能、更高效的系统迈进,将 AI 集成到 RAN 中已不再是可有可无,而是至关重要。 随着 6G 时代的到来,人工智能 (AI) 有望降低运营成本,并带来更大的盈利机会。AI-RAN 正处于这一变革的前沿,在 RAN 环境…...

一个完整的项目示例:taro开发微信小程序
前一周完成了一个项目,体测成绩转换的工具,没做记录,。这次计划开发一个地图应用小程序,记录一下。方便给使用的人。 一、申请微信小程序,填写相应的信息,取得开发者ID。这个要给腾讯地图使用的。 二、申…...
什么是SMBus
一、SMBus的定义与背景 基本概念 SMBus(System Management Bus,系统管理总线) 是一种基于IC(Inter-Integrated Circuit)协议的轻量级两线制串行通信总线,由Intel于1995年提出,主要用于低带宽系统…...

龙虎榜——20250516
上证缩量收阴线,小盘股表现相对更好,上涨的个股大于下跌的,日线已到前期压力位附近,注意风险。 深证缩量收假阳线,临近日线周期上涨末端,注意风险。 2025年5月16日龙虎榜行业方向分析 跨境电商ÿ…...

Python----神经网络(《Inverted Residuals and Linear Bottlenecks》论文概括和MobileNetV2网络)
一、论文 MobileNetV2 论文提出了一种新的移动架构,该架构提高了移动模型在多个任务和基准测试中的性能,以及在各种不同模型大小范围内的性能. 该架构基于倒残差结构,其中 shortcut 连接在 thin bottleneck 层之间. 中间的 expansion 层使用轻…...

React Flow 简介:构建交互式流程图的最佳工具
本文为《React Agent:从零开始构建 AI 智能体》专栏系列文章。 专栏地址:https://blog.csdn.net/suiyingy/category_12933485.html。项目地址:https://gitee.com/fgai/react-agent(含完整代码示例与实战源)。完整介绍…...

Jupyter-AI Pandas-AI本地使用功能优化
引言 Jupyter-ai 和 Pandas-ai 的优化主要是个人工作遇到的需求,个人觉得是一个不错的体验优化,所以进行分享仅供参考,不喜勿喷,共同进步!Jupyter-AI优化主要包含以下方向(当前已实现): Jupyter-AI中 Chat 扩展和 NoteBook 的 Cell 工作去部分,使用的Language Model 和 …...
安全版4.5.8开启审计后,hac+读写分离主备切换异常
文章目录 环境BUG/漏洞编码症状触发条件解决方案 环境 系统平台:UOS (飞腾) 版本:4.5.8 BUG/漏洞编码 3043 症状 BUG安装包: hgdb-see-4.5.8-db43858.aarch64.rpm 异常:hac集群一主两备环境ÿ…...

WEB安全--Java安全--shiro550反序列化漏洞
一、前言 什么是shiro? shiro是一个Apache的Java安全框架 它的作用是什么? Apache Shiro 是一个强大且灵活的 Java 安全框架,用于处理身份验证、授权、密码管理以及会话管理等功能 二、shiro550反序列化原理 1、用户首次登录并勾选记住密码…...

【 Redis | 实战篇 秒杀实现 】
目录 前言: 1.全局ID生成器 2.秒杀优惠券 2.1.秒杀优惠券的基本实现 2.2.超卖问题 2.3.解决超卖问题的方案 2.4.基于乐观锁来解决超卖问题 3.秒杀一人一单 3.1.秒杀一人一单的基本实现 3.2.单机模式下的线程安全问题 3.3.集群模式下的线程安全问题 前言&…...

数据通信原理 光纤通信 期末速成
一、图表题 1. 双极性不归零、单极性不归零、曼彻斯特码、抑制载频2ASK,2PSK、2DPSK信号的波形 双极性不归零 和 单极性不归零:不归零意思是 0 低 1 高 非归零编码(NRZ):用不同电平表示二进制数字,常以…...

华为云kubernetes容器相关组件及作用
Kubernetes组件按功能分为控制平面组件、工作节点组件及扩展插件,协同实现容器化应用的编排与管理。 一、控制平面组件(Control Plane) 1、kube-apiserver 作用:提供集群API入口,处理所有REST请…...

安全与智能的双向奔赴,安恒信息先行一步
人类文明发展的长河中,每一次技术变革都重新书写了安全的定义。 从蒸汽机的轰鸣到电力的普及,从互联网的诞生到人工智能的崛起,技术创新与变革从未停止对于安全的挑战。今天,我们又站在一个关键的历史节点:AI大模型的…...
Node.js中的URL模块
一、URL 模块基础 1. 模块导入方式 模块导入方式还是根据代码规范使用require或者import来引入模块。 // Node.js 方式 const url require(url);// ES 模块方式 (Node.js 14 或启用 ESM) import * as url from url; 2. 核心功能 解析 URL 字符串 格式化 URL 对象 URL 处…...