MSTP协议原理与配置

前言: RSTP在STP的基础上进行了改进,加快了网络收敛的速度,但RSTP的很大缺点在于:局域网中所有的VLAN都共享这一棵生成树,因此被阻塞后链路将不再承载任何流量,无法在VLAN之间实现数据的负载均衡。因此,在IEEE802.1s中提出了多区域生成数协议(MSTP)来解决该问题。在华为设备中,默认情况下的STP模式为MSTP。

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

MSTP协议实现负载均衡 mstp协议原理_上行链路


如图所示,网络中有SWA、SWB、SWC三台交换机。配置VLAN2通过两条上行链路,配置VLAN3只通过一条上行链路。

为了解决VLAN2的环路问题,需要运行生成树。在运行单个生成树的情况下,假设SWC与SWB相连的端口成为预备端口(Discarding状态),那么VLAN3的路径就会被断开,无法上行到SWB。

实验验证

实验拓扑如下(注:为了试验效果,以下的交换机运行的STP模式为RSTP):

MSTP协议实现负载均衡 mstp协议原理_数据_02


查看SWC上的端口情况

MSTP协议实现负载均衡 mstp协议原理_MSTP协议实现负载均衡_03

在SWC上的配置如下:

[SWC]vlan batch 2 3
[SWC-GigabitEthernet0/0/3]port link-type access 
[SWC-GigabitEthernet0/0/3]port default vlan 2
[SWC-GigabitEthernet0/0/4]port link-type access 
[SWC-GigabitEthernet0/0/4]port default vlan 3
[SWC-GigabitEthernet0/0/2]port link-type trunk 
[SWC-GigabitEthernet0/0/2]port trunk allow-pass vlan 2
[SWC-GigabitEthernet0/0/1]port link-type trunk 
[SWC-GigabitEthernet0/0/1]port trunk allow-pass vlan 2 3

在SWB上的配置如下:

[SWB]vlan batch 2 3
[SWB-GigabitEthernet0/0/2]port link-type trunk 
[SWB-GigabitEthernet0/0/2]port trunk allow-pass vlan 2 3
[SWB-GigabitEthernet0/0/1]port link-type trunk 
[SWB-GigabitEthernet0/0/1]port trunk allow-pass vlan 2 3
[SWB-GigabitEthernet0/0/4]port link-type access 
[SWB-GigabitEthernet0/0/4]port default vlan 2
[SWB-GigabitEthernet0/0/5]port link-type access 
[SWB-GigabitEthernet0/0/5]port default vlan 3

使用PC1去ping PC3的结果如下所示:

MSTP协议实现负载均衡 mstp协议原理_MSTP协议实现负载均衡_04


使用PC2 去ping PC5的结果如下所示:

MSTP协议实现负载均衡 mstp协议原理_上行链路_05


可见,VLAN 3的路径不通

对于以上问题的解决方法有两种:

  1. 修改SWC上的配置,将GE0/0/2接口改成允许VLAN 2 3 通过,如下所示
  2. MSTP协议实现负载均衡 mstp协议原理_生成树_06

  3. 将交换机的STP 模式配置为MSTP

对于上述第一种解决方法,固然可以有效解决,但是如果连接到
SWB的端口成为预备端口(Alternate Port)并处于Discarding状态,则VLAN2和VLAN3的数据都只能通过一条上行链路上行到SWA,这样就不能实现流量分担。

MSTP的基本原理
多生成树实例

MSTP协议实现负载均衡 mstp协议原理_数据_07

MST域是多生成树域(Multiple Spanning Tree Region),由交换网络中的多台交换设备以及它们之间的网段所构成。

  • 一个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数据的负载均衡。
MSTP实例配置

配置思路:

  1. 进入MST域视图
  2. 配置MST域名
  3. 配置VLAN映射表
  4. 激活MST域的配置

以上图中的SWC为例,具体配置如下:

MSTP协议实现负载均衡 mstp协议原理_数据_08

查看配置情况:

MSTP协议实现负载均衡 mstp协议原理_上行链路_09


这时再用PC2的数据包就可以发送到PC5上了,用PC2去ping PC5,结果如下:

MSTP协议实现负载均衡 mstp协议原理_数据_10


抓包情况如下:

MSTP协议实现负载均衡 mstp协议原理_数据_11


现在对每个生成树实例进行查看

MSTP协议实现负载均衡 mstp协议原理_数据_12


(从图中可以看到,SWC上有三个接口允许通过VLAN 2,两个接口允许通过VLAN 3,所以instance 1有三个接口,instance 2 有两个接口,实例之间相互独立,互不影响)

假如将SWC的stp模式改为rstp,其他的交换机不变会怎么样?

我们将SWC在instance 1 的优先级改成0,

[SWC]stp instance 1 priority 0

看会不会影响根桥的选举,结果如下:

MSTP协议实现负载均衡 mstp协议原理_MSTP协议实现负载均衡_13


可见,SWA仍然为根桥,并没有受到影响。

这时,我们将SWC的stp模式改为MSTP,再同样的修改SWC在instance 1 的优先级为0,再次观察SWA上的端口情况

MSTP协议实现负载均衡 mstp协议原理_MSTP协议实现负载均衡_14


可见,这时SWA已经变成了非根桥。

说明只有支持MSTP的设备才能正常参与生成树实例的根桥选举。