STP(生成树协议)原理与配置

news2025/6/4 14:18:17

冗余链路与环路问题

冗余链路虽然提供网络可靠性,但会引发环路问题。广播风暴导致网络资源耗尽,MAC地址表频繁更新造成震荡,同一数据帧通过不同路径重复传输影响数据完整性。

STP工作机制

生成树协议通过选举机制消除环路,同时保留备份路径。选举过程分为选择根桥、确定根端口、指定端口以及阻塞冗余端口四个阶段。根桥选举基于交换机优先级和MAC地址,根端口和指定端口的选择则依据路径开销及端口ID。

端口状态与转换

STP端口经历阻塞、监听、学习和转发四种主要状态。端口初始状态为阻塞,通过接收BPDU报文参与选举,最终稳定在转发或阻塞状态。状态转换过程约30秒,确保网络拓扑稳定收敛。

BPDU报文与计时器

BPDU报文携带网络拓扑信息,包括桥ID、路径开销和端口ID等。计时器控制协议运行,Hello Time默认2秒用于定期发送BPDU,Max Age设定为20秒监测拓扑变化,Forward Delay为15秒控制状态转换时间。

拓扑变化处理

当网络拓扑发生变化时,STP重新计算路径。根桥故障需要50秒收敛时间,直连链路故障约30秒恢复。非直连故障依赖BPDU传递信息,收敛时间较长。拓扑变更通知(TCN)机制加速MAC地址表更新。

配置与验证

华为设备配置示例:

[SWA] stp mode stp
[SWA] stp priority 4096
[SWC-GigabitEthernet0/0/1] stp cost 2000

验证命令:

display stp
display stp interface GigabitEthernet0/0/1

关键概念区分

路径开销指单个链路成本,根路径开销是从交换机到根桥的总成本。主根桥通常设置最低优先级(4096),备份根桥次之(8192)。收敛过程中需注意临时性流量中断问题。

网络管理员可通过调整优先级和路径开销优化生成树拓扑,平衡故障恢复时间与网络稳定性需求。定期检查STP状态可预防潜在环路风险。

通俗易懂的解释:

STP 就像给复杂的二层网络(交换机之间的连接)安排了一个 “交通警察”,专门解决 “堵车” 和 “迷路” 问题。

为什么需要 STP?

想象你开车时遇到环形公路,如果没有红绿灯或交警指挥,所有车都绕圈开,就会堵死(类似广播风暴);同时,导航可能因为环路反复更新路线(类似 MAC 地址表震荡)。STP 的作用就是:

  • 封路:暂时关闭多余的环路链路(阻塞端口),只留一条 “主干道” 保证通行。
  • 留备胎:被关闭的链路作为备用,一旦主干道堵车(链路故障),立刻开通备用路线(切换端口状态)。
STP 如何工作?
  1. 选老大(根桥选举)
    交换机们比 “身份证号”(优先级 + MAC 地址),号最小的当 “根桥”(类似公司大领导),负责统筹全局。
    :三个交换机比优先级(类似职位高低),优先级最低的(如 “4096”)当领导,若优先级相同,比 MAC 地址(类似工号),工号最小的胜出。

  2. 给每个部门选负责人(根端口选举)
    非根桥交换机(普通员工)要选一个 “最快” 到根桥的端口(根端口),就像员工选 “离领导办公室最近的门” 上班。判断标准:

    • 先看 “路程远近”(路径开销,比如千兆链路比百兆近);
    • 路程一样,比 “门牌号”(对端交换机和端口的 ID,越小越优先)。
  3. 给每条路设收费站(指定端口选举)
    每条链路(公路)选一个 “收费站”(指定端口)负责转发数据,确保每个路段只有一个方向通车。选法和根端口类似,谁到根桥的 “路程” 更短、ID 更小,谁就当收费站。

  4. 封路规则(阻塞端口)
    没被选上根端口或指定端口的链路,就像被交警贴上 “禁止通行” 标志(阻塞状态),但保留 “随时通车” 的能力(备份)。

遇到故障怎么办?
  • 领导离职(根桥故障):员工们等 20 秒(Max Age)发现领导没消息,立刻重新选老大,整个过程约 50 秒(类似公司临时选举新领导)。
  • 主干道塌方(直连链路故障):交换机发现路断了,马上启用备用路,30 秒后通车(先 “打听路况” 15 秒,再 “记路名” 15 秒)。
  • MAC 表过期问题:如果路改了,旧导航(MAC 地址表)可能还指错路,STP 会发 “路况更新通知”(TCN),让交换机快速刷新导航,避免绕路。
