当前位置: 首页 > news >正文

【华三】STP的角色选举(一文讲透)

【华三】STP的角色选举

  • 一、引言
  • 二、STP基础概念扫盲
  • 三、根桥选举过程详解
  • 四、根端口选举过程详解
  • 五、指定端口选举过程详解
  • 六、阻塞端口
  • 七、总结与配置建议
  • 七、附录
    • **1. BPDU字段结构图(文字描述)**
    • **2. 华三STP常用命令速查表**
  • 文章总结

在这里插入图片描述

一、引言

在复杂的交换网络中,冗余链路是保障高可用性的基础,但同时也可能引发广播风暴MAC地址表震荡等致命问题。STP(生成树协议,Spanning Tree Protocol)如同一位“网络交通指挥官”,通过逻辑阻塞冗余链路,构建无环拓扑,在确保冗余的同时规避环路风险。

STP的核心价值

  • 破除环路:通过阻塞冗余端口,将物理上的环形网络转化为逻辑上的树形结构。
  • 动态恢复:当主链路故障时,自动激活备份链路,恢复网络连通性(需结合转发延迟机制)。
  • 资源优化:选择最优路径转发数据,避免无效带宽消耗。

角色选举为何重要?
如果把网络比作一座城市,根桥就是城市的中心车站,所有流量最终都要汇聚或经过这里。若多个“中心车站”同时存在(即根桥未唯一),必然导致路径混乱。角色选举的本质是让全网设备达成共识:

  • 唯一根桥:作为数据转发的参考基准点。
  • 最优路径:通过根端口和指定端口的选举,确保每条链路选择最高效的传输路径。

华三设备中的STP特点(个人理解)

  • 默认协议版本:华三交换机默认启用MSTP(多生成树协议),而非传统的STP/RSTP,这是为了支持VLAN级别的负载分担(需注意与Cisco设备的兼容性)。
  • 配置差异
    • 优先级调整命令:stp priority <value>(必须为4096的倍数,例如0、4096、8192)。
    • 路径开销计算:华三默认使用长整型开销值(如千兆链路为20000),与Cisco的短整型(如千兆链路为4)不同,混合组网时需特别注意。
  • 快速收敛优化:华三支持边缘端口(stp edged-port enable),可跳过Listening/Learning状态,加速终端接入。

二、STP基础概念扫盲

  1. 根桥(Root Bridge)

    • 定义:生成树的逻辑中心,所有数据的转发基准点。
    • 类比:类似“交通枢纽”,所有路径最终指向它。
    • 关键字段:BID(桥ID)= 桥优先级(16位) + MAC地址(48位)。
  2. 根端口(Root Port)

    • 定义:非根桥设备上离根桥最近的端口(路径开销最小)。
    • 作用:用来接收最优配置BPDU。
    • 每个非根桥有且仅有一个根端口。
  3. 指定端口(Designated Port)

    • 定义:每条线路中唯一负责转发数据的端口。
    • 作用:用来发送最优配置BPDU
    • 避免同一网段内多个端口转发数据形成环路。
  4. 配置BPDU(Bridge Protocol Data Unit)

    • 作用:STP协议报文,用于传递拓扑信息。
    • 核心字段:
      • 根ID(Root ID):当前最优根桥的BID。
      • 路径开销(Cost):到根桥的累计开销。
      • 发送者BID(Sender BID):发送该BPDU的桥的BID。
      • 端口ID(Port ID):发送端口的标识。
  5. BID(桥ID)= 桥优先级(16位) + MAC地址(48位)

    • 桥优先级默认为32768,范围0~61440,可以修改,但要以4096为倍数
    • 桥ID 中的优先级长度为 16个 bit,只有前4个 bit 是描述优先级的,后12个bt 实际用于描述 STP 的所属VLAN。也就是说当我们需要调整优先级,也只能调整优先级的前4个 bit,后12个 bit 无法变更。所以每递增一位数,在十进制中会以 4096 起跳。
  6. 端口ID(Port ID)= 端口优先级(8位)+ 端口号

    • 端口优先级默认128,范围0~240,可以修改,但要以16为倍数

