四、华为交换机 STP

news2025/1/21 6:18:15

        生成树协议(STP)的核心目的是在存在冗余链路的网络中,构建一个无环的拓扑结构,从而防止网络环路带来的广播风暴等问题

  • 一、STP 原理

    • 选举根桥:网络中的每台交换机都会有一个唯一的桥 ID(BID),由桥优先级(默认 32768)和交换机 MAC 地址组成。具有最低桥 ID 的交换机会被选举为根桥,根桥是生成树拓扑的中心。
    • 确定根端口:在非根桥交换机上,每个交换机需要确定一个根端口。根端口是距离根桥最近的端口,衡量距离的指标是路径开销(Path Cost)。路径开销与端口带宽相关,带宽越高,路径开销越低。如果有多条路径开销相同的链路,则会比较发送方的桥 ID 以及端口 ID,选择最优的作为根端口。
    • 确定指定端口:每个网段都需要确定一个指定端口。指定端口负责向本网段转发来自根桥的流量。在每个网段中,比较连接到该网段的各个交换机端口的路径开销。具有最低路径开销的端口成为该网段的指定端口。如果多个端口的路径开销相同,则比较这些端口所在交换机的桥 ID,桥 ID 较低的交换机端口成为指定端口。
    • 阻塞非指定端口:除了根端口和指定端口之外,其他端口将被阻塞(Blocked)。被阻塞的端口不会转发用户流量,但会继续接收和处理 STP 协议报文,以便能够感知网络拓扑的变化。通过阻塞非指定端口,STP 协议有效地防止了网络环路的产生,确保了网络的稳定性和可靠性。
  • 二、STP 状态

    • 禁用(Disabled):端口处于非工作状态,不参与 STP 运算,也不转发任何数据帧。该状态通常是由于管理员手动关闭端口,或者端口出现硬件故障等原因导致。
    • 阻塞(Blocking):端口不转发用户数据帧,但会接收并处理 STP 协议报文,用于监听网络拓扑的变化。在网络初始化阶段或者拓扑结构发生变化后,部分端口会暂时处于阻塞状态,以防止网络环路的产生。
    • 监听(Listening):端口开始参与 STP 运算,不再处于阻塞状态,但仍然不转发用户数据帧。在这个阶段,端口会发送和接收 STP 协议报文,以确定其在生成树拓扑中的角色(根端口、指定端口或非指定端口)。
    • 学习(Learning):端口仍然不转发用户数据帧,但开始学习网络中 MAC 地址的分布情况,并将学到的 MAC 地址信息记录在端口的 MAC 地址表中。通过学习阶段,端口能够逐步建立起准确的 MAC 地址表,为后续的数据转发做好准备。
    • 转发(Forwarding):端口正常转发用户数据帧,同时也继续参与 STP 运算,接收和处理 STP 协议报文,以确保网络拓扑结构发生变化时能够及时做出响应,重新调整端口的状态和角色,维持网络的稳定性和无环性。
  • 三、STP 主要参数

    • 桥优先级(Bridge Priority):取值范围通常是 0 - 65535,默认值为 32768。桥优先级用于在选举根桥时确定交换机的优先级。具有较低桥优先级的交换机更有可能被选举为根桥。如果多个交换机的桥优先级相同,则会比较它们的 MAC 地址,MAC 地址较小的交换机将成为根桥。
    • 路径开销(Path Cost):路径开销是衡量一个端口到根桥距离的指标。它与端口的带宽密切相关,一般来说,带宽越高,路径开销越低。不同标准定义的路径开销计算方法略有不同。在选举根端口时,非根桥交换机上的每个端口都会计算其到根桥的路径开销,具有最低路径开销的端口将成为根端口。如果有多条路径开销相同的链路,则会进一步比较发送方的桥 ID 以及端口 ID,以确定最优的根端口。在确定指定端口时,也会比较连接到同一网段的各个交换机端口的路径开销,具有最低路径开销的端口将成为该网段的指定端口。
    • 端口优先级(Port Priority):取值范围一般是 0 - 255,默认值为 128。端口优先级用于在路径开销相同的情况下,进一步确定根端口和指定端口。在选举根端口时,如果多个端口到根桥的路径开销相同,则会比较这些端口的端口优先级。具有较高端口优先级(即端口优先级数值较小)的端口更有可能被选举为根端口。如果端口优先级也相同,则会比较端口的编号,端口编号较小的端口将成为根端口。在确定指定端口时,当连接到同一网段的多个交换机端口路径开销相同时,也会依据端口优先级来进行抉择,规则与根端口选举时类似。
    • Hello 时间(Hello Time)默认值为 2 秒。Hello 时间是指根桥交换机每隔多长时间向网络中的其他交换机发送一次 Hello 报文。Hello 报文包含了根桥的桥 ID、路径开销等重要的 STP 信息。通过周期性地发送 Hello 报文,根桥能够向网络中的其他交换机宣告自己的存在,并确保整个网络的 STP 拓扑信息保持同步。其他交换机在接收到 Hello 报文后,会根据报文中的信息来更新自己的 STP 状态和拓扑信息。如果某个交换机在连续多个 Hello 时间间隔内都没有收到来自根桥的 Hello 报文,那么它会认为网络拓扑结构可能发生了变化,进而触发 STP 的重新计算过程,以确保网络能够重新收敛到一个无环的拓扑结构。
    • 转发延迟(Forward Delay)默认值为 15 秒。转发延迟是指端口从阻塞状态或监听状态转换到转发状态所需要等待的时间。在网络初始化阶段或者拓扑结构发生变化后,STP 协议需要重新计算网络拓扑,以确定各个端口的角色和状态。在这个过程中,部分端口可能需要从阻塞状态或监听状态转换到转发状态。为了防止网络中出现临时的环路,STP 协议引入了转发延迟机制。当端口需要从阻塞状态或监听状态转换到转发状态时,它不会立即开始转发用户数据帧,而是需要等待一段转发延迟时间。在这段时间内,端口仍然处于监听或学习状态,继续接收和处理 STP 协议报文,同时学习网络中的 MAC 地址分布情况。只有在等待完转发延迟时间后,端口才会正式转换到转发状态,开始正常转发用户数据帧。这样可以确保在网络拓扑重新收敛的过程中,不会因为端口状态的快速变化而导致网络中出现临时的环路,从而保证了网络的稳定性和可靠性。
    • 最大老化时间(Max Age)默认值为 20 秒。最大老化时间是指交换机端口保存的 STP 拓扑信息的最长有效时间。在网络正常运行过程中,交换机通过接收来自根桥的 Hello 报文来更新自己的 STP 拓扑信息。Hello 报文包含了根桥的桥 ID、路径开销等重要信息,交换机根据这些信息来确定自己在网络拓扑中的位置和角色。然而,如果某个交换机在连续多个 Hello 时间间隔内都没有收到来自根桥的 Hello 报文,那么它会认为网络拓扑结构可能发生了变化。此时,交换机并不会立即触发 STP 的重新计算过程,而是会等待一段时间,这个时间就是最大老化时间。在最大老化时间内,交换机仍然会使用之前保存的 STP 拓扑信息来转发数据帧。如果在最大老化时间结束之前,交换机又收到了来自根桥的 Hello 报文,那么它会认为网络拓扑结构没有发生变化,继续使用之前保存的 STP 拓扑信息。然而,如果在最大老化时间结束时,交换机仍然没有收到来自根桥的 Hello 报文,那么它会认为网络拓扑结构已经发生了变化,进而触发 STP 的重新计算过程。在重新计算过程中,交换机会根据新收到的 STP 信息来重新确定自己在网络拓扑中的位置和角色,同时更新各个端口的状态,以确保网络能够重新收敛到一个无环的拓扑结构。最大老化时间的设置在网络拓扑结构变化时起到了缓冲作用,避免了因为短暂的 Hello 报文丢失而频繁触发 STP 的重新计算过程,从而提高了网络的稳定性和可靠性。
  • 四、华为交换机 STP 使用方式

    • 开启和关闭 STP

      • 华为交换机默认情况下,STP 是开启的。如果网络规模较小且不存在环路风险,或者出于特殊网络优化需求,可以选择关闭 STP。在系统视图下,使用命令 “stp disable” 即可关闭 STP 。若之后需要重新开启 STP,在系统视图下使用命令 “stp enable”。

                

  • 配置 STP 模式

    • 华为交换机支持多种 STP 模式,如 STP(Spanning Tree Protocol)、RSTP(Rapid Spanning Tree Protocol)和 MSTP(Multiple Spanning Tree Protocol)。不同的模式在收敛速度、功能特性等方面有所差异。RSTP 相比 STP 收敛速度更快,能够在网络拓扑发生变化时更快地恢复网络连通性。MSTP 则在 RSTP 的基础上,进一步支持将多个 VLAN 映射到同一个生成树实例中,从而实现更灵活的网络拓扑管理和负载均衡。可以根据网络的实际需求和规模来选择合适的 STP 模式。在系统视图下,使用命令 “stp mode {stp | rstp | mstp}” 来配置 STP 模式。例如,要将交换机的 STP 模式配置为 RSTP,可以在系统视图下输入命令 “stp mode rstp”。
  • 设置桥优先级

    • 通过调整交换机的桥优先级,可以影响根桥的选举结果,从而优化网络拓扑结构。在系统视图下,使用命令 “stp priority priority - value” 来设置桥优先级。其中,priority - value 为桥优先级的取值,范围是 0 - 65535,并且必须是 4096 的倍数。例如,要将交换机的桥优先级设置为 8192,可以在系统视图下输入命令 “stp priority 8192”。这样设置后,在进行根桥选举时,如果其他交换机的桥优先级默认值 32768 或者更高,那么这台交换机将更有可能被选举为根桥。通过合理设置桥优先级,可以确保网络中的根桥选择符合网络规划和优化的需求,从而提高网络的稳定性和性能。

                                ​​​​​​​        

  • 配置端口路径开销和优先级

    • 端口路径开销和优先级对于根端口和指定端口的选举至关重要。在某些情况下,默认的路径开销和端口优先级可能无法满足网络优化的需求,这时就需要手动配置这些参数。
  • 可以使用命令 “stp cost cost - value” 来配置端口的路径开销。其中,cost - value 为路径开销的取值,取值范围根据不同的标准有所不同。例如,在 IEEE 802.1D - 1998 标准中,10Mbps 端口的默认路径开销为 100,100Mbps 端口的默认路径开销为 19,1Gbps 端口的默认路径开销为 4 等。

  • 使用命令 “stp port - priority priority - value” 来配置端口的优先级。其中,priority - value 为端口优先级的取值,范围是 0 - 255,默认值为 128。在根端口和指定端口的选举过程中,当路径开销相同时,端口优先级将成为决定端口角色的关键因素。具有较高端口优先级(即端口优先级数值较小)的端口更有可能被选举为根端口或指定端口。