怎么配置 STP?

就像给交警下指令:

  1. 指定领导:直接告诉交换机 “你是根桥”(设置优先级最低)。

    bash

    [SWA] stp priority 4096  # 让SWA当主根桥,优先级最低
    

  2. 调整路况:手动设置某条路的 “距离”(端口开销),让交换机优先走某条路。

    bash

    [SWC-GigabitEthernet0/0/1] stp cost 2000  # 把这条路设为“更远”,迫使走其他路
    

  3. 查岗:看看交警是否按规则指挥交通(查看端口状态)。

    bash

    [SWA] display stp  # 检查根桥是谁、哪些端口在通车/封路
    

一句话总结
STP 就像网络中的 “智能交通系统”,平时关闭多余环路防堵车,故障时快速切换路线保畅通,让数据像汽车一样有序行驶,不绕路、不堵车。

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

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

相关文章

搭建基于VsCode的ESP32的开发环境教程

一、VsCode搜索ESP-IDF插件 根据插件处搜索找到ESP-IDF并安装 安装完成 二、配置安装ESP-IDF 配置IDF 按照如下配置,点击安装 安装完成 三、使用案例程序 创建一个闪光灯的例子程序,演示程序编译下载。 选择blink例子,闪烁LED的程序 选…

【MFC】初识MFC

目录 01 模态和非模态对话框 02 静态文本 static text 01 模态和非模态对话框 首先我们需要知道模态对话框和非模态对话框的区别: 模态对话框是一种阻塞时对话框,它会阻止用户与应用程序的其他部分进行交互,直到用户与该对话框进行交互并关…

如何通过数据分析优化项目决策

通过数据分析优化项目决策需从明确数据分析目标、选择适当的数据分析工具、确保数据质量、建立数据驱动文化等方面入手,其中,明确数据分析目标是优化决策过程的基础,只有清晰明确的数据分析目标才能指导有效的数据采集与分析,避免…

2024年数维杯国际大学生数学建模挑战赛B题空间变量协同估计方法研究解题全过程论文及程序

2024年数维杯国际大学生数学建模挑战赛 B题 空间变量协同估计方法研究 原题再现: 在数理统计学中,简单采样通常假设来自相同总体的采样点彼此独立。与数理统计相反,空间统计假设空间变量的采样点是相依的,并在其值中表现出某些趋…

leetcode hot100刷题日记——34.将有序数组转换为二叉搜索树

First Blood:什么是平衡二叉搜索树? 二叉搜索树(BST)的性质 左小右大:每个节点的左子树中所有节点的值都小于该节点的值,右子树中所有节点的值都大于该节点的值。 子树也是BST:左子树和右子树也…

网页自动化部署(webhook方法)

实现步骤: 宝塔安装宝塔WebHook 2.5插件。 github 上配置网页仓库(或可在服务器的网页根目录clone)。 配置宝塔WebHook 2.5 添加hook脚本; 编辑添加syncJC脚本; #!/bin/bash # 定义网站根目录 WEBROOT"/www…

AU6825集成音频DSP的2x32W数字型ClaSSD音频功率放大器(替代TAS5825)

