RSTP技术细节
Proposal/Agreement机制,其目的是使一个指定端口尽快进入Forwarding状态。如图9-13所示,根桥S1和S2之间新添加了一条链路。在当前状态下,S2的另外几个端口p2是Alternate端口,p3是指定端口且处于Forwarding状态,p4是边缘端口。
- p0和p1两个端口马上都先成为指定端口,发送RST BPDU。
- S2的p1口收到更优的RST BPDU,马上意识到自己将成为根端口,而不是指定端口,停止发送RST BPDU。
- S1的p0进入Discarding状态,于是发送的RST BPDU中把proposal置1。
- S2收到根桥发送来的携带proposal的RST BPDU,开始将自己的所有端口进入sync变量置位。
- p2已经阻塞,状态不变;p4是边缘端口,不参与运算;所以只需要阻塞非边缘指定端口p3。
- p2和p3都进入Discarding状态之后,端口的synced变量置位,根端口p1的synced也置位,于是便向S1返回Agreement位置位的回应RST BPDU。该RST BPDU携带和刚才根桥发过来的BPDU一样的信息,除了Agreement位置位之外(Proposal位清零)。
- 当S1判断出这是对刚刚发出的Proposal的回应,于是端口p0马上进入Forwarding状态。
下游设备继续执行P/A协商过程。
事实上对于STP,指定端口的选择可以很快完成,主要的速度瓶颈在于:为了避免环路,必须等待足够长的时间,使全网的端口状态全部确定,也就是说必须要等待至少一个Forward Delay所有端口才能进行转发。而RSTP的主要目的就是消除这个瓶颈,通过阻塞自己的非根端口来保证不会出现环路。而使用P/A机制加快了上游端口转到Forwarding状态的速度。
P/A机制要求两台交换设备之间链路必须是点对点的全双工模式。一旦P/A协商不成功,指定端口的选择就需要等待两个Forward Delay,协商过程与STP一样。
RSTP拓扑变化处理
在RSTP中检测拓扑是否发生变化只有一个标准:一个非边缘端口迁移到Forwarding状态。
为本交换设备的所有非边缘指定端口启动一个TC While Timer,该计时器值是Hello Time的两倍。
在这个时间内,清空所有端口上学习到的MAC地址。
同时,由非边缘端口向外发送RST BPDU,其中TC置位。一旦TC While Timer超时,则停止发送RST BPDU。
其他交换设备接收到RST BPDU后,清空所有端口学习到MAC地址,除了收到RST BPDU的端口。然后也为自己所有的非边缘指定端口和根端口启动TC While Timer,重复上述过程。
如此,网络中就会产生RST BPDU的泛洪。
RSTP与STP的互操作
RSTP可以和STP互操作,但是此时会丧失快速收敛等RSTP优势。
当一个网段里既有运行STP的交换设备又有运行RSTP的交换设备,STP交换设备会忽略RSTP BPDU。运行RSTP的交换设备在某端口上接收到运行STP的交换设备发出的配置BPDU,在两个Hello Time时间之后,便把自己的端口转换到STP工作模式,发送配置BPDU,从而实现了互操作。
在华为技术有限公司的数据通信设备上可以配置运行STP的交换设备被撤离网络后,运行RSTP的交换设备可迁移回到RSTP工作模式。