计算机网络-RSTP快速生成树基础概念

news2024/11/25 14:39:47

一、STP概念复习

在之前的学习中我们已经学习了STP的概念与作用。参考文章:计算机网络-生成树基础

STP(Spanning Tree Protocol,生成树协议) 是一种用于在局域网中消除数据链路层物理环路的协议。主要作用是防止交换机冗余链路产生的环路,确保以太网中无环路的逻辑拓扑结构,从而避免了广播风暴和MAC地址表震荡等问题,提高了网络的可靠性和稳定性。

STP工作原理:

BPDU泛洪
BPDU泛洪
角色选举
角色选举
端口状态变更
端口状态变更

STP的不足:

  • STP没有细致区分端口状态和端口角色,不利于初学者学习及部署。
    • 从用户角度来讲,Listening、Learning和Blocking状态并没有区别,都同样不转发用户流量。
    • 从使用和配置角度来讲,端口之间最本质的区别并不在于端口状态,而是在于端口扮演的角色。
  • STP算法是被动的算法,依赖定时器等待的方式判断拓扑变化,收敛速度慢。
  • STP算法要求在稳定的拓扑中,根桥主动发出配置BPDU报文,而其他设备再进行处理,最终传遍整个STP网络。
STP对计时器的依赖
STP对计时器的依赖
STP重收敛过程慢
STP重收敛过程慢
STP拓扑变更机制
STP拓扑变更机制

总结来说就是STP在网络规模较小,或者对网络实时性要求不高的情况下适用,但是对于网络规模大或者要求响应迅速的网络不太适应。

二、RSTP基本概念

随着局域网规模的不断增长,STP拓扑收敛速度慢的问题逐渐凸显,因此,IEEE在2001年发布了802.1W标准,定义了RSTP(Rapid Spanning Tree Protocol,快速生成树协议),RSTP在STP的基础上进行了改进,可实现网络拓扑的快速收敛。

RSTP对STP的改进:

  • 通过端口角色的增补,简化了生成树协议的理解及部署;
  • 端口状态的重新划分;
  • 配置BPDU格式的改变,充分利用了STP协议报文中的Flag字段,明确了端口角色;
  • 配置BPDU的处理发生变化;
  • 快速收敛;
  • 增加保护功能。

RSTP可以兼容STP:RSTP可以和STP互操作,但是此时会丧失快速收敛等RSTP优势。

三、RSTP的改进

3.1 端口角色

STP中定义了三种端口角色:指定端口根端口预备端口

  • 指定端口是交换机向所连网段转发配置BPDU的端口,每个网段有且只能有一个指定端口。一般情况下,根桥的每个端口总是指定端口。
  • 根端口是非根交换机去往根桥路径最优的端口。在一个运行STP协议的交换机上最多只有一个根端口,但根桥上没有根端口。
  • 如果一个端口既不是指定端口也不是根端口,则此端口为预备端口。预备端口将被阻塞。

RSTP通过端口角色的增补,简化了生成树协议的理解与部署。RSTP的端口角色共有4种:根端口指定端口Alternate端口Backup端口

  • 根端口和指定端口与STP中定义一致。
  • Alternate端口就是由于学习到其它网桥发送的配置BPDU报文而阻塞的端口,它提供了从指定桥到根的另一条可切换路径,作为根端口的备份端口。
  • Backup端口就是由于学习到自己发送的配置BPDU报文而阻塞的端口,它作为指定端口的备份,提供了另一条从根桥到相应网段的备份通路。
端口角色
端口角色

不同之处在于具体定义了STP中模糊的预备端口,分为Alternate端口和Backup端口对根端口和指定端口进行备份。

3.2 端口状态

STP对于端口状态划分为5种:Forwarding:转发状态、Learning:学习状态、Listening:侦听状态、Blocking:阻塞状态Disabled:禁用状态。

STP的端口状态
STP的端口状态

RSTP的状态规范缩减为3种,根据端口是否转发用户流量和学习MAC地址来划分:

  • Discarding状态:不转发用户流量也不学习MAC地址;
  • Learning状态:不转发用户流量但是学习MAC地址;
  • Forwarding状:既转发用户流量又学习MAC地址。

只从转发流量和学习MAC的方面进行划分即可。

