生成树协议RSTP
生成树协议RSTP
1.1 RSTP引入
STP可以消除二层网络中的环路并为网络提供冗余性,但是STP的收敛时间最长需要50s,相对于三层协议OSPF或VRRP秒级的收敛速度,STP无疑成为影响网络性能的一个瓶颈。为解决STP收敛速度慢的问题,IEEE在STP协议的基础之上进行了改进,推出了快速生成树版本——RSTP。
RSTP(Rapid Spanning Tree Protocol,快速生成树协议)的IEEE802.1w,其消除环路的基本思想和STP保持一致。RSTP具备了STP的所有功能,支持RSTP的网桥可以和支持STP的网桥一同运行。
和STP相比,RSTP的改进之处包括如下内容。
(1)RSTP减少了端口的状态
(2)RSTP增加了端口的角色
(3)RSTP配置BPDU的格式和发送方式有所改变。
(4)当网络拓扑发生变化时,RSTP的处理方式不同,可以实现更为快速的收敛。
- RSTP的端口状态
在STP中端口状态和端口运行方式并没有细致的区分,例如从端口运行角度看,端口处于Blocking状态和处于Listening状态没有任何区别
如表1-1所示,RSTP将端口状态分为Discarding、Learning和Forwarding状态。STP中的Disabled、Blocking和Listening状态在RSTP都对应为Discarding状态。
STP端口状态 | RSTP端口状态 | 是否发送BPDU | 是否进行MAC地址学习 | 是否收发数据 |
---|---|---|---|---|
Disabled | Discarding | 否 | 否 | 否 |
Blocking | Discarding | 否 | 否 | 否 |
Listening | Discarding | 是 | 否 | 否 |
Learning | Lerarning | 是 | 是 | 是 |
Forwarding | Forwarding | 是 | 是 | 是 |
进行RSTP计算时,端口会在Discarding状态完成角色的确定,当端口确定为根端口和指定端口后,经过Forward Delay端口会进入Learning状态;当端口确定为Alternate端口后,端口会维持在Discarding状态。
处于Learning状态的端口其处理方式和STP相同,此状态期间开始学习MAC地址并在Forward Delay后进入Forwarding状态开始收发数据。
在实际运行中,由于RSTP提供了快速收敛机制,端口从Discarding状态转换到Forwading状态的时间通常远小于30s。
- RSTP的端口角色
RSTP中根端口和指定端口角色的定义和STP相同。每一个非根桥都有一个根端口,从该端口出发到达根桥的路径,是本网桥到达根桥的所有路径中最优的。每一个Physical Segment都会选举一个指定桥,指定桥在Physical Segment上的端口即本Physical Segment的指定端口,指定端口拥有该Physical Segment上最优的配置BPDU。
RSTP将STP中的Alternate端口角色进一步划分为两种,其中一种角色为Backup,另一种角色名称仍为Alternate。具体划分原则如下:
(1)当阻塞端口收到更优的配置BPDU来自于其他网桥时,该端口为Alternate端口。
(2)当阻塞端口收到更优的配置BPDU来自于本网桥时,该端口为Backup端口。
Alternate端口为网桥提供了一条到达根桥的备用路径,用于为根端口做备份;Backup端口为网桥提供了到达同一个Physical Segment的冗余路径,用于为指定端口做备份。
- RSTP的BPDU格式及发送方式
RST BPDU格式和STP的BPDU格式非常相似,仅在如下几个字段有所不同。
(1)BPDU协议版本号为0x02,表示为RSTP协议。
(2)BPDU类型变为0x02,表示为RST BPDU。
(3)RSTP使用了Flags字段的全部8位。
(4)RSTP在BPDU的最后增加了Versionl Length字段,该字段值位0x00,表示本BPDU中不包含Versionl内容。
在STP中,通常情况下只有根桥可以产生配置BPDU,非根桥从根端口接收配置BPDU并更新为自己的配置BPDU,然后从指定端口发出,非根桥不会主动产生并发送配置BPDU。
RSTP对BPDU的发送方式做了改进,RSTP中网桥可以自行从指定端口发送RST BPDU,不需要等待来自根桥的RST BPDU,BPDU的发送周期为Hello Time。
由于RSTP中网桥可以自行从指定端口发送RST BPDU,所以在网桥之间可以提供一种保活机制,即在一定时间内网桥没有收到对端网桥发送的RST BPDU,即可认为和对端网桥中断。
STP不支持这种保活机制,因为STP中配置BPDU仅由根桥产生,其他网桥仅对配置BPDU进行中继,传递路径上的任何故障都可能导致接收者无法收到配置BPDU,所以网桥在一段时间内收不到配置BPDU不能判断为与对端网桥连接中断。
RSTP规定,若在3个连续的Hello Time时间内网桥没有收到对端指定桥发送的RST BPDU,则网桥端口保存的RST BPDU老化,认为与对端网桥连接中断。新的老化机制大大加快了拓扑变化的感知,从而可以实现快速收敛。
在STP中只有在指定端口收到低优先级的配置BPDU时,才会立即回应。处于阻塞状态的端口不会对低优先级的配置BPDU做出响应。
在RSTP中,如果阻塞端口状态的端口收到低优先级的RST BPDU,也可以立即对其做出回应。
1.2 RSTP快速收敛
在STP中,为避免临时环路,端口从使能到进入转发状态需要等待默认30s的时间,如果想要缩短这个时间,只能通过手动方式将Forward Delay设置为较小的值。但是Forward Delay是由Hello Time和网络直径共同决定的一个参数,如果将Forward Delay设置太小,可能会导致临时环路的产生,影响网络的稳定性。
RSTP从根上进行了改进,定义了多种快速收敛机制,包括边缘端口机制、根端口快速切换机制、指定端口快速切换机制。其中,指定端口快速切换机制也称为P/A机制。
-
边缘端口
当端口直接与用户终端相连,而没有连接到其他网桥或局域网网段上时,该端口即为边缘端口。
边缘端口连接的是终端,当网络拓扑变化时,边缘端口不会产生临时环路,所以边缘端口可以略过这两个Forward Delay的时间,直接进入Forwarding状态,无需任何延时。
由于网桥无法自动判断端口是否直接与终端相连,所以用户需要手动将与终端连接的端口配置为边缘端口。
-
根端口快速切换
RSTP定了了Alternate端口,为根端口做备份。当旧的根端口进入阻塞状态时,网桥会选择优先级最高的Alternate端口作为新的作为新的根端口,如果当前新根端口连接的对端网桥的指定端口处于Forwading状态,则新根端口可以立刻进入转发状态。
-
指定端口快速切换
当网络中增加新的链路或故障链路恢复时,链路两端必然有一个端口角色是指定端口,在STP中,该指定端口需要等待默认30s的时间才会进入Fowarding状态。
RSTP定义了Proposal/Agreement机制(P/A机制),指定端口可以通过与对端网桥进行一次握手,即可快速进入转发状态,期间不需要任何定时器。P/A机制可以实现网络拓扑的逐链路收敛,而不必像STP,需要被动等待30s的时间以确保全网实现收敛。
当新链路连接时,链路两端的端口初始都为指定端口并处于阻塞状态。当指定端口处于Discarding状态和Learning状态时,其所发送的RST BPDU中的Proposal位将被置位,端口角色位为11,表示端口为指定端口。收到Proposal置位的RST BPDU后,网桥会判断接收端口是否为根端口,如果是,网桥会启动同步过程。同步过程指网桥阻塞除边缘端口之外的所有端口,在本网桥层面消除环路产生的可能。
1.3 RSTP中的拓扑改变处理
在STP中,端口变为Forwarding状态,或从Forwarding状态到Blocking状态均会触发拓扑改变处理过程。和STP相比,RSTP优化了拓扑改变触发条件,其拓扑改变触发条件只有一个:非边缘端口转变为Forwording状态。在RSTP中,链路中断将不会直接触发拓扑改变处理过程。
当网桥由非边缘端口转变为Forwarding状态时,网桥会在两倍的Hello Time时间内向根端口以及其他所有指定端口发送TC置位的RST BPDU,同时会清除这些端口学习到的AMC地址。
当其他网桥收到TC置位的RST BPDU后,会清除接收TC报文的端口以及边缘端口之外的其余端口的MAC地址,并在两倍Hello Time时间内向指定端口和根端口发送TC置位的RST BPDU。
通过这种方式,拓扑改变消息会很快速泛洪到整个网络,而不必等待根桥来通知网桥网络拓扑发生了变化。
1.4 RSTP和STP的兼容
RSTP是STP的改进版本,可以支持STP的所有功能,也可以和STP兼容运行。当运行RSTP的网桥的端口连续3次接收到配置的BPDU时,网桥认为该端口和STP网桥相连,该端口将切换到STP协议运行。
切换到STP协议的RSTP端口将丧失快速收敛特性,即从阻塞端口转发需要等待默认30s的时间,建议当网络中出现STP和RSTP混用的情况时,将STP设备放在网络边缘,从而将影响范围降到最小。