Cisco Packet Tracer实验(四)

生成树协议(Spanning Tree Protocol)

交换机在目的地址未知或接收到广播帧时是要进行广播的。如果交换机之间存在回路/环路,那么就会产生广播循环风暴,从而严重影响网络性能。

交换机中运行的STP协议避免交换机之间发生广播循环风暴

只使用交换机,构建如下拓扑:

这是初始时的状态。我们可以看到交换机之间有回路,这会造成广播帧循环传送即形成广播风暴,严重影响网络性能。

随后,交换机将自动通过生成树协议(STP)对多余的线路进行自动阻塞(blocking),以形成一棵以Switch4为根(具体哪个是根交换机有相关的策略)的具有唯一路径树即生成树。

经过一段时间,随着STP协议成功构建了生成树后,Switch5的两个接口当前物理上是连接的,但逻辑是不通的,处于Blocking状态(桔色)如下图所示。

在网络运行期间,假设某个时候 Switch7 与 Switch6 之间的物理连接出现问题(将 Switch7 与 Switch6 的连线剪掉),则该生成树将自动发生变化。Switch7 上方先前 Blocking 的那个接口现在活动了(绿色),但下方那个接口仍处于 Blocking 状态(桔色)。如下图所示:

交换机的STP协议即生成树协议始终自动保证交换机之间不会出现回路,从而形成广播风暴。

再详细讲讲:

STP(Spanning Tree Protocol)是一个用于局域网中消除环路的协议。它的标准是IEEE 802.1D。STP通过将部分冗余链路强制为阻塞状态,其他链路处于转发状态,将环形网络结构修剪成无环路的树形网络结构,可实现消除环路。当处于转发状态的链路不可用时,STP重新配置网络,并激活合适的备用链路状态,恢复网络连通性。

一、STP的工作原理

1、每个网络设备(交换机)都有一个桥优先级(Bridge Priority)和一个桥ID(Bridge ID)

2、每个设备通过发送BPDU(Bridge Protocol Data Unit)消息来与其他设备进行通信。

3、每个设备根据接收到的BPDU消息来确定根桥和最短路径。

4、设备选择根桥,并将自己的端口设置为根端口和非根端口

通过协议计算(依赖于BPDU报文),从逻辑上阻塞端口,从而实现防环,当链路一旦出现故障时,阻塞端口重新恢复转发。STP适用于较小规模的网络,但它的收敛速度较慢,对网络中的拓扑变化反应不够迅速。

二、STP基本概念

1、桥ID(Bridge ID)

每台交换机在出厂的时候都有一个不一样的标识,就是桥MAC,在STP里面使用了桥ID来标识不同的交换机,每一台交换机运行了STP就有一个对应的桥ID,桥ID由两部分组成,一个2字节的桥优先级,默认32768(可以管理员自行修改)。一个6字节的桥MAC,通常为默认VLAN1的MAC地址。

2、根桥(Root Bridge)

STP要在整个二层网络中计算出一棵无环的树,树就形成了,网络中的无环拓扑也就形成了。其中最重要的就是树根,树根明确了,“树枝”才能沿着网络拓扑进行延伸。STP的根桥就是这棵树的树根。当STP启动后,第一件事就是在网络中选举出根桥。在一个二层网络中,根桥只有一个,其余设备都是非根桥。当网络的拓扑发生变化时,根桥也可能发生变化。

3、根路径开销

非根桥到达根桥可能有多条路径,每条路径都有一个总开销值,也就是根路径开销(RPC),这个值是通过这条路径所有出端口的开销值累加而来的。STP不会计算入端口的开销,只在数据通过端口发出时,才计算这个端口的开销。对于根桥来说,根路径开销是0。

STP上的交换机每一个接口都有对应的一个开销值,用于表示数据通过该端口发送时的开销,开销值越小表示带宽越高,技术发展到现在有2个公有标准,华为华三自己一个私有版本。

4、端口ID

