引入背景
RSTP在STP基础上进行了改进,实现了网络拓扑快速收敛。但由于局域网内所有的VLAN共享一棵生成树,因此被阻塞后链路将不承载任何流量,无法在VLAN间实现数据流量的负载均衡,从而造成带宽浪费。
为了弥补STP和RSTP的缺陷,IEEE于2002年发布的802.1s标准定义了MSTP。MSTP兼容STP和RSTP,既可以快速收敛,又提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN数据的负载均衡。
从2001年发布了RSTP,2002年发布了MSTP可以猜测,在RSTP的基础上,MSTP的更改应该不算多。
技术概览
不管是STP或者是RSTP都只有一棵生成树,假设现在有三个VLAN要进行数据传输,根据生成树的算法,最终会阻塞掉一个端口,这就会产生一种现象,就是被阻塞的端口一直处于空闲,无法利用起来,资源大大了浪费掉了。现在想要利用起来这个端口,于是MSTP技术就应运而生了。
PVSTP(过渡)
PVSTP是Cisco的私有协议,叫做每VLAN生成树,就是说对于每个VLAN,都有属于自己的一个生成树,他们不再统一,每个VLAN都自己掌握了一个生成树,因此阻塞的接口也不相同,这样就把阻塞的接口利用了起来,虽然在本VLAN是一个阻塞接口,但是在其他的VLAN之中可以进行转发。这种技术十分巧妙,不仅仅是将端口利用了起来,而且还同时降低了设备的负担,使得某一台设备不是所有VLAN的根桥,说白了就是负载分担。
MSTP
在MSTP中,划分了实例,是使用手工进行创建了,一个实例对应一个生成树,在实例之中可以添加VLAN,好比实例1下面有VLAN1、VLAN2、VLAN3,实例2下面有VLAN4、VLAN5,这个时候整个拓扑就一共有两棵生成树。然后分别阻塞不同的接口,同时接口也都可以进行转发。
但是不论是PVSTP或者是MSTP,都默认是不进行负载分担的。因为交换机默认的优先级都是32768,这个时候就会比较MAC地址,那么MAC地址小的设备就会成为所有树的根桥,所以要进行手工修改根桥的位置。
单生成树的缺陷1:部分VLAN不通
单生成树会导致部分路径不通的问题,现在左边这条链路可以传送VLAN2,右边这条链路可以传送VLAN2以及VLAN3,如果右边这条链路发生故障,那么VLAN3就没有办法进行传输了。
单生成树的缺陷2:无法实现流量的负载分担
现在,如果右边的链路断开了,那么流量就只能走左边了,VLAN2的数据经过SWA可以出去,但是VLANB的数据要经过SWA之后再经过SWB才行。
多生成树解决单生成树实例
在这里instance1包含了VLAN2,instance2包含了VLAN3和VLAN4,然后他们阻塞的接口不同,实现了负载分担的效果。其次可以在交换机上设置instance的优先级,好比SWA作为instance1的primary(主设备),但是作为instance2的secondary(副设备),SWB作为instance2的主设备,但是作为instance1的secondary(副设备)。
说白了,MSTP就是将阻塞端口利用了起来,并且使用了实例instance去分配VLAN,最终实现负载分担。