MSTP 多生成树协议,可以通过这个协议生成多个树,而不是单一的一颗树了。

RSTP在STP基础上进行了改进,实现了网络拓扑快速收敛。但由于局域网内所有的VLAN共享一棵生成树,因此被阻塞后链路将不承载任何流量,无法在VLAN间实现数据流量的负载均衡,从而造成带宽浪费。为了弥补STP和RSTP的缺陷,IEEE于2002年发布的802.1s标准定义了MSTP。MSTP兼容STP和RSTP,既可以快速收敛,又提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN数据的负载均衡。

 

单生成树的弊端 - 部分VLAN路径不通

如下图所示,网络中有SWA、SWB、SWC三台交换机。配置VLAN2通过两条上行链路,配置VLAN3只通过一条上行链路。为了解决VLAN2的环路问题,需要运行生成树。在运行单个生成树的情况下,假设SWC与SWB相连的端口成为预备端口(Discarding状态),那么VLAN3的路径就会被断开,无法上行到SWB。

 

MSRPC协议的通俗理解_数据

单生成树的弊端 - 无法实现流量分担

如下图所示,为了实现流量分担,需要配置两条上行链路为Trunk链路,允许通过所有VLAN;SWA和SWB之间的链路也配置为Trunk链路,允许通过所有VLAN。将VLAN2的三层接口配置在SWA上,将VLAN3的三层接口配置在SWB上。

MSRPC协议的通俗理解_运维_02

我们希望VLAN2和VLAN3分别使用不同的链路上行到相应的三层接口,但是如果连接到SWB的端口成为预备端口(Alternate Port)并处于Discarding状态,则VLAN2和VLAN3的数据都只能通过一条上行链路上行到SWA,这样就不能实现流量分担。

单生成树的弊端 - 次优二层路径


如下图所示, SWC 与 SWA 和 SWB 相连的链路配置为 Trunk 链路,允许通过所有 VLAN ; SWA 与 SWB 之间的链路也配置为 Trunk 链路,允许通过所有 VLAN 。


运行单个生成树之后,环路被断开, VLAN2 和 VLAN3 都直接上行到 SWA 。


在 SWA 上配置 VLAN2 的三层接口,在 SWB 上配置 VLAN3 的三层接口,那么, VLAN3 到达三层接口的路径就是次优的。


MSRPC协议的通俗理解_MSRPC协议的通俗理解_03

在之前的内容里,我们了解到,为了解决交换网络中环路的问题,有了STP协议,后来为了解决STP收敛太慢的问题,有了RSTP(快速生成树协议),对于STP和RSTP来说,都是把交换网络中的设备组建成了一颗单生成树,通过以上的内容我们发现, 单生成树有时候会造成部分vlan路径不通、无法实现流量分担以及次优路径等问题,那么MSTP慢慢就开始进入了工程师的视野。

多生成树实例解决单生成树弊端

lMST域内可以生成多棵生成树,每棵生成树都称为一个MSTI (多生成树实例)。MSTI之间彼此独立,且每个MSTI的计算过程基本与RSTP的计算过程相同。

如下图所示,图中红色的部分是多生成树实例1的部分,对于这个实例1来说,是包含vlan2的,对于vlan3和vlan4是包含在实例2里面的,对于实例1和实例2来说在逻辑上阻塞掉的端口是不一样的。

MSRPC协议的通俗理解_MSRPC协议的通俗理解_04

 


多生成树协议即 MSTP ( Multiple Spanning Tree Protocol )。


MST 域是多生成树域( Multiple Spanning Tree Region ),由交换网络中的多台交换设备以及它们之间的网段所构成。同一个 MST 域的设备具有下列特点:


都启动了 MSTP 。


具有相同的域名。


具有相同的 VLAN 到生成树实例映射配置。


具有相同的 MSTP 修订级别配置。


 


一个 MST 域内可以生成多棵生成树,每棵生成树都称为一个 MSTI ,每个 MSTI 都使用单独的 RSTP 算法,计算单独的生成树。


每个 MSTI ( MST Instance )都有一个标识( MSTID ), MSTID 是一个两字节的整数。 VRP 平台支持 16 个 MST Instance , MSTID 取值范围是 0 ~ 15 ,默认所有 VLAN 映射到 MST Instance 0 。


VLAN 映射表是 MST 域的属性,它描述了 VLAN 和 MSTI 之间的映射关系, MSTI 可以与一个或多个 VLAN 对应,但一个 VLAN 只能与一个 MSTI 对应。


MSTP 兼容 STP 和 RSTP ,既可以快速收敛,又提供了数据转发的各个冗余路径,在数据转发过程中实现 VLAN 数据的负载均衡。


 




MSRPC协议的通俗理解_运维_05


所谓生成树实例就是多个VLAN的一个集合。通过将多个VLAN捆绑到一个实例,可以节省通信开销和资源占用率。MSTP各个实例拓扑的计算相互独立,在这些实例上可以实现负载均衡。可以把多个相同拓扑结构的VLAN映射到一个实例里,这些VLAN在端口上的转发状态取决于端口在对应MSTP实例的状态。


