介绍

802.1d 生成树(STP)标准设计时,认为网络失效后能够在1分钟左右恢复,这样的性能是足够的。随着三层交换引入局域网环境,桥接开始与路由解决方案竞争,后者的开放最短路由协议(OSPF)和增强的内部网关路由协议(EIGRP)能在更短的时间提供备选的路径。
思科引入了Uplink FastBackbone FastPort Fast等功能来增强原始的802.1D标准以缩短桥接网络的收敛时间,但这些机制的不足之处在于它们是私有的,并且需要额外的配置。
快速生成树协议(RSTPIEEE802.1w)可以看作是802.1D标准的发展而不是革命。802.1D的术语基本上保持相同,大部分参数也没有改变,这样熟悉802.1D的用户就能够快速的配置新协议。在大多数情况下,不经任何配置RSTP的性能优于思科的私有扩展。802.1w能够基于端口退回802.1D以便与早期的桥设备互通,但这会失去它所引入的好处。
新版的802.1D标准,IEEE802.1D-2004,合并了IEEE802.1t-2001 IEEE802.1w标准。
本文提供了RSTP对先前的802.1D标准增强的内容。

Catalyst 交换机对RSTP的支持

下表总结了Catalyst交换机对RSTP的支持和所需软件的最低版本。
Catalyst Platform
MST w/ RSTP
RPVST+ (PVRST+)
Catalyst 2900 XL / 3500 XL
Not available.
Not available.
Catalyst 2940
12.1(20)EA2
12.1(20)EA2
Catalyst 2950/2955/3550
12.1(9)EA1
12.1(13)EA1
Catalyst 2970/3750
12.1(14)EA1
12.1(14)EA1
Catalyst 3560
12.1(19)EA1
12.1(19)EA1
Catalyst 3750 Metro
12.1(14)AX
12.1(14)AX
Catalyst 2948G-L3/4908G-L3
Not available.
Not available.
Catalyst 4000/2948G/2980G (CatOS)
7.1
7.5
Catalyst 4000/4500 (IOS)
12.1(12c)EW
12.1(19)EW
Catalyst 5000/5500
Not available.
Not available.
Catalyst 6000/6500
7.1
7.5
Catalyst 6000/6500 (IOS)
12.1(11b)EX, 12.1(13)E, 12.2(14)SX
12.1(13)E
Catalyst 8500
Not available.
Not available.

新的端口状态和端口角色

802.1D定义了四个不同的端口状态:
l         Listening,
l         Learning,
l         Blocking
l         Forwarding
参见下面的表格以获得更多信息。
这些端口的状态,无论对于阻塞或转发流量,还是它在活动拓扑中的角色(Root端口,Desgnated端口等)来说,都是混杂的。比如,从操作的观点来看,BlockingListening状态的端口没有区别,它们都丢弃帧,也不学习MAC地址。真正的不同在于生成树给予它们的角色。我们可以安全的确定,Listening状态是Designated端口或Root端口在转变成Forwarding状态的过程中。不幸的是,一旦成为Forwarding状态,我们无法从端口状态推断该端口是Root还是Designated角色。这一点说明这个基于状态的术语的失败。RSTP通过分离端口的角色和状态来陈述这个主题。