运行STP的交换机使用端口ID标识每个端口,端口ID主要用于选举指定端口。端口ID长度为16比特,其中前4比特是端口优先级,后12比特是端口编号。在进行比较时,先比较端口优先级,优先级小的端口优先;在优先级相同时,再比较端口编号,编号小的端口优先。通常情况下,端口编号无法改变,可通过设置端口优先级来影响生成树的选路。

5、BPDU(桥协议数据单元)

交换机毕竟是一个独立的个体,想要把一个二层网络(二层网络就是OSI模型中的数据链路层。)里面的交换机形成一颗大树一样的树状结构,那就少不了需要相互“沟通”,来了解整个二层网络的结构拓扑,正是依赖BPDU,它包含了STP协议里面相关的所有信息,通过这些信息来完成生成树的计算,这里要注意,BPDU发送的是组播帧,目的地址为0180-C200-0000,运行了STP交换机会产生、发送、接收、处理BPDU,其余未运行的则不参与。

选举要求:

根桥ID:优先级+mac地址

1、比较优先级:

默认为32768,数值越小越优先,可调整,只能为4096的倍数。

2、比较mac地址,数值越小越优先:

如果设备收到比本身差的BPDU报文,直接丢弃,如果设备收到比本身优的BPDU报文,将其放入端口存储并且转发出去

全网泛洪的BPDU报文的根桥ID一致时说明交换网络中已经选出根桥交换机。

2、选举根端口

根端口(RP): 转发数据的端口,用于接收最优的BPDU报文,只在非根桥交换机上有且只有一个。非根桥交换机与根桥交换机直连接口都为RP端口。

选举要素:

根路径开销:

选择根路径开销(RPC)最小的端口;

如果RPC相同,那就选对端桥ID(BID)最小的端口;

如果对端桥ID相同,那就选对端端口ID(PID)最小的端口;

跟接口的带宽有关,根路径开销越小越优先。

3、选举指定端口

根端口确保了交换机到根桥的路径是唯一的,也是最优的。网络中的每条链路与根桥之间的路径也要是唯一且最优的。当一条链路中有两条或两条以上的路径到达根桥,就必须确定出一个唯一的指定端口,防止出现二层环路。指定端口不但是这条链路内所有端口中到达根桥的最优接口,还会向链路内发送BPDU。

选举要素:

1、发送者桥ID设备在转发BPDU报文,都会将本身的桥ID字段填充到发送者桥ID中。

2、比较规则与根桥ID比较规则完全一致。

虽然选举指定端口的范围和根端口不同,但是选举的原则是一致的。指定端口的选举同样会按照以下过程进行:

4、阻塞端口

在确定了根端口和指定端口后,交换机上剩下的非根端口和非指定端口都叫做备用端口。备用端口是打破环路的关键,STP会对这些备用端口进行逻辑阻塞。逻辑阻塞,是指端口不会接收或发送任何数据,但是会监听BPDU。当网络的一些端口出现故障时,STP会让备用端口开始转发数据,用来恢复网络的正常通信。

选举要素:

端口ID:优先级+端口编号。

优先级: 默认为128,数值越小越优先,可调整,只能调整为16的倍数。

端口ID:数值越小越优先。

四、STP端口状态机和时间参数

STP不但定义了3种端口角色:根端口、指定端口、备用端口,还定义了5种端口状态:禁用状态、阻塞状态、侦听状态、学习状态、转发状态。

disable: 说明端口未启用STP协议;

blocking: 阻塞状态,属于AP端口正常状态,进行根桥的选举;

listening:侦听状态,进行端口角色的确定;

learning:学习状态,学习mac地址表;

forwarding :转发状态,转发数据,学习mac地址。

STP定义了3个重要的时间参数

Hello Time(Hello 时间):STP交换机发送配置BPDU的时间间隔,默认是2秒。如果要修改时间参数,那么必须在根桥上修改才有效。

Forward Delay(转发延迟):接口从侦听状态进入学习状态,或从学习状态进入转发状态的延迟时间,默认值是15秒。避免在STP树的生成过程中可能出现的临时环路,或短暂的数据帧泛洪现象,分别在侦听和学习的端口状态各停留一个转发延迟时间。对于STP而言,一个阻塞端口选举为根接口或指定接口后,进入转发状态至少需要经历30秒的时间。