如图所示,MSTP通过设置VLAN映射表(即VLAN和MSTI的对应关系表),把VLAN和MSTI联系起来。每个VLAN只能对应一个MSTI,即同一VLAN的数据只能在一个MSTI中传输,而一个MSTI可能对应多个VLAN。


经计算,最终生成两棵生成树:


MSTI1以S4为根交换设备,转发VLAN2的报文。


MSTI2以S6为根交换设备,转发VLAN3的报文。


这样所有VLAN内部可以互通,同时不同VLAN的报文沿不同的路径转发,实现了负载分担。


 

MSRPC协议的通俗理解_数据_06


交换网络内所有 MST 域的一棵生成树。如果把每个 MST 域看作是一个节点, CST就是这些节点通过STP或RSTP协议计算生成的一棵生成树。


内部生成树IST(Internal Spanning Tree)是各MST域内的一棵生成树。 IST 是一个特殊的 MSTI , MSTI 的 ID 为 0 ,通常称为 MSTI0 。


SST(Single Spanning Tree):运行STP或RSTP的交换设备只能属于一个生成树 ; MST 域中只有一个交换设备,这个交换设备构成单生成树。


所有MST域的IST加上CST就构成一棵完整的生成树,即CIST。


域根( Regional Root) 分为 IST 域根和 MSTI 域根。


IST 域根如图 1 所示,在 MST 域中 IST 生成树中距离总根最近的交换设备是 IST 域根。


一个 MST 域内可以生成多棵生成树,每棵生成树都称为一个 MSTI 。 MSTI 域根是每个多生成树实例的树根。如图 3 所示,域中不同的 MSTI 有各自的域根。


总根是 CIST(Common and Internal Spanning Tree) 的根桥。如图 1 中的 S1。


主桥( Master Bridge )也就是 IST Master ,它是域内距离总根最近的交换设备。如图 1 中的黄色交换机。如果总根在 MST 域中,则总根为该域的主桥。


端口角色:同 RSTP , MSTP 中定义了根端口、指定端口、 Alternate 端口、 Backup 端口和边缘端口。


端口状态:同RSTP,MSTP定义的端口状态有Forwarding, Learning, Discarding。

MSTP拓扑计算


CIST 的计算


经过比较配置消息后,在整个网络中选择一个优先级最高的交换设备作为 CIST 的树根。在每个 MST 域内 MSTP 通过计算生成 IST ;同时 MSTP 将每个 MST 域作为单台交换设备对待,通过计算在 MST 域间生成 CST 。 CST 和 IST 构成了整个交换设备网络的 CIST 。


MSTI 的计算


在 MST 域内, MSTP 根据 VLAN 和生成树实例的映射关系,针对不同的 VLAN 生成不同的生成树实例。每棵生成树独立进行计算,计算过程与 STP 计算生成树的过程类似。


MSTP 对拓扑变化的处理


MSTP 拓扑变化处理与 RSTP 拓扑变化处理过程类似。


MSTI 的特点:


每个 MSTI 独立计算自己的生成树,互不干扰。


每个 MSTI 的生成树计算方法与 STP 基本相同。


每个 MSTI 的生成树可以有不同的根,不同的拓扑。


每个 MSTI 在自己的生成树内发送 BPDU 。


每个 MSTI 的拓扑通过命令配置决定。


每个端口在不同 MSTI 上的生成树参数可以不同。


每个端口在不同 MSTI 上的角色、状态可以不同。


在运行 MSTP 协议的网络中,一个 VLAN 报文将沿着如下路径进行转发:


在 MST 域内,沿着其对应的 MSTI 转发。


在 MST 域间,沿着 CST 转发。


 

MSTP快速收敛机制

除支持RSTP所支持的普通P/A (Proposal/Agreement)机制外,MSTP还支持增强方式的P/A机制。

MSRPC协议的通俗理解_生成树_07

 

如上图所示,在 MSTP 中, P/A 机制工作过程如下:


上游设备发送 Proposal 报文,请求进行快速迁移。下游设备接收到后,把与上游设备相连的端口设置为根端口,并阻塞所有非边缘端口。


上游设备继续发送 Agreement 报文。下游设备接收到后,根端口转为 Forwarding 状态。


下游设备回应 Agreement 报文。上游设备接收到后,把与下游设备相连的端口设置为指定端口,指定端口进入 Forwarding 状态。


缺省情况下,华为数据通信设备使用增强的快速迁移机制。如果华为数据通信设备和其他制造商的设备进行互通,而其他制造商的设备 P/A 机制使用普通的快速迁移机制,此时,可在华为数据通信设备上通过设置 P/A 机制为普通的快速迁移机制,从而实现华为数据通信设备和其他制造商的设备进行互通。


 


 


MSTP配置实现  

为实现分别属于不同VLAN的PC访问Internet的流量能够进行负载均衡,可采用MSTP来实现,VLAN1~10为一组,VLAN11~20为另一组。

如下图所示:

