当前位置: 首页 > 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;可能造成不必要…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...