【HCIP】01.RSTP

STP的缺点

  1. STP对计时器的依赖(需要等固定30s)
  2. STP重收敛速度过程慢(30s或50s)
  3. 拓扑变化机制太慢(高度中央集权,需要上报到根桥再下发TCN)

RSTP

  • 802.1W,收敛速度更快,能够兼容STP
  • RSTP对STP的改进:
    • 端口角色的增补,简化了生成树的理解和部署
    • 端口状态的重新划分
    • 配置BPDU的改变,充分利用了STP协议报文中的Flag字段,明确了端口角色
    • 配置BPDU的处理发生了变化
    • 快速收敛
    • 增加保护功能

RSTP的改进点

改进点1:端口角色的改进(阻塞口)

  • RSTP中有四种端口角色:RP DP AP BP

改进点2:端口状态的改进

  • RSTP中,端口状态只有三个,分别是,Discarding Learning Forwarding。
    • Discarding 不转发流量,也不学习MAC地址,也可以收发BPDU
    • Learning 不转发流量,但是学习MAC地址,也可以收发BPDU
    • Forwarding 既转发流量,并且学习MAC地址,也可以收发BPDU

改进点3:配置BPDU的改进-RST BPDU发

  • TYPE字段:配置BPDU的类型不在是0而是2,所以运行STP的设备收到RSTP的BPDU会将其丢弃。
  • Flag字段:使用了原来保留的中间6位,这样的配置BPDU叫做RST BPDU
    • Proposal与Agreeement成为P/A协商,提议与同意。
    • Forwarding与Learning为端口状态,是哪个状态就置1,都不是则置0
    • Port Role代表端口角色

改进点4:配置BPDU的处理

配置BPDU的发送方式(非根桥可以自主发送BPDU)

  • 在拓扑稳定后,无论非根桥是否收到根桥的配置BPDU报文,非根桥设备仍按照hello time规定的时间间隔发送配置BPDU。拓扑变化也会变的更快因为无论非根桥是否收到根桥的BPDU,都可以自主发送,所以拓扑变化也会变的更快,非根桥接口发生故障后,会直接向自己相邻设备发送,无需先向根桥汇报。

BPDU的超时时间变的更短(可根据链路质量调控)6s

  • 更短的BPDU超时时间,即最大老化时间(Max Age)。超时时间等于3倍的hello time(hello time可以根据链路质量手动调整,所以超时时间可以贴合网络实际需求。)标准是6S。华为有个默认的公式是:超时时间*3*3,最后一个3是华为定义的系数。

次等BPDU的处理

  • 任何接口都可以处理次等BPDU。例AP口发现其他交换机发来的次等BPDU,都可以把最优的BPDU回复,从而加快收敛速度。
    • 对于STP的AP端口来讲,收到次等BPDU之后,丢弃不回复,等待在此接口收到的最大BPDU20s老化后,才会回复更强的bpdu,同时因为自己的强所以变为指定端口,对端因此变为根端口,进入状态迁移,总共需要50s时间。
    • 对于RSTP的AP端口来讲,收到次等BPDU之后,立即回复,同时因为自己的强所以变为指定端口,对端因此变为根端口,触发P/A协商,总共需要毫秒。

改进点5:快速收敛机制

根端口和指定端口的切换

如果AP口要转换为RP口,无需等待30s时间,直接进入转发状态

如果BP口要转换为DP口,无需等待30s时间,直接进入转发状态

边缘端口(EP端口)

  • 不会出现环路的接口可以定义成为边缘端口,一般在二层网络的边缘
    • 直接进入到转发状态
    • 边缘端口会发送BPDU,任何一个边缘端口收到了BPDU,会马上丧失BPDU的特性,变成普通端口,接受RSTP的计算。
    • EP进入到转发状态,不会认为拓扑变化
    • 如果网络中发生了拓扑变化,EP口的MAC不会被删除
    • P/A协商时,不会被阻塞

P/A协商

  • P/A协商要求在点对点全双工链路,只出现在上游DP,下游RP的情况。
  • 两台交换机启动后,一个端口是DP,一个端口是RP,并且DP是discading状态,就可以触发P/A协商。
    • 当RP收到P/A协商后,会把对下端口全部阻塞掉(EP口除外),然后RP马上进入转发状态,并且回A置位的BPDU,DP口收到之后会马上进入转发状态。然后被阻塞的其他DP口再去给它下面的RP口进行P/A协商。如果DP口下面接的不是交换机,无法进行P/A协商,就会进入30s转发等待。两两之间逐层协商。

改进点6:拓扑变化机制

  • 在STP中,接口的up/down代表发生拓扑变化,在RSTP中,一个非边缘接口进入forwarding的状态算拓扑变化。
    • 先开启2s的计时器,向外扩散TC置位的RST BPDU,交换机收到后除接受端口和EP端口之外,加快MAC地址老化时间。
    • 交换机也会启用4s计时器,向外继续扩散TC置位的RST BPDU。

改进点7:保护功能

