STP不能快速迁移,即使是在点对点链路或边缘端口(边缘端口指的是该端口直接与用户终端相连,而没有连接到其它设备或共享网段上),也必须等待2倍的Forward Delay的时间延迟,端口才能迁移到转发状态。
RSTP(Rapid Spanning Tree Protocol,快速生成树协议)是STP协议的优化版。其“快速”体现在,当一个端口被选为根端口和指定端口后,其进入转发状态的延时在某种条件下大大缩短,从而缩短了网络最终达到拓扑稳定所需要的时间。
RSTP可以快速收敛,但是和STP一样存在以下缺陷:局域网内所有网桥共享一棵生成树,不能按VLAN阻塞冗余链路,所有VLAN的报文都沿着一棵生成树进行转发。
MSTP(Multiple Spanning Tree Protocol,多生成树协议)可以弥补STP和RSTP的缺陷,它既可以快速收敛,也能使不同VLAN的流量沿各自的路径转发,从而为冗余链路提供了更好的负载分担机制。
MSTP的特点如下:
MSTP设置VLAN映射表(即VLAN和生成树的对应关系表),把VLAN和生成树联系起来。通过增加“实例”(将多个VLAN整合到一个集合中)这个概念,将多个VLAN捆绑到一个实例中,以节省通信开销和资源占用率。
MSTP把一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立。
MSTP将环路网络修剪成为一个无环的树型网络,避免报文在环路网络中的增生和无限循环,同时还提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN数据的负载分担。
MSTP兼容STP和RSTP。
MST域(Multiple Spanning Tree Regions,多生成树域)是由交换网络中的多台设备以及它们之间的网段所构成。这些设备具有下列特点:
都启动了MSTP;
具有相同的域名;
具有相同的VLAN到生成树实例映射配置;
具有相同的MSTP修订级别配置;
这些设备之间在物理上有链路连通。
域内所有设备都有相同的MST域配置:
域名相同;
VLAN与生成树实例的映射关系相同(VLAN 1映射到生成树实例1,VLAN 2映射到生成树实例2,其余VLAN映射到CIST。其中,CIST即指生成树实例0);
相同的MSTP修订级别(此配置在图中没有体现)。
一个交换网络可以存在多个MST域。用户可以通过MSTP配置命令把多台设备划分在同一个MST域内。
VLAN映射表是MST域的一个属性,用来描述VLAN和生成树实例的映射关系。
例如图1中,域A0的VLAN映射表就是:VLAN 1映射到生成树实例1,VLAN 2映射到生成树实例2,其余VLAN映射到CIST。MSTP就是根据VLAN映射表来实现负载分担的。
IST(Internal Spanning Tree,内部生成树)是MST域内的一棵生成树。
IST和CST(Common Spanning Tree,公共生成树)共同构成整个交换网络的生成树CIST(Common and Internal Spanning Tree,公共和内部生成树)。IST是CIST在MST域内的片段。
例如图1中CIST在每个MST域内都有一个片段,这个片段就是各个域内的IST。
CST是连接交换网络内所有MST域的单生成树。如果把每个MST域看作是一个“设备”,CST就是这些“设备”通过STP协议、RSTP协议计算生成的一棵生成树。
例如图1中红色线条描绘的就是CST。
CIST是连接一个交换网络内所有设备的单生成树,由IST和CST共同构成。
例如图1中,每个MST域内的IST加上MST域间的CST就构成整个网络的CIST。
一个MST域内可以通过MSTP生成多棵生成树,各棵生成树之间彼此独立。每棵生成树都称为一个MSTI(Multiple Spanning Tree Instance,多生成树实例)。
例如图1中,每个域内可以存在多棵生成树,每棵生成树和相应的VLAN对应。这些生成树就被称为MSTI。
MST域内IST和MSTI的根桥就是域根。MST域内各棵生成树的拓扑不同,域根也可能不同。
例如图1中,区域D0中,生成树实例1的域根为设备B,生成树实例2的域根为设备C。
总根(Common Root Bridge)是指CIST的根桥。
例如图1中,总根为区域A0内的某台设备。
域边界端口是指位于MST域的边缘,用于连接不同MST域、MST域和运行STP的区域、MST域和运行RSTP的区域的端口。
在进行MSTP计算的时候,域边界端口在MST实例上的角色和CIST的角色保持一致,即如果域边界端口在CIST上的角色是Master端口,则它在域内所有MST实例上的角色也是Master端口。例如图1中,如果区域A0的一台设备和区域D0的一台设备的第一个端口相连,整个交换网络的总根位于A0内,则区域D0中这台设备上的第一个端口就是区域D0的域边界端口。
在MSTP的计算过程中,端口角色主要有根端口、指定端口、Master端口、Alternate端口、Backup端口等。
根端口:负责向根桥方向转发数据的端口。
指定端口:负责向下游网段或设备转发数据的端口。
Master端口:连接MST域到总根的端口,位于整个域到总根的最短路径上。从CST上看,Master端口就是域的“根端口”(把域看作是一个节点)。Master端口在IST/CIST上的角色是根端口,在其它各个实例上的角色都是Master端口。
Alternate端口:根端口和Master端口的备份端口。当根端口或Master端口被阻塞后,Alternate端口将成为新的根端口或Master端口。
Backup端口:指定端口的备份端口。当指定端口被阻塞后,Backup端口就会快速转换为新的指定端口,并无时延的转发数据。当开启了MSTP的同一台设备的两个端口互相连接时就存在一个环路,此时设备会将其中一个端口阻塞,Backup端口是被阻塞的那个端口。
端口在不同的生成树实例中可以担任不同的角色。
MSTP将整个二层网络划分为多个MST域,各个域之间通过计算生成CST;域内则通过计算生成多棵生成树,每棵生成树都被称为是一个多生成树实例。其中实例0被称为IST,其它的多生成树实例为MSTI。MSTP同STP一样,使用配置消息进行生成树的计算,只是配置消息中携带的是设备上MSTP的配置信息。
通过比较配置消息后,在整个网络中选择一个优先级最高的设备作为CIST的根桥。在每个MST域内MSTP通过计算生成IST;同时MSTP将每个MST域作为单台设备对待,通过计算在域间生成CST。CST和IST构成了整个网络的CIST。
在MST域内,MSTP根据VLAN和生成树实例的映射关系,针对不同的VLAN生成不同的生成树实例。每棵生成树独立进行计算,计算过程与STP计算生成树的过程类似,请参见“STP的基本原理”。
MSTP中,一个VLAN报文将沿着如下路径进行转发:
在MST域内,沿着其对应的MSTI转发;
在MST域间,沿着CST转发。