计算机网络(十)——RSTP原理

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

快速生成树协议RSTP(Rapid Spanning-Tree Protocol)在STP基础上进行了改进,使用了Proposal/Agreement机制保证链路及时协商,从而有效避免收敛计时器在生成树收敛前超时。

P/A机制是RSTP网络中的一种拓扑收敛机制,P/A机制中同步的作用是避免临时环路的产生

RSTP的端口角色

RSTP通过分配端口角色和学习动态拓扑结构提供快速生成树收敛。

RSTP根据端口在活动拓扑中的作用,定义了5种端口角色,其中包括STP中的端口定义:阻塞端口(Disabled Port)、根端口(Root Port)、指定端口(Designated Port),以及为支持RSTP的快速特性规定新增的替代端口(Alternate Port)和备份端口(Backup Port)

  • 根端口(Root Port):STP原有的端口角色,是非根交换机去往根桥路径最优的端口,一个非根交换机上最多只有一个。
  • 指定端口(Designated Port):STP原有的端口角色,是交换机向所连网段转发配置BPDU的端口,每个网段有且只能有一个指定端口。一般情况下,根桥的每个端口都是指定端口。
  • 阻塞端口(Disabled Port):STP中原有有的端口角色。该类端口在生成树操作中没有担当任何角色,不参与RSTP运算。
  • 备份端口(Backup Port):RSTP特有的一种端口角色。该类端口为"指定端口"到达生成树叶提供一条备份路径。当一个交换机和一个共享媒介设备例如Hub建立两个或者多个连接时,可以使用Backup端口。同样,当交换机上两个或者多个端口和同一个LAN网段连接时,也可以使用Backup端口。
  • 替代端口(Alternate Port):RSTP特有的一种端口角色。该类端口作为根端口的备份端口,提供了从指定桥到根桥的另一条备份路径。

除了以上这五个端口角色,还有一类特殊的指定端口,位于网络边缘,被称为边缘端口

  • 边缘端口一般与用户终端设备直接连接,不与任何交换设备连接。
  • 边缘端口不接收配置BPDU报文,不参与RSTP运算,可以由Disabled状态直接转到Forwarding状态,且不经历时延,就像在端口上将STP禁用了一样。
  • 但是,一旦边缘端口收到配置BPDU报文,就丧失了边缘端口属性,成为普通STP端口,并重新进行生成树计算,从而引起网络震荡。

RSTP的端口状态

RSTP把原来STP的5种端口状态简化成了3种。

计算机网络(十)——RSTP原理

STP的Disabled、Blocking/Discarding、Listening端口状态在RSTP中集成到Discarding

1.Discarding状态,端口既不转发用户流量也不学习MAC地址。

2.Learning状态,端口不转发用户流量但是学习MAC地址。

3.Forwarding状态,端口既转发用户流量又学习MAC地址。

RST BPDU报文(对比BPDU)

计算机网络(十)——RSTP原理

除了部分参数不同,RSTP使用了类似STP的BPDU报文,即RST BPDU报文。

BPDU Type用来区分STP的BPDU报文和RST (Rapid Spanning Tree) BPDU报文。STP的配置BPDU报文的BPDU Type值为0(0x00),TCN BPDU报文的BPDU Type值为128 (0x80),RST BPDU报文的BPDU Type值为2 (0x02)。

STP的BPDU报文的Flags字段中只定义了拓扑变化TC(Topology Change)标志和拓扑变化确认TCA(Topology Change Acknowledgment)标志,其他字段保留。在RST BPDU报文的Flags字段里,还使用了其他字段。包括P/A进程字段和定义端口角色以及端口状态的字段。Forwarding,Learning与Port Role表示发出BPDU的端口的状态和角色。

计算机网络(十)——RSTP原理

  • STP中,当网络拓扑稳定后,根桥按照Hello Timer规定的时间间隔发送配置BPDU报文,其他非根桥设备在收到上游设备发送过来的配置BPDU报文后,才会触发发出配置BPDU报文,此方式使得STP协议计算复杂且缓慢。
  • RSTP对此进行了改进,即在拓扑稳定后,无论非根桥设备是否接收到根桥传来的配置BPDU报文,非根桥设备都会仍然按照Hello Timer规定的时间间隔发送配置BPDU,该行为完全由每台设备自主进行。

