STP能识别四种不同的拓扑变化事件,
而RSTP只有当非边界端口从非转发状态变为转发状态才认为发生了拓扑变化事件
因为刚变为转发状态的端口可以为一些mac地址提供比之前更好的路径,CAM表需要更新。失去转发端口不再是拓扑变化事件起因,因为之前通过该端口学习到的一系列MAC绝对不再可达。
以前使用TCN BPDU将拓扑变化信息一跳一跳转发给根,然后使根交换机发送设置了TC位的BPDU。
而RSTP会立即泛洪设置了TC位的BPDU。更具体地说,在端口上检测到拓扑变化(即非边界端口转换为转发状态),或在端口上学习到拓扑变化(在根端口或指定端口上接收到设置了TC位的BPDU)的交换机会执行如下操作。
*在除了检测到或学习到拓扑变化的端口外,其余所有区域非边界指定端口和根端口上设置所谓的tcWhile计时器值,时间为Hello时间加1秒(旧版本的RSTP将这个值设置为Hello时间的2倍)。
*立即清除这些端口上学习到的MAC地址。
*每隔Hello秒数,在这些端口上发送设置了TC标志位的BPDU,直到tcWhile计时器超时。
这样一来,通过设置了TC标志位的BPDU的方式,在生成树中快速泛洪有关拓扑变化的信息,并且能够让交换机立即清除CAM表(除了检测到或学习到拓扑变化的端口外,清除其他端口关联的MAC地址),因为它们指向了拓扑变化的方向,其中诸多MAC地址可能需要通过新的或更好的路径到达。
边界端口永远不会引发拓扑变化事件,这种端口学习到的MAC地址也并不会在交换机处理拓扑变化事件时被清除。