首页 > 其他分享 >STP与RSTP的区别

STP与RSTP的区别

时间:2024-07-15 23:01:19浏览次数:12  
标签:BPDU RSTP 区别 端口 STP RST TC

RSTP对STP做了如下改进:


1.RSTP增加2种端口角色

AP:收到其他交换机更好的BPDU而被阻塞,RP的备份端口

BP:收到自己更好的BPDU而被阻塞,DP的备份端口

2.简化端口状态 

3.充分利用配置BPDU的Flag字段

Type字段:配置BPDU类型不再是0而是2,所以运行STP的设备收到RSTP的配置BPDU时会丢弃。

Flag字段:使用了原来保留的中间6位,这样改变的配置BPDU叫做RST BPDU。

4.配置BPDU的发送方式(拓扑稳定的情况下)

STP:根桥按Hello Time(缺省2s)间隔发送配置BPDU,非根桥设备从RP收到上游设备发送过来的配置BPDU后,才会触发发出配置BPDU。可理解为:收不到根桥传来的配置BPDU,非根桥就等,一直等到收到或者老化时间超时(Max Age缺省20s)

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

5.缩短配置BPDU的超时时间

STP:Max Age时间内没有收到上游设备发送过来的配置BPDU,认为邻居失效

RSTP:如果一个端口在超时时间(Hello Time×3×Timer Factor,缺省:2s×3×3)内没有收到上游设备发送过来的配置BPDU,那么该设备认为与此邻居之间的协商失败。

6.更快处理次优BPDU

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

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

        当一个端口收到上游的指定桥发来的RST BPDU报文时,该端口会将自身缓存的RST BPDU与收到的RST BPDU进行比较。

        如果该端口缓存的RST BPDU优于收到的RST BPDU,那么该端口会直接丢弃收到的RST BPDU,立即回应自身缓存的RST BPDU,从而加快收敛速度。

 7.端口角色快速切换

RP失效,AP立即成为RP

DP失效,BP立即成为DP

8.边缘端口
  1. 是DP且连接的是三层网络设备(终端网卡也是),可设置为边缘端口EP
  2. EP收到配置BPDU后转变为普通STP端口,重新进行生成树计算
  3. EP会发送BPDU,防止潜在环路风险,场景:两个EP直接相连可出现瞬间环路风险
  4. EP不参与RSTP计算可由Discarding直接进入Forwarding状态
  5. EP失效/进入Forwarding状态,不被认为STP拓扑发生变化,不会导致发送TC RSTP BPDU/TCN BPDU,保证MAC地址表的稳定性
  6. 强烈建议启用边缘端口特性
9.P/A机制

STP的RP、DP由Discarding状态到Forwarding状态,至少需要30s

RSTP的RP、DP由Discarding状态到Forwarding状态,大约1~2s甚至更快

10.拓扑变更机制

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

RSTP中,检测拓扑是否发生变化只有一个标准:一个非边缘端口迁移到Forwarding状态。一旦检测到拓扑变化,TC置位的RST BPDU会快速的在网络中泛洪。

  1. SW3的根端口收不到从根桥发来的RST BPDU后,Alternate端口会快速切换为新的根端口,启动TC While Timer,并清空状态发生变化的端口学习到的MAC地址。然后向外发出TC置位的RST BPDU。
  2. SW2接收到RST BPDU后,会清空接收口以外所有端口学习到的MAC地址,同时开启计时器,并向外发送TC置位的RST BPDU。
  3. 最终,RST BPDU会在全网泛洪。
11.保护功能

  1. BPDU保护
    1. 原因:当边缘端口接收到RST BPDU时,交换设备会自动将边缘端口设置为非边缘端口,并重新进行生成树计算,从而引起网络震荡。
    2. 解决:交换设备上启动了BPDU保护功能后,如果边缘端口收到RST BPDU,边缘端口将被error-down,但是边缘端口属性不变,同时通知网管系统。
  2. 根保护
    1. 原因:根桥具有可抢占性,有可能会收到优先级更高的RST BPDU,使得根桥失去根地位,从而引起网络拓扑结构的错误变动。
    2. 解决:
      1. 启用根保护功能的指定端口,其端口角色只能保持为指定端口。
      2. 一旦启用根保护功能的指定端口收到优先级更高的RST BPDU时,端口将进入Discarding状态,不再转发报文。
      3. 经过一段时间(通常为两倍的Forward Delay),如果端口一直没有再收到优先级较高的RST BPDU,端口会自动恢复到正常的Forwarding状态。
  3. 环路保护
    1. 原因:
      1. 运行RSTP的网络中,根端口状态是依靠不断接收来自上游交换设备的RST BPDU维持。
      2. 当由于链路拥塞或者单向链路故障导致根端口收不到来自上游交换设备的RST BPDU时,此时交换设备会重新选择根端口。
    2. 解决:
      1. 启动了环路保护功能后,如果根端口或Alternate端口长时间收不到来自上游设备的BPDU报文时,则向网管发出通知信息(此时根端口会进入Discarding状态,角色切换为指定端口),
      2. Alternate端口则会一直保持在Discarding状态(角色也会切换为指定端口),不转发报文,从而不会在网络中形成环路。
  4. 防TC-BPDU攻击
    1. 原因:交换设备在接收到TC置位的RST BPDU报文后,会执行MAC地址表项的删除操作。
    2. 解决:
      1. 启用防TC-BPDU报文攻击功能后,在单位时间内,交换设备处理TC BPDU报文的次数可配置。
      2. 如果在单位时间内,交换设备在收到TC BPDU报文数量大于配置的阈值,那么设备只会处理阈值指定的次数。
      3. 对于其他超出阈值的TC BPDU报文,定时器到期后设备只对其统一处理一次。