端口状态对比:

STP端口状态RSTP端口状态端口在拓扑中的角色
ForwardingForwarding包括根端口、指定端口
LearningLearning包括根端口、指定端口
ListeningDiscarding包括根端口、指定端口
BlockingDiscarding包括Alternate端口、Backup端口
DisabledDiscarding包括Disable端口

RSTP对STP的端口状态进行了简化和明确定义。

3.3 配置BPDU - RST BPDU

RSTP的配置BPDU充分利用了STP报文中的Flag字段,明确了端口角色。 除了保证和STP格式基本一致之外,RSTP作了如下变化:

  • Type字段:配置BPDU类型不再是0而是2,所以运行STP的设备收到RSTP的配置BPDU时会丢弃。
  • Flag字段:使用了原来保留的中间6位,这样改变的配置BPDU叫做RST BPDU。

RSTP BPPDU报文 STP中BPDU Type指示本BPDU的类型,若值为0x00,则表示本报文为配置BPDU;若值为0x80,则为TCN BPDU ,Flags标志位总共8bit,只使用了最低和最高位用于拓扑变更和拓扑变更确认,RSTP现在使用了中间的6位用来表示端口状态和PA机制等。

标志,1 Byte,包括:

  • bit 7:TCA,表示拓扑变化确认;
  • bit 6:Agreement,表示同意,用于P/A机制;
  • bit 5:Forwarding,表示转发状态;
  • bit 4:Learning,表示学习状态;
  • bit 3和bit 2:表示端口角色,00表示未知端口,01表示替代或备份端口,10表示根端口,11表示指定端口;
  • bit 1:Proposal,表示提议,用于P/A机制;
  • bit 0:TC,表示拓扑变化。

3.4 配置BPDU的处理

RSTP针对BPDU报文处理进行了一些优化以加快收敛。

1、BPDU发送方式 STP拓扑稳定后,根桥按照Hello Time规定的时间间隔发送配置BPDU。其他非根桥设备在收到上游设备发送过来的配置BPDU后,才会触发发出配置BPDU,此方式使得STP计算复杂且缓慢。

RSTP在拓扑稳定后,无论非根桥设备是否接收到根桥传来的配置BPDU报文,非根桥设备仍然按照Hello Time规定的时间间隔发送配置BPDU,该行为完全由每台设备自主进行。

BPDU发送方式
BPDU发送方式

就是原来只有根桥更新之后才会往下游的交换机发送BPDU更新,导致的收敛缓慢。现在各个非根桥交换机也可以发送配置BPDU报文,收敛较快。

2、BPDU超时时间 在STP中,当端口出现故障没有接收到配置BPDU需要等待Max Age计时器(20 s)超时,然后才会重新泛洪选举根桥。

RSTP中,如果一个端口在超时时间(即三个周期,超时时间=Hello Time×3)内没有收到上游设备发送过来的配置BPDU,那么该设备认为与此邻居之间的协商失败。

更短的BPDU超时时间
更短的BPDU超时时间

这个机制可以实现故障的快速感知和收敛。

3、处理次优BPDU

STP:只有指定端口会立即处理次优BPDU,其他端口会忽略次优BPDU,等到Max Age计时器超时后,缓存的次优BPDU才会老化,然后发送自身更优的BPDU,进行新一轮的拓扑收敛。

RSTP:处理次优BPDU报文不再依赖于任何定时器(即不再依赖于BPDU老化)解决拓扑收敛,同时RSTP的任何端口角色都会处理次优BPDU,从而加快了拓扑收敛。

处理次优BPDU
处理次优BPDU

简单说就是更快的收敛时间加上非根端口处理次优配置BPDU报文加速拓扑收敛。

3.5 快速收敛机制

1、根端口快速切换

如果网络中一个根端口失效,那么网络中最优的Alternate端口将成为根端口,进入Forwarding状态。因为通过这个Alternate端口连接的网段上必然有个指定端口可以通往根桥。

根端口快速切换
根端口快速切换

2、指定端口快速切换

如果网络中一指定端口失效,那么网络中最优的Backup端口将成为指定端口,进入Forwarding状态。因为Backup端口作为指定端口的备份,提供了另一条从根桥到相应网段的备份通路。

