学习笔记——交换——STP(生成树)基本概念
三、基本概念
1、桥ID/网桥ID (Bridege ID,BID)
每一台运行STP的交换机都拥有一个唯一的桥ID(BID),BID(Bridge ID/桥ID)。在STP里我们使用不同的桥ID标识不同的交换机。


(2)BID(桥ID)组成
BID(桥ID)组成(8个字节):由16位(2字节)的桥优先级和48位(2字节)的MAC地址构成。(上右图)
1)桥优先级(Bridge Priority,BP)的值可以修改,但是修改值必须为4096的倍数。优先级部分中低12位用来标识VLAN信息,高4位才是真正优先级。(上右边图)
优先级范围:取值范围是0~65535,为4096倍数,越小越优先。优先级默认32768(0x8000)。
2)桥的MAC地址:通常是交换机默认VLAN1的MAC地址。一个桥有多个转发端口,每个端口都有一个MAC地址,端口编号最小的那个端口的MAC地址作为整个桥的MAC地址,越小越优先。
MAC地址的长度是48比特(6字节),48位二进制数,12位16进制数组成,即0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f。从左至右,逐位比较。
比如:00:01:10:00:11:11 和00:10:00:00:00:00前者比后者要小。如果比较位相同,则往后推一位再比较,最小的即为MAC地址最小。
2、根桥(Root Bridge,RB)
根桥是一个生成树(STP)交换网络中的"树根"。具有最小桥ID的交换机是根桥。树形的网络结构必须有树根,于是STP引入了根桥(Root Bridge)概念。(下左图)
根桥(Root Bridge) 在STP中,根桥是整个网络的起点,其他所有交换机都会尝试通过最直接的路径连接到根桥,所有数据包的旅行都是从这里开始的。
根桥设备上没有根端口。根桥上的接口,都是指定端口(DP:Designated Ports)。
(2)树根主要作用
是在一个交换网络中计算出一棵无环的STP树。
在一个交换网络中,有且只能有一个根桥(根交换机),它是整个网络的逻辑中心,但不一定是物理中心。根桥会根据网络拓扑的变化而动态变化。
(3)优先级
交换机的桥优先级越高,才有可能成为根桥。如果优先级相同,则会比较MAC地址,MAC地址越小则越优先。在STP网络中,BID(桥ID)最小的设备会被选举为根桥。

(上图)在该网络中选举根桥,首先比较三台交换机的桥优先级,桥优先级都为4096,再比较三台交换机的MAC地址,谁小谁优先,最终选择SW1为根桥。
3、非根桥
非根桥:除了根桥,其他的交换都是非根桥。这些非根桥之间可以互相通信,但是它们都要遵循从根桥出发的规则。

4、端口/接口ID(Port ID,PID)
运行STP交换机的每个端口都有一个端口ID(Port ID),端口ID可以用来确定端口角色,标识每个端口。端口ID(PID)就是端口编号 例如e0/0/5,ID就是5。
主要作用:在特定场景下选举指定接口。
(1) PID(端口ID)组成
端口ID(PID)(2个字节)=优先级(1个字节).端口索引号(1个字节)
为了避免端口索引号不够用,把优先级中的低4位保留用于端口索引号,一般取值为0000。高4位优先级默认二进制取值为1000。端口索引号是端口在交换机上的唯一编号。
(2) PID优先级(Port Priority)
数值范围从0到240,缺省情况下(默认值),端口的优先级为128,步长为16,即取值必须为16的整数倍。
在进行比较时,先比较端口优先级,值越小端口的优先级就越高。在优先级相同时,再比较端口编号,编号小的端口优先。
通常情况下,端口编号无法改变,用户可以根据实际需要,通过命令修改该优先级。通过设置端口优先级来影响生成树的选路。
注意:最终如果收到的BPDU报文所有参数都一样,此时交换机会比较本端接口ID(PID)。