三、根桥选举过程详解

  1. 选举规则

    • BID越小越优,优先级比较顺序:
      1. 桥优先级(0~65535,默认32768)。
      2. MAC地址(数值小者胜出)。
  2. 初始化阶段

    • 所有交换机默认认为自己是根桥,发送BPDU时:
      • 根ID = 自己的BID,路径开销 = 0。
    • 交互过程:
      • 收到其他BPDU后,对比根ID,保留更优的(BID更小)。
      • 更新本地最优BPDU,并向外转发。
  3. 示例场景
    根桥选举是根据BID的,越小越优
    细化下去就是
    ① 先看桥优先级,桥优先级越小越优;
    ② 再看桥MAC地址,也是越小越优

可以从图中看出:SWA的桥ID优先级为0,SWB的桥优先级为8192,SWC的桥优先级为32768,SWD的桥优先级为4096;
所以选择SWA为根桥
在这里插入图片描述


四、根端口选举过程详解

  1. 选举规则
  • 非根桥设备选择到根桥路径开销最小的端口。(按顺序选举)
  • 若路径开销相同,依次比较:
    1. 发送者的BID,越小越优
    2. 发送者端口ID,越小越优(优先级+编号)。
    3. 本端的端口ID,越小越优
  • 需要注意,该根端口的发送者BID对端设备BID
  1. 路径开销计算

    • 累计链路开销 = 接收端口的路径开销 + 接收到的BPDU中的路径开销。
    • 同一交换机上不同端口之间的路径开销值为0
    • 链路速率与默认开销值对照表(示例):
      链路速率开销值
      10 Mbps100
      100 Mbps19
      1 Gbps4
  2. 示例场景
    以SWB的选举根端口为例子:
    每个端口离根桥的累计链路开销(根路径开销)
    e0/1:200
    e0/2:20+200 = 220
    e0/3:200+200+200 = 600
    所以SWB中e0/1的根路径开销最小,所以e0/1为SWB的根端口
    同理可得,SWC的根端口为e0/1
    在这里插入图片描述

此时,SWD各个端口距离根桥的开销是一致的,都是200+200 = 400
所以得要去比较发送方的BID:
SWD的E0/1发送方BID为SWB的BID :8192.MAC B
SWD的E0/2发送方BID为SWC的BID :32768.MAC C
所以,可以得出,SWD的根端口为E0/1
在这里插入图片描述


五、指定端口选举过程详解

  1. 选举规则
    每个线路选举一个指定端口
  • 非根桥设备选择到根桥路径开销最小的端口。(按顺序选举)
    • 若路径开销相同,依次比较:
      1. 发送者的BID,越小越优
      2. 发送者端口ID更小(优先级+编号)。
      3. 本端的端口ID,越小越优
  • 需要注意,该指定端口的发送者BID本地设备BID,因为自身已经选举出的根端口,而根端口就是用来接收到的最优配置BPDU,指定端口用来转发最优配置BPDU;自身根端口收到最优配置BPDU,然后再发送给指定端口转发出去,所以发送方就为自身!!! 这个和根端口的搞明白就稳了
  1. 特殊说明

    • 根桥的所有端口默认是指定端口,除了自环情况外。
    • 在线路中,根桥的端口直接成为指定端口。
  2. 示例场景
    根桥的所有端口默认是指定端口,除了自环情况外,所以SWA的E0/1和E0/2就是指定端口
    SWB — SWD中SWD的E0/1为根端口,所以SWB的E0/3为指定端口
    剩下就要去比较SWB — SWC,SWC — SWD这两个线路
    SWB — SWC :
    SWB的E0/2距离根桥的根路径开销为200
    SWC的E0/2距离根桥的根路径开销为200
    所以,跟路径开销是相同的,继续向下比发送方的BID(Sender Bridge ID = SBID)
    又因为指定端口的发送方是为本身,所以
    SWB的E0/2的发送方BID为 :8192.MAC B
    SWC的E0/2的发送方BID为 :32768.MAC B
    可以得出SWB的E0/2的SBID更小,所以SWB的E0/2为指定端口
    在这里插入图片描述

SWC — SWD:
这条线路就简单了,直接比较根路径开销,可以得出
SWD的E0/2根路径开销为:200 + 200 = 400
SWC的E0/3根路径开销为:200
所以,SWC的E0/3为指定端口

在这里插入图片描述

六、阻塞端口