1.特性 ● 输出配置 - 立体声 2.0: 2 x 32W (8Ω,24V,THD N 10%) - 立体声 2.0: 2 x 26W (8Ω,21V,THD N 1%) ● 供电电压范围 - PVDD:4.5V -26.4V - DVDD: 1.8V 或者 3.3V ● 静态功耗 - 37mA at PVDD12V ● 音频性能指标 - THDN ≤ 0.02% at 1W,1kHz - SNR ≥ 107dB (A-wei…

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1商用服务体验全流程

华为云 Flexus 与 DeepSeek-V3/R1 的深度整合,构建了一套 “弹性算力 智能引擎” 的协同体系。 Flexus 系列云服务器基于柔性计算技术,通过动态资源调度(如 Flexus X 实例)实现 CPU / 内存的实时弹性分配,尤其适合大模…

C# NX二次开发-查找连续倒圆角面

在QQ群里有人问怎么通过一个选择一个倒圆角面来自动选中一组倒圆角面。 可以通过ufun函数 UF_MODL_ask_face_type 和 UF_MODL_ask_face_props 可判断处理选择相应的一组圆角面。 代码: Tag[] 查找连续倒圆角面(Tag faceTag) {theUf.Modl.AskFaceType(faceTag, out int typ…

今天遇到的bug

先呈现一下BUG现象。 这主要是一个传参问题,参数一直传不过去。后来我才发现,问题所在。 我们这里用的RquestBody接收参数,所有请求的参数需要用在body体中接收,但是我们用postman,用的是字符串查询方式传参&#x…

长安链智能合约命令解析(全集)

创建命令解析 ./cmc client contract user create \ --contract-namefact \ --runtime-typeWASMER \ --byte-code-path./testdata/claim-wasm-demo/rust-fact-2.0.0.wasm \ --version1.0 \ --sdk-conf-path./testdata/sdk_config.yml \ --admin-key-file-paths./testdata/cryp…

一、OpenCV的基本操作

目录 1、OpenCV的模块 2、OpenCV的基础操作 2.1图像的IO操作 2.2绘制几何图形 2.3获取并修改图像中的像素点 2.4 获取图像的属性 2.5图像通道的拆分与合并 2.6色彩空间的改变 3、OpenCV的算数操作 3.1图像的加法 3.2图像的混合 3.3总结 1、OpenCV的模块 2、OpenCV的基…

裂缝仪在线监测装置:工程安全领域的“实时守卫者”

在基础设施运维领域,裂缝扩展是威胁建筑结构安全的核心隐患之一。传统人工巡检方式存在效率低、时效性差、数据主观性强等局限,而裂缝仪在线监测装置通过技术迭代,实现了对结构裂缝的自动化、持续性追踪,为工程安全评估提供科学依…

【论文精读】2024 ECCV--MGLD-VSR现实世界视频超分辨率(RealWorld VSR)

文章目录 一、摘要二、问题三、Method3.1 Latent Diffusion Model3.2 Motion-guided Diffusion Sampling3.3 Temporal-aware Decoder Fine-tuning 四、实验设置4.1 训练阶段4.2 训练数据 贡献总结 论文全称: Motion-Guided Latent Diffusion for Temporally Consis…

SpringBoot简单体验

1 Helloworld 打开:https://start.spring.io/ 选择maven配置。增加SpringWeb的依赖。 Generate之后解压,代码大致如下: hpDESKTOP-430500P:~/springboot2/demo$ tree ├── HELP.md ├── mvnw ├── mvnw.cmd ├── pom.xml └── s…

2025年通用 Linux 服务器操作系统该如何选择?

2025年通用 Linux 服务器操作系统该如何选择? 服务器操作系统的选择对一个企业IT和云服务影响很大,主推的操作系统在后期更换的成本很高,而且也有很大的迁移风险,所以企业在选择服务器操作系统时要尤为重视。 之前最流行的服务器…

Azure devops 系统之五-部署ASP.NET web app

今天介绍如何通过vscode 来创建一个asp.net web app,并部署到azure 上。 创建 ASP.NET Web 应用 在您的计算机上打开一个终端窗口并进入工作目录。使用 dotnet new webapp 命令创建一个新的 .NET Web 应用,然后将目录切换到新创建的应用。 dotnet new webapp -n MyFirstAzu…

学习路之PHP--easyswoole_panel安装使用

学习路之PHP--easyswoole_panel安装使用 一、新建文件夹二、安装三、改配置地址四、访问 IP:Port 自动进入index.html页面 一、新建文件夹 /www/wwwroot/easyswoole_panel 及配置ftp 解压easyswoole_panel源码 https://github.com/easyswoole-panel/easyswoole_panel 二、安…

【拓扑排序】P6560 [SBCOI2020] 时光的流逝|普及+

本文涉及知识点 C图论 拓扑排序 P6560 [SBCOI2020] 时光的流逝 题目背景 时间一分一秒的过着,伴随着雪一同消融在了这个冬天, 或许,要是时光能停留在这一刻,该有多好啊。 … “这是…我在这个小镇的最后一个冬天了吧。” “嗯…

SSRF 接收器

接收请求 IP.php <?php // 定义日志文件路径 $logFile hackip.txt;// 处理删除请求 if (isset($_POST[delete])) {$ipToDelete $_POST[ip];$lines file($logFile, FILE_IGNORE_NEW_LINES);$newLines array();foreach ($lines as $line) {$parts explode( | , $line);…