RSTP笔记

STP的不足

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

STP的不足:

  1. 没有细致区分端口状态和端口角色,不不利于初学者学习及部署。

(从用户角度来说,侦听状态、学习状态、转发状态并没有区别,都同样不转发用户流量。从使用和配置角度来说,端口之间最本质的区别并不在于端口状态,而是在于端口扮演的角色。)

  1. STP算法是被动的算法,依赖定时器等待的方式判断拓扑变化,收敛速度慢。
  2. STP算法要求在稳定的拓扑中,根桥主动发送配置BPDU报文,其他设备收到后再进行处理,最终传遍整个STP网络。

STP对计时器的依赖

初始化场景下对计时器的依赖:STP采用计时器防止临时环路,当STP选举出端口角色后,即便角色为指定端口或根端口,仍然需要等待两个Forward Delay时间(30s)才能进入转发状态。

终端接入场景下对计时器的依赖:在STP环境下,终端或者服务器接入交换机后,由于端口需要从禁用状态、依次切换到阻塞、侦听、学习及转发状态,此时主机在接入后,同样需要等待两个Forward Delay时间(30s)才能够访问网络服务。

STP重收敛过程慢

直连链路故障:被阻塞端口会从Blocking状态,依次切换到Listening及Learning状态,最终进入Forwarding状态。直连链路故障,会导致30s左右的恢复时间,等于2倍的Forward Delay时间。

非直连链路故障:由于被阻塞端口上不再收到更优的BPDU,因此等待计时器20s超时后,被阻塞端口会从Blocking状态,依次切换到Listening及Learning状态,最终进入Forwarding状态。非直连链路故障会导致50s左右的恢复时,等于Max Age(20s)加上2倍的Forward Delay时间。

STP拓扑变更机制慢(繁琐)

当交换机检测到拓扑变更时,会通知根桥,然后根桥将该拓扑变更信息泛洪到整个网络。

具体变化过程如下:

  1. 如果网络中新增一台交换机,导致工作拓扑发生了变化,则位于变化点的交换机可以通过端口状态直接感知到这种变化,但是其他其他交换机是无法直接感知到的。
  2. 位于变化点的交换机会以Hello Time(2s)为周期通过根端口不断向上游发送TCN BPDU,直到接收到从上游交换机发送来的TCA位置1的BPDU。TCA位置1是为了通知下游设备停止发送TCN BPDU报文的。
  3. 上游交换机收到TCN BPDU后,一方面会通过其指定端口回复TCA位置1的配置BPDU,另一方面会以Hello Time为周期(2s)通过其根端口不断向自己的上游交换机发送TCN BPDU。
  4. 重复以上的过程,知道根桥收到了TCN BPDU。
  5. 根桥收到TCN BPDU后,会通过指定端口发送TC位置1的配置BPDU,通告所有交换机网络拓扑发生了变化,通知下游设备直接删除桥MAC地址表项。

什么是RSTP?

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

RSTP对STP的改进:

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

RSTP兼容STP:

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

  1. 当一个网段里面既有运行STP的交换设备也有运行RSTP的交换设备,STP交换设备会忽略RSTP的BPDU。运行RSTP的交换机设备在某端口上收到运行STP的交换设备发出的配置BPDU,在两个Hello Time时间之后,便把自己的端口转换到STP模式,发生配置BPDU,从而实现了互操作
  2. 在华为的数据通信设备上,可以配置运行STP的交换设备被撤离网络后,运行RSTP的交换设备可以迁移回到RSTP工作模式。

RSTP对STP的改进点

端口角色

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

RSTP的端口角色一共有4种:根端口、指定端口、替代端口(Alternate)、备份端口(Backup)。

根端口、指定端口的作用与STP相同,替代端口和备份端口的描述如下:

Alternate端口:

就是由于学习到其他网桥发送的配置BPDU报文而阻塞的端口,它提供过了从指定桥到根的另外一条可切换的路径,作为根端口的备份。

Backup端口:

就是由于学习到自己发送的配置BPDU报文而阻塞的端口,它提供了另外一条从根桥到相应网段的备份通路,作为指定端口的备份。

给一个RSTP域内所有端口分配角色的过程就是整个拓扑收敛的过程。

端口状态

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