选出根桥、根端口、指定端口后,剩下的端口就是阻塞端口
在这里插入图片描述


七、总结与配置建议

  1. 角色选举流程总结

    • 根桥 → 根端口 → 指定端口,依次完成。
    • 所有非根桥必须有一个根端口,每个网段必须有一个指定端口。
  2. 华三设备配置注意点

    • 修改桥优先级:stp priority <0-61440>(必须为4096的倍数)。
    • 查看选举结果:display stp brief
    • 路径开销调整:stp cost <value>(需根据链路速率设置)。
  3. 常见问题

    • 根桥选举失败:检查BID是否冲突或优先级配置错误。
    • 端口阻塞异常:检查路径开销计算是否合理。

七、附录

1. BPDU字段结构图(文字描述)

配置BPDU是STP协议的核心报文,其结构可分解为以下关键字段:

字段名长度说明
协议标识符2字节固定为0x0000(表示STP协议)
协议版本1字节STP为0x00,RSTP为0x02,MSTP为0x03
BPDU类型1字节配置BPDU为0x00,TCN BPDU(拓扑变更通知)为0x80
Flags1字节包含TC(拓扑变更)和TCA(拓扑变更确认)标志位
根ID8字节全网核心字段!当前最优根桥的BID(优先级+MAC)
路径开销4字节发送端口到根桥的累计开销值(越小越优)
发送者BID8字节发送该BPDU的交换机的BID
端口ID2字节发送端口的ID(高8位为优先级,低8位为端口编号,如0x8003表示优先级128,编号3)
消息生存时间2字节BPDU的有效时间(默认为20秒)

个人解读

  • 根ID字段是BPDU的“灵魂”:所有交换机通过对比根ID确定是否更新自己的认知,最终全网统一为最小BID。
  • 路径开销的“陷阱”:不同厂商的默认开销值可能不同(如华三与Cisco),混合组网时需手动统一,否则可能导致次优路径选择。

2. 华三STP常用命令速查表

命令作用示例备注
stp global enable全局启用STP协议-默认已启用,部分型号需手动开启
stp mode stp/rstp/mstp切换STP模式stp mode rstp需所有设备模式一致
stp priority <value>修改桥优先级(需为4096的倍数)stp priority 0值越小优先级越高,0为最高
stp root primary/secondary快速指定本机为根桥/备份根桥stp root primary自动设置优先级为0/4096
stp cost <value>手动设置端口路径开销stp cost 20000需根据链路速率调整(华三千兆口默认20000)
stp port priority <value>修改端口优先级(0-240,步长16)stp port priority 64影响指定端口选举
display stp查看STP全局状态display stp关注根桥、根端口、指定端口信息
display stp brief简要查看端口角色和状态display stp brief快速确认端口是否阻塞(BLK)
display stp interface GigabitEthernet1/0/1查看指定端口的STP详细信息-分析BPDU收发情况

总结

  • 优先级设置的“偷懒技巧”:直接使用stp root primary命令,避免手动计算优先级值。
  • 故障排查三板斧
    1. display stp brief:确认端口角色是否异常。
    2. display stp interface:检查BPDU收发是否正常。
    3. 对比相邻设备的根桥信息:确认全网认知一致。
  • 路径开销调整的“潜规则”:若希望流量走高速链路(如万兆),可手动降低该端口的开销值(如设置为2000)。

文章总结

STP的角色选举本质是一场“网络民主投票”——每个设备基于BPDU信息,通过既定的规则(BID、路径开销、端口优先级)达成共识。理解选举逻辑后,结合华三设备的特性,通过合理配置优先级和路径开销,可以主动引导流量走向,构建高效稳定的无环网络。

相关文章:

【华三】STP的角色选举(一文讲透)

【华三】STP的角色选举 一、引言二、STP基础概念扫盲三、根桥选举过程详解四、根端口选举过程详解五、指定端口选举过程详解六、阻塞端口七、总结与配置建议七、附录**1. BPDU字段结构图&#xff08;文字描述&#xff09;****2. 华三STP常用命令速查表** 文章总结 一、引言 在…...

【C#零基础从入门到精通】(二十六)——C#三大特征-多态详解

