RSTP

技术背景

STP虽然解决环路问题,但是由于网络拓扑收敛慢,影响了用户通信质量,如果网络中的拓扑结构频繁变化,网络会随之频繁失去连通性,从而导致用户通信频繁中断,这是用户无法忍受的。

STP的不足:

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

   

RSTP

RSTP对STP的改进:

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

端口角色

RSTP的端口角色:

  • 根端口
  • 指定端口
  • Alternate端口:作为根端口的备份,提供了指定桥到根的另一条可切换路径
  • Backup端口:作为指定端口的备份,提供了另一条从根桥到达相应网段的备份通路
  • Edge端口:某一个端口位于整个网络的边缘,即不再与其他交换设备连接,二十直接与终端设备直连

Edge端口特性:

  • 边缘端口不参与RSTP计算,可以由Discarding状态直接进入Forwarding状态
  • 一旦边缘端口收到配置BPDU,就丧失了边缘端口属性,成为普通STP端口,并重新进行生成树计算,从而引起网络震荡

端口状态

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

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

配置BPDU-RST BPDU

重要字段

BPDU类型:RST BPDU的类型值为0x02

RST-BPDU种Flag字段:

  • 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,表示拓扑变化

配置BPDU的处理的改进

  • 拓扑稳定后,配置BPDU报文的发送方式
    • RSTP:在拓扑稳定后,无论非根桥设备是否接收到传来的配置BPDU报文,非根桥设备仍然按照Hello Time(缺省值:2秒)规定的时间间隔发送配置BPDU,该行为完全由每台设备自主进行
    • STP:在拓扑稳定后,根桥按照Hello Time(缺省值:2秒)规定的时间间隔发送配置BPDU。其他非根桥设备在收到上游设备发来的配置BPDU后,才会触发发出配置BPDU,此方式使得STP计算复杂且缓慢

  • 更短的BPDU超时时间
    • RSTP:如果一个端口在超时时间6秒(即:3个周期,超时时间 = Hello Time * 3)内没有收到上游设备发送过来的配置BPDU,那么该设备认为与此邻居之间的协商失效
    • STP:需要先等待一个Max Age(缺省值:20秒)超时

  • 处理次优BPDU
    • RSTP:处理次优BPDU报文不再依赖于任何定时器(即不再依赖于BPDU老化)解决拓扑收敛,同时RSTP的任何端口角色都会处理次优BPDU,从而加快了拓扑收敛
    • STP:只有在指定端口会立即处理次优BPDU,其他端口会忽略次优BPDU,等到Max Age(缺省值:20秒)计时器超时后,缓存的次优BPDU才会老化,然后发送自身更优的BPDU,进行新一轮的拓扑收敛

快速收敛机制的处理改进

  • 根端口快速切换:如果网络种一个根端口失效,那么网络中最优的Alternate端口将称为根端口,进入Forwarding状态(因为通过这个Alternate端口连接的网段上必然有个指定端口可以通往根桥)

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

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

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

P/A机制

拓扑变更机制

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

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

   

如图所示:

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

保护功能

BPDU保护

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

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

根保护

由于维护人员的错误配置或网络中的恶意攻击,根桥有可能会收到优先级更高的RST BPDU,使得根桥失去根地位,从而引起网络拓扑结构的错误变动。这种拓扑变化,会导致原来应该通过高速链路的流量被牵引到低速链路上,造成网络拥塞

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

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

环路保护

在运行RSTP的网络中,根端口状态是依靠不断接收来自上游交换设备的RST BPDU维持。当由于链路拥塞或者单向链路故障导致根端口收不到来自上游交换设备的RST BPDU时,此时交换设备会重新选择根端口

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

防TC-BPDU攻击

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

解决方法:启用防TC-BPDU报文攻击功能。启用防TC-BPDU报文攻击功能后,在单位时间内,交换设备处理TC BPDU报文的次数可配置。如果在单位时间内,交换设备在收到TC BPDU报文数量大于配置的阈值,那么设备只会处理阈值指定的次数。对于其他超出阈值的TC BPDU报文,定时器到期后设备只对其统一处理一次。这样可以避免频繁的删除MAC地址表项,从而达到保护设备的目的。

RSTP工作原理

RSTP拓扑收敛过程:

  1. 每一台交换机启动RSTP后,都认为自己是"根桥",并且发送RST BPDU
    1. 所有端口都为指定端口,处于Discarding状态

  2. 上游链路的设备互联端口通过P/A机制,快速进入转发状态
    1. SW2收到更优的RST BPDU,经比较认为SW1才是当前的根桥,此时SW2的端口将成为根端口,而不是指定端口,停止发送RST BPDU
    2. SW1的端口进入Discarding状态,发送Proposal位置位的RST BPDU报文,SW2收到后阻塞除边缘端口以外的所有其他端口(该过程称为同步过程)
    3. SW2的各端口同步后,根端口立即进入Forwarding状态,并向SW1返回Agreement位置位的RST BPDU。SW1收到该报文后,会让指定端口立即进入Forwarding状态

  3. 下游链路的设备互联端口会进行新一轮的P/A协商
    1. SW2的下游端口设置为指定端口,持续发送Proposal置位的RST BPDU
    2. SW3的下游端口收到该BPDU后,发现不是本设备收到的最优BPDU,则会忽略,不会发送Agreement置位的RST BPDU
    3. SW2的下游端口一直收不到Agreement位置位的回应报文,等待30秒(2倍的Forward Delay)后,进入转发状态

RSTP兼容STP

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

  • 当一个网络里既有运行STP的交换设备又有运行RSTP的交换设备,STP交换设备会忽略RSTP的RST BPDU
  • 运行RSTP的交换设备在某端口上接收到运行STP的交换设备发出的配置BPDU,在4秒(两个Hello Time时间)之后,便把自己的端口转换到STP工作模式,发送配置BPDU,从而实现互操作
  • 在华为的数据同行设备上可以配置运行STP的交换设备被撤离网络后,运行RSTP的交换设备可迁移回到RSTP工作模式
posted @ 2022-05-25 00:00  hongliang888  阅读(494)  评论(0编辑  收藏  举报