一、MSTP 出现的背景:

RSTP 在STP 基础上进行了改进,实现了网络拓扑快速收敛。但 RSTP和 STP 还存在同一个缺陷:由于局域网内所有的VLAN 共享一棵生成树,因此无法在 VLAN间实现数据流量的负载均衡,链路被阻塞后将不承载任何流量,造成带宽浪费,还有可能造成部分 VLAN的报文无法转发。

为了弥补 STP 和RSTP 的缺陷, IEEE于 2002 年发布的802.1S 标准定义了 MSTP。MSTP 兼容 STP和RSTP,既可以快速收敛,又提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN 数据的负载均衡。

通过MSTP 把一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立。每棵生成树叫做一个多生成树实例MSTI(MultipleSpanning Tree Instance),每个域叫做一个 MST域(MSTRegion:MultipleSpanning Tree Region)。

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

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

二、MSTP 基本概念

1、MSTP 的网络层次

如图所示,MSTP 网络中包含 1 个或多个MST 域(MSTRegion),每个 MST Region 中包含一个或多个MSTI。组成 MSTI的是运行 STP/RSTP/MSTP 的交换设备,MSTI 是所有运行STP/RSTP/MSTP的交换设备经 MSTP 协议计算后形成的树状网络

2、MST 域(MST Region)

MST 域是多生成树域(MultipleSpanning Tree Region),由交换网络中的多台交换设备以及它们之间的网段所构成。同一个MST 域的设备具有下列特点:·都启动了 MSTP。·具有相同的域名。·具有相同的 VLAN 到生成树实例映射配置。·具有相同的 MSTP 修订级别配置。一个局域网可以存在多个MST 域,各 MST域之间在物理上直接或间接相连。用户可以通过 MSTP配置命令把多台交换设备划分在同一个MST 域内。

如图所示的 MST Region D0中由交换设备 S1、S2、 S3和 S4 构成,域中有3 个 MSTI。

3、VLAN 映射表

VLAN 映射表是MST 域的属性,它描述了 VLAN和 MSTI 之间的映射关系。如上图所示,MST 域 D0的 VLAN 映射表是:·VLAN1 映射到 MSTI1·VLAN2 和 VLAN3映射到 MSTI2·其余 VLAN 映射到MSTI0

4、域根

域根(Regional Root)分为IST(InternalSpanning Tree)域根和 MSTI 域根。IST 生成树中距离总根(CISTRoot)最近的交换设备是 IST 域根。

一个MST 域内可以生成多棵生成树,每棵生成树都称为一个 MSTI。

MSTI 域根是每个多生成树实例的树根。

如图所示,域中不同的MSTI 有各自的域根。

MSTI 之间彼此独立,MSTI 可以与一个或者多个 VLAN对应。但一个 VLAN 只能与一个MSTI 对应。

5、主桥

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

6、总根

总根是 CIST(Commonand Internal Spanning Tree)的根桥,如下图总根是区域 A0中的某台设备。

7、CST

公共生成树 CST(CommonSpanning Tree)是连接交换网络内所有 MST域的一棵生成树。

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

如上图所示,较粗的线条连接各个域构成CST。

8、IST

内部生成树 IST(InternalSpanning Tree)是各 MST 域内的一棵生成树。 IST 是一个特殊的MSTI, MSTI的 ID 为0,通常称为 MSTI0。 IST 是CIST 在 MST域中的一个片段。如上图所示,较细的线条在域中连接该域的所有交换设备构成IST。

9、SST

构成单生成树 SST(SingleSpanning Tree)有两种情况:运行STP 或 RSTP的交换设备只能属于一个生成树。

MST 域中只有一个交换设备,这个交换设备构成单生成树。如上图所示,B0 中的交换设备就是一棵单生成树。

10、端口角色

MSTP 在RSTP 的基础上新增了 2种端口, MSTP 的端口角色共有7 种:根端口、指定端口、 Alternate端口、Backup 端口、边缘端口、 Master端口和域边缘端口。

根端口、指定端口、Alternate 端口、 Backup端口和边缘端口的作用同 RSTP 协议中定义,MSTP中定义的所有端口角色如表所示。

说明:除边缘端口外,其他端口角色都参与MSTP 的计算过程。同一端口在不同的生成树实例中可以担任不同的角色。

MSTP 的端口状态

端口状态和端口角色对应表

说明:Yes:表示端口支持的状态。No:表示端口不支持的状态。

三、MSTP 报文

MSTP 使用多生成树桥协议数据单元MST BPDU(MultipleSpanning Tree Bridge Protocol Data Unit)作为生成树计算的依据。MSTBPDU 报文用来计算生成树的拓扑、维护网络拓扑以及传达拓扑变化记录。STP 中定义的配置 BPDU、RSTP 中定义的 RSTBPDU、 MSTP 中定义的MST BPDU 及 TCNBPDU差异对比如表所示。

MSTP 报文格式

无论是域内的 MST BPDU 还是域间的,前36 个字节和 RSTBPDU 相同。从第37 个字节开始是 MSTP专有字段。最后的 MSTI 配置信息字段由若干MSTI 配置信息组连缀而成。

MSTP 报文格式可配置:

目前 MSTP 的BPDU 报文存在两种格式:

·dot1s:IEEE802.1s规定的报文格式。