端口状态(Port State

RSTP中只留下了三个端口状态,它们对应着三个可能的操作状态。802.1D中的Disabled, Blocking Listening状态在802.1w中合并为同一个Discarding状态。
STP (802.1D) 端口状态
RSTP (802.1w)端口状态
端口包括在活动拓扑中?
端口学习MAC地址?
Disabled
Discarding
No
No
Blocking
Discarding
No
No
Listening
Discarding
Yes
No
Learning
Learning
Yes
Yes
Forwarding
Forwarding
Yes
Yes

端口角色(Port Roles

现在,角色成为赋予端口的一个变量。root端口和Designated端口这两种角色仍然保留,然而Blocking端口角色被分成了BackupAlternate角色。生成树算法(STA)根据桥协议数据单元(BPDUs)决定端口角色。简单起见,关于BPDU需要记住,总有一个方法可以用来比较它们并决定哪一个是最优的,这是基于存于BPDU中的变量来得到的,偶尔也存在接收它们的端口上。考虑到这种情况,以下的段落用实践的方式来解释端口角色。
Root端口角色
在桥设备上接收最优BPDU的端口是Root端口。它是按照术语路径开销path cost)来计算的距离根网桥最近的端口。生成树算法(STA)在整个桥接网络中选择一个根桥,根网桥发送的BPDU比其他桥设备更有用。根网桥是在桥接网络中唯一没有Root端口的设备,所有其他的网桥都至少在一个端口上接收BPDU
Designated 端口角色
如果一个端口在向它所连接的网段上发送最优BPDU,该端口就是一个Designated端口。802.1D桥设备把不同的段(segments),比如以太网段,连接在一起来产生一个桥接域。在一给定的段中,只能有一条通往根桥的路径。如果有两条的话,网络中就会有桥接环路。连在同一段的所有桥设备侦听每个BPDU,并一致同意发送最好BPDU的网桥作为该段的指定网桥,该网桥的相应端口就是Desinated端口。
AlternateBackup端口角色
有两个端口角色对应于802.1DBlocking状态。阻塞的端口被定义为非DesignatedRoot的端口。阻塞的端口接收到的BPDU优于其发送的BPDU。记住,一个端口绝对需要接收BPUD以便保持阻塞。为此,RSTP引入了两个角色。
这种区别其实在802.1D中已经做了区分,这也正是思科UplinkFast功能的本质。基本原理在于Alternate端口提供了一个到根网桥的备选路径,因此如果Root端口失效可以替代Root端口。当然,Backup端口提供了到达同段网络的备选路径,但不能保证到根网桥的备用连接。因此,它不包括在Uplink的组中。
同样,RSTP用和802.1D同样的标准来计算生成树最终的拓扑,网桥和端口优先级的使用也没有丝毫改变,在思科的实现中,Discarding状态被称作BlockingCatOS release 7.1及其后版本仍然显示ListeningLearning状态,这就比IEEE标准提供了更多的有关端口的信息。然而,这新功能会使协议定义的端口角色和它当前状态存在不一致的情况。比如,现在一个端口同时既是Designated又是Blocking是完全合法的,然而,这种情况只发生在很短的时间内,只是表示该端口正在向Designated forwarding状态转变。

快速转变为Forwarding状态

快速转变是802.1w引入的最重要的功能。先前的STA(快速生成树算法)在把一个端口转变成Forwarding状态前,只是被动的等待网络收敛。要想获得较快的收敛只能调整保守的默认参数(Forward DelayMax_age定时器),并往往造成网络的稳定性问题。新的快速STP能够主动的确定端口能够安全的转变成Forwarding状态,而无需依赖任何定时器。现在,在RSTP兼容的设备中有了一个真正的反馈机制。为了在端口上获得快速收敛,协议依靠两个新的变量:边缘端口(edge port)和链路类型(link type)。

边缘端口

边缘端口的概念思科生成树用户早已熟知,因为它和PortFast功能紧密相关。在网络中,所有和终端用户直连的端口不会产生环路。因此,边缘端口可以直接转变为Forwarding状态,而略去ListeningLearning阶段。当链路断开或连上时,边缘端口和使能了PortFast的端口都不会引起拓扑改变。与PortFast不同,边缘端口一旦收到一个BPDU,它就会立即失去边缘端口的属性而称为一个正常的生成树端口。从这一点来看,边缘端口有一个用户配置值和一个操作值。思科在实现中保留了PortFast关键字用于边缘端口的配置,这使用户易于转变到RSTP

链路类型

RSTP只能在边缘端口和点对点链路上实现快速的转换为Forwarding状态。链路类型是从端口的双工模式(duplex mode)自动获取的。默认时,操作在全双工模式的端口被认为是点对点的,而操作在半双工模式的端口被认为是共享端口。这自动设置的链路类型能被显式的配置所覆盖。在当今的交换网络中,大多数的链路都是工作在全双工模式,RSTP会认为它们是点对点链路。因此,它们可以快速的转换为Forwarding状态。