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

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

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

相关文章

AD如何制作原理图的模版、原理图模板绘制修改以及如何导入原理图模版

作为硬件工程师,制定原理图模板是一项至关重要的任务,旨在标准化和规范原理图的绘制过程。在AD20中制作、绘制修改以及导入原理图模板的步骤如下: 1制作原理图模板 首先需在AD原理图设计环境下新建一个原理图文件; 在原理图界面…

VSCode离线安装插件

下载最新的VSCode,安装。 打开VSCODE,打开左边的EXTENSINS(拓展),打开 Install from VSIX,找到 .vsix的文件,打开安装。完成。 1)去哪找插件,当然是插件官网了,插件官网,…

12、论文阅读:SpikeYOLO:高性能低能耗目标检测网络

SpikeYOLO:高性能低能耗目标检测网络 前言解释介绍相关工作论文提出的方法网络输入SpikeYOLO架构概述网络输出宏观设计微观设计I-LIF脉冲神经元LIFI-LIF实验代码前言 脉冲神经网络(Spiking Neural Networks, SNNs)具有生物合理性和低功耗的优势,相较于人工神经网络(Artif…

KMP 算法

目录 KMP 算法 算法思路 为什么不需要在主串中进行回退 计算 next 数组 代码实现 next 数组优化 查找所有起始位置 KMP 算法 KMP 算法是一种改进的字符串匹配算法,由 D.E.Knuth,J.H.Morris 和 V.R.Pratt 提出的,因此人们称它为 克努特…

【ODSS】An Open Dataset of Synthetic Speech

文章目录 An Open Dataset of Synthetic Speechkey pointsODSS数据集局限性An Open Dataset of Synthetic Speech 会议/期刊:WIFS 2023 作者: key points 一个由合成语音和自然语音组成的多语言、多说话人数据集ODSS,旨在促进合成语音检测的研究和基准测试。 是由156个声…

Android compose 重建流程1

前言 本文是笔者学习Compose是如何自动触发UI刷新的笔记,可能缺乏一定可读性和教导性.(建议阅读参考文献更具启发性) 使用以下BOM作为研究环境. composeBom "2024.04.01" androidx-compose-bom { group "androidx.compose", name "compose-bom…

HarmonyOS Next应用开发——图像PixelMap压缩保存

【高心星出品】 图片编码保存 图片编码指将PixelMap编码成不同格式的存档图片,当前支持打包为JPEG、WebP、png和 HEIF(不同硬件设备支持情况不同) 格式,用于后续处理,如保存、传输等。图片编码是图片解码-图片处理-图片保存的最后环节&…

C#中的接口的使用

定义接口 public interface IMyInterface {int MyProperty { get; set; }void MyMethod(); } 实现类 internal class MyClass : IMyInterface {public int MyProperty { get; set; }public void MyMethod(){Console.WriteLine("MyMethod is called");} } 目录结构…

负载箱的作用?

负载箱,顾名思义,就是用来承载电力设备的箱子。在电力系统中,负载箱的作用非常重要,它不仅可以模拟实际的电力负载,还可以对电力设备进行测试和调试,确保其正常运行。下面详细介绍负载箱的作用。 1. 模拟实…

深入了解Spring重试组件spring-retry

在我们的项目中,为了提高程序的健壮性,很多时候都需要有重试机制进行兜底,最多就场景就比如调用远程的服务,调用中间件服务等,因为网络是不稳定的,所以在进行远程调用的时候偶尔会产生超时的异常&#xff0…

这几次比赛题解

因为考虑到再看&#xff0c;所以将所有题目都做成了pdf格式 梦熊十三连测 T1 这道题其实什么也不用想&#xff0c;就按照题目给的意思来打代码就行&#xff0c;这就有40分可以拿。懒人做法 #include<bits/stdc.h> using namespace std; typedef long long ll; ll read…

MP9928模块分析

MP9928 是一款高性能的同步降压 DC/DC 转换器控制器 IC&#xff0c;具有宽输入范围。以下是其操作和关键特性的总结&#xff1a; 概述 电流模式控制&#xff1a;MP9928 使用电流模式、可编程开关频率控制架构&#xff0c;通过外部 N 沟道 MOSFET 开关来调节输出电压。 反馈和…

Golang | Leetcode Golang题解之第500题键盘行

题目&#xff1a; 题解&#xff1a; func findWords(words []string) (ans []string) {const rowIdx "12210111011122000010020202" next:for _, word : range words {idx : rowIdx[unicode.ToLower(rune(word[0]))-a]for _, ch : range word[1:] {if rowIdx[unico…

【uni-app学习-2】

一、跳转 方法&#xff1a;在methods中去定义方法&#xff1a; 上述为直接跳转&#xff0c;但是当你要跳转页面是由多个可切换页面组成比如&#xff1a; 这个页面其实是由两个页面组成&#xff0c;一个主页&#xff0c;一个我的&#xff0c;两个页面 路由配置需要用到toob…

房屋租赁网站毕业设计基于SpringBootSSM框架的计算机毕业设计

计算机毕业设计/springboot/javaWEB/J2EE/MYSQL数据库/vue前后分离小程序 目录 一、项目背景与目的‌ ‌二、系统需求分析‌ 2.1功能需求 2.2 技术需求 2.3 可执行性 ‌三、系统设计与实现‌ ‌3.1系统架构设计‌&#xff1a; ‌3.2功能模块开发‌&#xff1a; ‌3.3…

golang生成并分析cpu prof文件

1. 定义一个接口&#xff0c;请求接口时&#xff0c;生成cpu.prof文件 在主协程中新启一个协程&#xff0c;当请求接口时&#xff0c;生成一个60秒的cpu.prof文件 go func() {http.HandleFunc("/prof", startProfileHandler)http.ListenAndServe(":9092"…

Spring Boot助力:构建响应式论坛网站

3系统分析 3.1可行性分析 通过对本论坛网站实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本论坛网站采用SSM框架&#xff0c;JAVA作为开发语言&#xff0c;是…

华为云CodeArts Pipeline架构与内容双重优化,高效助力持续交付!

点击下方链接进入帮助中心 成长地图_流水线 CodeArts Pipeline_华为云

unity学习-全局光照(GI)

在全局光照&#xff08;Lighting&#xff09;界面有两个选项 Realtime Light&#xff08;实时光照&#xff09;&#xff1a;在项目中会提前计算好光照以及阴影的程序&#xff0c;当你需要调用实时全局光照的时候会将程序调用出来使用 Mixed Light&#xff08;烘焙光照&#x…

HBuilder X 中Vue.js基础使用1(三)

一、 模板语法 Vue 使用一种基于 HTML 的模板语法&#xff0c;使我们能够声明式地将其组件实例的数据绑定到呈现的 DOM 上。所有的 Vue 模板都是语法层面合法的 HTML&#xff0c;可以被符合规范的浏览器和 HTML 解析器解析。 英文官网: Vue.js - The Progressive JavaScript Fr…