5、开销(Cost)
每一个激活了STP的接口都维护着一个开销(Cost)值。接口带宽越大,则开销(Cost)值越小。可以通过命令调整接口的开销(Cost)。
(2)开销(Cost)计算方法
接口开销(Cost)是已经激活了STP的接口所维护的一个开销值,该值存在默认值,与接口的速率有关联、工作模式,并且交换机设备使用不同的算法时,相同的接口速率对应不同的开销值。

(4)本地路径开销/端口开销(Port Cost)
本地路径开销/端口开销:指从当前交换机到连接的设备(比如终端设备)之间的路径开销。
特点:
(1)本地路径开销就是端口开销,交换机的每个端口都有一个端口开销(Port Cost)参数,此参数表示该端口在STP中的开销值。默认情况下,端口的开销和端口的带宽有关,带宽越高,开销越小。
(2)本地路径开销是路径开销中的一个组成部分,它代表了到达某个设备的成本。
接口开销主要作用:计算根路径开销,就是到达根的开销。

(3)路径开销(Path Cost)
路径开销(Path Cost):从一个非根桥到达根桥的路径可能有多条,每一条路径都有一个总的开销值,此开销值是该路径上所有接收BPDU端口的端口开销总和(即BPDU的入方向端口)。
特点:
(1) 路径开销决定了整个网络中每条可能路径的成本。从一个非根桥到达根桥的路径可能有多条,每一条路径都有一个总的开销值,这就是路径开销。通常,直接连接的路径(比如根端口)开销较低,而需要经过多个中间节点的路径开销较高。
(2)交换机的每个端口都有一个端口开销(Port Cost)参数,此参数表示该端口在STP中的开销值。默认的开销值取决于链路的带宽,带宽越大,开销越小。开销值越小,越可能被选为指定端口的路径。
例如:IEEE标准的开销,链路速度为10Gbps开销为2,速度为100Mbps时开销为19,速度为10Mbps时候开销为100。
(5)根路径开销(Root Path Cost,RPC)
STP交换机每一个端口都对应一个开销值,这个值表示数据通过端口发送时的开销,这个值与端口带宽有关,带宽越高,开销值越小。
对于端口开销值的定义有不同的标准,通常设备默认使用IEEE 802.1t中定义的开销值,同时还支持其它标准,以便兼容不同厂家的设备。
根路径开销(Root Path Cost,RPC):非根桥到达根桥可能有多条路径,每条路径都有一个总开销值,被称为RPC(根路径开销)。
STP不会计算入端口的开销,只在数据通过端口发出时,才计算这个端口的开销。对于根桥来说,根路径开销是0。
即累计根路径开销最小的端口就是根端口。端口收到一个BPDU报文后,抽取该BPDU报文中累计根路径开销字段的值,加上该端口本身的路径开销即为累计根路径开销。


(上左图)SW3从GE0/0/1接口到达根桥的RPC,等于接口1的Cost加上接口2的Cost。
(上右图)s2中eth0/0/1端口的根路径开销,就是20+18=38,eth0/0/2端口的根路径开销就是39.所以0/0/1是根端口。
特点:
(1) 根路径开销这个值越小,说明到达根桥的路径越优。
(2) 根路径开销最终的目标,是从任何端口到根桥的最短路径的总成本。
根路径开销是根据交换机之间的网段来说的,本地路径的开销也叫端口开销是针对本地的物理链路来说的相关的IETF的规定为
6、端口角色分类
在STP中,端口角色共有三种分别为:根端口RP(Root Port)、指定端口DP(Designated Port)、阻塞端口AP(Alternate Port)。
注:以上三种角色都是在非根桥设备上的概念,它们是用来确保网络中的数据包能够通过最优路径传输,同时避免环路的产生。