Discarding状态:不转发用户流量也不学习MAC地址。

Learning状态:不转发用户流量但是学习MAC地址。

Forwarding状态:既转发用户流量又学习MAC地址。

配置BPDU - RSTP BPDU

RSTP的配置BPDU充分的利用了STP报文种的Flag字段,明确了端口角色。

处理保证和STP格式基本一致外,RSTP作了如下变化:

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

RST BPDU报文的格式:

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

配置BPDU的处理

1、配置BPDU报文的发送方式

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

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

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

2、更短的BPDU超时时间

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

STP需要先等待一个,Max Age

3、处理次优BPDU

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

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

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

STP:

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

RSTP:

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

快速收敛机制

1、根端口、指定端口快速切换

根端口快速切换:

指定端口快速切换:

2、边缘端口(Edge Prot

3、P/A机制

P/A机制详解:

  • 事实上对于STP,指定端口的选择可以很快完成,主要的速度瓶颈在于:为了避免环路,必须等待足够长的时间,使全网的端口状态全部确定,也就是说必须要等待至少一个Forward Delay所有端口才能进行转发。
  • RSTP的主要目的就是消除这个瓶颈,通过阻塞自己的非根端口来保证不会出现环路。而使用P/A机制加快了上游端口进入Forwarding状态的速度。
  • RSTP通过P/A机制加快了上游端口进入Forwarding状态的速度。
  • 在RSTP中,当一个端口被选举成为指定端口之后,会先进入Discarding状态,再通过P/A机制快速进入Forwarding状态。
  • STP中,当一台新的终端接入交换机时,接口的UP会导致拓扑的改变,从禁用状态自动进入阻塞状态,从侦听状态进入学习状态,再从学习状态进入到转发状态,此过程花费时间等于2倍的转发延迟时间,也就是30s,所以在STP中,新终端用户接入网络的时候,接入端口需要经过30s左右的时间才能够正常转发用户流量。
  • 边缘端口的UP/Down不会引起网络拓扑的变动。
  • 在RSTP里面,如果某个端口位于整个网络的边缘,不再与其他交换设备连接,而是直接与终端设备直连,这种端口可以设置为边缘端口。
  • 边缘端口不参与RSTP计算,可以由Discarding状态直接进入Forwarding状态。
  • 但一旦边缘端口收到了配置BPDU,边缘端口属性就会丧失,成为普通的STP端口,并重新进行生成树计算,从而引起网络震荡。
  • 如果网络中一指定端口失效,那么网络中最优的Backup端口将成为指定端口,进入Forwarding状态。
  • 因为Backup端口作为指定端口的备份,提供了另外一条从根桥到相应网段的备份通路。
  • 如果网络种一个根端口失效,那么网络种最优的Alternate端口将成为根端口,进入Forwarding状态。
  • 因为通过这个Alternate端口连接的网段上必然有个指定端口可以通往根桥。

拓扑变更机制

如上图所示:

RSTP中检测拓扑是否发生变化只有一个标准:一个非边缘端口迁移到Forwarding状态(也就是非边缘端口的UP才算拓扑变化)。

  • SW3的根端口收不到从根桥发来的RST BPDU后,Alternate端口会快速切换为新的根端口,启动TC While Timer,并清空所有端口学习到的MAC地址。然后向外发出TC置位的RST BPDU
  • SW2接收到RST BPDU后,会清空接收口、边缘端口以外所有端口学习到的MAC地址,同时开启计时器,并向外发送TC置位的RST BPDU
  • 最终,RST BPDU会在全网泛洪。
  • STP中,如果拓扑发生了变化,需要先向根桥传递TCN BPDU,再由根桥来通知拓扑变更,泛洪TC置位的配置BPDU
  • RSTP中,通过新的拓扑变更机制,TC置位的RST BPDU会快速的在网络中泛洪。

保护功能

1BPDU保护

2、根保护

3、环路保护

4、防TC-BPDU攻击

  • 交换设备在接收到TC置位的RST BPDU报文后,会执行MAC地址表项的删除操作。如果有人伪造TC置位的RST BPDU报文恶意攻击交换设备时,交换设备短时间内会收到很多RST BPDU报文,频繁的删除操作会给设备造成很大的负担,给网络的稳定带来很大隐患。
  • 如上图所示:
    • 如果SW3被恶意用户侵占,伪造大量TC置位的RST BPDU并向外发送。SW2收到这些RST BPDU后,会频繁执行MAC地址表项的删除操作,形成巨大负担。
  • 在启动了环路保护功能后,如果根端口Alternate端口长时间收不到来自上游设备的BPDU报文时,则向网管发出通知信息(此时根端口会进入Discarding状态,角色切换为指定端口),而Alternate端口则会一直保持在Discarding状态(角色也会切换为指定端口),不转发报文,从而不会在网络中形成环路。
  • 直到链路不再拥塞或单向链路故障恢复,端口重新收到BPDU报文进行协商,并恢复到链路拥塞或者单向链路故障前的角色和状态。
  • 对于启用根保护功能的指定端口,其端口角色只能保持为指定端口。
  • 一旦启用跟保护的功能的指定端口收到优先级更高的RST BPDU时,端口将进入Discarding状态,不再转发报文。经过一段时间(通常为两倍的Forward Delay),如果端口一直没有再收到优先级较高的RST BPDU,端口会自动恢复到正常的Forwarding状态。
  • 根保护功能确保了根桥的角色不会因为一些网络问题而改变。
  • 由于维护人员的错误配置或网络中的恶意攻击,根桥有可能会收到优先级更高的RST BPDU,使得根桥失去根地位,从而引起网络拓扑结构的错误变动。这种拓扑变化,会导致原来应该通过高速链路的流量被牵引到低速链路上,造成网络拥塞。
  • 正常情况下,边缘端口不会收到RST BPDU。如果有人伪造RST BPDU恶意攻击交换设备,当边缘端口收到RST BPDU时,交换设备会自动将边缘端口设置为非边缘端口,并重新进行生成树计算,从而引起网络震荡。
  • 交换设备上启动了BPDU保护功能后,如果边缘端口收到RST BPDU,边缘端口将被error-down,但是边缘端口属性不变,同时通知网关系统。

RSTP拓扑收敛过程

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

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

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

其他设备之间的同步

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

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

如图:RSTP下游链路的设备互联端口会进入慢收敛过程,以SW2与SW3为例。

RSTP基本配置(华为)

RSTP基础配置命令

配置接口路径开销:

  • dot1d-1998:指定路径开销值的计算方法是IEEE 802.1d-1998标准方法。使用IEEE 802.1d-1998标准方法时取值范围是165535
  • dot1t:指定路径开销值的计算方法是IEEE 802.1t标准方法。使用IEEE 802.1t标准方法时取值范围是1200,000,000
  • legacy:指定路径开销值的计算方法是华为计算方法。使用华为计算方法时取值范围是1200,000

RSTP保护功能配置命令

  • 配置后,在stp tc-protection interval指定的时间内,设备只会处理stp tc-protection threshold指定数量的拓扑变化报文,对于其他的报文会延迟处理,所以可能会影响生成树的收敛速度。例如,时间设定为10秒,阈值设定为5,则设备收到拓扑变化报文后,在10秒内只会处理最开始收到的5个拓扑变化报文,对于后面收到的报文则会等10秒超时后再统一处理。

RSTP配置案例

在上述三台交换机上部署RSTP,以便消除网络中的二层环路。

通过配置实现:

  • SW1指定为根桥,SW2为备份根桥。
  • PC相连的端口不参与RSTP计算,将其设置为边缘端口。
  • 配置根保护和BPDU保护功能,实现对设备或链路的保护。

SW1开启RSTP功能并指定为根桥:

[SW1] stp mode rstp

[SW1] stp enable

[SW1] stp root primary

 

SW2开启RSTP功能并指定备份根桥:

[SW2] stp mode rstp

[SW2] stp enable

[SW2] stp root secondary

 

SW3开启RSTP功能:

[SW3] stp mode rstp

[SW3] stp enable

 

SW3开启边缘端口:

[SW3-Ethernet0/0/1] stp edged-port enable

 

SW1开启跟保护功能:

[SW1-GigabitEthernet0/0/1] stp root-protection

[SW1-GigabitEthernet0/0/2] stp root-protection

 

SW3开启BPDU保护功能:

[SW3] stp bpdu-protection


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部