“SCSA-T学习导图+”系列:交换技术之STP

news2024/11/29 4:47:22

本期引言:

在通信工程当中,从物理层面上,我们可以采用冗余链路保证网络的健壮性。冗余是指出于系统安全和可靠性等方面的考虑,人为地对一些关键部件或功能进行重复的配置。当系统发生故障时,比如某一设备发生损坏,冗余配置的部件可以作为备援,及时介入并承担故障部件的工作,由此减少系统的故障时间。那么,物理上的冗余,是否就能保证业务的顺畅?实际上,使用冗余链路会在交换网络中产生环路,并导致广播风暴、MAC地址表不稳定以及多帧复制等故障现象,从而导致用户通信质量较差。本期我们要讨论的内容就是如何解决冗余链路带来的环路问题-生成树协议STP(Spanning Tree Protocol)技术。

01 什么是STP生成树协议

STP (spanning-tree-protocol)是交换机通过某种特定算法来逻辑阻塞物理冗余网络中某些接口,以达到避免数据转发循环,生成无环路拓扑的一种二层协议。

02 生成树的基本知识

2.1 生成树协议的分类

生成树协议的分类,按照产生的时间先后顺序为STP、RSTP、MSTP。STP/RSTP是基于端口,PVST/PVST+是基于VLAN,MSTP是基于实例。

2.2 生成树协议所遵循的IEEE标准

三种生成树所遵循的IEEE标准分别为STP-IEEE 802.1d,RSTP-IEEE802.1W,MSTP-IEEE 802.1S。

2.3 STP基本思想

网桥之间彼此传递一种特殊的配置消息,802.1D协议将这种配置消息称为“配置桥协议数据单元”或者“配置BPDU”。配置消息中包含了足够的信息来保证网桥完成生成树的计算。

名词解释:网桥是交换机的前身,由于STP是在网桥基础上开发的,因此现在交换机的网络中仍然沿用网桥这一术语。

网桥利用收到的配置消息做以下动作:

  • 确定最小的根网桥ID(网桥优先级+背板MAC地址)

  • 确定最小路径开销cost

  • 确定最小发送网桥ID

  • 确定最小发送端口ID

03 STP的原理和算法-BPDU

3.1 网桥协议数据单元

配置消息也被称作桥协议数据单元(BPDU)。网桥协议数据单元(BPDU,Bridge Protocol Data Unit)生成树协议是一种桥嵌套协议,在IEEE 802.1d规范里定义,可以用来消除桥回路。

工作原理:生成树协议定义了一个数据包,叫做桥协议数据单元BPDU(Bridge Protocol Data Unit)。网桥用BPDU来相互通信,并用BPDU的相关机能来动态选择根桥和备份桥。但是因为从中心桥到任何网段只有一个路径存在,所以桥回路被消除。

3.2 STP选举的几个概念和关键参数

3.2.1根网桥的Identifier(RootID)

根桥就是“网桥ID”最优的桥,当STP的拓扑结构稳定之后由根桥负责每2秒(Hello Time)向树中所有的网桥发送配置BPDU报文,其他网桥接收并转发。

3.2.2从指定网桥到根网桥的最小路径开销(根路径开销RPC)

根端口即去往根桥路径最近的端口,这个最近的衡量是靠Root Path Cost来判定的。有关Path Cost的计算,是每当一个端口收到一个BPDU后,会在该BPDU所指示的Path Cost上加上该端口的Port Path Cost(这是可以人为配置的)。比较累计Root Path Cost最小的端口就是根端口,如果有两条开销相同的路径,那么就选择桥BID较小的。

3.2.3指定网桥的Identifier(发送设备BID)

指定桥就是对下游来说向它转发BPDU报文的桥,一个LAN上除了根桥以外的所有网桥都是指定桥。指定桥上必定有指定端口(即使是网络边缘的网桥也有-连接到主机的端口),而指定端口就是用来转发BPDU报文的。拓扑稳定后Root Port是不发送BPDU报文的,虽然它的状态是Forwarding,它只接收BPDU。

3.2.4指定网桥的指定端口的Identifier(发送端口PID)

