CST:

CST的协议号为IEEE 802.1D,如果交换机运行在CST,则整个交换机只进行一次STP的计算,无论交换机上有多少个VLAN,所有VLAN的流量都会走相同的路径。

RSTP:

RSTP的协议号是IEEE 802.1W,称为快速生成树,在CST中,端口有五种状态,分别是disabled、blocking、listening、learning、forwarding,在disabled、blocking、listening这三种状态中都不发送数据,在RSTP中,将这三种状态归为一种,称为discarding状态,因此RSTP中端口的状态有3种,分别是discarding、learning、forwarding。

如果交换机运行的是CST,当根交换机失效后,其他的交换机需要等待Max-age(20s)的时间才能够知道根交换机出现了问题(BPDU是每隔hello间隔发送一次,即2s,如果在max-age时间内都收不到根交换机发送的配置BPDU,则认为根交换机出现了问题,重新选举根交换机)。然后会启用处于blocking状态的端口,过滤到forwarding状态,需要经历两个forward delay的时间,即从listening到learning、从learning到forwarding,而forward delay的时间是15s,因此从blocking状态到forwarding状态需要经历30s,因此当CST网络出现故障时,启用blocking状态的端口需要至少经过50s才能切换到forwarding状态,收敛速度比较慢。而RSTP只需要3个Hello时间,即6秒收不到根交换机BPDU,便认为根交换机已经失去连接,就立刻启用discarding状态的接口,RSTP在根交换机失效后,并不会进行完整的STP计算,会在该启用备用端口时立即启用,因此网络收敛速度快,RSTP会在低于1秒的时间内恢复网络。

PVST+

PVST+是思科自己的协议,在之前有一个PVST,但由于PVST只能支持ISL Trunk,所以思科为了扩展PVST支持IEEE 802.1Q,诞生了PVST+,在多数三层交换机,如3550、3560及以上型号,默认运行的STP版本为PVST+。PVST+是基于CST(IEEE 802.1D)运行的,但运行了PVST+的交换机并不像CST那样只进行一次STP计算,PVST+会在每个VLAN进行一次STP计算,也就是会根据VLAN数的不同,计算STP的次数也不同,并且每个VLAN的STP信息是单独保存的。


PVST+ 只支持128个实例(instance),如果交换机上配置的VLAN数超过128个, 那 么128个以外的VLAN将没有STP在运行,所以此时剩余的VLAN将出现环路。可以单独在特定的VLAN上打开或关闭STP功能,即使一台没有运行STP的交换机或没有运行STP的VLAN,在收到BPDU时,也会转发的,所以在对单个VLAN进行开启或关闭STP时,请确保交换机能够计算出无环的网络,否则网络将出现预想不到的故障。在PVST+可以配置全局关闭某VLAN的STP,如关闭VLAN 10 的STP no spanning-tree vlan 10,恢复使用命令spanning-tree vlan 10


Extended System ID

默认交换机的Bridge-ID 的优先级为32768,当开启Extended System ID功能后,每个VLAN的默认的Bridge-ID 优先级就不再是32768了,需要再加上VLAN号码,如VLAN 1的Bridge-ID优先级就是32768+1=32769,VLAN 8的Bridge-ID优先级就是32768+8=32776。如果网络中即有开启了Extended System ID功能的交换机,也有关闭的,那么关闭Extended System ID功能的交换机有更大的机会成为根交换机,因为自己默认的优先级就比其它开启了Extended System ID功能的优先级更高(数字更小)。


RPVST+:

Rapid PVST+就是具有RSTP特性的PVST+,是像RSTP一样基于IEEE 802.1w运行

的,其它所有运行与规则与PVST+完全相同


MSTP:

MSTP的协议号为IEEE 802.1s,因为在交换机存在多个VLAN时,CST会将所有流量放在单条路径中传输,而PVST+则可以通过为每个VLAN运行一个STP实 例, 从而将不同VLAN的流量放在不同的路径上传输。但正是由于PVST+为每个VLAN都运行了一个STP实例,可能会多达128个STP实例,所以PVST+会极其消耗系统资源。比如交换机上有20个VLAN,而PVST+会维护20个STP实例,但是这20个VLAN的流量也许只需要被分担到几条不同路径上,那就只需要维护几个STP实例即可,而并不需要维护20个STP实例。MSTP正因为这个原因,将需要进行相同STP计算的VLAN映射到同一个STP实例中,即无论有多少个VLAN,只要实际需要多少条不同的路径,就根据需要的路径维护相同的STP实例数,从而大大节省系统资源。

MSTP是在RSTP的基础之上运行的,所以具有快速收敛的功能,但不能不运行RSTP时运行MSTP,RSTP是随着开启MSTP时自动开启的。MSTP最多支持65个STP实例,但是映射到实例的VLAN数量是没有限制的。默认所有VLAN都在实例0。

MSTP还需要通过分区域管理,即region,交换机要在同一region进行相同的STP计算,必须region name和revision number一致,最重要的是VLAN和实例的映射也要一致,否则STP计算出来的网络,将不是你想要的网络,一个VLAN只能被映射到一个实例,一个网络可以有多个MSTP revision,便于各自独立。