RSTP收敛过程-P/A进程

计算机网络(十)——RSTP原理

RSTP收敛遵循STP基本原理。网络初始化时,网络中所有的RSTP交换机都认为自己是“根桥”,并设置每个端口为指定端口。此时,端口为Discarding状态。

每个认为自己是“根桥”的交换机生成一个RST BPDU报文来协商指定网段的端口状态,此RST BPDU报文的Flags字段里面的Proposal位需要置位。当一个端口收到RST BPDU报文时,此端口会比较收到的RST BPDU报文和本地的RST BPDU报文。如果本地的RST BPDU报文优于接收的RST BPDU报文,则端口会丢弃接收的RST BPDU报文,并发送Proposal置位的本地RST BPDU报文来回复对端设备。

交换机使用同步机制来实现端口角色协商管理。当收到Proposal置位并且优先级高的BPDU报文时,接收交换机必须设置所有下游指定端口为Discarding状态。如果下游端口是Alternate端口或者边缘端口,则端口状态保持不变。本例说明了下游指定端口暂时迁移到Discarding状态的情形,因此,P/A进程中任何帧转发都将被阻止。

当确认下游指定端口迁移到Discarding状态后,设备发送RST BPDU报文回复上游交换机发送的Proposal消息。在此过程中,端口已经确认为根端口,因此RST BPDU报文Flags字段里面设置了Agreement标记位和根端口角色。

在P/A进程的最后阶段,上游交换机收到Agreement置位的RST BPDU报文后,指定端口立即从Discarding状态迁移为Forwarding状态。然后,下游网段开始使用同样的P/A进程协商端口角色。

链路故障/根桥失效

计算机网络(十)——RSTP原理

在STP中,当出现链路故障或根桥失效导致交换机收不到BPDU时,交换机需要等待Max Age时间后才能确认出现了故障。而在RSTP中,如果交换机的端口在连续3次Hello Timer规定的时间间隔内没有收到上游交换机发送的RST BPDU,便会确认本端口和对端端口的通信失败,从而需要重新进行RSTP的计算来确定交换机及端口角色。

RSTP拓扑变化处理

计算机网络(十)——RSTP原理

RSTP拓扑变化的处理类似于STP拓扑变化的处理,但也有些细微差别。

本例里面,SWC发生链路故障。SWA和SWC立即检测到链路故障并清除连接此链路的端口上的MAC地址表项。接下来SWC选举出新的根端口并立即进入Forwarding状态,因此触发SWC向外发送TC置位的BPDU报文(以下简称TC报文)。通知上游交换机清除所有其他端口上的MAC地址表项,除了接收到TC报文的端口。TC报文周期性地转发给邻居,在此周期内,所有相关接口上MAC地址表项将会被清除,重新学习MAC地址表项。图形里面红色X表示由于拓扑变化导致端口上的MAC地址表项被清除。

STP兼容

计算机网络(十)——RSTP原理

RSTP是可以与STP实现后向兼容的,但在实际中,并不推荐这样的做法,原因是RSTP会失去其快速收敛的优势,而STP慢速收敛的缺点会暴露出来。

当同一个网段里既有运行STP的交换机又有运行RSTP的交换机时,STP交换机会忽略接收到的RST BPDU,而RSTP交换机在某端口上接收到STP BPDU时,会等待两个Hello Time时间之后,把自己的端口转换到STP工作模式,此后便发送STP BPDU,这样就实现了兼容性操作。

配置命令

1.配置RSTP,即配置STP模式,使用命令:stp mode rstp。此命令必须在所有的参与快速生成树拓扑计算的交换机上进行配置,执行后交换机所有端口都工作RSTP模式。
2.验证配置,使用命令:display stp 。可显示Rstp配置的信息和参数。根据显示的信息可以确定交换机是否工作在RSTP模式。

