MSTP简介
多生成树协议MSTP(Multiple Spanning Tree Protocol)是IEEE
802.1s中定义的生成树协议,通过生成多个生成树,来解决以太网环路问题。
目的:
在以太网中部署MSTP协议后可实现如下功能:
- 形成多棵无环路的树,解决广播风暴并实现冗余备份。
- 多棵生成树在VLAN间实现负载均衡,不同VLAN的流量按照不同的路径转发。
MSTP原理描述
STP/RSTP的缺陷:
RSTP在STP基础上进行了改进,实现了网络拓扑快速收敛。但RSTP和STP还存在同一个缺陷:由于局域网内所有的VLAN共享一棵生成树,因此无法在VLAN间实现数据流量的负载均衡,链路被阻塞后将不承载任何流量,还有可能造成部分VLAN的报文无法转发。
MSTP对STP和RSTP的改进:
- 为了弥补STP和RSTP的缺陷,IEEE于2002年发布的802.1S标准定义了MSTP。MSTP兼容STP和RSTP,既可以快速收敛,又提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN数据的负载均衡。
- MSTP把一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立。每棵生成树叫做一个多生成树实例MSTI(Multiple Spanning Tree Instance),每个域叫做一个MST域(MST Region:Multiple Spanning Tree Region)。
- 所谓生成树实例就是多个VLAN的一个集合。通过将多个VLAN捆绑到一个实例,可以节省通信开销和资源占用率。MSTP各个实例拓扑的计算相互独立,在这些实例上可以实现负载均衡。可以把多个相同拓扑结构的VLAN映射到一个实例里,这些VLAN在端口上的转发状态取决于端口在对应MSTP实例的状态。
MSTP基本概念:
MST域(MST Region)
都启动了MSTP。
- 具有相同的域名。
- 具有相同的VLAN到生成树实例映射配置。
- 具有相同的MSTP修订级别配置。
一个局域网可以存在多个MST域,各MST域之间在物理上直接或间接相连。用户可以通过MSTP配置命令把多台交换设备划分在同一个MST域内。
VLAN映射表:
VLAN映射表是MST域的属性,它描述了VLAN和MSTI之间的映射关系。
CST
公共生成树CST(Common Spanning Tree)是连接交换网络内所有MST域的一棵生成树。
如果把每个MST域看作是一个节点,CST就是这些节点通过STP或RSTP协议计算生成的一棵生成树。
IST
内部生成树IST(Internal Spanning Tree)是各MST域内的一棵生成树。
IST是一个特殊的MSTI,MSTI的ID为0,通常称为MSTI0。
IST是CIST在MST域中的一个片段。
SST
运行STP或RSTP的交换设备只能属于一个生成树。
MST域中只有一个交换设备,这个交换设备构成单生成树。
CIST
公共和内部生成树CIST(Common and Internal Spanning Tree)是通过STP或RSTP协议计算生成的,连接一个交换网络内所有交换设备的单生成树。
域根
域根(Regional Root)分为IST域根和MSTI域根。
一个MST域内可以生成多棵生成树,每棵生成树都称为一个MSTI。MSTI域根是每个多生成树实例的树根。
总根
总根是CIST(Common and Internal Spanning Tree)的根桥。
主桥
主桥(Master Bridge)也就是IST Master,它是域内距离总根最近的交换设备。
端口角色
根端口、指定端口、Alternate端口、Backup端口和边缘端口的作用同RSTP协议中定义。
除边缘端口外,其他端口角色都参与MSTP的计算过程。
同一端口在不同的生成树实例中可以担任不同的角色。
端口角色:
端口角色 | 说明 |
---|---|
根端口 | 在非根桥上,离根桥最近的端口是本交换设备的根端口。根交换设备没有根端口。根端口负责向树根方向转发数据。 |
指定端口 | 对一台交换设备而言,它的指定端口是向下游交换设备转发BPDU报文的端口。 |
Alternate端口 | 从配置BPDU报文发送角度来看,Alternate端口就是由于学习到其它网桥发送的配置BPDU报文而阻塞的端口。 从用户流量角度来看,Alternate端口提供了从指定桥到根的另一条可切换路径,作为根端口的备份端口。 |
Backup端口 | 从配置BPDU报文发送角度来看,Backup端口就是由于学习到自己发送的配置BPDU报文而阻塞的端口。 从用户流量角度来看,Backup端口作为指定端口的备份,提供了另外一条从根节点到叶节点的备份通路。 |
Master端口 | 1、 Master端口是MST域和总根相连的所有路径中最短路径上的端口,它是交换设备上连接MST域到总根的端口。 2、 Master端口是域中的报文去往总根的必经之路。 3、 Master端口是特殊域边缘端口,Master端口在CIST上的角色是Root Port,在其它各实例上的角色都是Master端口。 |
域边缘端口 | 域边缘端口是指位于MST域的边缘并连接其它MST域或SST的端口。 |
边缘端口 | 1、如果指定端口位于整个域的边缘,不再与任何交换设备连接,这种端口叫做边缘端口。2、 边缘端口一般与用户终端设备直接连接。 3、 端口使能MSTP功能后,会默认启用边缘端口自动探测功能,当端口在(2 × Hello Timer + 1)秒的时间内收不到BPDU报文,自动将端口设置为边缘端口,否则设置为非边缘端口。 |
端口状态:
MSTP定义的端口状态与RSTP协议中定义相同。
注:根端口、Master端口、指定端口和域边缘端口支持Forwarding、Learning和Discarding状态,Alternate端口和Backup端口仅支持Discarding状态。
MSPT报文:
MSTP使用多生成树桥协议数据单元MST BPDU(Multiple Spanning Tree Bridge Protocol Data Unit)作为生成树计算的依据。MST BPDU报文用来计算生成树的拓扑、维护网络拓扑以及传达拓扑变化记录。
STP中定义的配置BPDU、RSTP中定义的RST BPDU、MSTP中定义的MST BPDU及TCN BPDU差异对比如下:
四种BPDU差异比较:
版本 | 类型 | 名称 |
---|---|---|
0 | 0x00 | 配置BPDU |
0 | 0x80 | TCN BPDU |
2 | 0x02 | RST BPDU |
3 | 0x02 | MST BPDU |
MSTP帧格式:
无论是域内的MST BPDU还是域间的,前35个字节和RST BPDU相同。
从第36个字节开始是MSTP专有字段。最后的MSTI配置信息字段由若干MSTI配置信息组连缀而成。
MSTP 报文字段解释:
字段 | 说明 |
---|---|
Protocol Identifier | 协议标识符。 |
Protocol Version Identifier | 协议版本标识符,STP为0,RSTP为2,MSTP为3。 |
BPDU Type | BPDU类型,MSTP为0x02。0x00:STP的Configuration BPDU0x80:STP的TCN BPDU(Topology Change Notification BPDU)0x02:RST BPDU(Rapid Spanning-Tree BPDU)或者MST BPDU(Multiple Spanning-Tree BPDU) |
CIST Flags | CIST标志字段。 |
CIST Root Identifier | CIST的总根交换机ID。 |
CIST External Path Cost | CIST外部路径开销指从本交换机所属的MST域到CIST根交换机的累计路径开销。CIST外部路径开销根据链路带宽计算。 |
CIST Regional Root Identifier | CIST的域根交换机ID,即IST Master的ID。 如果总根在这个域内,那么域根交换机ID就是总根交换机ID。 |
CIST Port Identifier | 本端口在IST中的指定端口ID。 |
Message Age | BPDU报文的生存期。 |
Max Age | BPDU报文的最大生存期,超时则认为到根交换机的链路故障。 |
Hello Time | Hello定时器,缺省为2秒。 |
Forward Delay | Forward Delay定时器,缺省为15秒。 |
Version 1 Length | Version1 BPDU的长度,值固定为0。 |
Version 3 Length | Version3 BPDU的长度。 |
MST Configuration Identifier | MST配置标识,表示MST域的标签信息,包含4个字段:Configuration Identifier Format Selector:固定为0。Configuration Name:“域名”,32字节长字符串。Revision Level:2字节非负整数。Configuration Digest:利用HMAC-MD5算法将域中VLAN和实例的映射关系加密成16字节的摘要。只有MST Configuration Identifier中的四个字段完全相同的,并且互联的交换机,才属于同一个域。 |
CIST Internal Root Path Cost | CIST内部路径开销指从本端口到IST Master交换机的累计路径开销。CIST内部路径开销根据链路带宽计算。 |
CIST Bridge Identifier | CIST的指定交换机ID。 |
CIST Remaining Hops | BPDU报文在CIST中的剩余跳数。 |
MSTI Configuration Messages (may be absent) | MSTI配置信息。每个MSTI的配置信息占16 bytes,如果有n个MSTI就占用n×16bytes。单个MSTI Configuration Messages的字段说明如下:MSTI Flags:MSTI标志。MSTI Regional Root Identifier:MSTI域根交换机ID。MSTI Internal Root Path Cost:MSTI内部路径开销指从本端口到MSTI域根交换机的累计路径开销。MSTI内部路径开销根据链路带宽计算。MSTI Bridge Priority:本交换机在MSTI中的指定交换机的优先级。MSTI Port Priority:本交换机在MSTI中的指定端口的优先级。MSTI Remaining Hops:BPDU报文在MSTI中的剩余跳数。 |
MSTP报文抓包示例:
MSTP报文格式可配置:
目前MSTP的BPDU报文存在两种格式:
- dot1s:IEEE802.1s规定的报文格式。
- legacy:私有协议报文格式。
如果端口收发报文格式为默认支持dot1s或者legacy,这样就存在一个缺点:需要人工识别对端的BPDU报文格式,然后手工配置命令来决定支持哪种格式。人工识别报文格式比较困难,且一旦配置错误,就有可能导致MSTP计算错误,出现环路。
华为技术有限公司采用的端口收发MSTP报文格式可配置(stp compliance)功能,能够实现对BPDU报文格式的自适应:
- auto
- dot1s
- legacy
这样报文收发不但支持dot1s和legacy格式,还能通过auto方式根据收到的BPDU报文格式自动切换端口支持的BPDU报文格式,使报文格式与对端匹配。在自适应的情况下,端口初始支持dot1s格式,收到报文后,格式则和收到的报文格式保持一致。
每个Hello Time时间内端口最多能发送BPDU的报文数可配置:
Hello Time用于生成树协议定时发送配置消息维护生成树的稳定。如果交换设备在一段时间内没有收到BPDU报文,则会由于消息超时而对生成树进行重新计算。
当交换设备成为根交换设备时,该交换设备会按照该设置值为时间间隔发送BPDU报文。非根交换设备采用根交换设备所设置的Hello Time时间值。
华为技术有限公司数据通信设备提供的每个Hello Time时间内端口最多能够发送的BPDU报文个数可配置(Max Transmitted BPDU Number in Hello Time is Configurable)功能,可以设定当前端口在Hello Time时间内配置BPDU的最大发送数目。
用户配置的数值越大,表示每Hello Time时间内发送的报文数越多。适当的设置该值可以限制端口每Hello Time时间内能发送的BPDU数目,防止在网络拓扑动荡时,BPDU占用过多的带宽资源。
MSTP拓扑计算:
MSTP可以将整个二层网络划分为多个MST域,各个域之间通过计算生成CST。域内则通过计算生成多棵生成树,每棵生成树都被称为是一个多生成树实例。其中实例0被称为IST,其他的多生成树实例为MSTI。MSTP同STP一样,使用配置消息进行生成树的计算,只是配置消息中携带的是设备上MSTP的配置信息。
优先级向量:
MSTI和CIST都是根据优先级向量来计算的,这些优先级向量信息都包含在MST BPDU中。各交换设备互相交换MST BPDU来生成MSTI和CIST。
优先级向量简介
参与CIST计算的优先级向量为:
{ 根交换设备ID,外部路径开销,域根ID,内部路径开销,指定交换设备ID,指定端口ID,接收端口ID }
参与MSTI计算的优先级向量为:
{ 域根ID,内部路径开销,指定交换设备ID,指定端口ID,接收端口ID }
括号中的向量的优先级从左到右依次递减。
向量说明:
向量名 | 说明 |
---|---|
根交换设备ID | 根交换设备ID用于选择CIST中的根交换设备。根交换设备ID = Priority(16bits) + MAC(48bits)。其中Priority为MSTI0的优先级。 |
外部路径开销(ERPC) | 从CIST的域根到达总根的路径开销。MST域内所有交换设备上保存的外部路径开销相同。若CIST根交换设备在域中,则域内所有交换设备上保存的外部路径开销为0。 |
域根ID | 域根ID用于选择MSTI中的域根。域根ID = Priority(16bits) + MAC(48bits)。其中Priority为MSTI0的优先级。 |
内部路径开销(IRPC) | 本桥到达域根的路径开销。域边缘端口保存的内部路径开销大于非域边缘端口保存的内部路径开销。 |
指定交换设备ID | CIST或MSTI实例的指定交换设备是本桥通往域根的最邻近的上游桥。如果本桥就是总根或域根,则指定交换设备为自己。 |
指定端口ID | 指定交换设备上同本设备上根端口相连的端口。Port ID = Priority(4位) + 端口号(12位)。端口优先级必须是16的整数倍。 |
接收端口ID | 接收到BPDU报文的端口。Port ID = Priority(4位) + 端口号(12位)。端口优先级必须是16的整数倍。 |
比较原则
同一向量比较,值最小的向量具有最高优先级。
优先级向量比较原则如下。
- 首先,比较根交换设备ID。
- 如果根交换设备ID相同,再比较外部路径开销。
- 如果外部路径开销相同,再比较域根ID。
- 如果域根ID仍然相同,再比较内部路径开销。
- 如果内部路径仍然相同,再比较指定交换设备ID。
- 如果指定交换设备ID仍然相同,再比较指定端口ID。
- 如果指定端口ID还相同,再比较接收端口ID。
如果端口接收到的BPDU内包含的配置消息优于端口上保存的配置消息,则端口上原来保存的配置消息被新收到的配置消息替代。端口同时更新交换设备保存的全局配置消息。反之,新收到的BPDU被丢弃。
CIST中端口角色的选举:
1、比价CIST的总根ID,越小越优。
2、比较CIST到达总根的ERPC,越小越优。
3、比较CIST域根的BID,越小越优。
4、比较CIST到达域根的IPRC,越小越优。
5、比较CIST中BPDU报文发送者的BID,越小越优。
6、比较CIST中BPDU报文发送者的PID,越小越优。
7、比较CIST中BPDU报文接收者的PID,越小越优。
CIST的计算:
经过比较配置消息后,在整个网络中选择一个优先级最高的交换设备作为CIST的树根。在每个MST域内MSTP通过计算生成IST;同时MSTP将每个MST域作为单台交换设备对待,通过计算在MST域间生成CST。CST和IST构成了整个交换设备网络的CIST。
MSTI的计算:
在MST域内,MSTP根据VLAN和生成树实例的映射关系,针对不同的VLAN生成不同的生成树实例。每棵生成树独立进行计算,计算过程与STP计算生成树的过程类似。
MSTI的特点:
- 每个MSTI独立计算自己的生成树,互不干扰。
- 每个MSTI的生成树计算方法与STP基本相同。
- 每个MSTI的生成树可以有不同的根,不同的拓扑。
- 每个MSTI在自己的生成树内发送BPDU。
- 每个MSTI的拓扑通过命令配置决定。
- 每个端口在不同MSTI上的生成树参数可以不同。
- 每个端口在不同MSTI上的角色、状态可以不同。
- 在MST域内,沿着其对应的MSTI转发。
- 在MST域间,沿着CST转发。
MSTP对拓扑变化的处理:
MSTP拓扑变化处理与RSTP拓扑变化处理过程类似。
在RSTP中检测拓扑是否发生变化只有一个标准:一个非边缘端口迁移到Forwarding状态。
为本交换设备的所有非边缘指定端口启动一个TC While Timer,该计时器值是Hello Time的两倍。
在这个时间内,清空所有端口上学习到的MAC地址。
同时,由非边缘端口向外发送RST BPDU,其中TC置位。一旦TC While Timer超时,则停止发送RST BPDU。
其他交换设备接收到RST BPDU后,清空所有端口学习到MAC地址,除了收到RST BPDU的端口。然后也为自己所有的非边缘指定端口和根端口启动TC While Timer,重复上述过程。
如此,网络中就会产生RST BPDU的泛洪。
MSTP快速收敛机制:
MSTP支持普通方式和增强方式两种P/A(Proposal/Agreement)机制:
普通方式
MSTP支持普通方式的P/A机制实现与RSTP支持的P/A机制实现相同。
增强方式
在MSTP中,P/A机制工作过程如下:
- 上游设备发送Proposal报文,请求进行快速迁移。下游设备接收到后,把与上游设备相连的端口设置为根端口,并阻塞所有非边缘端口。
- 上游设备继续发送Agreement报文。下游设备接收到后,根端口转为Forwarding状态。
- 下游设备回应Agreement报文。上游设备接收到后,把与下游设备相连的端口设置为指定端口,指定端口进入Forwarding状态。
缺省情况下,华为数据通信设备使用增强的快速迁移机制。如果华为数据通信设备和其他制造商的设备进行互通,而其他制造商的设备P/A机制使用普通的快速迁移机制,此时,可在华为数据通信设备上通过设置P/A机制为普通的快速迁移机制,从而实现华为数据通信设备和其他制造商的设备进行互通。
MSTP多进程:
MSTP多进程是基于MSTP协议的增强性技术。此技术可将二层交换设备上的端口绑定到不同的进程中,并以进程为单位进行MSTP协议计算,不在同一个进程内的端口不参与此进程中的MSTP协议计算,从而实现各个进程内的生成树计算相互独立,互不影响。
MSTP多进程机制并不只限于MSTP协议,RSTP和STP协议同样适用。
优势:
通过部署MSTP多进程可实现如下:
极大地提升了在不同组网条件下生成树协议的可部署性。
为了保证运行不同类型生成树协议的网络可靠运行,可将不同类型的生成树协议划分到不同的进程中,不同进程对应的网络进行独立的生成树协议计算。
增强了组网的可靠性,对于大量的二层接入设备,可减少单台设备故障对整个网络的冲击。
通过进程隔离不同的拓扑计算,即某台设备故障只影响其所在的进程对应的拓扑,不会影响其他进程拓扑计算。
网络扩容时,可减少网络管理者维护量,从而提升了用户运维管理的方便性。
当网络扩容时,只需要划分新的进程与原有网络对接,不需要调整原有网络的MSTP进程配置。如果是某个进程中进行了设备扩容,此时也只需要针对扩容的进程进行修改,而不需要调整其他进程中的配置。
实现二层端口分割管理
每个MSTP进程可以管理设备上的部分端口,即设备的二层端口资源被多个MSTP进程分割管理,每个MSTP进程上均可运行标准的MSTP。
MSTP配置
配置MSTP基本功能:
配置MSTP的工作模式:
1 | stp mode mstp //配置交换设备的MSTP模式 |
因为STP和MSTP不能互相识别报文,而MSTP和RSTP可以互相识别报文,所以若工作在MSTP工作模式下,交换设备会设置所有和运行STP的交换设备直接相连的端口工作在STP模式下,其他端口工作在MSTP模式下,实现运行不同生成树协议的设备之间的互通。
配置MST域并激活:
当两台交换设备的以下配置都相同时,这两台交换设备属于同一个MST域。
- MST域的域名。
- 多生成树实例和VLAN的映射关系。
- MST域的修订级别。
1 | stp region-configuration //进入MST域视图 |
配置根桥和备份根桥:
1 | stp instance 0 root primary //配置当前设备为根桥设备。 |
配置交换设备在指定实例中的优先级;
1 | stp instance 0 priority 32768 |
配置端口在指定生成树实例中的路径开销:
1 | stp pathcost-standard { dot1d-1998 | dot1t | legacy } |
- 配置端口路径开销计算方法为legacy时,参数cost取值范围是1~200000。
- 配置端口路径开销计算方法为dot1d-1998时,参数cost取值范围是1~65535。
- 配置端口路径开销计算方法为dot1t时,参数cost取值范围是1~200000000。
配置端口在指定生成树实例中的优先级:
1 | stp instance 0 port priority 128 |
缺省情况下,端口的优先级数值为128。
优先级数值的取值范围是0~240,步长为16。
配置端口收发MSTP下一的报文格式:
MSTP协议报文存在两种格式,一种为dot1s,即IEEE802.1s规定的报文格式,另一种为legacy,是一种私有报文格式。
配置时,可以指定报文的格式,也可以配置MSTP协议报文格式自适应的功能,即根据收到的MSTP协议报文格式自动切换端口支持的MSTP协议报文格式,使报文格式与对端匹配。
stp compliance { auto | dot1s legacy } 配置端口协议报文格式。
stp config-digest-snoop //使能端口上配置摘要监听功能。
MSTP配置举例:
如下图,按要求配置各个区域。防止出现环路。
配置文件:
SW1:SW2和3与SW1类似。
1 | <SW1>dis current-configuration |
SW4:SW5和6配置和SW4配置类似:
1 | <SW4>dis current-configuration |
SW7:8,9的配置和7的配置类似:
1 | [SW7]dis current-configuration |
查看MSTP状态:
参考资料:华为HedEx文档