1       MSTP的引入

启用STP/RSTP协议的网桥上所有的VLAN共享一棵生成树,无法实现VLAN的负载分担,造成链路带宽的浪费。

MSTP(多生成树)的提出,很好的解决了网络中VLAN负载分担的问题。

MSTPIEEE803.1S标准中定义。

MSTP的基本思想是基于实例计算出多颗生成树,每个实例可以包含一个或多个VLAN,每个VLAN只能映射到一个实例,从而实现不同VLAN组之间的负载分担。

2       MSTP 的基本概念

2.1   MST

多生成树的前提是:把不同的VLAN映射到不同的实例中去,为了确保多生成树计算的准确性,这些网桥的VLAN和实例映射关系必须完全相同。然而在大型网络中不能保证所有网桥配置相同的VLAN映射关系,MSTP就提出了MST域来解决此问题。

MST域是把拥有相同VLAN映射关系以及其他属性的网桥放在同一个域中,域之间运行标准的RSTP。可以将大型网络划分成多个MST

MST域的组成因素

1. 域名( Configuration Name ):本域的域名

2. 修订级别( Vevision level ):目前保留,默认为 0

3. 配置摘要( Configuration Digest ):由网桥的 VLAN 和实例映射关系生成的长度为 16 字节的 HMAC-MD5 签名。如果配置摘要不同,表示 VLAN 和实例映射关系不同,属于不同的 MST 域。

2.2   CSIISTCIST、总根和域根

CIST:公共和内部生成树,是整个网络所有设备经过生成树计算得到的一棵树

总根:是整个网络中优先级最高的桥,也是CIST中的根桥

CST:公共生成树,是连接网络内MST域的单生成树,总根所处的域为CST的根桥

IST:内部生成树,是MST域内的一棵生成树

MST域内的每一颗生成树都会对应一个实例,IST的实例号为0,没有映射到其他实例的VLAN都会默认映射到实例0上,即IST

IST的根桥即CIST的域根,是在MST域内距离总根最近的网桥,也称Master桥。

2.3   MSTI MSTI 域根

一个MST域内都可以通过MSTP协议生成多颗生成树,每颗生成树之间是独立的,每颗生成树都称为一个MSTI(多生成实例)

每个MSTI映射一个或多个VLAN,并计算出一颗独立的生成树

MSTI域根就是每一个MSTI上优先级最高的网桥。可以根据MSTI来配置该MSTI中域根的优先级。

2.4   MSTP 端口角色

MSTP端口角色比RSTP多出了Master端口和域边界端口。

Master端口:是指Master桥与总根相连的端口。

域边界端口:MST域内网桥和其他MST域或STP/RSTP网桥相连的端口,Master端口也可以是域边界端口。

网桥上的根端口、指定端口、Alternate端口、Backup端口的定义与RSTP中相同。

3       MSTP 工作原理

3.1   MSTP BPDU 格式

1. Protocol ID :固定为 0x00 ,表示 STP

2.  Protocol Version ID :协议号为 0x03 ,表示 MSTP

3. BPDU Type BPDU 类型为 0x02 ,表示 RST/MST BPDU

4. CIST Flags CIST 的标志位

5.  CIST Root ID :表示 CIST 总根 ID

6. CIST EPC :表示 CIST 外部路径开销

7. CIST Region Root ID :表示 CIST 域根 ID

8. CIST port ID :表示 CIST 指定端口 ID

9.  Message Age :表示该 BPDU 到当前时间的存活时间

10. Max Age ;表示该 BPDU 最大存活时间

11. Hello Time BPDU 的发送周期

12. Forward Delay BPDU 传播到全网的最大延迟

13. Versionl Length=0 :表示该 BPDU 不包含 Versionl 信息

MST 专有字段

1.  Version3 Length :表示 MST 专有字段的长度,该字段用户接收到 BPDU 后进行校验。

2.  MST Configuration ID MST 配置标识,包含四个字段,如下:

Ø  Format Selector :格式选择,固定为 0x00

Ø  Name configuration Name MST 域名

Ø  Revision Level :修订版本

Ø  Config Digest :配置摘要

3. CIST  IRPC CIST 内部路径开销,表示发送此 BPDU 的网桥到 CIST 域根的路径开销。

4.  CIST Bridge ID :表示发送此 PBDU 的网桥 ID

5.  CIST Remainig Hops CIST 剩余跳数,用来限制 MST 的规模,默认值为 20

6. MSTI Configuration Message :包含了 0 个或最多 64 MSTI 信息, MSTI 配置信息数量由域内 MST 实例数决定,每一个 MSTI 配置信息长度为 16 字节。

MSTI 配置信息

1.    MSTI Flags :第 1 位到第 7 位跟 RSTP 定义相同,第 8 位为 Master 标志位,取代了 RSTP 中的 TCA 标志位。

2. MSTI Region Root ID :表示 MST 实例的域根的 ID

3. MSTI IRPC :表示发送此 BPDU 的网桥到达 MSTI 域根的路径开销

4. MSTI Bridge Priority :表示发送此 BPDU 的网桥(指定桥)的优先级

5. MSTI Port Priority :表示发送此 BPDU 的端口(指定端口)的优先级

6.  MSTI Remainig Hops :表示 BPDU 在该 MST 实例中的剩余跳数

3.2   CIST/MSTI 优先级向量

MSTP计算包括CIST计算和MSTI计算,CIST优先级向量包括Root IDEPRCRRoot IDIRPCDesignateBridgeIDDesignatePortIDRcvPortID 。优先级向量比较原则为“最小最优”,具体原则比较如下:

