为什么要使用RSTP及RSTP简介

 在上一篇文章中了解了STP的运行原理,当STP网络中的拓扑发生变化时,交换机端口从阻塞状态变化到转发状态,需要等待的时间是30-50秒,最短为2的Forward delay time,最长为Max-age time加上两倍的Forward delay time时间,这个时间对于现在高速发达的网络来说是不能接受的,如何改进STP中这种时间长的缺点呢? 那就运用到了RSTP(快速生成树协议)

RSTP简介

 RSTP又叫快速生成树协议,它是IEEE802.1w,改进了STP,缩短了网络的收敛时间,RSTP的收敛时间最快可以缩短1s之内。RSTP的算法和STP基本一致。

RSTP端口角色

 在根端口和指定端口的基础上增加了两个端口:

 1.替代端口: 作为根端口的备份端口,该类端口为当前根端口到根网桥提供一条替代路径

 2. 备份端口: 作为指定端口的备份端口,该类端口为指定端口到达生成树叶提供一条备份路径。这个端口仅当两个端口在一个由一个点对点链路组成的环路上连接时,或者当交换机有两个或多个到达共享LAN网段的连接时可以存在。

 一个具有根端口或者指定角色的端口是包括在活跃拓扑结构中的,而一个具有交替或备份角色的端口是不在活跃拓扑结构之中的。

RSTP端口状态

 RSTP和STP所包含的端口状态比较

20130327104132185.png

 

从上图中可以看出,RSTP只有3种端口状态 : 丢弃、学习、转发。

 它把STP中的阻塞、侦听、禁用统一用一种状态(丢弃)来替代。这样端口可以直接跨过侦听状态进入转发状态,而不必等待侦听状态中的时间等待了。

RSTP快速过渡机制原理及RSTP与STP区别

 与STP相比,唯一不同的是RSTP解决了STP算法对任何端口只要从阻塞状态迁移到转发状态必须经过2倍的 Forward delay(包括侦听到学习的等待时间和由学习到转发的等待时间)时间的缺点。相对于STP,RSTP有了如下的几点改进,也是RSTP实现快速收敛的原理。

RSTP之所以比STP快速收敛时间,主要体现在如下3个方面:

1.BPDU报文的发送

 STP中:根交换机从指定端口发送BPDU报文,非根交换机从根端口接受BPDU。如果非根交换机没有从根端口收到BPDU报文,也不会自己发送BPDU报文,这样网络中某交换机没有收到BPDU报文时,它并不能确定是否与上游交换机之间的链路发生了故障。

 RSTP中:根交换机每隔HelloTime时间发送BPDU,而对于非根交换机而言,即使没有收到BPDU报文,自己也会每隔Hello Time指定的时间(默认2s)发送包含自身信息的BPDU报文。那么这样对于下游交换机来说,如果指定端口在3个连续的Hello Time时间内没有收到来自根交换机发送的BPDU时,那么交换机会认为和上游交换机的链路出现故障,并进行老化处理。而STP中则是需要等待BPDU的老化时间20s,所以相比之下,RSTP发现链路故障所需要的时间更短。

2.边缘端口和链路类型

边缘端口:边缘端口是直接连接终端站点的网桥端口,如果在一个RSTP交换机上通过使用spanning-tree portfast接口配置命令把一个端口配置为边缘端口,则这个边缘端口会立即转变为转发状态。也就是说对于直接连接主机的端口(边缘端口)直接跳过了侦听和学习状态而进入到转发状态。也就不用等待侦听和学习状态的时间了。这样就实现了快速收敛。

链路类型:在RSTP中,链路分为点到点链路和共享式链路。

 点到点链路: 端口工作在全双工模式下,一般认为是点到点链路,可以通过使用spanning-tree link-type接口配置命令进行默认双工设置

 如果通过一个点对点链路把一个端口与另一个端口连接起来,并且本地端口成 

 为指定端口,则该端口将使用“建议-同意握手”机制与其他端口进行协商, 

 RSTP交换机上的指定端口能够快速过渡到转发状态。而不需要等待两倍的转

 发延迟时间。如下图所示:

20130327104134764.png

 

 如上图所示:在图1中,SA是通过一个点对点链路与SB连接的,端口处于阻塞状态。假设SA的优先权高于SB,所以SA成为根桥,SA通过指定端口发送一个建议消息(一个配置有建议标记设置的BPDU)到SB,建议由它自己作为指定交换机。

 在SB收到这条建议消息后,就会选举这条建议消息的端口作为它的新根端口(如图2),强迫所有非边缘端口置于阻塞状态,并通过这个新的根端口发送一个同意消息。

 SA接收到SB发来的同意消息后,立即转变连接的两个端口为转发状态。这个样因为SB阻止了它上面的所有非边缘端口,在SA和SB之间就成了一条点对点链路。这样在网络中就不会形成环路。

 共享式链路:端口工作砸半双工模式先,一般认为是共享式链路

 如果是共享式链路,端口过渡到转发状态只能用STP中的办法,经历侦听和学习,等待延迟时间。

3.替代端口和备份端口

 如果根端口和指定端口失效,替代端口和备份端口会替代他们直接进入转发状态