MSRPC协议的通俗理解_MSRPC协议的通俗理解_08


配置思路:


配置  MST  域并创建多实例,实现流量的负载分担。
 
在  MST  域内,配置各实例的根桥与备份根桥。
 
修改各实例中某端口的路径开销值,实现将该端口阻塞。
 
与终端设备相连的端口配置成为边缘端口,加快收敛。
 
数据准备:
 
域名为  RG1  。
 
实例为  MSTI1  和 
 MSTI2 
 。
 
实例  MSTI1  的根桥为 
 SWA 
 ,备份根桥为 
 SWB 
 ;实例 
 MSTI2 
 的根桥为 
 SWB 
 ,备份根桥为 
 SWA 
 。
 
实例  MSTI1  和实例 
 MSTI2 
 的阻塞口的路径开销值修改为 
 200000 
 。
 
VLAN  号是  1 
 ~ 
 20 
 。
 
PC1所属VLAN为10,PC2所属VLAN为20。
查看SWC上的配置
<SWC>dis cu
 #
 sysname SWC
 #
 vlan batch 2 to 20
 #
stp region-configuration    进入MST域视图
 region-name RG1   配置MST域的域名
 instance 1 vlan 1 to 10   配置多生成树实例和VLAN的映射关系
  instance 2 vlan 11 to 20
 active region-configuration  激活MST域的配置,使域名、VLAN映射表和MSTP修订级别生效。如果不执行本操作,以上配置的域名、VLAN映射表和MSTP修订级别无法生效。
#
 interface GigabitEthernet0/0/1
  port link-type trunk
  port trunk allow-pass vlan 2 to 4094
 #
 interface GigabitEthernet0/0/2
  port link-type trunk
  port trunk allow-pass vlan 2 to 4094
  stp instance 2 cost 200000
 #
 interface GigabitEthernet0/0/3
  port link-type access
  port default vlan 10
  stp edged-port enable
 #查看SWD上的配置
<SWD>dis cu
 #
 sysname SWD
 #
 vlan batch 2 to 20
 #
 stp region-configuration
  region-name RG1
  instance 1 vlan 1 to 10
  instance 2 vlan 11 to 20
  active region-configuration
 #
 interface MEth0/0/1
 #
 interface GigabitEthernet0/0/1
  port link-type trunk
  port trunk allow-pass vlan 2 to 4094
 #
 interface GigabitEthernet0/0/2
  port link-type trunk
  port trunk allow-pass vlan 2 to 4094
  stp instance 1 cost 200000  修改开销为200000
 #
 interface GigabitEthernet0/0/3
  port link-type access
  port default vlan 20
  stp edged-port enable
 #
  查看SWA上的配置
<SWA>dis cu
 #
 sysname SWA
 #
 vlan batch 2 to 20
 #
stp instance 1 root primary  在实例1里面,SWA是根桥
 stp instance 2 root secondary
 #
 stp region-configuration
  region-name RG1
  instance 1 vlan 1 to 10
  instance 2 vlan 11 to 20
  active region-configuration
 #
 interface GigabitEthernet0/0/1
  port link-type trunk
  port trunk allow-pass vlan 2 to 4094
 #
 interface GigabitEthernet0/0/2
  port link-type trunk
  port trunk allow-pass vlan 2 to 4094
   查看SWB上的配置:
<SWB>dis cu
 #
 sysname SWB
 #
 vlan batch 2 to 20
 #
 stp instance 1 root secondary
stp instance 2 root primary   实例2里面,SWB为根桥
 #  
 stp region-configuration
  region-name RG1
  instance 1 vlan 1 to 10
  instance 2 vlan 11 to 20
  active region-configuration
 #
 interface GigabitEthernet0/0/1
  port link-type trunk
  port trunk allow-pass vlan 2 to 4094
 #
 interface GigabitEthernet0/0/2
  port link-type trunk
  port trunk allow-pass vlan 2 to 4094


 

配置完成之后,查看SWA,SWB,SWC以及SWD的接口状态,如下图所示:

MSRPC协议的通俗理解_生成树_09

MSRPC协议的通俗理解_链路_10

MSRPC协议的通俗理解_链路_11

MSRPC协议的通俗理解_运维_12

总结:

[SwitchA] stp region-configuration   \\进入MST域视图
[SwitchA-mst-region] region-name RG1   \\配置MST域的域名
[SwitchA-mst-region] instance 1 vlan 2 to 10   \\配置多生成树实例和VLAN的映射关系
[SwitchA-mst-region] instance 2 vlan 11 to 20
[SwitchA-mst-region] active region-configuration   \\激活MST域的配置,使域名、VLAN映射表和MSTP修订级别生效
[SwitchA] stp instance 1 root primary   \\配置当前设备为根桥设备
[SwitchA] stp instance 2 root secondary     \\配置当前交换设备为备份根桥设备
[SwitchA] stp pathcost-standard legacy    \\配置SwitchA的端口路径开销值的计算方法为华为计算方法
[SwitchA] stp enable    \\在SwitchA上启动MSTP