指定端口快速切换
指定端口快速切换

3、边缘端口 (Edge Port)

在RSTP里面,如果某一个端口位于整个网络的边缘,即不再与其他交换设备连接,而是直接与终端设备直连,这种端口可以设置为边缘端口。

边缘端口不参与RSTP计算,可以由Discarding直接进入Forwarding状态。

边缘端口
边缘端口

4、Proposal/Agreement机制(P/A机制)

Proposal/Agreement机制
Proposal/Agreement机制

RSTP通过P/A机制加快了上游端口进入Forwarding状态的速度。

在RSTP中,当一个端口被选举成为指定端口之后,会先进入Discarding状态,再通过P/A机制快速进入Forwarding状态。

STP中,该端口至少要等待一个Forward Delay(Learning)15s 时间才会进入到Forwarding状态。

也就是STP选举成为指定端口后从Disabled状态到Listening状态再经过Forward Delay(15 s)时间才能切换到Forwarding状态进行业务转发,时间比较长,在RSTP中通过P/A机制指定端口可以快速切换到转发状态。

3.6 拓扑变更机制

在RSTP中检测拓扑是否发生变化只有一个标准:一个非边缘端口迁移到Forwarding状态。

在STP中,如果拓扑发生了变化,需要先向根桥传递TCN BPDU,再由根桥来通知拓扑变更,泛洪TC置位的配置BPDU。

拓扑变更机制
拓扑变更机制

一旦检测到拓扑发生变化,将进行如下处理:

  • 为本交换设备的所有非边缘指定端口和根端口启动一个TC While Timer,该计时器值是Hello Time的两倍。在这个时间内,清空所有端口上学习到的MAC地址。
  • 同时,由非边缘指定端口和根端口向外发送RST BPDU,其中TC置位。一旦TC While Timer超时,则停止发送RST BPDU。
  • 其他交换设备接收到RST BPDU后,清空所有端口(除了收到RST BPDU的端口和边缘端口)学习到MAC地址,然后也为自己所有的非边缘指定端口和根端口启动TC While Timer,重复上述过程。

在链路发生故障时,经过6s时间BPDU超时,然后SW3的预备端口切换为根端口,然后启动定时器在4s内清空除了接收BPDU端口和边缘端口的MAC地址表,理论上就是每隔4s经过一个设备最终实现全网RST BPDU泛洪。

3.7 保护功能

RSTP提供了几层保护机制。

1、边缘BPDU保护

边缘BPDU保护
边缘BPDU保护

正常情况下,边缘端口不会收到RST BPDU。如果有人伪造RST BPDU恶意攻击交换设备,当边缘端口接收到RST BPDU时,交换设备会自动将边缘端口设置为非边缘端口,并重新进行生成树计算,从而引起网络震荡。

交换设备上启动了BPDU保护功能后,如果边缘端口收到RST BPDU,边缘端口将被error-down,但是边缘端口属性不变,同时通知网管系统。

在进行网络规划时提前规划边缘端口,加快收敛,边缘BPDU保护功能防止恶意通过边缘端口进行攻击发生。

2、根保护(Root保护)

根保护
根保护

对于启用根保护功能的指定端口,其端口角色只能保持为指定端口。

一旦启用根保护功能的指定端口收到优先级更高的RST BPDU时,端口将进入Discarding状态,不再转发报文。经过一段时间(通常为两倍的Forward Delay),如果端口一直没有再收到优先级较高的RST BPDU,端口会自动恢复到正常的Forwarding状态。

根保护功能确保了根桥的角色不会因为一些网络问题而改变,防止出现根桥角色变动导致网络震荡。

3、环路保护

环路保护
环路保护

在运行RSTP的网络中,根端口状态是依靠不断接收来自上游交换设备的RST BPDU维持。当由于链路拥塞或者单向链路故障导致根端口收不到来自上游交换设备的RST BPDU时,此时交换设备会重新选择根端口。 如图所示,当SW1和SW3之间的链路发生单向链路故障时,SW3由于根端口在超时时间内收不到来自上游设备的BPDU报文,Alternate端口切换成根端口,根端口切换成指定端口,从而形成了环路。