Max Age(最大生存时间):BPDU的最大生存时间,也称为BPDU的老化时间,Max Age的值由根桥指定,默认值是20秒。如果端口在20秒内收到BPDU,最大生存时间会重新计时;如果端口一直没收到BPDU,那么BPDU将会老化,设备会重新在端口上选择最优BPDU,也就是重新进行根接口的选举。

由于时间参数的设计,一个STP接口从阻塞状态进入到转发状态,可能需要30 ~ 50秒的时间,这段时间内,网络无法正常使用。

 

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

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

相关文章

【云原生| K8S系列】Kubernetes Daemonset,全面指南

Kubernetes中的DaemonSet是什么? Kubernetes是一个分布式系统,Kubernetes平台管理员应该有一些功能可以在所有节点上运行特定于平台的应用程序。例如,在所有Kubernetes节点上运行日志代理。 这就是Daemonset发挥作用的地方。 Daemonset是一个原生的K…

【Mybatis-Plus】根据自定义注解实现自动加解密

背景 我们把数据存到数据库的时候,有些敏感字段是需要加密的,从数据库查出来再进行解密。如果存在多张表或者多个地方需要对部分字段进行加解密操作,每个地方都手写一次加解密的动作,显然不是最好的选择。如果我们使用的是Mybati…

每一个男人都曾有一个机器人的梦想

每一个男人都曾有一个机器人的梦想 我也有 每一个男人都曾有一个机器人的梦想。对于我来说,这个梦想始于童年时代,那时变形金刚风靡一时,几乎所有80后的孩子都为之疯狂。我是80后中的一员,那时候的科技还远没有如今这般发达&#…

【初阶数据结构】深入解析单链表:探索底层逻辑(无头单向非循环链表)

🔥引言 本篇将深入解析单链表:探索底层逻辑,理解底层是如何实现并了解该接口实现的优缺点,以便于我们在编写程序灵活地使用该数据结构。 🌈个人主页:是店小二呀 🌈C语言笔记专栏:C语言笔记 &…

dp练习题