【C#零基础从入门到精通】(二十六)——C#三大特征-多态详解 在 C# 中,多态是面向对象编程的重要特性之一,它允许不同的对象对同一消息做出不同的响应。多态可以分为静态多态和动态多态,下面将详细介绍它们以及各自包含的知识点。 多态概述 多态性使得代码更加灵活、可扩展…...

宇树科技13家核心零部件供应商梳理!

2025年2月6日&#xff0c;摩根士丹利&#xff08;Morgan Stanley&#xff09;发布最新人形机器人研报&#xff1a;Humanoid 100: Mapping the Humanoid Robot Value Chain&#xff08;人形机器人100&#xff1a;全球人形机器人产业链梳理&#xff09;。 Humanoid 100清单清单中…...

Java集合框架全解析:从LinkedHashMap到TreeMap与HashSet面试题实战

一、LinkedHashMap ①LinkedHashMap集合和HashMap集合的用法完全相同。 ②不过LinkedHashMap可以保证插入顺序。 ③LinkedHashMap集合因为可以保证插入顺序&#xff0c;因此效率比HashMap低一些。 ④LinkedHashMap是如何保证插入顺序的&#xff1f; 底层采用了双向链表来记…...

goland无法debug项目

1、其实个原因是因为正在使用的Delve调试器版本太旧&#xff0c;无法兼容当前的Go语言版本1.2。Delve是Go语言的一个调试工具&#xff0c;用于提供源码级别的调试功能。Go语言每隔一段时间会发布新版本&#xff0c;而相应的调试器Delve也可能会更新以提供新的特性或修复已知问题…...

深入探索 DeepSeek 在数据分析与可视化中的应用

在数据驱动的时代&#xff0c;快速且准确地分析和呈现数据对于企业和个人都至关重要。DeepSeek 作为一款先进的人工智能工具&#xff0c;凭借其强大的数据处理和可视化能力&#xff0c;正在革新数据分析的方式。 1. 数据预处理与清洗 在进行数据分析前&#xff0c;数据预处理…...

python面试题整理

Python 如何处理异常&#xff1f; Python中&#xff0c;使用try 和 except 关键字来捕获和处理异常 try 块中放置可能会引发异常的代码&#xff0c;然后在except块中处理这些异常。 能补充一下finally的作用吗&#xff1f; finally 块中的代码无论是否发生异常都会执行&#xf…...

大型装备故障诊断解决方案

大型装备故障诊断解决方案 方案背景 在全球航空工业迅猛发展的背景下&#xff0c;我国在军用和民用飞机自主研发制造领域取得了显著成就。尤其是在国家大力支持下&#xff0c;国内飞机制造企业攻克了诸多关键技术难题&#xff0c;实现了从设计研发到生产制造再到售后保障的完整…...

基于SpringBoot+vue+uniapp的智慧旅游小程序+LW示例参考

系列文章目录 1.基于SSM的洗衣房管理系统原生微信小程序LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统LW参考示例 3.基于SpringBootVue的企业人事管理系统LW参考示例 4.基于SSM的高校实验室管理系统LW参考示例 5.基于SpringBoot的二手数码回收系统原生微信小程序LW参考示…...

小怿学习日记(七) | Unreal引擎灯光架构

灯光的布局对于HMI场景中车模的展示效果有着举足轻重的地位。本篇内容将简单介绍ES3.1的相关知识&#xff0c;再深入了解Unreal引擎中车模的灯光以及灯光架构。 一、关于ES3.1 1.1 什么是ES3.1 ES3.1这个概念对于美术的同学可能比较陌生&#xff0c;ES3.1指的是OpenGL ES3.1&…...

网络运维学习笔记 013网工初级(HCIA-Datacom与CCNA-EI)DHCP动态主机配置协议(此处只讲华为)

文章目录 DHCP&#xff08;Dynamic Host Configuration Protocol&#xff0c;动态主机配置协议&#xff09;网关配置DHCP服务器配置如果没有DHCP服务器&#xff0c;只在网关上做DHCP服务器&#xff1a; DHCP&#xff08;Dynamic Host Configuration Protocol&#xff0c;动态主…...

javaEE-14.spring MVC练习

目录 1.加法计算器 需求分析: 前端页面代码: 后端代码实现功能: 调整前端页面代码: 进行测试: 2.用户登录 需求分析: 定义接口: 1.登录数据校验接口: 2.查询登录用户接口: 前端代码: 后端代码: 调整前端代码: 测试/查错因 后端: 前端: lombok工具 1.引入依赖…...

