当前和STP相关的协议有:IEEE 802.1D(STP),802.1W(RSTP),802.1(MSTP)。其中802.1D是最早关于STP的标准。RSTP(Rapid Spanning Tree Protocol)是STP的扩展,其主要特点是增加了端口状态快速切换的机制,能够实现网络拓扑的快速转换。MSTP(Multiple Spanning Tree Protocol)提出了多生成树的概念,可以把不同的vlan映射到不同的生成树,从而达到网络负载均衡的目的。
RSTP和STP一样同属于单生成树SST(Single Spanning Tree),有它自身的诸多缺陷,主要表现在三个方面。
可见,RSTP协议相对于STP协议的确改进了很多。为了支持这些改进,BPDU的格式做了一些修改,但RSTP协议仍然向下兼容STP协议,可以混合组网。
虽然如此,
第一点缺陷:由于整个交换网络只有一棵生成树,在网络规模比较大的时候会导致较长的收敛时间,拓扑改变的影响面也较大。
第二点缺陷:近些年IEEE 802.1Q大行其道,逐渐成为交换机的标准协议。在网络结构对称的情况下,单生成树也没什么大碍。但是,在网络结构不对称的时候,单生成树就会影响网络的连通性。
图3 非对称网络示意图
图3中假设SW1是根桥,实线链路是VLAN 10,虚线链路是802.1Q的Trunk链路,Trunk了VLAN 10和VLAN 20。当SW2的Trunk端口被阻塞的时候,显然SW1和SW2之间VLAN 20的通路就被切断了。
第三点缺陷:当链路被阻塞后将不承载任何流量,造成了带宽的极大浪费,这在环行城域网的情况下比较明显。
图4 SST带宽利用率低下示意图
图4中假设SW1是根桥,SW4的一个端口被阻塞。在这种情况下,SW2和SW4之间铺设的光纤将不承载任何流量,所有SW2和SW4之间的业务流量都将经过SW1和SW3转发,增加了其他几条链路的负担。
这些缺陷都是单生成树SST无法克服的,于是支持VLAN的多生成树协议出现了。
聪明伶俐的第二代生成树协议:
每个VLAN都生成一棵树是一种比较直接,而且最简单的解决方法。它能够保证每一个VLAN都不存在环路。但是由于种种原因,以这种方式工作的生成树协议并没有形成标准,而是各个厂商各有一套,尤其是以Cisco的VLAN生成树PVST(Per VLAN Spanning Tree)为代表。
为了携带更多的信息,PVST BPDU的格式和STP/RSTP BPDU格式已经不一样,发送的目的地址也改成了Cisco保留地址01-00-0C-CC-CC-CD,而且在VLAN Trunk的情况下PVST BPDU被打上了802.1Q VLAN标签。所以,PVST协议并不兼容STP/RSTP协议。
Cisco
很快又推出了经过改进的
PVST
+协议,并成为了交换机产品的默认生成树协议。经过改进的PVST+协议在VLAN 1上运行的是普通STP协议,在其他VLAN上运行PVST协议。PVST+协议可以与STP/RSTP互通,在VLAN 1上生成树状态按照STP协议计算。在其他VLAN上,普通交换机只会把PVST BPDU当作多播报文按照VLAN号进行转发。但这并不影响环路的消除,只是有可能VLAN 1和其他VLAN的根桥状态可能不一致。
图5 PVST+与SST对接示意图
图5中所有链路默认VLAN是VLAN 1,并且都Trunk了VLAN 10和VLAN 20。SW1和SW3运行单生成树SST协议,而SW2运行PVST+协议。在VLAN 1上,可能SW1是根桥,SW2的端口1被阻塞。在VLAN 10和VLAN 20上,SW2只能看到自己的PVST BPDU,所以在这两个VLAN上它认为自己是根桥。VLAN 10和VLAN 20的PVST BPDU会被SW1和SW3转发,所以SW2检测到这种环路后,会在端口2上阻塞VLAN 10和VLAN 20。这就是PVST+协议提供的STP/RSTP兼容性。可以看出,网络中的二层环路能够被识别并消除,强求根桥的一致性是没有任何意义的。
由于每个VLAN都有一棵独立的生成树,单生成树的种种缺陷都被克服了。同时,PVST带来了新的好处,那就是二层负载均衡。
图6 PVST+负载均衡示意图
图6中四台设备都运行PVST+协议,并且都Trunk了VLAN 10和VLAN 20。假设SW1是所有VLAN的根桥,通过配置可以使得SW4端口1上的VLAN 10和端口2上的VLAN 20阻塞,SW4的端口1所在链路仍然可以承载VLAN 20的流量,端口2所在链路也可以承载VLAN 10的流量,同时具备链路备份的功能。这在以往的单生成树情况下是无法实现的。
聪明伶俐的PVST/PVST+协议实现了VLAN认知能力和负载均衡能力,但是新技术也带来了新问题,PVST/PVST+协议也有它们的“难言之隐”。
第一点缺陷:由于每个VLAN都需要生成一棵树,PVST BPDU的通信量将正比于Trunk的VLAN个数。
第二点缺陷:在VLAN个数比较多的时候,维护多棵生成树的计算量和资源占用量将急剧增长。特别是当Trunk了很多VLAN的接口状态变化的时候,所有生成树的状态都要重新计算,CPU将不堪重负。所以,Cisco交换机限制了VLAN的使用个数,同时不建议在一个端口上Trunk很多VLAN。
第三点缺陷:由于协议的私有性,PVST/PVST+不能像STP/RSTP一样得到广泛的支持,不同厂家的设备并不能在这种模式下直接互通,只能通过一些变通的方式实现,例如Foundry的IronSpan。IronSpan默认情况下运行的是STP协议,当某个端口收到PVST BPDU时,该端口的生成树模式会自动切换成PVST/PVST+兼容模式。)
一般情况下,网络的拓扑结构不会频繁变化,所以PVST/PVST+的这些缺点并不会很致命。但是,端口Trunk大量VLAN这种需求还是存在的。于是,Cisco对PVST/PVST+又做了新的改进,推出了多实例化的MISTP协议。
多实例化的第三代生成树协议:MISTP/MSTP
多实例生成树协议MISTP(Multi-Instance Spanning Tree Protocol)定义了“实例”(Instance)的概念。简单的说,STP/RSTP是基于端口的,PVST/PVST+是基于VLAN的,而MISTP就是基于实例的。所谓实例就是多个VLAN的一个集合,通过多个VLAN捆绑到一个实例中去的方法可以节省通信开销和资源占用率。
在使用的时候可以把多个相同拓扑结构的VLAN映射到一个实例里,这些VLAN在端口上转发状态将取决于对应实例在MISTP里的状态。值得注意的是网络里的所有交换机的VLAN和实例映射关系必须都一致,否则会影响网络连通性。为了检测这种错误,MISTP BPDU里除了携带实例号以外,还要携带实例对应的VLAN关系等信息。MISTP协议不处理STP/RSTP/PVST BPDU,所以不能兼容STP/RSTP协议,甚至不能向下兼容PVST/PVST+协议,在一起组网的时候会出现环路。为了让网络能够平滑地从PVST+模式迁移到MISTP模式,Cisco在交换机产品里又做了一个可以处理PVST BPDU的混合模式MISTP-PVST+。网络升级的时候需要先把设备都设置成MISTP-PVST+模式,然后再全部设置成MISTP模式。
MISTP带来的好处是显而易见的。它既有PVST的VLAN认知能力和负载均衡能力,又拥有可以和SST媲美的低CPU占用率。不过,极差的向下兼容性和协议的私有性阻挡了MISTP的大范围应用。
多生成树协议MSTP(Multiple Spanning Tree Protocol)是IEEE 802.1s中定义的一种新型多实例化生成树协议。这个协议目前仍然在不断优化过程中,现在只有草案(Draft)版本可以获得。不过Cisco已经在CatOS 7.1版本里增加了MSTP的支持,华为公司的三层交换机产品Quidway系列交换机也即将推出支持MSTP协议的新版本。
MSTP协议精妙的地方在于把支持MSTP的交换机和不支持MSTP交换机划分成不同的区域,分别称作MST域和SST域。在MST域内部运行多实例化的生成树,在MST域的边缘运行RSTP兼容的内部生成树IST(Internal Spanning Tree)。
图7 MSTP工作原理示意图
图7中间的MST域内的交换机间使用MSTP BPDU交换拓扑信息, SST域内的交换机使用STP/RSTP/PVST+ BPDU交换拓扑信息。在MST域与SST域之间的边缘上,SST设备会认为对接的设备也是一台RSTP设备。而MST设备在边缘端口上的状态将取决于内部生成树的状态,也就是说端口上所有VLAN的生成树状态将保持一致。
MSTP设备内部需要维护的生成树包括若干个内部生成树IST,个数和连接了多少个SST域有关。另外,还有若干个多生成树实例MSTI(Multiple Spanning Tree Instance)确定的MSTP生成树,个数由配置了多少个实例决定。)
MSTP相对于之前的种种生成树协议而言,优势非常明显。MSTP具有VLAN认知能力,可以实现负载均衡,可以实现类似RSTP的端口状态快速切换,可以捆绑多个VLAN到一个实例中以降低资源占用率。最难能可贵的是MSTP可以很好地向下兼容STP/RSTP协议。而且,MSTP是IEEE标准协议,推广的阻力相对小得多。
可见,各项全能的MSTP协议能够成为当今生成树发展的一致方向是当之无愧的。
生成树协议的未来之路
任何技术的发展都不会因为某项“理想”技术的出现而停滞,生成树协议的发展历程本身就说明了这一点。随着应用的深入,各种新的二层隧道技术不断涌现,例如Cisco的802.1Q Tunneling,华为Quidway S8016的QinQ,以及基于MPLS的二层×××技术等。在这种新形势下,用户和服务提供商对生成树协议又会有新的需求。生成树协议该往何处走?这个问题虽然现在还没有一个统一的答案,但是各厂商已经开始了这方面的积极探索。也许不久的将来,支持二层隧道技术的生成树协议将成为交换机的标准协议。