BPDU保护

  • 正常情况下,边缘端口不会收到RST BPDU。如果有人伪造RST BPDU恶意攻击交换设备,当边缘端口接收到RST BPDU时,交换设备会自动将边缘端口设置为非边缘端口,并重新进行生成树计算,从而引起网络震荡。
  • 交换设备上启动了BPDU保护功能后,如果边缘端口收到RST BPDU,边缘端口将被error-down,但是边缘端口属性不变,同时通知网管系统。
  • EP口收到BPDU触发

根保护(Root保护)

  • 对于启用根保护功能的指定端口,其端口角色只能保持为指定端口。
  • 根保护功能确保了根桥的角色不会因为一些网络问题而改变。
  • 一旦启用根保护功能的指定端口收到优先级更高的RST BPDU时,端口将进入Discarding状态,不再转发报文。经过一段时间(通常为两倍的Forward Delay),如果端口一直没有再收到优先级较高的RST BPDU,端口会自动恢复到正常的Forwarding状态。
  • DP收到更强大BPDU变成阻塞

环路保护

  • 在启动了环路保护功能后,如果根端口或Alternate端口长时间收不到来自上游设备的BPDU报文时,则向网管发出通知信息(此时根端口会进入Discarding状态,角色切换为指定端口),而Alternate端口则会一直保持在Discarding状态(角色也会切换为指定端口),不转发报文,从而不会在网络中形成环路。
  • 直到链路不再拥塞或单向链路故障恢复,端口重新收到BPDU报文进行协商,并恢复到链路拥塞或者单向链路故障前的角色和状态。
  • 上联接口非直连故障,启用环路保护

防TC-BPDU攻击

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

RSTP的改进都是为了提升20s+30s

  • 如何提升的20s?
    • 将时间改为3*hello time *3=18s
  • 如何提升30s?
  • 有多种情况无需等待
    • AP要转为RP时,BP要转为DP时
    • 边缘端口
    • P/A协商时,协商完成
    • 回复次等bpdu之后(利用PA协商,因为两边分别是DP和RP)
  • 什么情况需要等待
    • DP对AP的时候
  • 另外提升了TC的扩散方式,以及端口状态,细分了端口角色,增加了四种保护功能,且非根桥可以自主发送bpdu

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

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

相关文章

Python程序设计基础:random库的使用

文章目录 一、常见的random库函数二、应用实例 一、常见的random库函数 在使用Python语言进行编程计算时,计算机完成的计算主要是确定的,但是在将其进行应用时,人们会模拟现实生活中的现象和活动,希望其增加一些随机性&#xff0…

econml介绍

EconML简介 EconML: A Python Package for ML-Based Heterogeneous Treatment Effects Estimation EconML是一个通过机器学习方法从观察数据中估计heterogeneous treatment effects的Python包。该软件包是微软研究院ALICE项目的一部分,目的是将最新的机器学习方法…

神经网络改进:注重空间变化,权重参数调整,正则化, 熵的简单理解

目录 神经网络改进:注重空间变化 将高纬空间映射到地位空间便于表示(供给数据) 将地位空间映射到高纬空间进行分类聚合(达到可分状态(K-means)) 神经网络改进:权重参数调整 自注…

【RabbitMQ】RabbitMQ整合SpringBoot案例

文章目录 1、前情提要【RabbitMQ】2、RabbitMQ-SpringBoot案例 -fanout模式2.1 实现架构总览2.2 具体实现2.2.1生产者2.2.1消费者 1、前情提要【RabbitMQ】 【RabbitMQ】消息队列-RabbitMQ篇章 RabbitMQ实现流程 2、RabbitMQ-SpringBoot案例 -fanout模式 2.1 实现架构总览…

maven打出jar中动态替换占位符

使用场景&#xff1a; maven打出的jar中pom.xml动态替换占位符 有些时候某些公共工具jar包被项目引用后发现公共jar的pom.xml中的version依然还是占位符&#xff0c;例如下面 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok<…

相关搜索引擎常用搜索语法(Google hacking语法和FOFA语法)

一&#xff1a;Google Hack语法 Google Hacking原指利用Google搜索引擎搜索信息来进行入侵的技术和行为&#xff0c;现指利用各种搜索引擎并使用一些高级的搜索语法来搜索信息。既利用搜索引擎强大的搜索功能&#xff0c;在在浩瀚的互联网中搜索到我们需要的信息。 &#xff0…

STM32 CubeMX (第二步Freertos任务通信:队列、信号量、互斥量,事件组,任务通知)

STM32 CubeMX STM32 CubeMX ____Freertos任务通信&#xff1a;队列、信号量、互斥量&#xff0c;事件组&#xff0c;任务通知 STM32 CubeMX一、STM32 CubeMX设置时钟配置HAL时基选择TIM1&#xff08;不要选择滴答定时器&#xff1b;滴答定时器留给OS系统做时基&#xff09;使用…

基于docker搭建owncloud Harbor 构建镜像