指定端口即在一个LAN里面负责转发BPDU的端口,根桥和指定桥上都有它,但根端口只在指定桥上有,同样block端口也只存在于指定桥上。

Block端口即被对方的指定端口抑制的端口,Block端口不转发任何报文,但他接收BPDU,监听网络变化。

3.3 STP工作步骤

将各个端口收到的配置消息和自己的配置消息做比较,得出优先级最高的配置消息更新本身的配置消息,主要工作有:

◆选择根网桥RootID:最优配置消息的RootID;

◆计算到根桥的最短路径开销RootPathCost:如果自己是根桥,则最短路径开销为0,否则为它所收到的最优配置消息的RootPathCost与收到该配置消息的端口开销之和;

◆选择根端口RootPort:如果自己是根桥,则根端口为0,否则根端口为收到最优配置消息的那个端口;

◆选择指定端口:包括在生成树上处于转发状态的其他端口;

从指定端口发送新的配置消息。

04 STP算法示例

示例:

STP拓扑结构的建立微观上说是一个全网交换机互相交互的过程,各台交换机相互之间不停的发送配置BPDU,发送和接受BPDU的是各switch的Ports,BPDU不单在不同交换机的端口之间比较,也在交换机的内部作比较。

如果发现比自己“优”的BPDU,就进行报文的更新,如果发现对方传来的BPDU不如自己的,则丢弃报文,直到再收不到比自己更优的BPDU为止。

当网络中所有的交换机都处于这种状态的时候我们可以认为拓扑结构已经建立,但根端口和指定端口还得经过2个Forward Delay Time才能进入转发状态。

所以STP拓扑结构的建立实际上可以理解为端口角色的建立,所有端口都为指定端口的交换机被选为根桥,其余的为指定桥。

4.1 STP 根桥的选择

根桥选择依据:

1. 优先级

2. MAC地址

注:根据网桥ID选择根网桥,网桥ID=两字节长度的优先级+6字节长度的MAC地址

交换机的优先级取值范围0-65536,增量为4096。优先级的值越小,优先级越高。

通常交换机优先级的默认值为32768,可以使用命令人工修改该值。

在网络中,所有的网桥都分配了一个数值,这个值称为网桥优先级,优先级最小的网桥称为根网桥。首先会比较交换机的优先级,如果优先级相同,那么MAC地址越小的即为根桥。

图:STP 根桥的选择

4.2 STP 选择根端口

根端口选择依据:

1. 根路径成本最低

2. 直连网桥的网桥ID最小

3. 直连网桥的端口ID最小

根端口存在每个非根网桥上,需要在每个非根网桥上选择一个根端口。

根端口即去往根桥路径最近的端口,这个最近的衡量是靠Root Path Cost来判定的。有关Path Cost的计算,是每当一个端口收到一个BPDU后,会在该BPDU所指示的Path Cost上加上该端口的Port Path Cost(这是可以人为配置的)。比较累计Root Path Cost最小的端口就是根端口,如果有两条开销相同的路径,那么就选择桥BID较小的。Root Path Cost不是一个可配置项,即它是由交换机根据Port Path Cost比较而累积得出的,Port Path Cost才是一个可配置的选项。

另外,一般端口的路径开销越大,该端口连接的LAN就越接近生成树的末梢,那么这个端口的流量就较少。如果某个LAN的带宽较小或者用户希望减少某个LAN的流量,就可以将该端口对应的路径开销配置一个较大的值。

 图:STP 选择根端口-根据Cost值

图:STP 选择根端口-根据网桥ID

选根端口,在比较网桥ID时,比较的是端口直连发送方网桥ID值。

 图:STP 选择根端口选择-根据端口ID

端口优先级,同网桥的优先级一样,端口优先级取值越小,则优先级越大。选根端口,在比较端口ID时,比较的是端口接收到的对端的端口ID值。

4.3 STP 指定端口

每个网段选择一个指定端口

1. 根桥上的端口都是指定端口

2. 非根桥上的指定端口

• 根据路径成本Cost值(网段的最低根路径)

• 端口所在的网桥ID值较小

直连网桥的端口ID值较小。

指定端口即在一个LAN里面负责转发BPDU的端口,根桥和指定桥上都有它,但根端口只在指定桥上有,同样block端口也只存在于指定桥上。