STP 故障排除与维护

        在网络运行过程中,可能会出现各种与 STP 相关的故障,影响网络的正常运行。需要定期检查交换机的 STP 状态和配置信息,确保 STP 功能正常运行。使用命令 “display stp” 可以查看交换机的 STP 全局状态信息,包括当前交换机的角色(根桥、非根桥)、根桥的桥 ID、Hello 时间、转发延迟、最大老化时间等重要参数。通过查看这些信息,可以了解交换机当前的 STP 运行状态是否正常,以及各项参数的设置是否符合网络规划和优化的需求。

使用命令 “display stp brief” 可以查看交换机各个端口的 STP 简要状态信息,包括端口编号、端口角色(根端口、指定端口、非指定端口)、端口状态(转发、阻塞、监听、学习等)、路径开销、端口优先级等重要信息。

五、实验:

[LSW1]stp enable       开启STP

[LSW1]stp mode stp       设置生成树的模式为STP

[LSW1]stp priority 4096        设置优先级为 4096      越小越优         必须是4096的倍数



[LSW2]stp enable            开启STP

[LSW2]stp mode stp              设置生成树的模式为STP

[LSW2]stp priority 8192          设置优先级为 8192      越小越优         必须是4096的倍数



[LSW3]stp enable                  开启STP

