STP协议:如何消除网络环路风暴
生成树协议(STP,Spanning Tree Protocol)的主要功能:
- 消除网络环路导致的广播风暴问题(环路会引发MAC地址表不稳定)
- 防止网络中的主机接收重复数据帧
STP工作原理:
- 选举根桥(Root Bridge,RB)
- 在非根交换机上选举根端口(Root Port,RP)
- 为每个网段选举指定端口(Designated Port,DP),该端口负责转发BPDU报文(根桥端口默认为指定端口)
- 阻塞其他所有端口(Block/Discarding状态)
STP协议定义了三种端口角色:指定端口、根端口和预备端口。
-
指定端口(Designated Port,DP,标记:DESI)
- 功能:负责向所连网段转发配置BPDU
- 特点:每个网段有且仅有一个指定端口
- 注意:根桥的所有端口默认都是指定端口
-
根端口(Root Port,RP,标记:ROOT)
- 定义:非根交换机去往根桥的最优路径端口
- 限制:每台交换机最多拥有一个根端口
- 例外:根桥上不存在根端口
-
预备端口(标记:ALTE)
- 条件:既非指定端口也非根端口的端口
- 状态:自动进入阻塞状态
-
桥ID组成与选举规则
- 构成:优先级(0-65535,默认32768)+ MAC地址
- 选举:STP网络中桥ID最小的交换机成为根桥
-
根路径开销(Root Path Cost,RPC)
- 作用:用于选举根端口和指定端口(值越小越优先)
- 计算:等于从根桥到该交换机沿途所有入方向接口Cost值的累和
根端口选举规则:
- 首先比较路径开销
- 若开销相同,则比较桥ID
- 若桥ID也相同,则比较端口ID
端口ID说明:
- 由端口优先级(0-240)和端口号组成
- 优先级取值规则:
- 必须为16的整数倍
- 默认值为128
- 用于最终确定端口角色
STP协议运行下设备端口存在五种状态:
Forwarding(转发状态)
- 可转发用户流量和BPDU报文
- 仅根端口或指定端口可进入此状态
Learning(学习状态)
- 根据接收的用户流量构建MAC地址表
- 不转发用户流量
- 设置此状态可避免临时环路
Listening(侦听状态)
- 允许转发BPDU报文
- 禁止转发用户流量
Blocking(阻塞状态)
- 仅接收并处理BPDU
- 不转发BPDU和用户流量
- 预备端口的最终状态
Disabled(禁用状态)
- 不处理或转发BPDU报文
- 不转发用户流量
BPDU主要分为两类:配置BPDU和TCN BPDU。
- 配置BPDU:包含桥ID、路径开销和端口ID等关键参数,用于STP协议的交换机选举和端口状态确定。在网络初始化阶段,所有交换机都会主动发送配置BPDU;当网络拓扑稳定后,仅根桥继续主动发送,其他交换机收到上游BPDU后才会响应。
- TCN BPDU:当下游交换机检测到拓扑变化时,向上游发送的拓扑变更通知。
配置BPDU核心参数
- 根桥ID:由优先级和MAC地址组成,确保STP网络中唯一根桥。
- 根路径开销:到达根桥的最短路径开销。
- 指定桥ID:指定交换机的优先级和MAC地址。
- 指定端口ID:指定端口的优先级和端口号。
- 时间参数:
- Message Age:BPDU传播的当前生存时间。
- Max Age:BPDU的最大保存时间(默认20秒)。
- Hello Time:BPDU发送间隔(默认2秒,仅根桥触发)。
- Forward Delay:端口状态迁移延时(默认15秒,含Listening→Learning→Forwarding阶段)。
关键时间说明
- Hello Time:根桥每2秒发送BPDU,其他设备中继转发。
- Forward Delay:控制端口状态转换及MAC表刷新。
- Max Age:新旧BPDU切换的忠诚度判断阈值(20秒)。若
Message Age > Max Age
则丢弃BPDU;否则接收并转发(每经过一台交换机Message Age
+1,仅在MSTP中可修改且需根桥调整生效)。
配置所需要的命令:
[SWA]stp mode stp 配置交换机的生成树协议模式
[SWA]stp priority 4096 配置交换机优先级
[SWC]interface GigabitEthernet 0/0/1 进入接口
[SWC-GigabitEthernet0/0/1]stp cost 2000 配置路径开销
[SWA]display stp 配置验证
相关文章:
STP协议:如何消除网络环路风暴
生成树协议(STP,Spanning Tree Protocol)的主要功能: 消除网络环路导致的广播风暴问题(环路会引发MAC地址表不稳定)防止网络中的主机接收重复数据帧 STP工作原理: 选举根桥(Root …...

哈工大计算机系统2025大作业——Hello的程序人生
计算机系统 大作业 题 目 程序人生-Hello’s P2P 专 业 计算学部 学 号 2023113072 班 级 23L0513 学 生 董国帅 指 导 教 师 史先俊 计算机科学与…...
物联网常用协议Modbus、CAN、BACnet介绍
一、Modbus Modbus 作为工业通信领域的基石,是一款被广泛应用的工业通信协议,主要用于实现可编程逻辑控制器(PLC)等工业电子设备之间的连接。1979 年,Modicon 公司(现施耐德电气的一部分)开发了这一协议,旨在简化工厂内设备间的通信流程。经过多年发展,Modbus 衍生出…...

Vue中van-stepper与input值不同步问题及解决方案
一、问题描述 在使用Vant UI的van-stepper步进器组件与原生input输入框绑定同一响应式数据时,出现以下现象: 通过步进器修改值后,页面直接输出{{ count }}和watch监听器均能获取最新值但input输入框显示的数值未同步更新,仍为旧…...

react基础技术栈
react基础技术栈 react项目构建react的事件绑定React组件的响应式数据条件渲染和列表循环表单绑定 Props和组件间传值,插槽react中的样式操作 生命周期ref 和 context函数组件和hook高阶组件React性能问题React-route的三个版本react-router使用步骤react-router提供…...

Three.js搭建小米SU7三维汽车实战(4)场景搭建
场地搭建 javascript // 导入threejs import * as THREE from "three"; // 导入轨道控制器 import { OrbitControls } from "three/addons/controls/OrbitControls.js"; // 1. 创建场景 const scene new THREE.Scene(); // 2. 创建相机 const camera ne…...
redis五种数据结构底层实现
参考文档: redis5种数据结构底层实现...

Excel 统计某个字符串在指定区域出现的次数
【本文概要】 Excel 统计某个字符串在指定区域出现的次数: 1、Excel 统计一个单元格内的某字符串的出现次数 2、Excel 统计某一列所有单元格内的某字符串的出现次数 3、Excel 统计某一区域所有单元格内的某字符串的出现次数 1、Excel 统计一个单元格内的某字符串的出…...
【Kubernetes】ubuntu20.04通过kubeadm + Docker安装k8s
Kubernetes v1.24集群安装配置步骤总结 一、环境准备 (一)系统要求 运行兼容deb/rpm的Linux操作系统(如Ubuntu或CentOS)的计算机,1台或多台。每台机器内存2GB以上,内存不足会限制应用运行。控制平面节点…...
前端开源JavaScrip库
以下内容仍在持续完善中,如有遗漏或需要补充之处,欢迎在评论区指出。感谢支持,如果觉得有帮助,欢迎点赞鼓励。感谢支持 JavaScript 框架Vue.jsVue.js - 渐进式 JavaScript 框架 | Vue.jsReactReactAngularHome • AngularjQueryj…...

【Linux我做主】进度条小程序深度解析
Linux下C语言进度条程序深度解析 进度条小程序GitHub地址 前言前置知识回车换行(CR/LF)的深度解析历史渊源与技术规范在进度条/倒计时中的应用 缓冲区机制的全面剖析缓冲区引入缓冲类型对比进度条开发中的关键控制 进度条实现以小见大——倒计时倒计时最…...
MySQL 使用全局锁会导致的问题?
MySQL 使用全局锁会导致以下核心问题: 业务停摆与主从延迟 主库备份:备份期间所有更新操作被阻塞,业务系统陷入等待状态从库备份:无法执行主库同步的 binlog,导致主从复制延迟加剧 并发性能急剧下降 …...

从Homebrew找到openssl.cnf文件并拷贝到Go项目下使用
安装OpenSSL 在 macOS 上下载和安装 OpenSSL 最常见和推荐的方式是使用 Homebrew,这是一个 macOS 缺失的包管理器。 如果您还没有安装 Homebrew,请先安装它。安装 Homebrew 后,安装 OpenSSL 只需要一条命令。 步骤 1:安装 Home…...
在Java对象转JSON字符串时不显示无值参数
在Java中,可以通过在展示数据的逻辑中添加判断条件来实现这一需求。以下是一些常见的场景和实现方法: 场景一:在Java对象转JSON字符串时 使用Gson库 代码实现 首先引入Gson依赖,如果使用Maven构建项目,在pom.xml文件中…...
在 Ubuntu 服务器上 下载 Clash 文件使用代理
文件Clash.Verge_1.3.8_x64_portable.zip 在 Ubuntu 服务器上不能使用这个Clash 文件**,我们需要的是 Clash.Meta 而不是 Clash Verge GUI 客户端 也就是 Clash Verge GUI 客户端的 Windows 版本,是给 Windows 桌面环境用的图形界面,不适用…...

微信小程序一次性订阅封装
封装代码如下: export async function subscribeMessage(tmplIds: string[]): Promise<ISubscribeMessagePromise> {// 模板ID// 1、获取设置状态const settings (await wx.getSetting({ withSubscriptions: true })).subscriptionsSetting || {}console.log…...
Spring AI MCP的几个小问题
测试时间:2025/05/29 测试版本:Spring AI 1.0.0 问题1:由于启动顺序问题,MCP的服务器端和客户端不能在一个应用里,不然客户端连不上服务器会报错退出。(实际项目应该没有这样用的) 问题2:现在如果配置了…...

安全帽检测算法AI智能分析网关V4守护工地/矿山/工厂等多场景作业安全
一、方案概述 在工业生产与建筑施工场景中,安全帽是保障人员安全的重要装备。但传统人工巡检效率低、易疏漏,难以满足现代安全管理需求。AI智能分析网关V4安全帽检测方案,借助人工智能与计算机视觉技术,实现作业现场安全帽佩戴…...
Pycharm的简单介绍
目录 1. 起源与发展历史 2. 定位与核心作用 3. 主要版本 4. 应用场景 5. 核心功能与优势 6. 优缺点分析 7. 使用入门指南 8. 适用人群 9. 替代工具对比 总结 1. 起源与发展历史 公司背景:由捷克公司 JetBrains(成立于2000年)开发&a…...
重新安装解决mac vscode点击不能跳转问题
依次执行以下过程 删除vscode程序 删除vscode的缓存文件夹(xxx表示你的用户名) /Users/xxx/Library/Application Support/Code 重新安装vscode 这时候你会反向可以跳转项目内的import 文件以及自定义函数。但是import安装的包还不能点击跳转 配置python环境 如果你电脑没有安…...
Go语言中flag包的用法详解
在Go语言编程中,flag包是标准库中用于解析命令行参数的强大工具。它提供了一种简单且灵活的方式来定义和处理命令行标志(flag),使得程序能够从命令行接收用户输入的参数。本文将详细介绍flag包的用法,包括基本概念、常…...

Python自动化之selenium语句——打开、关闭浏览器和网页
目录 一、打开谷歌浏览器 1.双击桌面的Pycharm工具 2.新建Python文件,输入文件名 3.新建的Python文件如下 4.安装selenium库 5.导入包 二、打开网页、关闭网页、关闭浏览器 1.导入增加一个时间包 2.使用函数打包之前写的浏览器的配置 3.调用 4.打开百度网…...

【数据结构】--二叉树--堆(上)
一、树的概念和结构 概念: 树是一种非线性的数据结构,他是由n(n>0)个有限结点组成一个具有层次关系的集合。其叫做树,是因为他倒过来看就和一棵树差不多,其实际上是根在上,树枝在下的。 树的特点: 1…...
Rust 学习笔记:使用迭代器改进 minigrep
Rust 学习笔记:使用迭代器改进 minigrep Rust 学习笔记:使用迭代器改进 minigrep不使用 clone,而使用迭代器使用迭代器适配器使代码更清晰在循环或迭代器之间进行选择 Rust 学习笔记:使用迭代器改进 minigrep 前情提要࿱…...

多线程(5)——单例模式,阻塞队列
目录 单例模式饿汉模式懒汉模式—单线程版懒汉模式—多线程版(经典面试题)懒汉模式—多线程版(改进) 阻塞队列阻塞队列是什么生产者消费者模型标准库中的阻塞队列-BlockingQueue阻塞队列实现 单例模式 单例模式是一种设计模式&am…...
React整合【ECharts】教程004:饼图的构建和基本设置
文章目录 6、饼图6.1 开启圆角环形6.2 设置扇区间隙6.3 开启深色模式6.4 开启南丁格尔玫瑰图6.5 修改数据重绘饼图6.6 完整代码下载6、饼图 6.1 开启圆角环形 1️⃣添加圆角环形开关: <div style={{marginTop:10px}}>圆角环形:<Switch checkedChildren="开启…...

视频监控汇聚平台EasyCVR工业与安全监控:防爆摄像机的安全应用与注意事项
石油、化工、煤矿等行业存在易燃易爆气体、粉尘,普通监控设备易因电火花、高温引发爆炸火灾。随着工业规模扩大,安全生产监控需求激增,防爆摄像机成为保障安全的关键。加之国家法规与行业标准对危险环境监控设备要求严格,规范其应…...
Android 倒计时总结
文章目录 Android 倒计时总结Handler方案CountDownTimer方案Timer方案Flow方案总结源码下载 Android 倒计时总结 Handler方案 class MyHandler(private val intervalTime: Long, // 间隔private val totalTime: Long, // 总时长onTick: (Long) -> Unit, // 每秒回调onFini…...

基于 Redis 实现分布式锁:原理及注意事项
文章目录 基于 Redis 实现分布式锁:原理及注意事项基于 Redis 实现分布式锁的原理Redis 分布式锁的过期时间和锁续期机制如何防止锁被其他 goroutine 删除?Redis 分布式锁存在的单点故障问题:基于 RedLock 的解决方案高并发场景中 Redis 分布…...

手机设备多?怎样设置IP保证不关联
在移动互联网时代,多设备运营(如电商、游戏工作室、社交媒体矩阵)常面临IP关联风险,轻则账号受限,重则封禁。以下提供6种高效设置独立IP的方法,结合技术原理与实操建议,助您打造稳定合规的运营环…...