先来一个简单dp练习 class Solution { public:int rob(vector<int>& nums) {int n nums.size();vector<int> a(n 1);int ans nums[0]; a[0] nums[0];if (n 1) return ans;a[1] max(nums[0], nums[1]);ans max(ans, a[1]);if (n 2) return ans;for (i…

[DDR4] DDR 简史

依公知及经验整理&#xff0c;原创保护&#xff0c;禁止转载。 专栏 《深入理解DDR4》 存和硬盘&#xff0c;这对电脑的左膀右臂&#xff0c;共同扛起了存储的重任。内存以其超凡的存取速度闻名&#xff0c;但一旦断电&#xff0c;内存中的数据也会消失。它就像我们的工作桌面&…

【工作】计算机行业相关的十六类工作简介

本文简单介绍了计算机行业相关的工作类别&#xff0c;共16种&#xff0c;包括常见招聘要求与平均工资。平均工资信息来源&#xff1a;米国企业点评职场社区glassdoor&#xff08;https://www.glassdoor.com/index.htm&#xff09; &#xff08;一&#xff09;软件工程师 软件…

Element-UI - 解决el-table中图片悬浮被遮挡问题

在开发中&#xff0c;发现element-ui在el-table中添加图片悬浮显示时&#xff0c;会被单元格遮挡的问题。通过查询得到的解决办法&#xff0c;大多是修改.el-table类中相关样式属性&#xff0c;但经过验证发现会影响到其他正常功能的使用。对于此问题解决其实也并不难&#xff…

《人生海海》读后感

麦家是写谍战的高手&#xff0c;《暗算》《风声》等等作品被搬上荧屏后&#xff0c;掀起了一阵一阵的收视狂潮。麦家声名远扬我自然是知道的&#xff0c;然而我对谍战似乎总是提不起兴趣&#xff0c;因此从来没有拜读过他的作品。这几天无聊时在网上找找看看&#xff0c;发现了…

数据结构笔记-2、线性表

2.1、线性表的定义和基本操作 如有侵权请联系删除。 2.1.1、线性表的定义&#xff1a; ​ 线性表是具有相同数据类型的 n (n>0) 个数据元素的有限序列&#xff0c;其中 n 为表长&#xff0c;当 n 0 时线性表是一个空表。若用 L 命名线性表&#xff0c;则其一般表示为&am…

爬虫初学篇

初次学习爬虫&#xff0c;知识笔记小想 目录&#x1f31f; 一、&#x1f349;基础知识二、&#x1f349;http协议&#xff1a;三、&#x1f349;解析网页(1) xpath的用法&#xff1a;(2) bs4解析器的解释&#xff1a;(3) python字符编码的错误&#xff1a;(4) 正则表达式&#…

第零篇——数学到底应该怎么学?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 宏观讲解数学定位&#xff0c;数学学习方式方法&#xff0c;再次详细学习…

Golang | Leetcode Golang题解之第160题相交链表

题目&#xff1a; 题解&#xff1a; func getIntersectionNode(headA, headB *ListNode) *ListNode {if headA nil || headB nil {return nil}pa, pb : headA, headBfor pa ! pb {if pa nil {pa headB} else {pa pa.Next}if pb nil {pb headA} else {pb pb.Next}}retu…

单调栈(续)、由斐波那契数列讲述矩阵快速降幂技巧

在这里先接上一篇文章单调栈&#xff0c;这里还有单调栈的一道题 题目一&#xff08;单调栈续&#xff09; 给定一个数组arr&#xff0c; 返回所有子数组最小值的累加和 就是一个数组&#xff0c;有很多的子数组&#xff0c;每个数组肯定有一个最小值&#xff0c;要把所有子…

【stm32-新建工程】

stm32-新建工程 ■ 下载相关STM32Cube官方固件包&#xff08;F1&#xff0c;F4&#xff0c;F7&#xff0c;H7&#xff09;■ 1. ST官方搜索STM32Cube■ 2. 搜索 STM32Cube■ 3. 点击获取软件■ 4. 选择对应的版本下载■ 5. 输入账号信息■ 6. 出现下载弹框&#xff0c;等待下载…

MySQL 使用 MyFlash 快速恢复误删除、误修改数据

一、MyFlash MyFlash 是由美团点评公司技术工程部开发并维护的一个开源工具&#xff0c;主要用于MySQL数据库的DML操作的回滚。这个工具通过解析binlog日志&#xff0c;帮助用户高效、方便地进行数据恢复。MyFlash的优势在于它提供了更多的过滤选项&#xff0c;使得回滚操作变…

云计算在保险行业的应用:太平财险团财险理赔新核心业务系统案例

随着科技的快速发展&#xff0c;云计算技术已经成为推动保险行业数字化转型的重要力量。云计算为保险公司提供了弹性、可扩展的计算资源&#xff0c;使其能够灵活应对业务高峰和低谷&#xff0c;提高业务运营效率和风控水平。太平财险与太平金科联合开发的“团财险理赔新核心业…

LLVM 中 的 pass 及其管理机制

概述 LLVM 编译器框架的核心概念是任务调用和执行 编译器开发者将IR分解为不同的处理对象&#xff0c;并将其处理过程实现为单独的pass类型。在编译器初始化&#xff0c;pass被实例化&#xff0c;并被添加到pass管理中 pass 管理器(pass manager) 以流水线的方式将各个独立的…

HCS-华为云Stack-容器网络

HCS-华为云Stack-容器网络 容器隧道overlay VPC网络

vue3轮播图怎么做

先看效果 实现代码 <n-carouseleffect"card"dot-type"line"draggable:autoplay"!isHovered":current-index"currentIndex"prev-slide-style"transform: translateX(-150%) translateZ(-450px);opacity:1"next-slide-st…