[LSW3]stp mode stp                    设置生成树的模式为STP



[LSW4]stp enable                   开启STP

[LSW4]stp mode stp                  设置生成树的模式为STP

1、查看stp状态

2、stp端口角色

3、修改转发时延

[LSW1]stp timer forward-delay 2000         <400-3000>        转发时延修改为20秒

[LSW1]stp timer hello 300        <100-1000>     #stp计时值修改默认时间为3秒

[LSW1]stp timer max-age 3000      <600-4000>    #stp计时值修改默认保存BPDU时间为30秒

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

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

相关文章

前端炫酷动画--图片(一)

目录 一、四角线框的跟随移动 二、元素倒影(-webkit-box-reflect) 三、模特换装(maskblend) 四、元素平滑上升 五、无限视差滚动 六、判断鼠标进入方向(轮播方向) 七、环形旋转效果 八、黑白小球交替旋转 九、hover时圆形放大 十、画一棵随机树(canvas) 十一、代码雨…

AI刷题-病毒在封闭空间中的传播时间

目录 问题描述 输入格式 输出格式 解题思路&#xff1a; 问题理解 数据结构选择 算法步骤 代码实现&#xff1a; 1.初始化&#xff1a; 2.设置边界条件&#xff1a; 3.判断 4.更新&#xff1a; 5.返回 最终的实现代码如下&#xff1a; 运行结果&#xff1a; …