(1)根端口(Root Port,RP)
根端口(Root Port): 每个非根桥都有且只有一个根端口,但它并不一定是用来与根桥直接连接的端口,而是用来确定到达根桥的最短路径的端口。
在一个非根桥设备上,根端口是所有到达根桥路径中,路径成本最低的那个端口。如果这个端口的路径,不是直接连接到根桥,而是通过其他交换机连接到根桥,那么它仍然是该非根桥设备上的根端口。
1)根端口选举
如果有多条链路到根桥,就通过检查每条链路的带宽来决定端口的开销,开销最低的端口就成为根端口。
如果多条链路的开销相同,就使用桥ID小的那个桥。
如果多条链路来自同一设备,就使用端口号最低的那条链路。
2)根端口的作用
在非根桥上,根端口是选择用来接收来自距离根桥最近的路径上的数据包的端口。
每个非根桥都会有一个根端口,它通过比较到达根桥的路径成本来确定,根路径开销最小者,就是根端口。
3)根端口与其他端口的关系
根桥的所有端口都是指定端口,指定端口被标记为转发端口。
非根交换机的根端口RP,每个非根交换机有且只有一个RP。
既非根端口又非指定端口的为阻塞端口AP。
(2)指定端口(Designated Port,DP)
指定端口(Designated Port):在每个连接点(比如两个交换机之间的连接),会有一条被指定的道路作为主要通道,这条道路就是指定端口。它负责在这个连接点上转发数据包。
(下左图)Device B和Device C与LAN直接相连。如果Device A通过Port A1向Device B转发BPDU,则Device B的指定桥就是Device A,指定端口就是Device A上的Port A1;如果Device B负责向LAN转发BPDU,则LAN的指定桥就是Device B,指定端口就是Device B上的Port B2。
1)指定端口的特性
(1)根桥上每个端口都是指定端口,非根桥上需要转发数据的端口,也是指定端口。
(2)只有非根桥设备上的端口会被选为指定端口。桥ID较小的交换机的端口当选为指定端口。
(3)并不是每个非根桥设备上都有一个指定端口,而是每个局域网段中只有一个指定端口,由STP协议根据一定的规则选举出来。
2)指定端口的作用
是在网络中实现无环路的传输,避免广播风暴和网络瘫痪。
3)指定端口的选举过程
在STP中,指定端口的选举过程是通过比较各个端口的路径开销(Path Cost)和发送方的桥ID(Bridge ID)来进行的。
具体来说,首先会在每个物理网段上选举出一个根端口(Root Port),然后在每个网段上选举出一个指定端口。
根端口是连接到根桥的链路所在的端口,或者到根桥的路径最短的端口。指定端口则是从根端口开始,沿着两个不同方向的端口到达根桥,累计途经的带宽开销,开销最小的那个端口。
(3)候补/预备端口(Alernate Port,AP)
预备端口(Alternate):是指定端口的“替补”当指定端口出现问题时预备端口就会“上场”。
如果一个端口既不是指定端口也不是根端口,则此端口为预备端口,预备端口将被阻塞。
每个非根桥设备上可以有一个或多个预备端口,它们是备用的端口,用于在指定端口或根端口出现问题时接管其职责。并不是每个非根桥设备上只有一个预备端口,而是根据需要可以有多个预备端口,它们都处于待命状态,直到被激活。
1)预备端口的主要作用
在网络拓扑发生变化时,参与选举新的根端口和指定端口的过程。这样做可以确保网络中的冗余链路不会形成环路,从而避免了广播风暴和MAC地址表震荡等问题。
2)预备端口的选举
当网络拓扑发生变化时,预备端口会参与选举新的根端口和指定端口的过程。
选举的原则是,根端口是到达根桥路径最优的端口,而指定端口是发送/转发BPDU报文的端口。预备端口会根据根路径开销、对端BridgeID、对端PortID和本端PortID等因素进行比较,选出最佳的根端口和指定端口。
```
根桥 (Root Bridge)
|
| (路径开销)
|
非根桥 (Non-Root Bridge) -- 根端口 (Root Port)
|
| (本地路径开销)
|
指定端口 (Designated Port) -- 预备端口 (Alternate Port)
|
| (路径开销)
|
非根桥 (Non-Root Bridge) -- 指定端口 (Designated Port)
```
(4)端口不同
三种端口的异同如下:

