网络学习笔记(10)- RSTP原理

STP的工作原理

STP的配置BPDU

STP通过在交换机之间传递配置BPDU来选举根交换机 (或根桥),以及确定每个交换机端口的角色和状态。

  • 在初始化过程中,每个交换机都主动发送配置BPDU。
  • 在网络拓扑稳定以后,只有根桥周期性发送配置BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU。

配置BPDU包含了桥ID、路径开销和端口ID等参数。

1657955070786.png

1657955086825.png

STP树的生成过程

主要通过比较4个参数进行角色选举:

  • 根桥ID、根路径开销、网桥ID和端口ID。

1、选举根桥 (Root Bridge)

  • 在一个交换网络中选举一个根桥。

2、选举根端口 (Root Port)

  • 在每个非根桥上选举一个根端口。

3、选举指定端口 (Designated Port)

  • 为每个网段选举一个指定端口。

4、阻塞非指定端口

  • 阻塞交换机上所有剩余的非根、非指定端口

1657955230976.png

STP的端口状态迁移

  • 端口初始化或者使能,进入Blocking状态。
  • 端口被选为根端口或者指定端口,进入Listening状态。
  • 端口的Forward Delay时间到,进入Learning状态;再经过一个Forward Delay,进入Forwarding状态。
  • 端口不再是根端口、指定端口,进入Blocking状态。
  • 端口被禁用或者链路失效。

1657955384473.png

STP的不足

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

STP的不足:

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

STP对计时器的依赖

1657955661130.png

STP重收敛过程慢

1657955721681.png

STP拓扑变更机制

1657955892378.png

RSTP概述

IEEE 802.1W中定义的RSTP可以视为STP的改进版本,RSTP在许多方面对STP进行了优化,它的收敛速度更快,而且能够兼容STP。

RSTP对STP的改进:

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

RSTP在园区网络中的应用位置

1657957069185.png

RSTP对STP的改进

改进点1:端口角色

通过端口角色的增补,简化了生成树协议的理解与部署。

1657957183609.png

改进点2:端口状态

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

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

1657957317176.png

改进点3:配置BPDU - RST BPDU

  • RSTP的配置BPDU充分利用了STP报文中的Flag字段,明确了端口角色。
  • 除了保证和STP格式基本一致之外,RSTP作了如下变化:
    • Type字段:配置BPDU类型不再是0而是2,所以运行STP的设备收到RSTP的配置BPDU时会丢弃。
    • Flag字段:使用了原来保留的中间6位,这样改变的配置BPDU叫做RST BPDU。

1657957480217.png

改进点4:配置BPDU的处理

RSTP对配置BPDU的发送方式进行了改进。

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

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

1657957627633.png

更短的BPDU超时时间

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

STP需要先等待一个Max Age。

1657957782249.png

处理次优BPDU

  • 当一个端口收到上游的指定桥发来的RST BPDU报文时,该端口会将自身缓存的RST BPDU与收到的RST BPDU进行比较。
  • 如果该端口缓存的RST BPDU优于收到的RST BPDU,那么该端口会直接丢弃收到的RST BPDU,立即回应自身缓存的RST BPDU,从而加快收敛速度。

STP协议只有指定端口会立即处理次优BPDU。

1657957899943.png

改进点5:快速收敛机制

根端口快速切换

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

1657958190249.png

指定端口快速切换

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

1657958217953.png

边缘端口 (Edge Port)

  • 在RSTP里面,如果某一个端口位于整个网络的边缘,即不再与其他交换设备连接,而是直接与终端设备直连,这种端口可以设置为边缘端口。
  • 边缘端口不参与RSTP计算,可以由Discarding直接进入Forwarding状态。
  • 但是一旦边缘端口收到配置BPDU,就丧失了边缘端口属性,成为普通STP端口,并重新进行生成树计算,从而引起网络震荡。

1657958254713.png

Proposal/Agreement机制

  • 简称P/A机制。
  • RSTP通过P/A机制加快了上游端口进入Forwarding状态的速度。
  • 在RSTP中,当一个端口被选举成为指定端口之后,会先进入Discarding状态,再通过P/A机制快速进入Forwarding状态
  • 在STP中,该端口至少要等待一个Forward Delay(Learning)时间才会进入到Forwarding状态。

