多生成树MultipleSpanningTreeProtocolWord格式文档下载.docx
《多生成树MultipleSpanningTreeProtocolWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《多生成树MultipleSpanningTreeProtocolWord格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。
STP协议和其他协议一样,是随着网络的不断发展而不断更新换代的。
最初被广泛应用的是IEEE802.1DSTP,随后以它为基础产生了IEEE802.1wRSTP、IEEE802.1sMSTP。
1.1.1
IEEE802.1DSTP
STP协议的基本思想十分简单。
自然界中生长的树是不会出现环路的,如果网络也能够像一棵树一样生长就不会出现环路。
于是,STP协议中定义了根桥(RootBridge)、根端口(RootPort)、指定端口(DesignatedPort)、路径开销(PathCost)等概念,目的就在于通过构造一棵树的方法达到裁剪冗余环路的目的,同时实现链路备份和路径最优化。
用于构造这棵树的算法称为生成树算法(SpanningTreeAlgorithm)。
要实现这些功能,网桥之间必须要进行一些信息的交互,这些信息交互单元就称为配置消息BPDU(BridgeProtocolDataUnit)。
STPBPDU是一种二层报文,目的MAC是多播地址01-80-C2-00-00-00,所有支持STP协议的网桥都会接收并处理收到的BPDU报文。
该报文的数据区里携带了用于生成树计算的所有有用信息。
STP的工作过程是:
首先进行根桥的选举。
选举的依据是网桥优先级和网桥MAC地址组合成的桥ID,桥ID最小的网桥将成为网络中的根桥,它的所有端口都连接到下游桥,所以端口角色都成为指定端口。
接下来,连接根桥的下游网桥将各自选择一条“最粗壮”的树枝作为到根桥的路径,相应端口的角色就成为根端口。
循环这个过程到网络的边缘,指定端口和根端口确定之后一棵树就生成了。
生成树经过一段时间(默认值是30秒左右)稳定之后,指定端口和根端口进入转发状态,其他端口进入阻塞状态。
STPBPDU会定时从各个网桥的指定端口发出,以维护链路的状态。
如果网络拓扑发生变化,生成树就会重新计算,端口状态也会随之改变。
这就是生成树的基本原理。
随着应用的深入和网络技术的发展,STP的缺点在应用中也被暴露了出来。
STP协议的缺陷主要表现在收敛速度上。
当拓扑发生变化,新的配置消息要经过一定的时延才能传播到整个网络,这个时延称为ForwardDelay,协议默认值是15秒。
在所有网桥收到这个变化的消息之前,若旧拓扑结构中处于转发的端口还没有发现自己应该在新的拓扑中停止转发,则可能存在临时环路。
为了解决临时环路的问题,STP使用了一种定时器策略,即在端口从阻塞状态到转发状态中间加上一个只学习MAC地址但不参与转发的中间状态,两次状态切换的时间长度都是ForwardDelay,这样就可以保证在拓扑变化的时候不会产生临时环路。
但是,这个看似良好的解决方案实际上带来的却是至少两倍ForwardDelay的收敛时间!
这在某些实时业务(如语音视频)中是不能接受的。
1.1.2
IEEE802.1wRSTP
为了解决STP协议的收敛速度缺陷,2001年IEEE定义了基于IEEE802.1w标准的快速生成树协议RSTP。
RSTP协议在STP协议基础上做了三点重要改进,加快了收敛速度(最快可在1秒以):
(1)
为根端口和指定端口设置了快速切换用的替换端口(AlternatePort)和备份端口(BackupPort)两种角色。
当根端口失效的情况下,替换端口就会快速转换为新的根端口并无时延地进入转发状态;
当指定端口失效的情况下,备份端口就会快速转换为新的指定端口并无时延地进入转发状态。
(2)
在只连接了两个交换端口的点对点链路中,指定端口只需与下游网桥进行一次握手就可以无时延地进入转发状态。
如果是连接了三个以上网桥的共享链路,下游网桥是不会响应上游指定端口发出的握手请求的,只能等待两倍ForwardDelay时间进入转发状态。
(3)
直接与终端相连而不与其他网桥相连的端口定义为边缘端口(EdgePort)。
边缘端口可以直接进入转发状态,不需要任何延时。
由于网桥无法知道端口是否是直接与终端相连,所以需要人工配置。
RSTP协议相对于STP协议的确有很多改进,并且向下兼容STP协议,可以混合组网。
但是,RSTP和STP一样同属于单生成树SST(SingleSpanningTree),有它自身的诸多缺陷,主要表现在三个方面:
由于整个交换网络只有一棵生成树,在网络规模比较大的时候会导致较长的收敛时间。
因为RSTP是单生成树协议,所有VLAN共享一棵生成树,为了保证VLAN部可以正常通信,网络每个VLAN都必须沿着生成树的路径方向连续分布,否则将会出现有的VLAN由于部链路被阻塞而被分隔开,从而导致VLAN部无法通信的问题。
当某条链路被阻塞后将不承载任何流量,无法实现负载均衡,造成了带宽的极大浪费。
这些缺陷都是单生成树无法克服的,于是支持VLAN的多生成树协议MSTP出现了。
1.2
MSTP技术优点
多生成树协议MSTP是IEEE802.1s中定义的一种新型生成树协议,相对于STP和RSTP,优势非常明显。
MSTP的特点如下:
◆
MSTP引入“域”的概念,把一个交换网络划分成多个域。
每个域形成多棵生成树,生成树之间彼此独立;
在域间,MSTP利用CIST保证全网络拓扑结构的无环路存在。
MSTP引入“实例(Instance)”的概念,将多个VLAN映射到一个实例中,以节省通信开销和资源占用率。
MSTP各个实例拓扑的计算是独立的(每个实例对应一棵单独的生成树),在这些实例上就可以实现VLAN数据的负载分担。
MSTP可以实现类似RSTP的端口状态快速迁移机制。
MSTP兼容STP和RSTP。
2
MSTP详细介绍
2.1
相关术语
在图1中的每台设备都运行MSTP。
下面将结合图形解释MSTP的一些基本概念。
图1MSTP基本概念示意图
MST域
MST域是由交换网络中的多台设备以及它们之间的网段所构成。
这些设备具有下列特点:
都启动了MSTP;
具有相同的域名;
具有相同的VLAN到生成树实例映射配置;
具有相同的MSTP修订级别配置;
这些设备之间在物理上有链路连通。
例如,图1中的区域A0就是一个MST域。
VLAN映射表
VLAN映射表是MST域的一个属性,用来描述VLAN和生成树实例的映射关系。
例如,图1中MST域A0的VLAN映射表就是:
VLAN1映射到生成树实例1,VLAN2映射到生成树实例2,其余VLAN映射到CIST。
IST
IST是域实例0上的生成树。
IST和CST共同构成整个交换网络的CIST。
IST是CIST在MST域的片段。
图1中,CIST在每个MST域都有一个片段,这个片段就是各个域的IST。
(4)
CST
CST是连接交换网络所有MST域的单生成树。
如果把每个MST域看作是一个“设备”,CST就是这些“设备”通过STP协议、RSTP协议计算生成的一棵生成树。
图1中红色线条描绘的就是CST。
(5)
CIST
CIST是连接一个交换网络所有设备的单生成树,由IST和CST共同构成。
图1中,每个MST域的IST加上MST域间的CST就构成整个网络的CIST。
(6)
MSTI
一个MST域可以通过MSTP生成多棵生成树,各棵生成树之间彼此独立。
每棵生成树都称为一个MSTI。
例如图1中,每个域可以存在多棵生成树,每棵生成树和相应的VLAN对应。
这些生成树就被称为MSTI。
(7)
域边界端口
域边界端口是指位于MST域的边缘,用于连接不同MST域、MST域和运行STP的区域、MST域和运行RSTP的区域的端口。
(8)
桥ID
由桥的优先级和MAC地址组成。
(9)
总根
总根是指CIST实例中桥ID最优的桥。
(10)
外部根路径开销
外部根路径开销指的是端口到总根的最短路径开销。
(11)
域根
MST域的IST和每个MSTI的根桥都是一个域根。
MST域各棵生成树的拓扑不同,域根也可能不同。
(12)
部根路径开销
到域根的最短路径开销。
(13)
指定桥ID
由指定桥的优先级和MAC地址组成。
(14)
指定端口ID
由指定端口的优先级和端口号组成。
(15)
端口角色
在MSTP的计算过程中,端口角色有根端口、指定端口、Master端口、Alternate端口和Backup端口。
端口在不同的生成树实例中可以担任不同的角色。
端口角色示意如图2所示。
图2端口角色示意图
根端口:
负责向根桥方向转发数据的端口。
指定端口:
负责向下游网段或设备转发数据的端口。
Master端口:
连接MST域到总根的端口,位于整个域到总根的最短路径上。
Alternate端口:
根端口和Master端口的备份端口。
当根端口或Master端口被阻塞后,Alternate端口将成为新的根端口或Master端口。
Backup端口:
当开启了MSTP的同一台设备的两个端口互相连接时就存在一个环路,此时设备会阻塞端口ID较小的端口,此阻塞端口称为Backup端口,而另外一个端口则处于转发状态,成为指定端口。
Backup端口是指定端口的备份端口,当指定端口被阻塞且无法发送协议报文后,Backup端口的报文超时后就会快速转换为新的指定端口,并无时延的转发数据。
(16)
端口状态
MSTP中,根据端口是否学习MAC地址和是否转发用户流量,可将端口状态划分为以下三种:
Forwarding状态:
学习MAC地址,转发用户流量;
Learning状态:
学习MAC地址,不转发用户流量;
Discarding状态:
不学习MAC地址,不转发用户流量。
2.2
MSTP算法实现
2.2.1
初始状态
各台设备的各个端口在初始时会生成以自己为根桥的配置消息,总根和域根都是本桥ID,外部根路径开销和部根路径开销全为0,指定桥ID为本桥ID,指定端口为本端口,接收BPDU报文的端口为0。
2.2.2
端口角色的选择原则
端口角色的选择原则如表1所示。
表1端口角色的选择原则
端口角色
选择原则
根端口
端口的端口优先级向量优于其指定优先级向量,且设备的根优先级向量取自该端口的根路径优先级向量
指定端口
端口的指定优先级向量优于其端口优先级向量
Master端口
域边界根端口在MSTI实例上的角色就是Master端口
Alternate端口
端口的端口优先级向量优于其指定优先级向量,但设备的根优先级向量不是取自该端口的根路径优先级向量
Backup端口
端口的端口优先级向量优于其指定优先级向量,但端口优先级向量中的指定桥ID为本设备的桥ID
说明:
端口角色的选择原则中涉及到多种优先级向量,这些优先级向量的含义以及计算方法的介绍,请参考“2.2.3
优先级向量计算”。
只要端口收到的消息优先级向量优于其端口优先级向量,就会引起所有优先级向量的重新计算,并且也会重新计算每个端口的角色。
2.2.3
优先级向量计算
所有网桥的MSTP角色都是通过报文中携带的信息计算出来的,其中报文中携带的最重要的信息就是生成树的优先级向量。
下面将分别介绍一下CIST优先级向量和MSTI优先级向量的计算方法。
1.CIST优先级向量计算
在CIST中优先级向量由总根、外部根路径开销、域根、部根路径开销、指定桥ID、指定端口ID和接收BPDU报文的端口ID组成。
为了方便后续描述,现做如下假设:
初始情况下,网桥B的端口PB对外发送报文中携带的信息如下:
总根为RB,外部根路径开销为ERCB,域根为RRB,部根路径开销为IRCB,指定桥ID为B,指定端口ID为PB,接收BPDU报文的端口ID为PB;
网桥B的端口PB收到网桥D的端口PD发送过来的报文中携带的信息如下:
总根为RD,外部根路径开销为ERCD,域根为RRD,部根路径开销为IRCD,指定桥ID为D,指定端口ID为PD,接收BPDU报文的端口ID为PB;
网桥B的端口PB收到的网桥D的端口PD发送过来的报文的优先级较高。
根据上述假设,下面将逐一介绍各优先级向量的计算方法。
消息优先级向量
消息优先级向量是MSTP协议报文中所携带的优先级向量。
根据假设,网桥B的端口PB收到的消息优先级向量即为:
{RD
:
ERCD
RRD
IRCD
D
PD
PB}。
如果网桥B和网桥D不在同一个域,那么部根路径开销对网桥B而言是毫无意义的,它会被赋值为0。
端口优先级向量
在初始情况下,端口优先级向量的信息是以自己为根。
端口PB的端口优先级向量为:
{RB
:
ERCB
RRB
IRCB
B
PB
PB}。
端口优先级向量是随端口收到的消息优先级向量更新的:
如果端口收到的消息优先级向量优于端口优先级向量,则将端口优先级向量更新为消息优先级向量;
否则,端口优先级向量保持不变。
由于端口PB收到的消息优先级向量优于端口优先级向量,所以端口优先级向量更新为:
根路径优先级向量
根路径优先级向量由端口优先级向量计算所得:
如果端口的优先级向量来自不同域的网桥,根路径优先级向量的外部根路径开销为端口的路径开销和端口优先级向量的外部根路径开销之和,根路径优先级向量的域根为本桥的域根,部根路径开销为0。
假设网桥B的端口PB的路径开销为PCPB,则端口PB的根路径优先级向量为:
ERCD+PCPB:
B
0
D
PB};
如果端口优先级向量来自同一域的网桥,根路径优先级向量的部路径开销为端口优先级向量的部根路径开销和端口路径开销之和,计算后端口PB的根路径优先级向量为:
ERCD:
IRCD+PCPB
桥优先级向量
桥优先级向量中总根ID、域根ID以及指定桥ID都是本桥ID,外部根路径开销和部根路径开销为0,指定端口ID和接收端口ID也全为0。
网桥B的桥优先级向量为:
{B:
0:
B:
0}。
根优先级向量
根优先级向量是桥优先级向量和所有指定桥ID和本桥ID值不相同的根路径优先级向量的最优值,如果本桥优先级向量比较优,那么本桥就为CIST总根。
假设网桥B的桥优先级向量最优,则网桥B的根优先级向量为:
0}。
指定优先级向量
端口的指定优先级向量由根优先级向量计算所得,将根优先级向量的指定桥ID替换为本桥ID,指定端口ID替换为自己的端口ID。
网桥B的端口PB的指定优先级向量为:
PB:
2.MSTI优先级向量计算
MSTI的各优先级向量计算的规则和CIST优先级向量计算规则是基本一致的,存在两点区别:
MSTI优先级向量中没有总根和外部根路径开销,仅由域根、部根路径开销、指定桥ID、指定端口ID和接收BPDU报文的端口ID组成。
MSTI只处理来自同一域的消息优先级向量。
2.2.4
角色选择过程
下面结合图3的组网对CIST实例的计算过程进行简要说明。
假设,网桥的优先级为SwitchA优于SwitchB,SwitchB优于SwitchC,4、5、10分别为链路的路径开销。
SwitchA和SwitchB属于同一域,SwitchC单独一个域。
图3MSTP算法计算过程组网图
图3中各设备的初始情况下对外发送的报文中携带的消息优先级向量如表2所示。
表2各台设备的初始状态
设备
端口
报文中的消息优先级向量
SwitchA
AP1
{A:
0:
A:
AP1:
0}
AP2
AP2:
SwitchB
BP1
{B:
B:
BP1:
BP2
BP2:
SwitchC
CP1
{C:
C:
CP2:
CP2
设备各端口的端口优先级向量与消息优先级向量在初始情况下是保持一致的。
在初始情况下各设备的端口都会被计算为指定端口且对外发送以自己为根桥的消息优先级向量。
1.SwitchA的角色选择过程
SwitchA的端口AP1和端口AP2会分别收到来自SwitchB和SwitchC的报文,SwitchA会将端口AP1以及AP2的端口优先级向量和收到的来自其它交换机的消息优先级向量进行比较,由于AP1和AP2的端口优先级向量优于报文中携带的消息优先级向量,端口AP1和AP2端口角色不变仍为指定端口,设备SwitchA为总根且为SwitchA和SwitchB所在域的域根。
此后端口定时对外传播以自己为根的消息。
&
端口优先级向量和消息优先级向量的比较、处理过程为:
逐一比较端口优先级向量和消息优先级向量中的各元素,元素值较小的优先级向量较优,当各元素都相等时,端口优先级向量和消息优先级向量相等;
当消息优先级向量优于端口优先级向量或者消息优先级向量中的指定桥ID的桥MAC和指定端口ID分别和端口优先级向量中的指定桥ID的桥MAC和指定端口ID一致时,用消息优先级向量替换端口优先级向量。
2.SwitchB的角色选择过程
SwitchB的端口BP1收到来自SwitchC的端口CP1的报文后,将消息优先级向量和端口优先级向量比较,由于端口优先级向量优于消息优先级向量,端口角色不更新。
SwitchB的端口BP2收到来自SwitchA的端口AP2的报文后,处理过程如下:
将端口的消息优先级向量和端口优先级向量进行比较。
由于端口的消息优先级向量优于端口优先级向量,将端口的端口优先级向量更新为消息优先级向量{A:
BP2};
计算端口的根路径优先级向量。
SwitchA和SwitchB在同一域,端口的根路径优先级向量为{A:
10:
计算SwitchB的根优先级向量。
只有端口BP2的根路径优先级向量是来自其它设备,由于端口BP2的根路径优先级向量优于SwitchB的桥优先级向量,SwitchB的根优先级向量为{A:
指定优先级向量计算。
端口BP1的指定优先级向量为{A:
BP2},端口BP2的指定优先级向量为{A:
BP2}。
端口角色的确定:
将端口BP1和BP2的指定优先级向量和端口优先级向量进行比较,由于BP1的指定优先级向量优于端口优先级向量,则BP1角色为指定端口,定时对外发送以SwitchA为总根和域根的指定优先级向量{A:
由于BP2的端口优先级向量优于指定优先级向量、且根优先级向量取自端口BP2的根路径优先级向量,则BP2角色为根端口。
3.SwitchC的角色选择过程
SwitchC的端口CP1收到来自SwitchB未更新前的消息优先级向量{B:
CP1},端口CP2收到来自SwitchA的消息优先级向量{A:
CP2},经过分别比较,CP1和CP2的消息优先级向量均优于端口优先级向量,因此分别更新CP1和CP2的端口优先级向量为{B:
CP1}和{A:
CP2}。
由于SwitchC与SwitchA和SwitchB不在同一域,端口CP1的根路径优先级向量为{B:
5:
CP1},端口CP2的根路径优先级向量为{A:
4:
CP2},CP2的根路径优先级向量优于CP1的根路径优先级向量,则根优先级向量为{A:
端口CP1和CP2的指定优先级向量分别为{A:
CP1:
CP2}和{A:
CP2},端口CP1被计算为指定端口,CP2被计算为根端口。
SwitchC的端口CP1收到来自BP1更新后的消息优先级向量{A:
CP1}后,经过比较CP1的消息优先级向量优于端口优先级向量,更新端口优先级向量为{A:
CP1},端口CP1计算后的根路径优先级向量为{A:
CP1}。
由于端口CP2收到的消息优先级向量没有变化,根据前面的计算,端口CP2的根路径优先级向量保持为{A:
CP2},CP2的根路径优先