产生背景
在二层交换网络中,一旦存在环路就会造成报文在环路内不断循环和增生,产生广播风暴,从而占用所有的有效带宽,使网络变得不可用。在这种环境下生成树协议应运而生,生成树协议是一种二层管理协议,它通过有选择性地阻塞网络冗余链路来达到消除网络二层环路的目的,同时具备链路的备份功能。生成树协议和其他协议一样,是随着网络的不断发展而不断更新换代的。最初被广泛应用的是IEEE 802.1D-1998 STP(Spanning Tree Protocol,生成树协议),随后以它为基础产生了IEEE 802.1w RSTP(Rapid Spanning Tree Protocol,快速生成树协议)、PVST(Per VLAN Spanning Tree,每VLAN生成树)协议和IEEE 802.1s MSTP(Multiple Spanning Tree Protocol,多生成树协议)。
一、stp
网络的环路问题:一旦网络形成环路,会产生广播风暴而造成网络阻塞。spanning tree protocol是国际标准技术协议,用来在二层网络解决环路的问题。stp协议的国际标准是802.1d(1998),并且经过发展,逐渐产生RSTP、PVST、MSTP协议。
1、定义
stp协议的定义可以看成2个,一个是狭义的、一个是广义的。广义上stp是指stp协议组,包括STP、RSTP、PVST、MSTP协议;狭义上是指stp技术协议标准。本文中统一用后者来作为定义。stp采用的是自然树的思想,因为树不会有环路出现。
在学习stp离不开以下的概念:
根桥:(root bridge):优先级最高的交换机
根端口(root port):负责接收根桥方向数据的端口
指定端口(designed port):指定端口是根桥中负责向下发送数据的端口
路径开销(path cost):数据在路径传输的过程中所有的损耗,不同的厂家计算的方法可能不同。下面应该会有提到。
Forward Delay:当拓扑发生变化,新的配置消息要经过一定的时延才能传播到整个网络,这个时延称为Forward Delay,协议默认值是15秒。
2、实现
信息交互单元是bpdu(bridge protocol data unit)又称配置单元,他是二层报文,目的多播地址为01-80-c2-00-00-00。所有支持stp网桥都会接收并处理收到的bpdu报文。
(1)根桥选举是通过桥的桥id(优先级+mac)比较得到的,而且根桥的所有下游端口是指定端口。
(2)连接根桥的下游网桥将各自依据到根桥的路径开销来选择一条链路作为到根桥的路径,相应端口的角色就成为根端口。
(3)将根端口与指定端口连接起来就形成了生成树,其他端口则处于阻塞状态。
(4)生成经过计算后稳定,时间大概是30秒左右。端口的转态分为转发状态和阻塞状态,还有一个切换过渡的中间状态。而且端口定时发送bpdu信号来维护生成树。如果网络拓扑发生变化,那么生成树需要重新经过计算来生成。时间大概也是30秒。
摘要:“STP的工作过程是:首先进行根桥的选举。选举的依据是网桥优先级和网桥MAC地址组合成的桥ID,桥ID最小的网桥将成为网络中的根桥,它的所有端口都连接到下游桥,所以端口角色都成为指定端口。接下来,连接根桥的下游网桥将各自选择一条 “最粗壮”的树枝作为到根桥的路径,相应端口的角色就成为根端口。循环这个过程到网络的边缘,指定端口和根端口确定之后一棵树就生成了。生成树经过一段时间(默认值是30秒左右)稳定之后,指定端口和根端口进入转发状态,其他端口进入阻塞状态。STP BPDU会定时从各个网桥的指定端口发出,以维护链路的状态。如果网络拓扑发生变化,生成树就会重新计算,端口状态也会随之改变。这就是生成树的基本原理。
随着应用的深入和网络技术的发展,STP的缺点在应用中也被暴露了出来。STP的缺陷主要表现在收敛速度上。
当拓扑发生变化,新的配置消息要经过一定的时延才能传播到整个网络,这个时延称为Forward Delay,协议默认值是15秒。在所有网桥收到这个变化的消息之前,若旧拓扑结构中处于转发的端口还没有发现自己应该在新的拓扑中停止转发,则可能存在临时环路。为了解决临时环路的问题,STP使用了一种定时器策略,即在端口从阻塞状态到转发状态中间加上一个只学习MAC地址但不参与转发的中间状态,两次状态切换的时间长度都是Forward Delay,这样就可以保证在拓扑变化的时候不会产生临时环路。但是,这个看似良好的解决方案实际上带来的却是至少两倍Forward Delay的收敛时间,这在某些实时业务(如语音视频)中是不能接受的。”
4、缺陷
(1)stp的收敛速度较慢。一般的forward delay协议(端口的转态转换时间),默认为15秒。在计算生成树的时间是15s,拓扑发生变化的重新生成树时间也是30s,因为端口状态的一次转换为forward delay,端口的变化过程是“阻塞-->中间-->转发”或“转发-->中间-->阻塞”,发生了两次的端口状态变化。 协议的收敛时间不合适延时低的业务,如语音和视频;如果是大型网络,拓扑可能频繁变化,重新生成stp,造成计算资源的浪费。
(2)stp采用阻塞端口的方式来解决环路问题,对网络资源造成了浪费。
二、RSTP
为了解决STP的收敛速度缺陷,2001年IEEE定义了基于IEEE 802.1w(已经合入IEEE 802.1D-2004)标准的快速生成树协议RSTP。RSTP在STP基础上做了三点重要改进,加快了收敛速度(最快可在1秒以内):
(1) 为根端口和指定端口设置了快速切换用的替换端口(Alternate Port)和备份端口(Backup Port)两种角色。当根端口失效的情况下,替换端口就会快速转换为新的根端口并无时延地进入转发状态;当指定端口失效的情况下,备份端口就会快速转换为新的指定端口并进入转发状态。
(2)在只连接了两个交换端口的点对点链路中,指定端口只需与下游网桥进行一次握手就可以无时延地进入转发状态。如果是连接了三个以上网桥的共享链路,下游网桥是不会响应上游指定端口发出的握手请求的,只能等待两倍Forward Delay时间进入转发状态。
(3)直接与终端相连而不与其他网桥相连的端口定义为边缘端口(Edge Port)。边缘端口可以直接进入转发状态,不需要任何延时。由于网桥无法知道端口是否是直接与终端相连,所以需要人工配置。
RSTP相对于STP的确有很多改进,并且向下兼容STP,可以混合组网。但是,RSTP和STP一样同属于SST(Single Spanning Tree,单生成树),有它自身的诸多缺陷,主要表现在三个方面:
(1) 由于整个交换网络只有一棵生成树,在网络规模比较大的时候会导致较长的收敛时间。
(2)因为RSTP是单生成树协议,所有VLAN共享一棵生成树,为了保证VLAN内部可以正常通信,网络内每个VLAN都必须沿着生成树的路径方向连续分布,否则将会出现有的VLAN由于内部链路被阻塞而被分隔开,从而导致VLAN内部无法通信的问题。
(3)当某条链路被阻塞后将不承载任何流量,无法实现负载均衡,造成了带宽的极大浪费。这些缺陷都是单生成树无法克服的,于是支持VLAN的PVST和MSTP出现了。
vlan的问题???
三、PVST
在每个VLAN中生成一棵树,是一种直接简单的解决RSTP缺陷的方法。基于此思想,PVST协议应运而生,它能够保证每一个VLAN都不存在环路。
PVST协议可以简单理解为在每个VLAN上运行一个RSTP,不同VLAN之间的生成树完全独立。根据端口类型的不同,PVST收发的BPDU的格式也有所不同:
对于Access端口,PVST协议收发标准的RSTP BPDU。
对于Trunk和Hybrid端口,在所有允许通过的VLAN内收发各自的PVST BPDU,同时在其中的VLAN 1内收发标准的RSTP BPDU。
PVST BPDU 和RSTP BPD的内容相同,仅以太网的封装格式不同。 PVST协议在VLAN间实现了数据的负载均衡,有效地提高了链路带宽的利用率,同时也带来了新问题,主要有以下缺点:
(1) 由于每个VLAN都需要生成一棵树,PVST BPDU的通信量将正比于Trunk端口允许通过的VLAN数量。
(2) 在VLAN数量比较多时,维护多棵生成树的计算量和资源占用量将急剧增长。特别是当允许通过很多VLAN的Trunk端口状态变化时,所有生成树的状态都要重新计算,网络设备的CPU将不堪重负。
上述缺点限制了运行PVST的VLAN端口数量,对PVST的部署产生较大影响,这些缺点在MSTP中得到了解决。
1.2 MSTP技术优点
MSTP是IEEE 802.1s(已经合入IEEE 802.1Q-2011)中定义的一种新型生成树协议,相对于之前的生成树协议,优势非常明显。MSTP的特点如下:
- MSTP引入“域”的概念,把一个交换网络划分成多个域。每个域内形成多棵生成树,生成树之间彼此独立;在域间,MSTP利用CIST保证全网络拓扑结构的无环路存在。
- MSTP引入“实例(Instance)”的概念,将多个VLAN映射到一个实例中,以节省通信开销和资源占用率。MSTP各个实例拓扑的计算是独立的(每个实例对应一棵单独的生成树),在这些实例上就可以实现VLAN数据的负载分担。
- PVST最多支持 4096个VLAN,而MSTP最多可支持65个实例,因此其所需资源和计算量都大大降低。
- MSTP BPDU中包含所有实例的信息,因此MSTP相比于PVST,报文数量大大降低。
- MSTP可以实现类似RSTP的端口状态快速迁移机制。
- MSTP兼容STP和RSTP。
参考:华三生成树协议技术白皮书