1657958329010.png

P/A机制详解

1657958522328.png

  • 根桥SW1和SW2之间新添加了一条链路。
  • 在当前状态下,SW2的下游端口分别是Alternate端口、指定端口(处于Forwarding状态)和边缘端口

1657958566441.png

SW1和SW2之间的两个端口都先成为指定端口,发送RST BPDU。

1657958581720.png

  • SW2与SW1互联的端口收到更优的RST BPDU后,马上意识到自己将成为根端口,而不是指定端口,停止发送RST BPDU。
  • SW1的指定端口进入Discarding状态,发送Proposal位置位的RST BPSU。

1657958603649.png

  • SW2收到根桥发送来的Proposal位置位的的RST BPDU,开始将自己的所有端口进入同步状态。
  • 各端口同步后,下游端口(除边缘端口)均进入Discarding状态,上游根端口进入Forwarding状态并向SW1返回Agreement位置位的回应RST BPDU。

1657958624680.png

SW1收到的Agreement位置位的RST BPDU是对刚刚自己发出的Proposal的回应,于是指定端口马上进入Forwarding状态。

1657958641761.png

下游设备继续执行P/A协商过程

改进点6:拓扑变更机制

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

1657958688201.png

  • 一旦检测到拓扑发生变化,将进行如下处理:
    • 为本交换设备的所有非边缘指定端口和根端口启动一个TC While Timer,该计时器值是Hello Time的两倍。在这个时间内,清空所有端口上学习到的MAC地址。
    • 同时,由非边缘指定端口和根端口向外发送RST BPDU,其中TC置位。一旦TC While Timer超时,则停止发送RST BPDU。
    • 其他交换设备接收到RST BPDU后,清空所有端口(除了收到RST BPDU的端口和边缘端口)学习到MAC地址,然后也为自己所有的非边缘指定端口和根端口启动TC While Timer,重复上述过程。
  • 如此,网络中就会产生RST BPDU的泛洪。

改进点7:保护功能

BPDU保护

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

1657958870017.png

根保护(Root保护)

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

1657958977185.png

环路保护

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

1657959141505.png

防TC-BPDU攻击

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

1657959191778.png

RSTP的工作过程

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

1657959261113.png

上游链路的设备互联端口通过P/A机制,快速进入转发状态。

  • SW2收到更优的RST BPDU后,经比较认为SW1才是当前根桥,此时SW2的端口将成为根端口,而不是指定端口,停止发送RST BPDU。
  • SW1的端口进入Discarding状态,发送Proposal位置位的RST BPDU。SW2收到后阻塞除边缘端口以外的所有其他端口(该过程称为同步过程)。
  • SW2的各端口同步后,根端口立即进入Forwarding状态,并向SW1返回Agreement位置位的RST BPDU。SW1收到该报文后,会让指定端口立即进入Forwarding状态。

1657959373169.png

下游链路的设备互联端口会进行新一轮的P/A协商。

  • SW2的下游端口设置为指定端口,持续发送Proposal位置位的RST BPDU。
  • SW3的下游端口收到该BPDU后,发现不是本设备收到的最优BPDU,则会忽略,不会发送Agreement位置位的RST BPDU。
  • SW2的下游端口一直收不到Agreement位置位的回应报文,等待2倍的Forward Delay后,进入转发状态。

1657959497401.png

总结图

RSTP.png

|| 版权声明
作者:废权
链接:https://blog.yjscloud.com/archives/337
声明:如无特别声明本文即为原创文章仅代表个人观点,版权归《废权的博客》所有,欢迎转载,转载请保留原文链接。
THE END
分享
二维码
网络学习笔记(10)- RSTP原理
STP的工作原理 STP的配置BPDU STP通过在交换机之间传递配置BPDU来选举根交换机 (或根桥),以及确定每个交换机端口的角色和状态。 在初始化过程中,每个交换机……
<<上一篇
下一篇>>
文章目录
关闭
目 录