新的拓扑改变机制
当802.1D网桥检测到了拓扑改变,它会用一个可靠的机制来首先通知根网桥。如下图所示:
T处产生了拓扑改变。第一步,一个TCN向上发送给根桥。 第二步,根桥广播TC <最大老化时间+转发延时>时间
一旦根网桥得知网络拓扑有改变,它会在它所发出的BPDU中设置TC标志,这会传播给网络中的所有网桥。当一个网桥收到一个设置了TC标志位的BPDU,它会把它的桥转发表(bridge-table)的老化时间减少到转发延时的时间。这可以相对快速的清除旧信息,参见Understanding Spanning-Tree Protocol Topology Changes 以获得有关这一过程的更多信息。在RSTP中,这一机制发生了很大改进,无论拓扑改变过程的探测还是其在网络中的传播。
拓扑改变的探测
在RSTP中,仅仅非边缘端口转变为Forwarding状态会引起拓扑改变。这和802.1D不同,一个连接的断开不再被认为是拓扑改变(这就是说,一个端口转变为Blocking不再设置TC标志)。当一个RSTP网桥检测到拓扑改变: ?
如果必要,它会启动一个TC等待定时器(TC while timer),定时器的长度等于它所有非
边缘Designated端口和Root端口的hello-time的两倍。
? 它会刷新所有和这些端口相关的MAC地址。
注:只要端口运行TC等待定时器,从这个端口发送出去的BPDU都会设置TC标志位。当TC等待定时器激活时,Root端口也会发送BPDU。
拓扑改变的传播
当网桥从邻接的网桥收到设置了TC位的BPDU,它会:
? 它会清除它所有端口上学到的MAC地址,除了收到拓扑改变的那个端口。 ? 它会启动一个TC等待定时器,并在它所有的Designated和Root端口发送带有TC标志
的BPDU(RSTP不再用特定的TCN BPDU,除非需要通知一个早期的网桥)。 这样,TCN快速的洪泛到整个网络。现在,TC传播成为一个一步的过程。事实上,是拓扑改变的发起者来洪泛该信息,不像在802.1D中,仅仅根网桥可以洪泛拓扑改变。这就不再需要等待通知根网桥,再在网络中维持<最大老化时间+转发延时>秒的拓扑改变状态。
TC产生者直接洪泛该信息到整个网络
仅在几秒之内,或几倍的Hello-time,整个网络中设备的CAM表中的大部分条目就会刷新。这个方法会引起更多的临时洪泛,但另一方面,它清除了潜在的会影响快速收敛的过时信息。
与802.1D兼容
RSTP可以和早前的STP协议共同工作。不过,需要指出的是当与早期的网桥互操作时,802.1w会失去其固有的快速收敛的好处。
每一个端口都维护着一个变量,用于定义相应网段的协议。在端口激活时,一个3秒的迁移延时定时器也会同时启动。当定时器运行时,端口当前的STP或RSTP模式会被锁定。当迁移定时器过期时,端口会适应为它所收到的下一个BPDU的相应模式。如果端口是由于收到BPDU而改变操作模式,迁移延时会重新开始。这就限制了可能的频繁改变模式。
举例来说,假设上图中桥A和B在运行RSTP,桥A为该段的Designated端口。一个运行早期STP的桥C被引入该链路。由于802.1D网桥忽略RSTP BPDU并丢弃它们,C认为该段中没有其他的网桥,并开始发送它的次优的802.1D格式的BPDU。当桥A收到这些BPDU,最大两倍hello-time以后,该端口会改变为802.1D模式。因此,现在C可以理解桥A的BPDU,并接收A作为该段的指定网桥。
注意在特定情况下,如果移去桥C,桥A的那个端口仍然运行在STP模式,尽管它和它唯一的邻居B运行RSTP会更有效。这是因为桥A不知道桥C从网段中移去。对这种特殊(而很少见)的情况,需要用户手工干预以重启该端口的协议探测。
当一个端口运行在802.1D兼容模式时,它可以处理拓扑改变通知(TCN)BPDU和设置了TC或TCA标志位的BPDU。
结论
RSTP(IEEE 802.1w)生来就包括大部分思科对802.1D生成树的私有增强,比如BackboneFast, UplinkFast和PortFast。RSTP在正确配置的网络中可以获得快速的收敛,有时在几百毫秒左右。传统的802.1D定时器,比如转发延时和最大老化时间,仅仅用于备用。如果点对点和边缘端口被正确的识别和被管理员正确设定,就不再需要这些定时器。而且,如果不用与早期的网桥互通,这些定时器也不再需要。