Block端口即被对方的指定端口抑制的端口,Block端口不转发任何报文,但他接收BPDU,监听网络变化。

选指定端口,在比较网桥ID和端口ID时,比较的是端口所在交换机的网桥ID值和端口ID值。

总结

本文从交换技术的概念出发,以STP生成树协议为主,简要的介绍了生成树协议的分类,生成树协议所遵循的IEEE标准,STP基本思想,以及STP算法-BPDU,并通过生成树算法示例帮助我们更好的理解STP的工作原理。

本期作者傅先全,深信服产业教育中心教学教研副主任,深信服云计算认证专家(SCCE-C),产业教育中心资深讲师

曾任职于中国电信集团、华晟经世教育集团,分别担任云平台资深架构师、IT课程总监及名师团金牌讲师、多所高校特聘专家讲师;十余年云计算、大数据行业从业经验,在企业信息化建设、企业项目管理、云平台架构设计等方面有较强的实战经验;研究方向为云计算、大数据技术等,具有丰富的知识转换以及课程交付经验;同时,在院校学科建设、人才培养、项目科研、职业技能人才认证等方面具有丰富的产教融合体系建设与组织经验。

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

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

相关文章

【Linux】Linux下的gbd调试,你学废了吗

操作系统核心数centos 3.10.032位单核 gbd调试方法-以线程运行时调试为例 线程死锁状态时查看栈升级gbd通过gdb在程序运行时进行调试 线程死锁状态时查看栈 在线程-线程安全之互斥中,我们自己写了一个模拟实现的线程死锁情况 我们用gbd调试查看了当前线程的调用&a…

拉链表制作

1.拉链表的应用场景 拉链表适合于:数据会发生变化,但是大部分是不变化的(即:缓慢变化维。还需要保留历史数据做分析的场景) 2.拉链表的形成过程 关键的过程 第四步:获取变化的数据(创建和修改…

Flask连接MySQL

本文章涉及到Flask框架和HTML内容,相关知识可查看链接 HTML-form表单和提交_html form 提交_小梁今天敲代码了吗的博客-CSDN博客https://blog.csdn.net/weixin_43780415/article/details/130110722 前端引入和html标签_小梁今天敲代码了吗的博客-CSDN博客https://b…

vscode下drawio无法使用

问题描述: Vscode下, 刚下载drawio这个插件,在vscode左边EXPLORER下,没有Test这个页面,导致vscode无法使用drawio。 解决办法: 在自己需要的目录下,新建一个文件,例如test,并命名为test.drawi…

数据结构算法

直接插入排序 1.从第一个元素开始,该元素可以认为已经被排序 2.取下一个元素tem,从已排序的元素序列从后往前扫描 3.如果该元素大于tem,则将该元素移到下一位 4.重复步骤3,直到找到已排序元素中小于等于tem的元素 5.tem插入到该元…

5.1劳动节,致敬最可爱的人!Cocos社区杰出贡献者出炉

Cocos 引擎的生态建设与繁荣,离不开社区开发者的辛勤付出。 2022.5 ~ 2023.5 年度期间,有这样一批 Cocos 社区开发者,他们使用 Cocos Creaor 引擎创作内容与产品、分享技术和经验,为 Cocos 社区默默贡献自己的一份力量&#xff0c…

改进YOLOv8:替换轻量化骨干网络Efficient V1、Efficient V2《重新思考卷积神经网络的模型缩放》)

这里写目录标题 1 EfficientNetV1中存在的问题2.EfficientNetV2网络框架3.YOLOv8添加Efficient V1代码yaml文件Efficient V1代码运行4. 添加Efficient V2代码yaml文件Efficient V2运行Efficient V1论文地址:https://arxiv.org/pdf/1905.11946.pdf Efficient V1代码地址:

Golang每日一练(leetDay0049) 二叉树专题(9)

目录 144. 二叉树的前序遍历 Binary-tree Preorder Traversal 🌟 145. 二叉树的前序遍历 Binary-tree Postorder Traversal 🌟 对比: 94. 二叉树的中序遍历 Binary-tree Inorder Traversal 🌟 146. LRU缓存 LRU Cache &am…