在启动了环路保护功能后,如果根端口或Alternate端口长时间收不到来自上游设备的BPDU报文时,则向网管发出通知信息(此时根端口会进入Discarding状态,角色切换为指定端口),而Alternate端口则会一直保持在Discarding状态(角色也会切换为指定端口),不转发报文,从而不会在网络中形成环路。

4、防TC-BPDU攻击

防TC-BPDU攻击
防TC-BPDU攻击

交换设备在接收到TC置位的RST BPDU报文后,会执行MAC地址表项的删除操作。如果有人伪造TC置位的RST BPDU报文恶意攻击交换设备时,交换设备短时间内会收到很多RST BPDU报文,频繁的删除操作会给设备造成很大的负担,给网络的稳定带来很大隐患。

启用防TC-BPDU报文攻击功能后,在单位时间内,交换设备处理TC BPDU报文的次数可配置。

如果在单位时间内,交换设备在收到TC BPDU报文数量大于配置的阈值,那么设备只会处理阈值指定的次数。

对于其他超出阈值的TC BPDU报文,定时器到期后设备只对其统一处理一次。这样可以避免频繁的删除MAC地址表项,从而达到保护设备的目的。

简单说就是配置清理MAC表处理的阈值,防止频繁删除MAC表项。

总结:复习了一些前面学习的STP内容。STP用于防止局域网环路以及提供冗余,但是因为端口角色、端口状态、BPDU处理机制等收敛速度较慢,在现在的大型网络中影响较大。RSTP在STP基础上增补了端口角色与精简了端口状态,通过Alternate端口、Backup端口实现快速切换,更短的BPDU超时时间边缘端口P/A机制实现指定端口快速转发数据。更加快速的拓扑变更机制可以在短时间实现RST BPDU全网泛洪收敛,提供了边缘BPDU保护根保护环路保护防TC攻击机制。

本文由 mdnice 多平台发布

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

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

相关文章

app端文章列表查询-详细教程(上)

