MSTP
多生成树协议概述
MSTP是IEEE802.1S中定义的生成树协议,MSTP兼容STP和RSTP,既可以快速收敛,又提供了数据转发多个冗余路径,在数据转发过程中实现VLAN数据的负载均衡
MSTP可以将一个或多个VLAN映射到一个Instance(实例),再基于Instance计算生成树,映射到同一个Instance的VLAN共享同一棵生成树
注意:生成树不是基于VLAN运行额,而是基于Instance运行的
MSTP的基本概念
MST Region
MSTP网络层次
- MSTP把一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立
MST Region(Multiple Spanning Tree Region,多生成树域)由交换网络中的多台交换设备以及它们之间的网段所构成
- 一个局域网可以存在多个MST域,各MST域之间在物理上直接或间接相连。用户可以通过MSTP配置命令把多台交换设备划分在同一个MST域内
- MSTP网络中包含一个或多个MST域,每个MST域中包含一个或多个生成树实例
同一个MST域的设备具有下列特点
- 都启动了MSTP
- 具有相同的域名
- 具有相同的VLAN到生成树实例的映射配置
- 具有相同的MSTP修订级别配置
MSTI
MSTI(Multiple Spanning Tree Instance,多生成树实例),一个MST域内可以生成多棵生成树,每棵生成树都称为一个MSTI
- MSTI使用Instance ID标识,华为设备取值为0-4094
VLAN映射表
- MST域的属性,描述了VLAN和MSTI之间的映射关系
- 每个VLAN只能对应一个MSTI,而一个MSTI可以对应多个VLAN
注意:Instance0是缺省存在的,而且缺省时,华为交换机上所有的VLAN都映射到了Instance0
CST
CST(Common Spanning Tree,公共生成树),是连接交换网络内所有MST域的一棵生成树
- 如果把每个MST域看作是一个节点,CST就是这些节点通过生成树协议计算生成的一棵生成树
IST
IST(Internal Spanning Tree,内部生成树),是各MST域内的一棵生成树
- IST是一个特殊的MSTI,MSTI的Instance ID为0
CIST
CIST(Common & Internal Spanning Tree,公共和内部生成树),通过生成树协议计算生成的,连接一个交换网络内所有交换设备的单生成树
SST
SST(Single Spanning Tree,单生成树)的两种情况
- 运行生成树协议的交换设备只能属于一个生成树
- MST域中只有一个交换设备,这个交换设备构成单生成树
如图所示:MST Region 3,该域中的唯一的交换设备构成SST
总根、域根和主桥
- 总根(CIST Root):是CIST的根桥,如图中SW1
- 域根(Regional Root)
- 分为IST域根和MSTI域根
- MST域根是每个多生成树实例的树根
- IST域根,在MST域中IST生成树中距离总根最近的交换设备是IST域根
- 主桥(Master Bridge)
- 是IST Master,它是域内距离总根最近的交换设备,如图中SW1、SW2、SW3、SW4
- 如果总根在MST域中,则总根为该域的主桥
总结
MSTP的端口角色
MSTP中定义的端口角色
- 根端口:在非根桥上,离根桥最近的端口是本交换设备的根端口。根端口负责向树根方向转发数据
- 指定端口:对一台交换设备而言,它的指定端口是向下游设备转发BPDU报文的端口
- Alternate端口:提供了从指定桥到根的另一条可切换路径,作为根端口的备份
- Backup端口:作为指定端口的备份,提供了另外一条从根节点到叶节点的备份通路
- Master端口:是MST域和总根相连的所有路径中最短路径上的端口,它是交换设备上连接MST域到总根的端口
- 域边缘端口:指位于MST域的边缘并连接其他MST域或SST的端口
- 边缘端口:如果指定端口位于整个域的边缘,不再与任何交换设备连接,这种端口叫做边缘端口
MSTP的端口状态
MSTP定义的端口状态与RSTP协议中定义的相同:
- Forwarding状态:端口既转发用户流量,学习MAC地址,又接收/发送BPDU报文
- Learning状态:过渡状态,端口接收/发送BPDU报文,不转发用户流量但是学习MAC地址
- Discarding状态:端口直接收BPDU报文,不转发用户流量也不学习MAC地址
MSTP报文
MSTP使用MST BPDU作为生成树计算的依据。MST BPDU报文用来计算生成树的拓扑、维护网络拓扑以及传达拓扑变化记录
重要字段
Protocol Version ID:协议版本标识符(STP为0,RSTP为2,MSTP为3)
BPDU Type:BPDU类型(0x00为STP配置BPDU,0x80为STP的TCN BPDU,0x02为RST BPDU或MST BPDU)
CIST Flags:CIST标志字段
CIST Root ID:CIST的总根交换设备ID
CIST External Path Cost:CIST外部路径开销指从本交换设备所属的MST域到CIST根交换设备(总根)所属的MST域的累计路径开销。CIST外部路径开销根据链路带宽计算。
CIST Region Root ID:CIST的域根交换设备ID,即IST Master的ID(主桥)。如果总根在这个域内,那么域根交换设备ID就是总根交换设备ID
CIST Port ID:本端口在IST中的指定端口ID
Message Age:BPDU报文的生存期
Max Age:BPDU报文的最大生存周期,超时则认为到跟交换设备的链路故障(默认:20秒)
Hello Time:Hello定时器(缺省:2秒)
Forward Delay:Forward Delay定时器(缺省:15秒)
Version 1 Length:Version 1 BPDU的长度(值固定为0)
Version 3 Length:Version 3 BPDU的长度
MST Configuration ID:MST配置标识,标识MST域的标签信息
CIST Internal Root Path Cost:CIST内部路径开销指从本端口到IST Master交换设备(主桥)的累计路径开销。CIST内部路径开销根据链路带宽计算
CIST Bridge ID:CIST的指定交换设备ID
CIST Remaining Hops:BPDU报文在CIST中的剩余跳数
MSTI Configuration Message:MSTI配置信息。每个MSTI的配置信息占16Byte,如果有n个MSTI就占用n * 16Byte
MSTP工作原理
MSTP拓扑计算
MSTP拓扑计算
- MSTP可以将整个二层网络划分为多个MST域,各个域之间通过计算生成CST,域内生成IST,CST和IST构成了整个交换设备网络的CIST
- 域内还可以基于实例计算生成多棵生成树,每棵生成树都被称为是一个MSTI
CIST和MSTI都是根据优先级向量来计算的,这些优先级向量信息都包含在MST BPDU中。各交换设备互相交换MST BPDU来生成CIST和MSTI
参与CIST计算的优先级向量为:
- (根交换设备ID(总根)、外部路径开销、域根ID、内部路径开销、指定交换设备ID、指定端口ID、接收端口ID)
参与MSTI计算的优先级向量为:
- (域根ID、内部路径开销、指定交换设备ID、指定端口ID、接收端口ID)
优先级向量说明:
- 根交换设备ID(总根):根交换设备ID用于选择CIST中的根交换设备(总根)
- 根交换设备ID = Priority(16bit) + MAC(48bit)
- 其中Priority为MSTI 0的优先级
- 外部路径开销(External Root Path Cost,ERPC):从CIST的域根(主桥)到达总根的路径开销
- MST域内所有交换设备上保存的外部路径开销相同
- 若CIST根交换设备(总根)在域中,则域内所有交换设备上的保存的外部开销为0
- 域根ID:域根ID用于选择MSTI中的域根
- 域根ID = Priority(16bit) + MAC(48bit)
- 其中Priority为MSTI 0的优先级
- 内部路径开销(Internal Root Path Cost,IPRC):本桥到达域根的路径开销
- 域边缘端口保存的内部路径开销大于非域边缘端口保存的内部路径开销
- 指定交换设备ID:CIST或MSTI实例的指定交换设备是本桥通往域根的最邻近的上游桥
- 如果本桥就是总根或域根,则指定交换设备为自己
- 指定端口ID:指定交换设备上同本设备上根端口相连的端口
- Port ID = Priority(4位) + 端口号(12bit)
- 端口优先级必须是16的整数倍
- 接收端口ID:接收到BPDU报文的端口
- Port ID = Priority(4 bit) + 端口号(12bit)
- 端口优先级必须是16的整数倍
优先级向量比较原则:
- 比较根交换设备ID
- 如果根交换设备ID相同,则比较外部路径开销
- 如果外部路径开销相同,则比较域根ID
- 如果域根ID相同,则比较内部路径开销
- 如果内部路径开销相同,则比较指定交换设备ID
- 如果指定交换设备ID相同,则比较指定端口ID
- 如果指定端口ID相同,则比较接收端口ID
注意:同一向量比较,值最小的向量具有最高优先级
CIST计算
CIST计算过程:
- 经过比较MST BPDU报文后,在整个网络中选择一个优先级最高的交换设备作为CIST的树根(总根)
- 在每个MST域内,MSTP通过计算生成IST
- 同时MSTP将每个MST域作为单台交换设备对待,通过计算在MST域间生成CST。
CST和IST构成整个交换设备网络的CIST
MSTI计算
MSTI计算过程
- 在MST域内,MSTP根据VLAN和生成树实例的映射关系,针对不同的VLAN生成不同的生成树实例
每棵生成树独立进行计算,计算过程与STP计算生成树的过程类似
MSTI的特点:
- 每个MSTI独立计算自己的生成树,互不干扰
- 每个MSTI的生成树计算方法与STP基本相同
- 每个MSTI的生成树可以有不同的根,不同的拓扑
- 每个MSTI在自己的生成树内发送BPDU
- 每个MSTI的拓扑通过命令配置决定
- 每个端口在不同MSTI上的生成树参数可以不同
- 每个端口在不同MSTI上的角色、状态可以不同
根桥和备份根桥:可以通过计算来自动确定生成树的根桥,用户也可以手动配置设备为指定生成树的根桥或备份根桥
- 设备在各生成树中的角色互相独立,在作为一棵生成树的根桥或备份根桥的同时,也可以作为其他生成树的根桥或备份根桥;但在同一棵生成树中,一台设备不能既作为根桥,又作为备份根桥
- 在一棵生成树中,生效的根桥只有一个;当两台或两台以上的设备被指定为同一棵生成树的根桥时,系统将选择MAC地址最小的设备作为根桥
- 可以在每棵生成树中指定多个备份根桥。当根桥出现故障或关机时,备份根桥可以取代根桥成为指定生成树的根桥;但此时若配置了新的根桥,则备份根桥将不会成为根桥。如果配置了多个备份根桥,则MAC地址最小的备份根桥将成为指定生成树的根桥
MSTP网络数据转发
在运行MSTP协议的网络中,一个VLAN报文将沿着如下路径进行转发
- 在MST域内,沿着其对应的MSTI转发
- 在MST域间,沿着CST转发