调用移动云OCR识别身份证

一.开通移动云OCR服务 在下面这个网址开通免费服务,,每个账号可免费使用500次,先要实名认证。 通用文字识别 (10086.cn)https://ecloud.10086.cn/home/product-introduction/Generalverify 有两种方式: 这里选择第二种 。 二…

炸裂的 Auto-GPT,帮我自动生成小视频!

大家好,我是程序员贺同学。 继前段时间爆火的 ChatGPT 后,又一个炸裂的开源项目 Auto-GPT 出现了。 仿佛一夜之间,AI 圈又出现了一个新晋顶流。我们来看看它有多🔥。 在 GitHub 上,仅最近不到两个礼拜,这个…

TCP/IP基础知识

文章目录 互联网与TCP/IP的关系TCP/IP与OSI参考模型硬件(物理层)互联网层(网络层)IPICMPARP 传输层TCPUDP 应用层WWW电子邮件(E-Mail)文件传输(FTP)远程登录(TELNET与SSH&#xff09…

Redis Set 用了 2 种数据结构来存储,到现在才知道

Sets 无序集合,他的功能就好像你熟悉的 Java 中的 HashSet 一样。集合是通过散列表实现的,所以添加、删除、查找元素的时间复杂度是 O(1)。 1. 是什么 Sets 是 String 类型的无序集合,集合中的元素是唯一的,集合中不会出现重复的数…

【百问百答】可靠性基础知识第三期

1.电连接器的基本性能有哪些? 三个基本性能:机械性能、电气性能和耐环境性能。 电连接器机械性能测试包括:插拔力测试、端子保持力测试、端子正向力测试、耐久性测试。 电气特性测试包括:绝缘电阻测试、 耐电压测试、 低电平电阻测试(LLCR…

【YOLO v1】模型搭建 | model | 代码

YOLO V1 模型 import torch import torch.nn as nn from torchsummary import summarydef build_block(in_channel, out_channel, kernel_size, stride1, maxpoolFalse):padding kernel_size//2block nn.Sequential(nn.Conv2d(in_channel, out_channel, kernel_sizekernel_si…

数据包守恒 TCP 拥塞控制

数据包守恒是包括拥塞控制在内的合理利用带宽的方法之基石,它维持了有效网络传输的稳定,过去 40 年是,未来还是。数据包守恒可以描述为: 当带宽恰好满载时,receiver 收到 1 个数据包后 sender 才能发送 1 个数据包。当…

LeetCode链表OJ题目 代码+思路分享

目录 删除有序数组中的重复项合并两个有序数组移除链表元素 删除有序数组中的重复项 链接: link 题目描述: 题目思路: 本题使用两个指针dst和src一前一后 相同情况: 如果nums[dst]nums[src],那么src 不相同情况: 此…

基于B/S架构SpringBoot+Bootstrap框架的中小医院信息系统

一、开源项目简介 基于B/S架构,SpringBootBootstrap框架的中小医院信息系统。简单实现了挂号收费,门诊管理,划价收费,药房取药,体检管理,药房管理,系统维护等基础功能。 二、功能概述 本系统是…

计算机网络学习04(应用层常见协议总结)

1、HTTP:超文本传输协议 超文本传输协议(HTTP,HyperText Transfer Protocol) 是一种用于传输超文本和多媒体内容的协议,主要是为 Web 浏览器与 Web 服务器之间的通信而设计的。当我们使用浏览器浏览网页的时候,我们网页就是通过 …

电脑硬盘检测怎么操作?如何检查硬盘的健康情况?

案例:如何对电脑硬盘进行检测? 【我的电脑硬盘中有许多重要的数据,我想知道电脑硬盘的健康状况怎么样?有没有小伙伴知道电脑硬盘检测的方法?】 电脑硬盘是存储数据的关键组件,而随着时间的推移和使用频率…

JAVA IO 模型详解

什么是IO I/O(Input/Outpu) 即输入/输出 。 从计算机结构的视角来看的话, I/O 描述了计算机系统与外部设备之间通信的过程。 从应用程序的视角来看的话,我们的应用程序对操作系统的内核发起 IO 调用(系统调…