环境介绍&#xff1a;ContenOS7.9 docker17.12.1-ce 使用mysql:5.6和 owncloud 镜像&#xff0c;构建一个个人网盘。 docker pull owncloud #拉取镜像 docker pull mysql5.6 创建容器 docker run --name owncloud-mysql -p 3306:3306 -e MYSQL\_ROOT\_PASSWORDroot …

Const的区别 学习笔记

C程序设计之const八大用法_哔哩哔哩_bilibili const优先修饰const左边&#xff0c;若左边没有东西&#xff0c;则修饰右边的东西 前两个a,b不是指针由于修饰的是int&#xff0c;是类型&#xff0c;所以a和b的值不能改变 c的类型的指针&#xff0c;const修饰的是int&#xff0…

Azure创建可用性集

什么是可用性集 在Azure中&#xff0c;可用性集&#xff08;Availability Set&#xff09;是一种用于提高虚拟机&#xff08;VM&#xff09;可用性和可靠性的功能。它通过将虚拟机分布在不同的物理硬件和故障域中来提供高可用性。每个故障域都是一个独立的电力和网络故障区域&…

数据同步后数据总条数对不上的问题解决

文章目录 [toc] 1.问题2.解决办法2.1&#xff09;设置合理的线程池参数2.2&#xff09;设置url连接参数2.3) 优化msql的系统参数2.4&#xff09;使用CountDownLatch减法计数器和数据插入的公共方法新开一个事务2.5&#xff09;sql批量注入器执行成功后&#xff0c;当前线程slee…

C++11 智能指针

文章目录 什么是智能指针为什么用智能指针智能指针的类型和各自的功能auto_ptr&#xff08;c98使用的&#xff0c;现已废弃&#xff09;unique_ptrshared_ptrweak_ptr unique_ptr和shared_ptr的简单模拟实现 什么是智能指针 智能指针是一种在编程中用于管理动态分配内存的指针…

DC电源模块如何调节电源输出电压和电流

BOSHIDA DC电源模块如何调节电源输出电压和电流 DC电源模块是一种电源转换器&#xff0c;在电子设备中广泛使用。它可以将交流电转换为直流电&#xff0c;或者将低电压直流电转换为高电压直流电。 DC电源模块通常可以调节输出电压和电流&#xff0c;以满足各种电子设备的不同需…

【C++】 使用红黑树模拟实现STL中的map与set

文章目录 前言1. 对之前实现的红黑树进行一些补充和完善1.1 析构1.2 查找 2. STL源码中map和set的实现3. 改造红黑树封装map和set3.1 红黑树结构修改3.2 map、set的结构定义3.3 insert的封装3.4 insert测试3.5 发现问题并解决3.6 红黑树迭代器实现3.7 封装set和map的迭代器并测…

RK3399平台开发系列讲解(内核调试篇)Valgrind使用案例

🚀返回专栏总目录 文章目录 一、使用未初始化的内存案例二、内存泄露三、在内存被释放后进行读/写案例四、从已分配内存块的尾部进行读/写案例五、两次释放内存案例沉淀、分享、成长,让自己和他人都能有所收获!😄 📢Valgrind 是一个开源的内存调试和性能分析工具,用于…

Electron 报gpu_process_host.cc(951)] GPU process launch faile错误

解决方法&#xff0c;在入口js文件中&#xff0c;添加如下代码: app.commandLine.appendSwitch(no-sandbox)

Eltima USB Network Gate 10.0 Crack

USB Network Gate -通过网络共享USB 设备 USB Network Gate (前身为以太网USB控制器USB) 轻松的通过网络(Internet/LAN/WAN)分享您的一个或者多个连接到您计算机的USB设备。 无论您身处异国还是近在隔壁办公室&#xff0c;您都可以轻松使用远程扫描仪、打印机、摄像头、调制解…

CVE-2015-5254漏洞复现

1.漏洞介绍。 Apache ActiveMQ 是美国阿帕奇&#xff08;Apache&#xff09;软件基金会所研发的一套开源的消息中间件&#xff0c;它支持 Java 消息服务&#xff0c;集群&#xff0c;Spring Framework 等。Apache ActiveMQ 5.13.0之前 5.x 版本中存在安全漏洞&#xff0c;该漏…

《HeadFirst设计模式(第二版)》第十一章代码——代理模式

代码文件目录&#xff1a; RMI&#xff1a; MyRemote package Chapter11_ProxyPattern.RMI;import java.rmi.Remote; import java.rmi.RemoteException;public interface MyRemote extends Remote {public String sayHello() throws RemoteException; }MyRemoteClient packa…

SpringBoot基于Zookeeper实现分布式锁

文章目录 问题背景前言实现搭建Zookeeper容器引入依赖ZK客户端的配置类ZK客户端的工厂类注入bean构建测试类 问题背景 研究分布式锁&#xff0c;基于ZK实现&#xff0c;需要整合到SpringBoot使用 前言 参考自SpringBoot集成Curator实现Zookeeper基本操作&#xff0c;Zookeeper入…