学习笔记——交换——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】

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

QT布局详解 QT5大布局详解

QT布局详解 QT5大布局详解 1. Qt 布局基础 在 Qt 中,布局管理器用于自动调整窗口中控件的位置和大小。它们根据控件的尺寸策略、父窗口的大小以及控件的彼此关系,动态地调整控件。 常用的布局类包括: QHBoxLayout:水平布局管理…

MybatisWebApp

如何构建一个有关Mybatis的Web&#xff1f; 在这里给出我自己的一些配置。我的TomCat版本&#xff1a;10.1.28 &#xff0c;IDEA版本&#xff1a;2024.1.4 Pom.XML文件 <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/200…

小米电机与STM32——CAN通信

背景介绍&#xff1a;为了利用小米电机&#xff0c;搭建机械臂的关节&#xff0c;需要学习小米电机的使用方法。计划采用STM32驱动小米电机&#xff0c;实现指定运动&#xff0c;为此需要了解他们之间的通信方式&#xff0c;指令写入方法等。花了很多时间学习&#xff0c;但网络…

Solidity优质例子(二)物流的增删改查智能合约(附truffle测试)

本合约非常适合新手学习&#xff0c;其包含了基本的增删改查功能以及各个方式的不同之处的总结&#xff0c;本套合约我也编写了truffle测试&#xff0c;学习truffle测试的小伙伴也有福了~ 该合约的主要作用是通过区块链技术实现物流追踪系统的透明化、自动化与防篡改特性&#…

AES对称加密算法

AES&#xff08;Advanced Encryption Standard&#xff09;是取代DES而成为新标准的一种对称加密算法。在全世界提交的众多对称加密算法的候选中&#xff0c;其中有一个名为Rijndael的对称加密算法&#xff0c;将其命名为AES。 整体流程 分组长度 在AES中&#xff0c;分组长度…

Linux:信号保存与处理

使用kill -l命令查看信号&#xff1a; 信号量和信号确实一点关系没有 信号是操作系统发出的进程与进程之间的通知于中断&#xff0c;是进程之间时间异步通知的一种方式 先了解同步通信&#xff1a;同步通信是一种比特同步通信技术&#xff0c;要求发收双方具有同频同相的同步…

若依框架篇-若依框架搭建具体过程、后端源代码分析、功能详解(权限控制、数据字典、定时任务、代码生成、表单构建、接口测试)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 若依框架概述 1.1 若依构建 1.2 后端项目搭建 1.3 前端项目搭建 2.0 利用若依框架生成前后端代码案例 3.0 功能详解 3.1 功能详解 - 权限控制 3.1.1 使用权限控制…

Djang学习- URL反转

代码中url书写规范&#xff1a; 、 url反向解析 urls: path(test/url, views.test_url),path(test_result/<int:age>, views.test_result, name"rl") views: def test_url(request):return render(request, test_url.html)def test_result(request,age):re…

Lintcode 3686 · N 叉树的直径【中等 DFS/BFS java答案】

题目 题目链接&#xff1a;https://www.lintcode.com/problem/3686/ 思路 1.利用map创建图 2.找到直径的其中一个端点last,通过bfs可以实现 3.从last出发&#xff0c;再次bfs,有多少层&#xff0c;直径就是多少Java代码 /*** Definition for Undirected graph.* class Undir…

100. UE5 GAS RPG 显示范围魔法的攻击范围

在这一篇里&#xff0c;我们将制作一个范围魔法&#xff0c;释放魔法时&#xff0c;我们将在鼠标拾取位置绘制一个魔法光圈&#xff0c;用于显示技能释放时攻击的范围&#xff0c;然后再次点击可以释放技能。 创建贴花类 魔法范围标识的光圈&#xff0c;我们采用贴花实现&…

2014年国赛高教杯数学建模B题创意平板折叠桌解题全过程文档及程序