3.配置边缘端口。

边缘端口的状态要么是Disabled,要么是Forwarding;终端上电工作后,它就直接由Disabled状态转到Forwarding状态,终端下电后,它就直接由Forwarding状态转到Disabled状态。交换机所有端口默认为非边缘端口。

  • stp edged-port enable命令用来配置交换机的某一个端口为边缘端口;
  • stp edged-port default命令用来配置交换机的所有端口为边缘端口。
  • stp edged-port disable命令用来将边缘端口的属性去掉,使之成为非边缘端口。它也是一个针对某一具体端口的命令。

4.根保护命令:[SWA-GigabitEthernet0/0/1]stp root-protection  

确保了根桥的指定端口不会因为一些网络问题而改变端口角色。根保护功能仅在指定端口生效,不能配置在边缘端口或者使能了环路保护功能的端口上。

5.BPDU保护命令:[SWC]stp bpdu-protection

使能BPDU保护功能后的交换机的边缘端口在收到BPDU报文时,会立即关闭该端口,并通知网络管理系统。被关闭的边缘端口可配置成自动恢复或管理员手动恢复。

6.环路保护命令:[SWC-GigabitEthernet0/0/1]stp loop-protection 

环路保护功能使能后,如果根端口不能收到上游交换机发送的BPDU报文,则向网管发出通知信息。根端口会被阻塞,阻塞端口仍然将保持阻塞状态,这样就避免了可能发生的网络环路。

7.显示端口的RSTP配置情况的命令:display stp interface <interface>。包括端口状态,端口优先级,端口开销,端口角色,是否为边缘端口等等。

根保护功能应对的情况:

根保护功能确保了根桥的指定端口不会因为一些网络问题而改变端口角色。

由于错误配置根交换机或网络中的恶意攻击,根交换机有可能会收到优先级更高的BPDU报文,使得根交换机变成非根交换机,从而引起网络拓扑结构的变动。这种不合法的拓扑变化,可能会导致原来应该通过高速链路的流量被牵引到低速链路上,造成网络拥塞。交换机提供了根保护功能来解决此问题。根保护功能通过维持指定端口角色从而保护根交换机。一旦启用了根保护功能的指定端口收到了优先级更高的BPDU报文时,端口会停止转发报文并且进入Listening状态。经过一段时间后,如果端口一直没有再收到优先级较高的BPDU报文,端口就会自动恢复到原来的状态。根保护功能仅在指定端口生效,不能配置在边缘端口或者使能了环路保护功能的端口上。

BPDU保护功能应对的情况:

正常情况下,边缘端口是不会收到BPDU的。但是,如果有人发送BPDU来进行恶意攻击时,边缘端口就会收到这些BPDU,并自动变为非边缘端口,且开始参与网络拓扑计算,从而会增加整个网络的计算工作量,并可能引起网络震荡。

为防止上述情况的发生,我们可以使用BPDU保护功能。使能BPDU保护功能后的交换机的边缘端口在收到BPDU报文时,会立即关闭该端口,并通知网络管理系统。被关闭的边缘端口可配置成自动恢复或管理员手动恢复。

如需使能BPDU保护功能,可在系统视图下执行stp bpdu-protection命令。

环路保护功能应对情况:

交换机通过从上游交换机持续收到BPDU报文来维护根端口和阻塞端口的状态。当由于链路拥塞或者单向链路故障时,交换机不能收到上游交换机发送的BPDU报文,交换机重新选择根端口。最初的根端口会变成指定端口,阻塞端口进入Forwarding状态,这就有可能导致网络环路。

交换机提供了环路保护功能来避免这种环路的产生。环路保护功能使能后,如果根端口不能收到上游交换机发送的BPDU报文,则向网管发出通知信息。根端口会被阻塞,阻塞端口仍然将保持阻塞状态,这样就避免了可能发生的网络环路。

如需使能环路保护功能,可在接口视图下执行stp loop-protection命令。

 

计算机网络(十)——RSTP原理

上一篇:微信小程序--功能区


下一篇: 元素