前言

STP协议虽然能够解决环路问题,但是由于网络拓扑收敛较慢,影响了用户通信质量,而且如果网络中的拓扑结构频繁变化,网络也会随之频繁失去连通性,从而导致用户通信频繁中断,这也是用户无法忍受的。由于STP的不足,IEEE于2001年发布的802.1w标准定义了RSTP。RSTP在STP基础上进行了诸多改进优化,使得协议更加清晰、规范,同时也实现了二层网络拓扑的快速收敛。

RSTP的BPDU

RSTP的原理
BPDU报文被封装在以太网数据帧中,目的MAC是组播MAC:01-80-C2-00-00-00,Length/Type字段为MAC数据长度,后面是LLC头,IEEE为STP保留了DSAP(Destination Service Access Point)和SSAP(Source Service Access Point)为0x42的值,UI为0x03,LLC(Logical Link Control)之后是BPDU报文头。
RSTP的原理

RSTP的端口角色

角色 描述
Root 根端口就是去往根桥路径开销最小的端口,根端口负责向根桥方向转发数据,这个端口的选择标准是依据根路径开销判定的。
Designated 指定端口负责向下游设备转发数据,指定端口提供了根桥到达下游设备的最优路径。
Backup Backup端口作为指定端口的备份,提供了另外一条从根桥到非根桥的备份链路。
Alternate Alternate端口作为根端口的备份端口,提供了从指定桥到根桥的另一条备份路径。

STP与RSTP端口状态对比

STP端口状态 RSTP端口状态 端口在拓扑中的角色
Forwarding Forwarding 包括根端口、指定端口
Learning Learning 包括根端口、指定端口
Listening Discarding 包括根端口、指定端口
Blocking Discarding 包括Alternate端口、Backup端口
Disabled Discarding 包括Disable

RSTP收敛过程

RSTP的原理
当设备启动时,每个设备都认为自己是根桥,且端口都是指定端口都处于Discarding状态,因此他们会互相发送配置BPDU,并且BPDU中的P置位发起P/A协商。SWA收到SWB的P置位BPDU会查看桥ID,发现自己的比对方优,因此SWA不会回应SWB的BPDU,而SWB收到比自己BPDU优的BPDU则会进入同步状态,同步状态下将所有的下游接口设置为discarding状态,除了Alternate和边缘端口,这样做是为了防止临时的环路产生。当同步执行完后,SWB会将收到更优BPDU的端口转变为Root端口,并迅速进入forwarding状态,然后发送A置位的BPDU给SWA,SWA收到A置位的BPDU后,立刻将制定端口转为forwarding状态,这样SWA和SWB直接链路就通了,而不必像STP一样等待30S的端口转变时延。
RSTP的原理
同理SWA和SWC直接也会执行P/A的协商,也同样SWC发现SWA的BPDU比自己的优,就执行同步状态,而后改变端口角色并迅速进入forwarding状态,而后发送A置位BPDU给SWA,SWA收到A置位BPDU后将指定端口转为forwarding状态。SWA和SWC直接也被拉通。SWB和SWC直接同样也会进行P/A的协商,但是不同的是,SWB发送P置位BPDU给SWC,SWC收到后虽然比自己的要优但是我从其他接口学到的BPDU同样比SWB的优,因此我不会对SWB进行回应,同理,SWB收到SWC的BPDU,但是SWB本身就比SWC的BPDU要优,因此SWB也不会对SWC进行回应,这时候他们之间就是正常STP选举指定端口,然后经过2个forwarding delay来进行缓慢收敛。不过这并不会影响到网络的数据转发,因为SWB和SWC直接本来就有一个端口要被阻塞,因此慢收敛并没有什么影响。

RSTP对STP的改进

端口角色与端口状态的改变

RSTP在STP的基础上新增了Alternate Port和Backup Port,作为根端口和指定端口的备份,一旦设备上根端口出现了故障设备会查看AP端口对端端口角色,如果对端端口为指定端口,则设备上的AP端口会转变为RP端口并迅速进入forwarding状态,而不必等待30秒状态改变时间,会迅速转变为根端口进行数据转发。BP端口作为指定端口的备份,提供了另外一条从根节点到达叶子节点的无环路备份路径。
RSTP在STP基础上将disable,blocking和listening和为一个discarding状态,因为从用户角度来讲,Listening、Learning和Blocking状态并没有区别,都同样不转发用户流量。

BPDU报文的改变

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

BPDU超时判断的改变

在STP中判断BPDU超时即在MAX AGE默认20s内未收到对端发送的BPDU则认为对端设备不存在,而在RSTP中仅需要等待3个HELLO TIME默认6s时间即可。

配置BPDU的处理发生变化的改变

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

快速收敛机制的改变

P/A机制

首先RSTP在STP基础上新增了P/A机制,用做快速拉通指定端口与根端口之间的链路,或者说快速让指定端口进入forwarding状态。

AP端口备份

AP端口作为RP端口的备份,在RP端口故障时可以在无环的环境下迅速成为RP并进入forwarding状态,这也加快了RSTP的收敛速度。

