STP和RSTP有什麼區別?

STP和RSTP和的区别可以从可以从以下几个方面考虑:

端口角色、端口状态、BPDU类型、新增快速收敛机制、拓扑改变处理方式五个角度。

端口角色在STP中只定义了3种端口角色:DP、RP、AP在RSTP中定义了了4种端口角色:DP、RP、AP、BP(EP是特殊的DP)

作用在前面的文章已经介绍过了,不再赘述。

端口状态在STP中将端口状态分别为以下5种:


在RSTP中从是否学习MAC和是否转发数据的角度将端口状态分为了以下3种:


STP和RSTP端口状态角色对接表:


BPDU类型不同在STP有两种BPDU类型,配置BPUD和TCN BPDU,报文结构简单。TCN BPDU用来表明网络拓扑发生了改变。配置BPDU有分为TCA置位的配置BPDU和TC置位的BPDUTAC置位的BPDU是用来,在收到TCN BPDU后上游设备向下游设备告知自己已经知道了拓扑改变,不需要再向自己发送拓扑改变通知了。TC置位的BPDU是用来,根桥在收到TCN BPDU后,向其他设备发送TC BPDU来清除MAC表项的作用。

在RSTP中只有一种BPDU类型,RST BPDU。RSTP充分利用了flag字段,通过不用bit位的置位情况来表达此BPDU的作用。<1>第四、五位组合的结果:00 表示发送 bpdu 的端口的端口状态为 discarding01 表示发送 bpdu 的端口的端口状态为 learning11 表示发送 bpdu 的端口的端口状态为 forwarding<2>第二、三位组合的结果:00 表示端口角色为 unknown01 表示端口角色为 ap/bp10 表示端口角色为 rp11 表示端口角色为 dp最高位和最低位和STP中的作用一样,第一位和第六位是作用于P/A机制。新增快速收敛机制在RSTP中新增了两种快速机制,加快了网络的收敛速度。P/A机制在STP中端口状态从discarding到forwarding需要经历30s才能到转发状态,而在RSTP中秒级即可完成收敛,P/A机制收敛过程如下:


①刚开始A和B都认为自己是根桥,1,2都是指定端口向外发送P置位的BPDU。

②B收到A的BPDU发现比自己的更优,于是将自己的2端口置位RP,并停止发送P置位的BPDU

③接着B进行同步置位,将除收到BPDU的所有非EP口全部阻塞,并向A发送agreement置位的BPDU,同时B将2口forwarding。

④A收到agreement置位的BPDU后,立即将1口forwarding。

edge port被设置为边缘端口,不参与STP的计算,可以直接从discarding状态转变到forwarding状态,不需要像STP一样等待2倍的forward delay,端口forwarding不会触发TCN置位的BPDU且收到TC置位的BPDU不会清除从该端口学习到的Mac表项。拓扑改变处理方式不同在STP中拓扑发生改变时,则会朝着根桥发送TCN置位的BPDU,上游设备收到后则回送TCA置位的BPDU,并复制一份TCN置位的BPDU发送继续朝着根桥的发送,直到根桥收到后向下游设备回复确认收到报文后,还会产生TC置位的BPDU向全网泛洪,交换机收到后会清除除收到该BPDU的所有非边缘端口的Mac表项。(TC置位的BPDU会持续发送35s,将Mac表项老化时间置位15)在RSTP拓扑发生改变时,直接由发送拓扑变化的交换机发送TC置位的RST BPDU,向全网泛洪。STP和RSTP拓扑发生变化的依据都是端口转到变为forwarding。

追问思考:

在RSTP中使用P/A机制都是秒级收敛吗?