2014年国赛高教杯数学建模 B题 创意平板折叠桌 某公司生产一种可折叠的桌子&#xff0c;桌面呈圆形&#xff0c;桌腿随着铰链的活动可以平摊成一张平板&#xff08;如图1-2所示&#xff09;。桌腿由若干根木条组成&#xff0c;分成两组&#xff0c;每组各用一根钢筋将木条连接…

44 C 语言输入输出流、scanf 与 printf 函数详解、清除输入缓冲区

目录 1 文件基本介绍 1.1 文件的主要功能 1.2 输入输出流 2 C 语言中的输入与输出 2.1 输入 2.2 输出 2.3 标准文件与文件指针 3 scanf() 函数详解 3.1 功能描述 3.2 函数原型 3.3 常用格式说明符 3.4 返回值 3.5 注意事项 3.5.1 处理空白字符 3.5.2 防止缓冲区…

Linux命令进阶

grep 从文件中搜索字符串 grep "字符串" 文件 参数&#xff1a; -n 显示行号 -R 递归及子目录例如 grep "hello" log.c grep "main" * -nRfind 在指定路径下搜索文件 find 路径 -name 文件名find /home/linux -name hello.c //在/home/linux…

精选优质不收费数据恢复软件全解析

数据已经成为了我们生活和工作中无比珍贵的资产。然而我们在使用中总会因为各种意外导致数据丢失。今天&#xff0c;我们就来深入了解一些优秀的不收费的数据恢复软件&#xff0c;看看他们如果帮我们力挽狂澜。 1.福晰数据恢复 链接直达&#xff1a;https://www.pdf365.cn/fo…

基于Arduino的简易收音机

DIY FM收音机&#xff1a;使用Arduino和Si4703模块打造 引言 在本项目中&#xff0c;我们将使用Arduino Nano和Si4703 FM调谐模块来构建一个功能完备的FM收音机接收器。这个易于跟随的指南非常适合想要深入无线电频率和无线通信世界的业余爱好者和电子爱好者。 Si4703模块是…

西门子网络程序传输,无需开通网络驱动器直接接入底层,支持各类数控 如发那科、三菱 、新代、海德汉、广数、精雕、马扎克等等

有关西门子的程序传输问题&#xff0c;大家一般是通过文件共享、ftp、网络驱动器等方式&#xff0c;其中828D还需要授权开通网络启动器 下面介绍一种方式直接进入西门子Linux底层系统实现和NCK的文件交互功能 软件截图如下 功能表如下 机床程序上载至电脑 电脑程序下传…

2. MySQL数据库基础

一、数据库的操作 1. 显示当前的数据库 SHOW DATABASES;2. 创建数据库 语法&#xff1a; CREATE DATABASE [IF NOT EXISTS] db_name [create_specification...];//create_specification包括&#xff1a;[DEFAULT] CHARACTER SET charset_name[DEFAULT] COLLATE collation_n…

性能测试最佳实践的思考

性能测试是软件开发和应用过程中至关重要的环节。它是评估系统性能、稳定性和可扩展性的有效手段&#xff0c;可以确保软件在真实环境中高效运行。在现代技术快速发展的时代&#xff0c;性能测试的重要性愈发显著。 性能测试在软件开发和应用过程中的重要性不可低估。它是保障…

RabbitMQ消息队列MQ脑裂(网络分区)整理分析

文章目录 RabbitMQ 的集群架构基础什么是MQ脑裂检测网络分区RabbitMQ 网络分区导致脑裂的原因• 多个节点认为自己是主节点&#xff1a;• 节点间状态不一致&#xff1a;• 集群的不可用性和错误恢复&#xff1a; RabbitMQ 网络分区引发脑裂的常见场景队列镜像不同步HA&#xf…

【H2O2|全栈】JS入门知识(二)

目录 JS 前言 准备工作 运算符 算数运算符 比较运算符 自增、自减运算符 逻辑运算符 运算符的优先级 分支语句 if-else语句 switch语句 三元表达式 结束语 JS 前言 本系列博客主要分享JavaScript的基础语法知识&#xff0c;本期为第二期&#xff0c;包含一些简…