app端文章列表查询 一、数据库方面 有关文章的表垂直拆分成了三张表:文章基本信息表(字段有文章id、文章作者、文章标题、发布时间等)、文章配置表(字段有文章id、文章是否可评论、文章可转发、是否已下架、是否已删除等&#x…

MySQL 基础查询

1、DISTINCT select DISTINCT EMPLOYEE_ID ,FIRST_NAME from employees 按照ID去重,DISTINCT的字段要放在前面,不会再继续在FIRST_NAME上去重判断; 如果需要多字段去重,需要用到group by,这个后面讲; …

【Fargo】11: pacing 参数不生效:同步调整采集码率

发送侧参数改变 接收测没感觉到 还是2秒收到60个不变: 果然,发送侧的参数设置没生效 发送的码率终于正确了

【C++、数据结构】二叉排序树(二叉查找树、二叉搜索树)(图解+完整代码)

目录 [⚽1.什么是二叉排序树] [🏐2.构建二叉排序树] [🏀3.二叉排序树的查找操作] [🥎4.二叉排序树的删除] [🎱5.完整代码] ⚽1.什么是二叉排序树 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是…

【慕伏白教程】将 Windows11 装进口袋 -- 便携式 Windows 11 制作教程

目录 下载 Windows 11 镜像下载 Rufus开始安装 Windows 11 下载 Windows 11 镜像 打开微软 Windows 11 官方下载网站,找到 下载适用于 x64 设备的 Windows 11 磁盘映像 (ISO) 根据个人情况选择要下载的磁盘镜像,选择多版本 ISO 的话可在安装系统开始时进…

多IP连接

一.关闭防火墙 systemctl stop firewalld setenforce 0 二.挂在mnt mount /dev/sr0 /mnt 三.下载nginx dnf install nginx -y 四.启动nginx协议 systemctl start nginx 五.修改协议 vim /etc/nginx/nginx.conf 在root前加#并且下一行添加 root /www:(浏…

基于图像拼接开题报告

选题的背景与意义 在日常生活中,使用普通相机获取宽视野的场景图像时,必须通过调节相机的焦距才可以提取完整的场景。由于相机的分辨率有限,拍摄场景越大,得到的图像分辨率就越低,因此只能通过缩放相机镜头减小拍摄的…

应对 .DevicData-X-XXXXXXXX 勒索病毒:防御与恢复策略

引言 随着信息技术的快速发展,网络安全问题愈发严峻。勒索病毒作为一种恶性网络攻击手段,已成为企业和个人面临的重大威胁之一。尤其是 .DevicData-X-XXXXXXXX 勒索病毒,其通过加密用户数据并勒索赎金,给受害者带来了巨大的经济损…

dolphinscheduler创建工作流及工作流中DataX的使用(简单操作)

一、在项目管理中创建项目:点击创建项目 用哪个用户登录的,所属用户就是哪个,直接输入项目名即可 二、点击项目,在项目中创建工作流,用DataX同步数据 按照图片的步骤依次填写完成,注意 图片中的第九步是写…

个税自然人扣缴客户端数据的备份与恢复(在那个文件夹)

一,软件能够正常打开,软件中的备份与恢复功能 1,备份 您按照下面的方法备份一下哦~ 进入要备份的自然人软件,点击左侧系统设置→→系统管理→→备份恢复; 在备份设置里,点击“备份到选择路径”,…

小白向的源码开发详解:直播带货系统与电商平台搭建指南

本篇文章,笔者将为小白们提供一份详细的源码开发指南,帮助你轻松搭建自己的直播带货系统和电商平台。 一、了解直播带货系统的基本构成 直播带货系统主要由以下几个部分组成: 1.前端界面 2.后端服务器 3.数据库 4.直播平台 二、技术选型…

【C++】— 一篇文章让你认识STL

文章目录 🌵1.什么是STL?🌵2.STL的版本🌵3.STL的六大组件🌵4.STL的重要性🌵5. 如何学习STL🌵6. 学习STL的三种境界 🌵1.什么是STL? STL是Standard Template Library的简称…

深入理解Redis锁与Backoff重试机制在Go中的实现

文章目录 流程图Redis锁的深入实现Backoff重试策略的深入探讨结合Redis锁与Backoff策略的高级应用具体实现结论 在构建分布式系统时,确保数据的一致性和操作的原子性是至关重要的。Redis锁作为一种高效且广泛使用的分布式锁机制,能够帮助我们在多进程或分…

Vue+ECharts+iView实现大数据可视化大屏模板

Vue数据可视化 三个大屏模板 样式还是比较全的 包括世界地图、中国地图、canvas转盘等 项目演示: 视频: vue大数据可视化大屏模板

神经网络模型内部

给大家展示一个三层4*24*24*2神经网络文件的内部: 大小5.06KB 想知道这个模型是怎么训练生成的看我的上一篇文章 用神经网络自动玩游戏

Centos7安装ZLMediaKit

https://github.com/ZLMediaKit/ZLMediaKit 一 获取代码 git clone https://gitee.com/xia-chu/ZLMediaKit cd ZLMediaKit git submodule update --init git submodule update --init 命令用于初始化和更新 Git 仓库中的子模块(submodules)。这个命令…

vue3 + ts + element-plus 二次封装 el-dialog

实现效果&#xff1a; 组件代码&#xff1a;注意 style 不能为 scoped <template><el-dialog class"my-dialog" v-model"isVisible" :show-close"false" :close-on-click-modal"false" :modal"false"modal-class&…

web网页QQ登录

代码&#xff1a; <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>QQ登录ent</title> </head> <style>ul > li{list-style: none; } a …

U盘数据丢失不用慌,这4个工具可以帮你恢复。

因为将大量的数据存到U盘里面很方便&#xff0c;所以U盘使用也很广泛。但是里面的数据丢失想必很多朋友都碰到过&#xff0c;不过现在有很多方法都可以帮助大家将数据回顾回来。这里我便筛选了几款比较好的数据恢复工具&#xff0c;在这里跟大家分享。 1、福昕U盘恢复软件 直通…

AI练中学,你的 AI 助教又升级啦!

你是否在代码学习过程中遇到过这些问题&#xff1f;理论学习和动手实践割裂&#xff1b;课上的示例代码跑起来很麻烦&#xff1b;需要自己配置开发环境&#xff0c;在服务器上配开发环境要付费&#xff0c;折腾半天之后报错。 在大模型应用开发领域&#xff0c;获取大模型 API…