总结:RSTP实现快速收敛,不论是从哪一方面,大多都是一个原理:就是让端口的状态从阻塞直接过渡到转发状态,而不必经历侦听和学习状态,也就不必等待2倍的时间了。

 这样是与STP的区别

 

RSTP拓扑变更机制

 在STP中:在STP的讲解中,我们已经说过了,网络拓扑发生变化时,交换机向根桥方向发送TCN BPDU,然后根桥发送TC,收到TC BPDU报文的非根交换机将MAC地址表老化时间缩短,用来更好的学习新的MAC地址

  在RSTP中: 报文只有TC BPDU报文,当网络拓扑发生变化时,交换机向除边缘端口外(边缘端口不参与RSTP运算)的所有端口发送TC BPUD,同时清除本交换机上除边缘端口之外的所有端口上学习到的MAC地址,然后再向其他交换机发送TC BPDU,通过这种方式,RSTP能够很快的将拓扑变更通知扩散到整个网络中,从而实现了快速收敛。

RSTP兼容性

  RSTP协议可以与STP协议完全兼容,RSTP协议会根据收到的BPDU版本号来判断与之相连的网桥是支持STP协议还是支持RSTP协议,如果是与STP网桥互连就按照STP协议的操作方式运行。

STP/RSTP的配置实例

 

20130327104135301.png

 

步骤1 交换机A的基本配置 

Switch>en 

Switch#configure terminal 

Switch(config)#hostname SwitchA 

SwitchA(config)#vlan 10 

SwitchA(config-vlan)#name slaes 

SwitchA(config-vlan)#exit 

SwitchA(config)#interface fastEthernet 0/3 

SwitchA(config-if)#switchport access vlan 10 

SwitchA(config-if)#exit 

SwitchA(config)#interface range fastEthernet 0/1-2 

SwitchA(config-if-range)#switchport mode trunk 

SwitchA(config-if-range)#^Z 

步骤2 交换机B的基本配置 

Switch>en 

Switch#configure terminal 

Switch(config)#hostname SwitchB 

SwitchB(config)#vlan 10 

SwitchB(config-vlan)#name slaes 

SwitchB(config-vlan)#exit 

SwitchB(config)#interface fastEthernet 0/3 

SwitchB(config-if)#switchport access vlan 10 

SwitchB(config-if)#exit 

SwitchB(config)#interface range fastEthernet 0/1-2 

SwitchB(config-if-range)#switchport mode trunk 

SwitchB(config-if-range)#^Z 

步骤3 配置快速生成树协议 

SwitchA#configure terminal !进入全局配置模式 

SwitchA(config)#spanning-tree !开启生成树协议 

SwitchA(config)#spanning-tree mode rstp 

                 !指定生成树协议类型为RSTP 

                  

SwitchB#configure terminal !进入全局配置模式 

SwitchB(config)#spanning-tree !开启生成树协议 

SwitchB(config)#spanning-tree mode rstp 

                    !指定生成树协议类型为RSTP 

 

验证测试:验证快速生成树协议已经开启 

 

SwitchA#show spanning-tree !查看生成树的配置信 

 

StpVersion : RSTP !生成树协议的版本 

SysStpStatus : Enabled !生成树协议的运行状态,disable为关闭状态 

BaseNumPorts : 24 

MaxAge : 20 

HelloTime : 2 

ForwardDelay : 15 

BridgeMaxAge : 20 

BridgeHelloTime : 2 

BridgeForwardDelay : 15 

MaxHops : 20 

TxHoldCount : 3 

PathCostMethod : Long 

BPDUGuard : Disabled 

BPDUFilter : Disabled 

BridgeAddr : 00d0.f8bc.9835 

Priority : 32768 !查看交换机的优先级 

TimeSinceTopologyChange : 0d:0h:1m:53s 

TopologyChanges : 0 

DesignatedRoot : 800000D0F8BC9835 

RootCost : 0 !交换机到达根交换机的开销,0代表交换机为根 

RootPort : 0 !查看交换机上的根端口,0代表交换机为根 

 

 

SwitchB#show spanning-tree 

                    !查看交换机B生成树的配置信息 

 

StpVersion : RSTP !生成树协议的版本 

SysStpStatus : Enabled !生成树协议的运行状态,disable为关闭状态 

 

BaseNumPorts : 24 

MaxAge : 20 

HelloTime : 2 

ForwardDelay : 15 

BridgeMaxAge : 20 

BridgeHelloTime : 2 

BridgeForwardDelay : 15 

MaxHops : 20 

TxHoldCount : 3 

PathCostMethod : Long 

BPDUGuard : Disabled 

BPDUFilter : Disabled 

BridgeAddr : 00d0.f8bf.fbbb 

Priority : 32768 !查看交换机的优先级 

TimeSinceTopologyChange : 0d:0h:2m:34s 

TopologyChanges : 0 

DesignatedRoot : 800000D0F8BC9835 

RootCost : 200000 !交换机到达根交换机的开销 

RootPort : Fa0/1 !查看交换机上的根端口 

注:通过查看两台交换机的生成树信息发现,SwitchA为根交换机,SwitchB Fa0/1为根端口。