RSTP 与 STP 的区别
端口状态的改变
rstp:discarding、learning、forwarding
stp:disable、blocking、listening、learning、forwarding
stp的disable、blocking、listening在表现上是没有区别的,所以rstp把这几个状态合为discarding 状态从用户角度来讲,Listening、Learning和Blocking状态并没有区别,都同样不转发用户流量。从使用和配置角度来讲,端口之间最本质的区别并不在于端口状态,而是在于端口扮演的角色。根端口和指定端口可以都处于Listening状态,也可能都处于Forwarding状态。
2.端口角色的改变
rstp:rp、dp、ap、bp
stp:rp、dp、非指定端口
ap是rp的备份,当rp失效时,可以立即接替成为新的rp,Backup端口作为指定端口的备份,虽然名字为备份端口,但是当dp失效时,不能立即成为dp
1.端口状态的改变
rstp:discarding、learning、forwarding
stp:disable、blocking、listening、learning、forwarding
stp的disable、blocking、listening在表现上是没有区别的,所以rstp把这几个状态合为discarding 状态从用户角度来讲,Listening、Learning和Blocking状态并没有区别,都同样不转发用户流量。从使用和配置角度来讲,端口之间最本质的区别并不在于端口状态,而是在于端口扮演的角色。根端口和指定端口可以都处于Listening状态,也可能都处于Forwarding状态。
2.端口角色的改变
rstp:rp、dp、ap、bp
stp:rp、dp、非指定端口
ap是rp的备份,当rp失效时,可以立即接替成为新的rp,Backup端口作为指定端口的备份,虽然名字为备份端口,但是当dp失效时,不能立即成为dp
3.收敛快(p/a、引入edge port)
对于STP而言,端口角色的确定是可以很快完成的,主要速度的瓶颈在于:为了避免环路,必须等待forward delay才能进行转发,而rstp主要目的就是消除了这个瓶颈,使用p/a协商加速收敛时,通过阻塞自己的非根端保证不会出现环路,所以可以不等待forward delay。而且rstp引入了ap和edge port,当本交换机的rp down了,ap会立即接替成为新的rp,edge port 是需要管理员手工配置的,在管理员预知无环的情况下,可以将运行rstp的端口配置成edge port来加速rstp的收敛速度
4.处理拓扑改变的方式不一样
STP:stp检测拓扑是否发生变化的方法:标准定义:up/down都为拓扑变化华为实现:一个端口的状态变为forwarding
stp的拓扑改变处理过程:由拓扑改变的交换机朝着根桥方向逐跳发送tcn,收到tcn时会发送tca置位的bpdu进行确认,根桥收到tcn时,会产生tc置位的配置bpdu向全网泛洪(持续35秒:max-age+一个转发延迟),非根交换机收到tc置位的bpdu时,mac表的有效时间会缩短
RSTP:rstp检测拓扑变化是否发生变化的方法:一个非边缘端口的端口状态变为forwarding状态的拓扑改变处理过程:到15s当交换机检测到拓扑发生变化时,交换机会清空状态发生变化的端口上学习的mac地址,并且由此交换机产生tc置位的配置bpdu并向全网泛洪,收到tc置位的交换机会清除mac表项(除了收到此bpdu的端口和边缘端口)相对来说,RSTP对拓扑改变的处理更加高效
5.配置BPDU的改变,rstp充分利用了bpdu中的flag字段

