PVST与PVST+的区别(转)
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的根桥状态可能不一致。由于每个VLAN都有一棵独立的生成树,单生成树的种种缺陷都被克服了:第一点缺陷:由于整个交换网络只有一棵生成树,在网络规模比较大的时候会导致较长的收敛时间,拓扑改变的影响面也较大。
第二点缺陷:近些年IEEE 802.1Q大行其道,逐渐成为交换机的标准协议。在网络结构对称的情况下,单生成树也没什么大碍。但是,在网络结构不对称的时候,单生成树就会影响网络的连通性)。同时,PVST带来了新的好处,那就是二层负载均衡。
PVST/PVST+的缺陷:
1.由于每个VLAN都需要生成一棵树,PVST BPDU的通信量将正比于Trunk的VLAN个数。
2.在VLAN个数比较多的时候,维护多棵生成树的计算量和资源占用量将急剧增长。特别是当Trunk了很多VLAN的接口状态变化的时候,所有生成树的状态都要重新计算,CPU将不堪重负。所以,Cisco交换机限制了VLAN的使用个数,同时不建议在一个端口上Trunk很多VLAN。
3.由于协议的私有性,PVST/PVST+不能像STP/RSTP一样得到广泛的支持,不同厂家的设备并不能在这种模式下直接互通,只能通过一些变通的方式实现,例如Foundry的IronSpan。IronSpan默认情况下运行的是STP协议,当某个端口收到PVST BPDU时,该端口的生成树模式会自动切换成PVST/PVST+兼容模式。一般情况下,网络的拓扑结构不会频繁变化,所以PVST/PVST+的这些缺点并不会很致命。但是,端口Trunk大量VLAN这种需求还是存在的。
Spanning-tree 的发展史
1. STP (802.1D)也就是所说的classical spanning-tree,大概意思是每2s发送一个hello,15s的forward delay,20s的max age,与vlan无关,整个bridge只有一个spanning-tree实例。这个协议是Radia Perlman为早期的DEC桥所写,后被IEEE收容形成802.1D标准。而在那时,大部分layer2设备还是以端口数较少的网桥为主,所以没有考虑到端口数较多的layer2 switch。随着技术的发展,layer2 switch开始盛行,这就导致了vlan的盛行,致使802.1D已经不在适用。因为两台switch间存在冗余链路不一定就会导致环路,所以Cisco为了满足用户需求,就对802.1D进行了扩展,便出现了PVST。它是基于vlan的,每个vlan都会有一个对应的spanning-tree实例。需要注意的是,PVST在通常状态下只有在default vlan 1 中才使用untagged的STP报文,所以vlan 1的spanning-tree实例又有一个独立的名称,就是CST,细心的朋友可能已经注意到,很对只支持STP协议的设备只能与cisco在vlan1中进行互操作,就是这个原因了。
2. 随着时间的推移,越来越多的人感觉传统spanning-tree的收敛时间过长,简直无法接受,特别是Cisco在别出心裁的提出了Portfast,Backbonefast,Uplinkfast等一系列spanning-tree特性后,IEEE不得不对已过时的802.1D进行修改,便有了802.1W,也就是所说的RSTP,基本就是在802.1D的基础上添加了几个类似Cisco的特性,对Cisco来说,为和上一代PVST区分,便把有这些特性的spanning-tree称为PVST+或Rapid PVST.
3. 科技日新月异,人们的要求也越来越高,原本以前被认为是经典的东西,现代人可能感觉他是那么的冗长复杂,PVST就是一个很好的例子。当年PVST的设计者可能怎么也没想到,真的会有这样的疯子要在一个交换机上配置成百上千个vlan,这就要求运行相同数目的spanning-tree实例,这不论从管理上还是spanning-tree的运算上,都是人类和一颗普通的Power PC无法承受的,因而便应运而生了802.1S,即MST,这次Cisco很聪明,为了避免出现类似PVST这样的尴尬局面(虽然很好,但无法与众多其它厂家兼容),便在协议研发阶段就将其提交到了IEEE,再联合上Foundry,Extreme,RiverStone等几个业内定级厂家,很快就把这个协议做出来了,至于这个协议的好处,俄也就不说了,那是相-当-的明显。
说了这么多,只是想和大家分享一下自己以前学习的心得,但从现在来看,spanning-tree似乎不会再有往日的盛行,因为随着layer 3技术的进步,spanning-tree已经开始逐步失去自己仅存的接入网市场,更别说Metro的distribution或是core了,因而建议大家如果从研究协议本身出发,可以学习它的设计理念,但最好就不要有其它想法了。
注:下面是在另一个网页上看到的,老外总结的,很好,不过现在已经无法访问了,一起加到这里作为转帖!
Behind the simple “plus” in PVST+ lurk quite subtle details that can make the difference between the two concepts very fuzzy, so the goal of this post is to give you a very brief explanation and I hope enough simple to grasp about PVST and PVST+ and their relationship with the standard IEEE 802.1q:
IEEE 802.1q standard |
PVST (Per VLAN Spanning Tree) Cisco proprietary | PVST+ Cisco proprietary |
BPDU transported over native VLAN untagged (cannot differentiate between different VLANs), therefore support natively only one single instance of STP for all VLAN, MST (Multi Spanning Tree). |
(+) Improve the limitation of 802.1d STP (created before VLAN) by supporting one separate instance for each VLAN, using ISL trunk only. | (+) Modification of PVST: allow PVST over standard IEEE 802.1q:
1)(-) PVST+ native VLAN BPDUs are transported (merged) in IEEE native VLAN (CST) untagged using IEEE STP MAC 0180.0CCC.CCCD 01-80-C2-00-00-00 The BPDUs on the native VLAN of the trunk are sent 1st time to the reserved IEEE 802.1D spanning tree multicast MAC address (01-80-C2-00-00-00) and a second time to the reserved SSTP multicast MAC address (01-00-0c-cc-cc-cd). 2)(-) In addition to that, PVST+ native VLAN is send a second time tunneled over IEEE 802.1q using special multicast MAC 0100.0CCC.CCCD (Shared spanning Tree, SSTP): This is used exclusively for consistency check. Besides, the error “PVID-inconsistency” is generated if PVST+ BPDU is received on a VLAN different from the one it was generated from. |
(-) Not interoperable and less flexible approach. | (-) Still not interoperable with IEEE 802.1q that supports only one STP instance. | 3)(-) non-native VLAN BPDUs always tunneled over IEEE 802.1q using special multicast MAC 0100.0CCC.CCCD (Shared spanning Tree, SSTP), tagged (coded with TLV, containing VLAN ID) |
1. Make sure the native VLAN in PVST+ regions, communicating together through IEEE 802.1q, is the same. 2. Whatever the complexity of the IEEE 802.1q network, only costs at the borders with PVST+ regions counts for PVST+ 3. IEEE 802.1q native VLAN (VLAN 1 by default) cooperate with PVST, PVST+ and MST (802.1s). 4. PVST (ISL) instances are mapped one-to-one with PVST+ (802.1q) instances. |
Figure 1: PVST+ native VLAN is VLAN 1:
Figure 2: PVST+ native VLAN is different from VLAN 1