1.  先比较 CIST 的总根 ID ,小者优先

2.  若总根 ID 相同,则比较 CIST 的外部路径开销,小者优先

3. EPRC 相同,则比较 CIST 域根 ID ,小者优先

4. RRoot ID 相同,则比较 CIST 内部路径开销,小者优先

5. ERPC 相同,则比较 CIST 指定桥 ID ,小者优先

6. DesignateBridgeID 相同,则比较指定端口 ID ,小者优先

7. DesignatePortID 相同,则比较接受端口 ID ,小者优先

经过CIST的计算,最后可以生成一棵贯穿整个网络的生成树

MSTI 优先级向量

MSTI优先级向量包括RRootIDIRPCDesignateBridgeIDDesignatePortIDRcvPortID 。优先级向量比较原则为“最小最优先”。具体原则比较参考CIST比较原则。

每一个MSTI都进行独立的比较计算,最后在域内生成多颗独立的生成树。

3.3   MSTP 计算方法

每个BPDU报文中既包括了计算CIST的信息,也包含了计算MSTI的信息,因此在计算MSTI的时候不需要单独发送BPDU报文,当网桥在域内进行IST计算时,域内的每颗MSTI树也同时计算生成。

在进行CST计算时,会把每个MST域做为一个逻辑的网桥,其中网桥IDIST域根ID

当网桥收BPDU并判断来自不同域时,它不会解析MST专有字段的信息,因此,MSTI的计算仅限于区域内。

由于网桥端口在不同的实例中担任不同的角色,所以可能会出现网桥端口既发送BPDU也接收BPDU的情况。

3.4   CST 计算过程

MST域内:在初始状态,每个网桥都会认为自己是总根,从而向外发送自身为总根、域根、指定桥的BPDU报文。各网桥收到BPDU之后开始进行优先级向量的比较并确定总根、域根、指定桥以及端口的角色。

CST的计算时将不同的MST域看作成逻辑的网桥,网桥IDIST的域根ID,通过比较优先级向量(总根、EPC、域根、指定端口ID、接受端口ID)。

CST 计算过程:

1. 初始时,每个域“网桥”由域内优先级最高的的网桥表示,此时优先级最高的网桥为初始 CIST 域根,该域“网桥”向其他域发送以该域根为总根的 BPDU EPC 0

2.  经过 RSTP 计算可以确定域“根网桥”,该域总包括了整个网络中优先级最高的网桥,即 CIST 总根。

3.  经过 EPC 可以确定每个域“网桥”的端口角色,域“网桥”的“根端口”即为域的 Master 端口,该 Master 端口所在的网桥即为新的 CIST 域根。

4.  一个域可能有多个域边界端口,在确定 Master 端口后,通过比较 BPDU 的优先级,可以确定域边界端口角色为指定端口、 Alternate 端口和 Backup 端口

5. 阻塞域之间的 Alternate 端口和 Backup 端口

3.5   IST 计算过程

CIST计算完成之后,确认了CIST域根。域内以CIST域根为根桥,结合IRPC确认各网桥端口角色,最终得到IST

IST计算所需要的优先级向量包含:域根、IPRC、指定桥ID、指定端口ID、接受端口ID

每个域都进行IST计算,得到每一个域的IST,结合之前域间计算的CST,最终得到整个网络的CIST

3.6   MSTI 的计算

IST计算过程中,网桥通过交互BPDU中的MST配置信息可以同时确定MST实例的根桥以及端口角色。

可以通过为网桥指定不同实例中的优先级。

3.7   MSTP RSTP 的互操作

当运行MSTP的网桥和运行RSTP/STP的网桥一起工作时,RSTP/STP网桥会将MSTP域看作一个桥ID为域根IDRSTP桥。

RSTP/STP网桥收到MST BPDU后,会提取BPDU中的(RootIDEPRCRRootIDDesignatePortID)作为RSTP/STP计算所需的优先级向量RootIDRPCDesignateBrigeIDDesignatePortID

MSTP网桥收到RSTP/STP BPDU后,会将BPDU中的信息(RootIDRPCDesignateBrigeIDDesignatePortID)对应到MSTP计算所需要的优先级向量中,其中DesignateBrigeID既可以做MSTP优先级向量中的PRoot ID,也可作为DesignateBrigeIDIRPC设置为0

3.8   MSTP P/A 机制

MSTP中,在上游网桥发送的Proposal BPDU中,ProposalAgreement均置位,下游网桥收到ProposalAgreement均置位的BPDU后,执行同步操作然后回应agreement置位的BPDU,使得上游指定端口快速进入转发状态。

4       MSTP 兼容性配置

H3C设备端口可以识别/发送的MSTP BPDU格式如下两种:

1.  符合 802.1S 协议的标准格式

2. 与非标准格式兼容的格式

默认情况下,端口配置为自动识别方式。

在网络中,由于一些厂商的设备再对MSTP协议的实现上存在差异,即用加密算法计算配置摘要时采用私有的密钥,从而导致即使MST域配置相同,不同厂商的设备之间也不能实现在MSTP域内互通,此时需要在设备上开启摘要侦听特性,从而实现不同厂商设备再MST域内的完全互通。

由于RSPTMSTPP/A机制的差别(RSPT只要Proposal置位就会回应,MSTP需要ProposalAgreement同时置位才会回应),当运行MSTPRSTP两设备需要快速收敛时,需要在运行MSTP设备的特定端口开启No Agreement Check特性。