整个华为数通学习笔记系列中,本人是以网络视频与网络文章的方式自学的,并按自己理解的方式总结了学习笔记,某些笔记段落中可能有部分文字或图片与网络中有雷同,并非抄袭。完处于学习态度,觉得这段文字更通俗易懂,融入了自己的学习笔记中。如有相关文字涉及到某个人的版权利益,可以直接联系我,我会把相关文字删除。【VX:czlingyun 暗号:CSDN】
相关文章:
学习笔记——交换——STP(生成树)基本概念
三、基本概念 1、桥ID/网桥ID (Bridege ID,BID) 每一台运行STP的交换机都拥有一个唯一的桥ID(BID),BID(Bridge ID/桥ID)。在STP里我们使用不同的桥ID标识不同的交换机。 (2)BID(桥ID)组成 BID(桥ID)组成(8个字节):由16位(2字节)的桥优先级…...
机器学习笔记-2
文章目录 一、Linear model二、How to represent this function三、Function with unknown parameter四、ReLU总结、A fancy name 一、Linear model 线性模型过于简单,有很大限制,我们需要更多复杂模式 蓝色是线性模型,线性模型无法去表示…...
SpringSecurity(一)——认证实现
一、初步理解 SpringSecurity的原理其实就是一个过滤器链,内部包含了提供各种功能的过滤器。 当前系统中SpringSecurity过滤器链中有哪些过滤器及它们的顺序。 核心过滤器: (认证)UsernamePasswordAuthenticationFilter:负责处理…...
VMWare NAT 模式下 虚拟机上不了网原因排查
vmware 按照了Linux之后 无法上网,搞定后,记录一些信息。 window有两个虚拟网卡 VMnet1 对应的是 Host-Only(仅主机模式) VMnet8 对应的是 NAT(网络地址转换模式) 在NAT模式中,需要设置NAT和D…...
R语言手工实现主成分分析 PCA | 奇异值分解(svd) 与PCA | PCA的疑问和解答
几个问题: pca可以用相关系数矩阵做吗?效果比协方差矩阵比怎么样?pca做完后变量和样本的新坐标怎么旋转获得?pca做不做scale和center对结果有影响吗?pca用因子分解和奇异值分解有啥区别?后者怎么获得变量和样本的新坐标?1. 用R全手工实现 PCA(对比 prcomp() ) 不借助包…...
第三届OpenHarmony技术大会在上海成功举办
10月12日,以“技术引领筑生态,万物智联创未来”为主题的第三届OpenHarmony技术大会(以下简称“大会”)在上海成功举办。本次大会由OpenAtom OpenHarmony(以下简称“OpenHarmony”)项目群技术指导委员会&…...
数字化:IT部门主导还是业务部门主导?
在这个瞬息万变的数字化时代,企业如同在大海中航行的小船,面对波涛汹涌的市场竞争,数字化转型已成为生存的必经之路。然而,在这条充满挑战的航线上,常常会出现一个让人纠结的问题:数字化转型究竟应该由IT部…...
MySQL表的基本查询下/分组聚合统计
1,update 对查询到的结果进行列值更新,可以和older by,where,limit合并使用,为了方便讲解,将会以题目练习的方式进行说明: 1,将孙悟空同学的数学成绩变更为 80 分 本道题和where联…...
条款3: 理解decltype
目录 一、decltype + 变量 二、decltype + 表达式 三、decltype 使用场景 一、decltype + 变量 🥭 所有的信息都会保留,数组和函数也不会退化 const int &&carref = std::move(ca); decltype(carref) bb; // bb推导为const int &&,不会被忽略掉co…...
TCP:过多的TIME_WAIT
过多的TIME_WAIT 线上问题紧急处理方式tcp_tw_reuse启用主要特点:源码 线上问题 线上机器出现了几万个TIME_WAIT,怎么办? 紧急处理方式 tcp_tw_reuse 启用 默认情况下tcp_tw_reuse是关闭状态,使用sysctl -w net.ipv4.tcp_tw_…...
化学元素分子量、氧化物系数计算python类
在网上找到的分子量计算类,做了少量修改,有原子量、分子量、氧化物系数的计算。 import re wt_dict{ #该原子量数据从CRC手册第95版提取。"H": 1.008,"He": 4.002602,"Li": 6.94,"Be": 9.0121831,"B": 10.…...
torch.utils.data.DataLoader参数介绍
torch.utils.data.DataLoader 是 PyTorch 用于加载数据的重要工具,特别是在深度学习模型训练中。它可以高效地处理大规模数据集,并支持多线程数据加载。以下是 DataLoader 的关键参数及其功能: 主要参数 dataset: 要加载的数据集,可以是 PyTorch 自带的 torch.utils.data.…...
echarts 入门
工作中第一次碰到echarts,当时有大哥。二进宫没办法,只能搞定它。 感觉生活就是这样,不能解决的问题总是会反复出现。通过看视频、查资料,完成了工作要求。写一篇Hello World,进行备查。 基本使用 快速上手 <!DO…...
WPF实现类似网易云音乐的菜单切换
这里是借助三方UI框架实现了,感兴趣的小伙伴可以看一下。 深色模式: 浅色模式: 这里主要使用了以下三个包: MahApps.Metro:UI库,提供菜单导航和其它控件 实现步骤:1、使用B…...
OpenCV人脸检测与识别:构建智能识别系统
在当今科技日新月异的时代,人脸识别技术以其独特的便利性和安全性,在各个领域都展现出了巨大的应用潜力。从智能手机的面部解锁,到机场的自动安检,再到商场的顾客行为分析,人脸识别技术无处不在。本文将深入探讨如何使…...
H5 Canvas 举牌小人
之前看到这种的举牌小人的图片觉得很有意思,最近有时间所以就尝试写写看。 在线链接 https://linyisonger.github.io/H5.Examples/?name./080.Canvas%20%E4%B8%BE%E7%89%8C%E5%B0%8F%E4%BA%BA.html 生成效果 实现代码 <!DOCTYPE html> <html lang"…...
rom定制系列------小米6x_澎湃os1.0.28安卓13定制固件修改 刷写过程与界面预览
💝💝💝 在接待很多定制化系统过程中。小米6x机型为很多工作室客户使用。但官方低版本固件无法适应新应用的使用。有些第三方固件却可以完美解决。此固件是客户分享的卡刷固件。需要修改为可以批量刷写的线刷固件。去除一些内置应用。需要自带…...
电脑硬件性能:HDD + SSD + CPU + GPU
文章目录 任务管理器:性能参数详解一、电脑的硬件组成二、机械硬盘和固态硬盘2.1、详细介绍:HDD SSD2.2、读写性能2.2.1、(HDD)读写性能的影响因素:寻道时间 旋转延迟 数据传输时间2.2.2、(SSDÿ…...
通过粒子系统customData传值给材质球
粒子特效使用的材质球,如果通过动画控制shader的某个参数,例如溶解阈值,所有的粒子都会按照相同的数值变化,如果需要每个粒子在自己的生命周期内按照曲线变化,则可以通过customData实现。 1.ParticleSystem中勾选Cust…...
常用分布的数学期望、方差、特征函数
文章目录 相关教程相关文献常用分布的数学期望&方差&特征函数定义事件域概率条件概率随机变量分布函数连续随机变量的概率密度函数数学期望离散随机变量连续随机变量 方差与标准差最大似然估计特征函数 不等式Chebyshev(切比雪夫)不等式 作者&am…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...