SQL表间关联查询详解

简介 本文主要讲解SQL语句中常用的表间关联查询方式&#xff0c;包括&#xff1a;左连接&#xff08;left join&#xff09;、右连接&#xff08;right join&#xff09;、全连接&#xff08;full join&#xff09;、内连接&#xff08;inner join&#xff09;、交叉连接&…

路由器旁挂三层网络实现SDWAN互联(爱快SD-WAN)

近期因公司新办公区建设&#xff0c;原有的爱快路由器的SDWAN功能实现分支之间互联的服务还需要继续使用。在原有的小型网络中&#xff0c;使用的爱快路由器当作网关设备&#xff0c;所以使用较为简单,如下图所示。 现变更网络拓扑为三层网络架构&#xff0c;但原有的SDWAN分支…

麦田物语学习笔记:制作[SceneName]Attribute特性

基本流程 因为在现有的项目中,像开始场景的切换或者Telepot组件都需要手动输入场景名,有时还可能键入出错,而该特性能用选择的方式去解决这一问题 1.代码实现 SceneNameDrawer.cs //参数绘制 using UnityEditor; using UnityEngine; #if UNITY_EDITOR [CustomPropertyDrawer(…

HTML之拜年/跨年APP(改进版)

目录&#xff1a; 一&#xff1a;目录 二&#xff1a;效果 三&#xff1a;页面分析/开发逻辑 1.页面详细分析&#xff1a; 2.开发逻辑&#xff1a; 四&#xff1a;完整代码&#xff08;不多废话&#xff09; index.html部分 app.json部分 二&#xff1a;效果 三&#xff1a;页面…

【2024 年度总结】从小白慢慢成长

【2024 年度总结】从小白慢慢成长 1. 加入 CSDN 的契机2. 学习过程2.1 万事开头难2.2 下定决心开始学习2.3 融入技术圈2.4 完成万粉的目标 3. 经验分享3.1 工具的选择3.2 如何提升文章质量3.3 学会善用 AI 工具 4. 保持初心&#xff0c;继续前行 1. 加入 CSDN 的契机 首次接触…

一文大白话讲清楚webpack基本使用——2——css相关loader的配置和使用

一文大白话讲清楚webpack基本使用——2——css相关loader的配置和使用 1. 建议按文章顺序从头看是看 第一篇&#xff1a;一文大白话讲清楚啥是个webpack第二篇&#xff1a;一文大白话讲清楚webpack基本使用——1——完成webpack的初步构建然后看本篇&#xff0c;Loader的配置…

如何将 session 共享存储到 redis 中

文章目录 一. 分布式 session 登录1.1 什么是分布式&#xff1f;1.2 Session 共享1.3 为什么服务器 A 登录后&#xff0c;请求发到服务器 B&#xff0c;不认识该用户&#xff1f;1.4 共享存储 二. Session 共享实现Redis三. 测试session共享四. cookie设置4.1 前端4.2 后端 一.…