链路故障处理

RSTP的原理
如上图SWB到达根桥的链路发生故障,SWB察觉到后向SWC发起P置位BPDU希望重新选举根桥,SWC收到一个次等BPDU会将根桥的BPDU发给SWB并将端口角色改为DP,之后他们之间进行P/A协商,由于SWB优先级小所以SWB将自己的接口改为DR,并发送A置位BPDU给SWC,SWC迅速进入forwarding状态,业务恢复正常。

边缘端口

RSTP的原理
RSTP在STP基础上新增了边缘端口的机制,边缘端口配置在交换机与用户设备相连的接口,配置成边缘端口后将不参与STP计算,且端口状态直接从discarding转为forwarding状态,而STP中用户加入网络则需要经历30S的时延。一旦边缘端口收到BPDU后就会成为普通的STP端口并重新进行STP计算,因此我们一般会在配置边缘端口后配置边缘端口的保护功能。

拓扑变化机制处理的改变

STP判断拓扑发生变化:端口状态从disable变为forwarding和从forwarding变为了disable。而RSTP判断拓扑发生变化:一个非边缘端口迁移到Forwarding状态。
在STP中察觉到拓扑发生变化后,发送TCN BPDU给上游设备,上游设备收到下游设备发来的TCN BPDU报文后,只有指定端口处理TCN BPDU报文。其它端口也有可能收到TCN BPDU报文,但不会处理。上游设备收到后会回复TCA置位的TCN BPDU,然后继续复制一份TCN发给上游一直到根桥,根桥收到TCN BPDU后会向下游泛洪TC置位的TCN BPDU,下游收到TC置位的报文后会立刻清空自己的MAC地址表。
RSTP做出的改变:为本交换设备的所有非边缘指定端口启动一个TC While Timer,该计时器值是Hello Time的两倍。在这个时间内,清空状态发生变化的端口上学习到的MAC地址。同时,由这些端口向外发送RST BPDU,其中TC(Topology Change)置位。一旦TC While Timer超时,则停止发送RST BPDU。其他交换设备接收到RST BPDU后,清空所有端口学习到MAC地址,除了收到RST BPDU的端口。然后也为自己所有的非边缘指定端口和根端口启动TC While Timer,重复上述过程。边缘端口DOWN掉并不会触发拓扑变更机制。

保护功能

BPDU保护

即边缘端口的保护功能,如果一个黑客连接上配置了边缘端口的交换机接口,并向端口发送BPDU,边缘端口收到BPDU后会变为正常的STP端口并参与STP计算,这时候网络拓扑发生改编,全网重新进行一次收敛。如果配置了BPDU保护功能后,边缘端口收到BPDU时会立即被关闭,关闭后可通过管理员手动重启,也可以配置自动重启。

根保护

黑客在运行了RSTP网络中接入一台新的设备并且设置桥优先级为最优,这时候现网中的根桥收到一个优先级比自己还优的BPDU会重新进行生成树计算选举新的根桥,这会导致整个网络 拓扑发生改变。如果在现网根桥中的指定端口上配置了根保护功能,一旦指定端口收到优先级比自己的高的BPDU则会进入discarding状态不转发数据,若一段时间内未收到更优的BPDU报文则会自动转为forwarding状态。

TC-BPDU泛洪保护

黑客连接上运行了RSTP的交换机后,频繁的发送TC-BPDU报文给交换机,交换机收到后会频繁的删除自己的接口MAC地址表项,给网络的稳定带来很大隐患。在交换机上配置TC-BPDU保护功能后交换机只会在单位时间内处理配置的次数TC报文,缺省单位时间为2秒,次数为3次。即交换机只在2S内处理3次TC报文,在2S内收到超过3次的TC报文不作处理,2S过后在进行3次处理,这样可以避免频繁的删除MAC地址表项。

环路保护

在运行RSTP协议的网络中,根端口和其他阻塞端口状态是依靠不断接收来自上游设备的RST BPDU维持。当由于链路拥塞或者单向链路故障导致这些端口收不到来自上游设备的RST BPDU时,此时设备会重新选择根端口。原先的根端口会转变为指定端口,而原先的阻塞端口会迁移到转发状态,从而造成交换网络中可能产生环路。在启动了环路保护功能后,如果根端口或Alternate端口长时间收不到来自上游的RST BPDU时,则向网管发出通知信息(如果是根端口则进入Discarding状态)。而阻塞端口则会一直保持在阻塞状态,不转发报文,从而不会在网络中形成环路。直到根端口或Alternate端口收到RST BPDU,端口状态才恢复正常到Forwarding状态。

相关文章:

  • 2021-10-21
  • 2022-12-23
  • 2021-05-06
  • 2021-04-09
  • 2021-05-11
  • 2022-12-23
  • 2022-01-24
猜你喜欢
  • 2021-05-23
  • 2022-12-23
  • 2021-07-07
  • 2021-11-19
  • 2021-08-30
  • 2022-01-07
  • 2021-11-03
相关资源
相似解决方案