第四、五位组合的结果:00表示发送bpdu的端口的端口状态为discarding,01表示发送bpdu的端口的端口状态为learning ,11表示发送bpdu的端口的端口状态为forwarding
第二、三位组合的结果:00表示端口角色为unknown 01表示端口角色为ap/bp10表示端口角色为rp11表示端口角色为dp
6.保护功能(BPDU保护、根保护、环路保护、tc保护)
7.BPDU处理的方式不同:
a)拓扑稳定后,配置BPDU报文的发送方式:
STP中其他非根桥设备在收到上游设备发送过来的配置BPDU后,才会触发发出配置BPDU,此方式使得STP协议计算复杂且缓慢。RSTP对此进行了改进,即在拓扑稳定后,无论非根桥设备是否接收到根桥传来的配置BPDU报文,非根桥设备仍然按照HelloTimer规定的时间间隔发送配置BPDU,该行为完全由每台设备自主进行。
b)更短的BPDU超时计时
如果一个端口在超时时间(超时时间=3个Hello Time时间)内没有收到上游设备发送过来的配置BPDU,那么该设备认为与此邻居之间的协商失败。而不像STP那样需要先等待一个MaxAge。
c)对次优BPDU的处理方式
当一个端口收到上游的指定桥发来的RSTBPDU报文时,该端口会将自身存储的RSTBPDU与收到的RSTBPDU进行比较。如果该端口存储的RSTBPDU的优先级高于收到的RSTBPDU,那么该端口会直接丢弃收到的RSTBPDU,立即回应自身存储的RSTBPDU。当上游设备收到下游设备回应的RSTBPDU后,上游设备会根据收到的RSTBPDU报文中相应的字段立即更新自己存储的RSTBPDU。由此,RSTP处理次等BPDU报文不再依赖于任何定时器通过超时解决拓扑收敛,从而加快了拓扑收敛。
4.处理拓扑改变的方式不一样
STP:stp检测拓扑是否发生变化的方法:标准定义:up/down都为拓扑变化华为实现:一个端口的状态变为forwarding
stp的拓扑改变处理过程:由拓扑改变的交换机朝着根桥方向逐跳发送tcn,收到tcn时会发送tca置位的bpdu进行确认,根桥收到tcn时,会产生tc置位的配置bpdu向全网泛洪(持续35秒:max-age+一个转发延迟),非根交换机收到tc置位的bpdu时,mac表的有效时间会缩短
RSTP:rstp检测拓扑变化是否发生变化的方法:一个非边缘端口的端口状态变为forwarding状态的拓扑改变处理过程:到15s当交换机检测到拓扑发生变化时,交换机会清空状态发生变化的端口上学习的mac地址,并且由此交换机产生tc置位的配置bpdu并向全网泛洪,收到tc置位的交换机会清除mac表项(除了收到此bpdu的端口和边缘端口)相对来说,RSTP对拓扑改变的处理更加高效
5.配置BPDU的改变,rstp充分利用了bpdu中的flag字段

- 第四、五位组合的结果:00表示发送bpdu的端口的端口状态为discarding,01表示发送bpdu的端口的端口状态为learning ,11表示发送bpdu的端口的端口状态为forwarding
第二、三位组合的结果:00表示端口角色为unknown 01表示端口角色为ap/bp10表示端口角色为rp11表示端口角色为dp
6.保护功能(BPDU保护、根保护、环路保护、tc保护)
7.BPDU处理的方式不同:
a)拓扑稳定后,配置BPDU报文的发送方式:
STP中其他非根桥设备在收到上游设备发送过来的配置BPDU后,才会触发发出配置BPDU,此方式使得STP协议计算复杂且缓慢。RSTP对此进行了改进,即在拓扑稳定后,无论非根桥设备是否接收到根桥传来的配置BPDU报文,非根桥设备仍然按照HelloTimer规定的时间间隔发送配置BPDU,该行为完全由每台设备自主进行。
b)更短的BPDU超时计时
如果一个端口在超时时间(超时时间=3个Hello Time时间)内没有收到上游设备发送过来的配置BPDU,那么该设备认为与此邻居之间的协商失败。而不像STP那样需要先等待一个MaxAge。
c)对次优BPDU的处理方式
当一个端口收到上游的指定桥发来的RSTBPDU报文时,该端口会将自身存储的RSTBPDU与收到的RSTBPDU进行比较。如果该端口存储的RSTBPDU的优先级高于收到的RSTBPDU,那么该端口会直接丢弃收到的RSTBPDU,立即回应自身存储的RSTBPDU。当上游设备收到下游设备回应的RSTBPDU后,上游设备会根据收到的RSTBPDU报文中相应的字段立即更新自己存储的RSTBPDU。由此,RSTP处理次等BPDU报文不再依赖于任何定时器通过超时解决拓扑收敛,从而加快了拓扑收敛。
