VBST原理描述
介绍VBST的实现原理。
VBST协议可以简单地理解为在每一个VLAN上运行一个STP或RSTP协议,不同VLAN之间的STP状态和生成树计算完全独立,虽然没有类似MSTP协议中的实例的概念,但也可以完成对不同VLAN的流量进行负载分担。
- 一个根桥。
- 两种度量:ID和路径开销。
- 三种端口状态:Discarding、Learning和Forwarding。
- 五种端口角色:根端口、指定端口和边缘端口、Alternate端口、Backup端口。
- 三种定时器:Hello Time、Forward Delay和Max Age。
- BID(Bridge
ID):桥ID
与STP协议中规定不同的是,VBST协议中BID是由桥优先级(Bridge Priority)、VLAN ID与桥MAC地址构成。BID桥优先级占据高4位,VLAN ID占据随后的12位,其余的低48位是MAC地址。
在VBST网络中,桥ID最小的设备会被选举为根桥。
- VBST通过在VLAN内传递VBST报文来确定网络拓扑结构。VBST报文基于STP/RSTP报文,但相对STP/RSTP报文,VBST报文在源MAC地址字段和协议长度字段之间加入了四字节的802.1q
Tag,STP/RSTP报文与VBST报文的封装格式对比如图11-1所示。
其中,DMAC标识报文的目的MAC,VBST报文中的DMAC填充0100-0CCC-CCCD;VBST报文中的Data字段依据对接设备填充标准RSTP/STP报文的Data内容,默认填充标准RSTP报文。
正是基于VBST报文,VBST实现了基于VLAN的生成树计算和拓扑收敛,也实现了与其他厂商生成树协议的互通。下面介绍VBST的实现原理。
VBST拓扑计算
VBST支持基于VLAN的拓扑计算,每个VLAN都会发送带有VLAN Tag报文的VBST报文,拓扑计算独立进行,拓扑计算方法跟STP/RSTP相同(请参见STP拓扑计算)。这样,每个VLAN可根据实际需要选举不同的根桥等。如图11-2所示为STP/RSTP与VBST的拓扑计算结果对比图。
STP/RSTP协议通过拓扑计算,在网络中生成一棵根桥为SwitchF的生成树,SwitchB和SwitchE之间、SwitchA和SwitchD之间的链路被阻塞。这样,HostA和HostB同属于VLAN2,由于SwitchB和SwitchE之间的链路被阻塞,SwitchC和SwitchF之间的链路又不允许VLAN2的报文通过,因此HostA和HostB之间无法互相通讯。
VBST协议通过拓扑计算,在网络中分别生成根桥为SwitchD的VLAN2生成树和根桥为SwitchF的VLAN3生成树,VLAN2、VLAN3的流量分别沿着各自的生成树转发,流量就分担在SwitchB-SwitchE、SwitchC-SwitchF两条路径上,实现了不同VLAN内流量的负载分担。
VBST快速收敛机制
普通方式
VBST支持普通方式的P/A机制,其实现与RSTP的P/A机制相同,RSTP支持的P/A机制请见RSTP技术细节中的P/A机制。
增强方式
VBST支持增强方式的P/A机制,其实现与MSTP的P/A机制相同,MSTP支持的P/A机制请见MSTP快速收敛机制中的增强方式的P/A机制。
VBST保护机制
与RSTP相同,VBST支持BPDU保护、TC保护、Root保护和环路保护四种保护功能。其原理和应用场景请参见四种保护功能。
VBST与标准协议STP/RSTP互通
现网中存在VBST设备与STP/RSTP设备混合组网的场景。由于VBST报文与标准STP/RSTP报文的格式不同,所以存在如何互通的问题。为了实现与标准协议STP/RSTP互通:
对于Trunk端口
- VBST设备和RSTP设备对接时,在VLAN1内,VBST设备使用标准的RSTP报文与对端交互,其他VLAN内使用填充RSTP Data的VBST报文与对端交互。
- VBST设备和STP设备对接时,在VLAN1内,VBST设备使用标准的STP报文与对端交互,其他VLAN内使用填充STP Data的VBST报文与对端交互。
下面结合图11-3介绍此场景下的生成树形成原理。
如图11-3所示,SwitchA~SwitchB部署STP/RSTP,SwitchC~SwitchD部署VBST,假设各设备间均采用Trunk端口连接,SwitchA~SwitchD的各接口上均允许VLAN1和VLAN10通过。
由于STP/RSTP设备只能收发STP/RSTP报文,对于VBST报文只能透传。因此,在VLAN1内,系统将按STP/RSTP协议形成一棵生成树。
假设VLAN1的生成树的阻塞点在SwitchD上。SwitchD运行VBST协议,阻塞只针对VLAN 1,SwitchD仍然可以接收并转发VLAN10的VBST报文,VLAN10内也存在环路,系统触发VLAN10的生成树计算。由于SwitchA、SwitchB直接透传VLAN10的VBST报文,所以只有SwitchC和SwitchD上的四个端口参与VLAN10的生成树计算。最终可形成如图11-3所示的VLAN1和VLAN10生成树。
假设VLAN1的生成树的阻塞点在SwitchB上。SwitchB运行STP/RSTP协议,阻塞针对端口,SwitchB无法转发VLAN10的VBST报文,VLAN10内不存在环路,系统不会触发VLAN10的生成树计算。但VLAN10的VBST报文可沿VLAN1的生成树转发,可认为VLAN10与VLAN1共享生成树,如图11-3所示。
对于Access端口,VBST设备将只根据此端口所在的VLAN使用标准的STP报文(对接STP设备)或RSTP报文(对接RSTP设备)与对端交互。这样,拓扑计算将按照STP/RSTP协议进行,STP/RSTP协议不区分VLAN,所以最终形成一棵各VLAN共享的生成树。
可见,在与标准协议STP/RSTP对接时,只有使用Trunk端口对接且阻塞点设置在VBST设备的方案才能实现负载分担,所以推荐使用此对接互通方案。
VBST与PVST/PVST+/Rapid PVST+协议互通
现网中也存在VBST设备与PVST/PVST+/Rapid PVST+设备混合组网的场景。
对于Trunk端口
VBST设备和Rapid PVST+设备对接时,在VLAN1中,VBST设备使用标准的RSTP报文与对端交互(也会同时发填充RSTP Data的VBST报文),其他VLAN内使用RSTP Data填充的VBST报文与对端交互。
VBST设备和PVST+设备对接时,在VLAN1中,VBST设备使用标准的STP报文与对端交互(也会同时发填充STP Data的VBST报文),其他VLAN内使用STP Data填充的VBST报文与对端交互。
VBST设备和PVST设备对接时,报文交互跟VBST与PVST+对接类似。区别在于,在VLAN1中,VBST设备和PVST设备之间只发送填充STP Data的VBST报文交互。
两端报文可互相识别且均携带VLAN信息,因此可基于VLAN生成生成树。因此,VBST设备与PVST/PVST+/Rapid PVST+设备使用Trunk端口对接时,就如同VBST设备跟VBST设备对接一样。
对于Access端口
VBST设备将只根据此端口所在VLAN使用标准的STP(对接PVST/PVST+设备)或RSTP(对接Rapid PVST+设备)报文与对端交互。这样,拓扑计算将按照STP/RSTP协议进行,由于STP/RSTP协议不区分VLAN,所以最终形成一棵各VLAN共享的生成树。