·legacy:私有协议报文格式。

如果端口收发报文格式为默认支持dot1s 或者 legacy,这样就存在一个缺点:需要人工识别对端的BPDU报文格式,然后手工配置命令来决定支持哪种格式。人工识别报文格式比较困难,且一旦配置错误,就有可能导致 MSTP计算错误,出现环路。

华为采用的端口收发MSTP 报文格式可配置(stpcompliance)功能,能够实现对 BPDU报文格式的自适应,这样报文收发不但支持dot1s 和 legacy格式,还能通过 auto 方式根据收到的BPDU 报文格式自动切换端口支持的 BPDU报文格式,使报文格式与对端匹配。在自适应的情况下,端口初始支持 dot1s格式,收到报文后,格式则和收到的报文格式保持一致。

每个 Hello Time 时间内端口最多能发送BPDU 的报文数可配置。

Hello Time 用于生成树协议定时发送配置消息维护生成树的稳定。

如果交换设备在一段时间内没有收到BPDU 报文,则会由于消息超时而对生成树进行重新计算。

当交换设备成为根交换设备时,该交换设备会按照该设置值为时间间隔发送BPDU 报文。非根交换设备采用根交换设备所设置的 HelloTime 时间值。

华为数据通信设备提供的每个Hello Time 时间内端口最多能够发送的BPDU 报文个数可配置(MaxTransmitted BPDU Number in Hello Time is Configurable)功能,可以设定当前端口在Hello Time 时间内配置BPDU 的最大发送数目。

用户配置的数值越大,表示每 HelloTime 时间内发送的报文数越多。

适当的设置该值可以限制端口每 HelloTime 时间内能发送的 BPDU 数目,防止在网络拓扑动荡时,BPDU 占用过多的带宽资源。

四、MSTP 拓扑计算

1、MSTP 的基本原理

MSTP 将整个二层网络划分为多个 MST域,各个域之间通过计算生成 CST。

域内则通过计算生成多棵生成树,每棵生成树都被称为是一个多生成树实例。

其中实例0 被称为 IST,其他的多生成树实例为MSTI。

MSTP同 STP 一样,使用配置消息进行生成树的计算,只是配置消息中携带的是设备上MSTP 的配置信息。

2、优先级向量

MSTI 和CIST 都是根据优先级向量来计算的,这些优先级向量信息都包含在MST BPDU 中。

各交换设备互相交换 MSTBPDU 来生成 MSTI 和CIST。

§参与 CIST 计算的优先级向量为:{ 根交换设备 ID,外部路径开销,域根ID,内部路径开销,指定交换设备 ID,指定端口ID,接收端口 ID}

§参与 MSTI 计算的优先级向量为:{ 域根 ID,内部路径开销,指定交换设备ID,指定端口 ID,接收端口ID }括号中的向量的优先级从左到右依次递减。

比较原则

同一向量比较,值最小的向量具有最高优先级。优先级向量比较原则如下。

  1. 首先,比较根交换设备 ID。

  2. 如果根交换设备 ID相同,再比较外部路径开销。

  3. 如果外部路径开销相同,再比较域根 ID。

  4. 如果域根 ID仍然相同,再比较内部路径开销。

  5. 如果内部路径仍然相同,再比较指定交换设备 ID。

  6. 如果指定交换设备 ID仍然相同,再比较指定端口 ID。

  7. 如果指定端口 ID还相同,再比较接收端口 ID。

如果端口接收到的 BPDU 内包含的配置消息优于端口上保存的配置消息,则端口上原来保存的配置消息被新收到的配置消息替代。端口同时更新交换设备保存的全局配置消息。反之,新收到的BPDU 被丢弃。

3、CIST 的计算

经过比较配置消息后,在整个网络中选择一个优先级最高的交换设备作为 CIST的树根。

在每个MST 域内MSTP 通过计算生成 IST;同时MSTP 将每个 MST域作为单台交换设备对待,通过计算在 MST 域间生成CST。

CST和 IST 构成了整个交换设备网络的CIST。

4、MSTI 的计算

在MST 域内, MSTP根据 VLAN 和生成树实例的映射关系,针对不同的VLAN 生成不同的生成树实例。

每棵生成树独立进行计算,计算过程与STP 计算生成树的过程类似,请参见 STP拓扑计算。

MSTI 的特点:

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

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

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

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

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

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

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

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

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

·在 MST 域间,沿着CST 转发。

5、MSTP 对拓扑变化的处理

MSTP 拓扑变化处理与 RSTP拓扑变化处理过程类似,请参见 RSTP 技术细节中的RSTP 拓扑变化处理。

五、MSTP 快速收敛机制

MSTP 支持普通方式和增强方式两种 P/A(Proposal/Agreement)机制:

·普通方式 MSTP 支持普通方式的 P/A 机制实现与 RSTP 支持的 P/A 机制实现相同。

·增强方式

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

  1. 上游设备发送Proposal 报文,请求进行快速迁移。下游设备接收到后,把与上游设备相连的端口设置为根端口,并阻塞所有非边缘端口。
  2. 上游设备继续发送Agreement 报文。下游设备接收到后,根端口转为 Forwarding状态。
  3. 下游设备回应Agreement 报文。上游设备接收到后,把与下游设备相连的端口设置为指定端口,指定端口进入Forwarding 状态。

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