HTML/CSS中并集选择器

1.作用:选中多个选择器对应的元素,又称:分组选择器 所谓并集就是或者的含义. 2.语法:选择器1,选择器2,选择器3,......选择器n 多个选择器通过,连接,此处,的含义就是:或. .rich,.beauty{color: blue;} 3.注意事项 1.并集选择器,我们一般竖着写 2.任何形式的选择器,都可以作为并…...

可编辑35页PPT | DeepSeek如何赋能职场应用

DeepSeek作为一款基于人工智能技术的多模态AI工具&#xff0c;近年来在职场应用中迅速崭露头角&#xff0c;以其强大的功能和高效的表现赢得了广泛的赞誉。DeepSeek融合了文本生成、图像创作、数据分析与可视化等多种功能&#xff0c;为职场人士提供了前所未有的便利和效率提升…...

CSS `transform` 属性详解:打造视觉效果与动画的利器

CSS transform 属性详解&#xff1a;打造视觉效果与动画的利器 引言一、transform 属性简介二、平移&#xff08;Translation&#xff09;三、旋转&#xff08;Rotation&#xff09;四、缩放&#xff08;Scale&#xff09;五、倾斜&#xff08;Skew&#xff09;六、组合变换&am…...

Windows使用docker部署fastgpt出现的一些问题

文章目录 Windows使用docker部署FastGPT出现的一些问题1.docker部署pg一直重启的问题2.重启MongoDB之后一直出现“Waiting for MongoDB to start...”3.oneapi启动不了failed to get gpt-3.5-turbo token encoder Windows使用docker部署FastGPT出现的一些问题 1.docker部署pg一…...

Spring Boot中如何使用Thymeleaf模板引擎

Thymeleaf 是一个现代化的服务器端 Java 模板引擎,在 Spring Boot 项目中使用它可以方便地将 Java 代码和 HTML 页面进行整合,生成动态的 Web 页面。以下将详细介绍在 Spring Boot 中如何使用 Thymeleaf 模板引擎。 1. 添加依赖 如果你使用的是 Maven 项目,在 pom.xml 中添…...

C/C++跳动的爱心

系列文章 序号直达链接1C/C李峋同款跳动的爱心2C/C跳动的爱心3C/C经典爱心4C/C满屏飘字5C/C大雪纷飞6C/C炫酷烟花7C/C黑客帝国同款字母雨8C/C樱花树9C/C奥特曼10C/C精美圣诞树11C/C俄罗斯方块小游戏12C/C贪吃蛇小游戏13C/C孤单又灿烂的神14C/C闪烁的爱心15C/C哆啦A梦16C/C简单…...

Element UI中messageBox怎么区分点击取消按钮关闭弹窗,和点击右上角x号以及点击遮罩层关闭按钮

在某些场景下&#xff0c;我们可能需要区分点击取消按钮关闭 messageBox 和点击X号、遮罩层关闭 messageBox 。 实现&#xff1a; 将 distinguishCancelAndClose 设置为 true&#xff0c;这个属性的意思是&#xff1a;是否将取消&#xff08;点击取消按钮&#xff09;与关闭&…...

Websocket——心跳检测

1. 前言&#xff1a;为什么需要心跳机制&#xff1f; 在现代的实时网络应用中&#xff0c;保持客户端和服务端的连接稳定性是非常重要的。尤其是在长时间的网络连接中&#xff0c;存在一些异常情况&#xff0c;导致服务端无法及时感知到客户端的断开&#xff0c;可能造成不必要…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

日常一水C

多态 言简意赅&#xff1a;就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过&#xff0c;当子类和父类的函数名相同时&#xff0c;会隐藏父类的同名函数转而调用子类的同名函数&#xff0c;如果要调用父类的同名函数&#xff0c;那么就需要对父类进行引用&#…...

ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]

报错信息&#xff1a;libc.so.6: cannot open shared object file: No such file or directory&#xff1a; #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...

云原生安全实战:API网关Envoy的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关 作为微服务架构的统一入口&#xff0c;负责路由转发、安全控制、流量管理等核心功能。 2. Envoy 由Lyft开源的高性能云原生…...