Debezium日常分享系列之:对于从Oracle数据库进行快照的性能优化

Debezium日常分享系列之&#xff1a;对于从Oracle数据库进行快照的性能优化 源数据库Kafka Connect监控测试结果 源数据库 Oracle 19c&#xff0c;本地&#xff0c;CDB数据库主机的I/O带宽为6 GB/s&#xff0c;由此主机上运行的所有数据库共享临时表空间由42个文件组成&#x…

STM32 FreeROTS Tickless低功耗模式

低功耗模式简介 FreeRTOS 的 Tickless 模式是一种特殊的运行模式&#xff0c;用于最小化系统的时钟中断频率&#xff0c;以降低功耗。在 Tickless 模式下&#xff0c;系统只在有需要时才会启动时钟中断&#xff0c;而在无任务要运行时则完全进入休眠状态&#xff0c;从而降低功…

Redis - General - 未授权访问漏洞(用户配置问题)

0x01&#xff1a;产品简介 Redis&#xff08;Remote Dictionary Service&#xff0c;远程数据服务&#xff09;&#xff0c;是一款开源的基于内存的键值对存储系统&#xff0c;其主要被用作高性能缓存服务器使用&#xff08;比如作为消息中间件和用于 Session 共享&#xff09…

学习threejs,使用OrbitControls相机控制器

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.OrbitControls 相机控…

SQL和MySQL以及DAX的日期表生成?数字型日期?将生成的日期表插入到临时表或者实体表中

几种生成日期表的方法 如何用SQL语句生成日期表呢&#xff1f; 如何用MySQL语句生成日期表呢&#xff1f; 如何用DAX语句生成日期表呢&#xff1f; 1. MySQL生成日期表 1.1 日期格式&#xff1a;yyyy-MM-dd 字符型 2024-01-02 -- 生成日期表 WITH RECURSIVE temp_dateTable …

C# 动态创建Label和ComboBox控件并修改Text

背景&#xff1a;在做项目的时候可能需要根据一定数量创建某些控件并修改其属性&#xff0c;本文以控件label、ConboBox控件进行动态创建。 程序运行前后的的Form动态图 代码如下&#xff1a; using System; using System.Collections.Generic; using System.ComponentModel; …

2025年编程语言热度分析:Python领跑,Go与Rust崛起

TIOBE Index&#xff08;TIOBE 编程语言指数&#xff09;是一个衡量编程语言流行度的排名系统。它通过分析多种搜索引擎、在线编程社区、技术论坛、问答网站&#xff08;如 Google、Bing、Yahoo、Wikipedia、Stack Overflow&#xff09;等的搜索和讨论数据&#xff0c;评估不同…

【从零开始入门unity游戏开发之——C#篇46】C#补充知识点——命名参数和可选参数

考虑到每个人基础可能不一样&#xff0c;且并不是所有人都有同时做2D、3D开发的需求&#xff0c;所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】&#xff1a;主要讲解C#的基础语法&#xff0c;包括变量、数据类型、运算符、…

python学opencv|读取图像(三十九 )阈值处理Otsu方法

【1】引言 前序学习了5种阈值处理方法&#xff0c;包括(反)阈值处理、(反)零值处理和截断处理&#xff0c;还学习了一种自适应处理方法&#xff0c;相关文章链接为&#xff1a; python学opencv|读取图像&#xff08;三十三&#xff09;阈值处理-灰度图像-CSDN博客 python学o…

【Idea】编译Spring源码 read timeout 问题

Idea现在是大家工作中用的比较多的开发工具&#xff0c;尤其是做java开发的&#xff0c;那么做java开发&#xff0c;了解spring框架源码是提高自己技能水平的一个方式&#xff0c;所以会从spring 官网下载源码&#xff0c;导入到 Idea 工具并编译&#xff0c;但是发现build的时…

macOS安装Gradle环境

文章目录 说明安装JDK安装Gradle 说明 gradle8.5最高支持jdk21&#xff0c;如果使用jdk22建议使用gradle8.8以上版本 安装JDK mac系统安装最新&#xff08;截止2024.9.13&#xff09;Oracle JDK操作记录 安装Gradle 下载Gradle&#xff0c;解压将其存放到资源java/env目录…