标签:BPDU,RSTP,区别,端口,STP,RST,TC
From: https://blog.csdn.net/uzumcc/article/details/140413723

相关文章

  • 深入剖析hashCode和equals的区别及大厂面试题
    关于作者:毕业半年被裁,一个月斩获大厂offer,面试经验50+。“跟着周哥走,offer手里有”。文末免费领取周哥50+场面试总结出的必背面试题。首先我们要知道,equals()和hashCode()都属于Object类,而Object类是所有类(包括Class)的父类。搞清楚这一点,再分别解析equals和hashCode,......
  • git fetch 和 git pull的区别
    gitfetch 和 gitpull 都是用于从远程仓库获取数据的命令,但它们有一些重要的区别:gitfetch:仅从远程仓库获取数据,不会自动合并数据。更新本地存储的远程分支的状态。需要手动合并更新的内容到当前分支。常用于查看远程仓库的变化而不修改当前工作状态。示例:gitfet......
  • git fetch --all 和 git fetch origin 的区别
    gitfetch--all 和 gitfetchorigin 这两个命令在功能上有一些关键的区别:gitfetch--all:获取所有远程仓库的所有分支更新。适用于有多个远程仓库的项目。可以一次性更新所有远程仓库的引用。示例:gitfetch--allgitfetchorigin:获取默认远程仓库(通常命名......
  • 解释方法重载和方法重写的区别。然后,给出一个简单的递归方法实例。
    方法重载(Overloading)与方法重写(Overriding)的区别在Java编程中,方法重载和方法重写是两个非常重要的概念,它们分别体现了面向对象编程中的多态性(Polymorphism)的不同方面,但两者有着本质的区别。方法重载(Overloading)概念:方法重载指的是在同一个类中,允许有多个同名的方法,但这些方......
  • Java 中如何实现接口和抽象类,它们的主要区别是什么?
    在Java编程中,接口(Interface)和抽象类(AbstractClass)是实现抽象化的两种重要手段,它们帮助我们设计更灵活、可扩展的代码结构。下面,我将从定义、实现方式、主要区别以及应用场景等方面,用平实的语言和示例代码来阐述它们的使用。接口(Interface)定义:接口是一种完全抽象的类型,它只......
  • Vue 中ref()与 reactive() 的区别
    在Vue3中,组合式API(CompositionAPI)引入了新的响应式系统,使得状态管理和逻辑复用变得更加灵活和强大。ref()和reactive()是组合式API中两个重要的响应式工具,它们各自有不同的使用场景和特性。在这篇博客中,我们将深入探讨ref()和reactive()的区别,并通过代码示例展示它......
  • 单域名证书和通配符证书的区别
    随着互联网的不断发展,网站安全性问题一直备受关注,在保护网站数据安全的过程中,SSL证书一直发挥着至关重要的作用。而在选择SSL证书时,单域名证书和通配符证书是两种常见的选择。本文将详细介绍单域名证书和通配符证书的区别。什么是单域名证书?单域名证书,顾名思义,只保护一个域......
  • view, cat, more, 和 less 的区别
    view,cat,more,和less都是用于查看文本文件内容的命令行工具,但它们各自有特点和使用场景:cat全名:concatenate(连接)功能:主要用于显示一个或多个文件的内容。如果文件很大,cat会一次性输出所有内容,可能不适合查看大文件,因为内容会快速滚动过屏幕,不易于阅读。用法示例:catfilename......
  • Jfrog artifactory和harbor区别?
    JFrogArtifactory和Harbor的主要区别在于它们的来源、‌功能和应用场景。‌来源与类型:‌JFrogArtifactory是由JFrog公司提供的Maven企业级仓库平台,‌属于开源工具及解决方案1。‌它支持代理公网或内网二进制软件制品仓库,‌按需获取后在本地进行缓存,‌可大幅度提升构......
  • JavaScript中的new map()和new set()使用详细(new map()和new set()的区别)
    Map对象是一种键值对的集合,其中的键是唯一的,值可以重复。newSet():在JavaScript中,newSet()是用来创建一个新的Set对象的语法。Set对象是一种集合,其中的值是唯一的,没有重复的值。newSet()可以用来创建一个空的Set对象,在创建时传入一个数组或类数组对象,Set会自动去......