生成树技术:MSTP协议基础知识

MSTP概述

RSTP虽然在STP的基础上进行了一定程度的优化,但是依然与STP一样存在一个较大的短板,那就是当它们都被部署在交换网络中时,所有的VLAN共用一颗生成树。这个短板将使得网络中的流量无法再所有可能链路上实现负载分担,导致链路带宽利用率、设备资源利用率较低。

Cisco的私有生成树协议PVST(Per-VLAN Spanning Tree),它基于每个VLAN进行生成树的计算。这种技术的优点是实现了负载分担。但是这种技术也有缺点。如果网络中VLAN的数量特别大,那么所有的交换机将不得不为每个VLAN都计算一颗生成树,那么设备的资源消耗将变得非常大,为了进行大规模的生成树计算,设备将变得不堪重负,甚至有可能影响到正常业务流量的处理。

IEEE发布的802.1s标准解决了上述问题,它定义了一种新的生成树协议——MSTP(Multiple Instance Spanning Tree Protocol,多实例生成树协议),MSTP能够兼容STP及RSTP,在该协议中,生成树不是基于VLAN运行的,而是基于Instance(实例)运行的。所谓Intance,也即一个或多个VLAN的集合。

将一个或多个VLAN映射到一个Instance,然后MSTP基于该Instance计算生成树。映射到同一个Instance的VLAN将共享同一颗生成树。

同时,MSTP引入了域(region)的概念(类似于OSPF的area)。可以将一个交换网络分成多个MST域(Multiple Spanning Tree Region,多生成树域),一个MST域内可以包含一台或多台交换机。(在实际应用中,一般还是没有划分多个域,即网络中的交换机都属于同一个域,就像OSPF的应用,实际很多场景都只有一个骨干区域,这样做,无他,纯属简化网络)

STP、RSTP、MSTP的比较:

协议名称标准特点应用场景
STP802.1D形成一颗无环路的树,解决广播风暴并实现冗余备份,收敛速度较慢无需区分用户或业务流量,所有VLAN共享一颗生成树
RST802.1W形成一颗无环路的树,解决广播风暴并实现冗余备份,收敛速度快无需区分用户或业务流量,所有VLAN共享一颗生成树
MSTP802.1S形成多颗无环路的树,解决广播风暴并实现冗余备份。收敛速度快需要区分用户或业务流量,并形成负载分担不同的VLAN通过不同的生成树转发流量,每颗生成树之间相互独立

相关术语

在MSTP中,引入了比较多的术语(毕竟引入了域的概念),初次学习这些术语时,可能会觉得比较懵。。。

MST域(MST Region)

MSTP网络中包含1个或多个MST域(MST Region),每个MST Region中包含一个或多个MSTI。如下图所示,网络中包含4个域
在这里插入图片描述

属于同一个MST域的交换机必须(1)配置相同的域名(Region name)、相同的修订级别(Revison level),以及相同的VLAN与Instance的映射关系。

比如下图中,MST Region 4中由交换设备A、B、C和D构成,域中有3个MSTI。
在这里插入图片描述

VLAN映射表

VLAN映射表是MST域的属性,它描述了VLAN和MSTI之间的映射关系。比如上图中,VLAN1映射到MSTI1、VLAN2映射到MSTI2、其他的VLAN映射到MSTI3。

CST(Common Spanning Tree,公共生成树)

公共生成树CST(Common Spanning Tree)是连接交换网络内所有MST域的一棵生成树。
如果把每个MST域看作是一个节点,CST就是这些节点通过STP或RSTP协议计算生成的一棵生成树。

比如下图中,红色框起来的就是组成CST的各条链路,而图中黑色链路加上红点的三条链路就是通过STP或RSTP协议计算生成的树,这颗树就是CST。组成CST剩下的一条链路的的一端端口被阻塞了。
在这里插入图片描述

IST(Internal Spanning Tree,内部生成树)

内部生成树IST是各MST域内ID为0的生成树,即MSTI0。

我们从前面可以知道,一个VLAN只能对应一个实例。但是一个实例可以对应一组VLAN。这都需要人工配置,在默认情况下,所有的VLAN都属于实例0,即MSTI0。当一个VLAN映射到其他实例后,该VLAN就从MSTI0中删除了。

CIST(Common and Internal Spanning Tree,公共和内部生成树)

公共和内部生成树CIST(Common and Internal Spanning Tree)是通过STP或RSTP协 议计算生成的,连接一个交换网络内所有交换设备的单生成树。

CIST是由CST和IST构成的。

SST(Single Spanning Tree,单生成树)

构成SST的两种情况:

  • 运行STP或RSTP的交换设备只能属于一个生成树。
  • MST域中只有一个交换设备,这个交换设备构成单生成树。

总根(Common Root, CIST Root)

总根是CIST的根桥。选举原则还是最低桥ID原则(网络中桥ID最小的交换机成为总根)。

比如下图中,S1就是这片网络的总根。

在这里插入图片描述

域根(Regional Root)

域根(Regional Root):MST域内IST和MSTI的根桥。在域中各实例有各自的域根。可以不是一个桥。

IST域根如下图所示,在MST域中IST生成树中距离总根(CIST Root)最近的交换设 备是IST域根(即标黄的交换机)。
在这里插入图片描述

如下图所示,在Region4中总共有3个实例,分别是MSTI1、MSTI2、MSTI3。而这三个实例的域根分别是A、B、C
在这里插入图片描述

主桥(Master Bridge)

主桥(Master Bridge)或者称CIST域根桥,是域内距离总根最近的交换设备,也就是IST域根,即下图中的黄色交换机。
在这里插入图片描述

端口角色

相对于RSTP,MSTP新增了两种端口角色:Master端口、域边缘端口。因此,MSTP总共有7种端口角色:根端口、指定端口、Alternate端口、Backup端口、边缘端口、Master端口、域边缘端口。

  • Master端口:位于整个域到总根的最短路径上,是连接域到总根的端口,是域中的报文去往总根的必经之路。

如图所示,交换设备S1、S2、S3、S4和它们之间的链路构成一个MST域,S1交换设备的端口AP1在域内的所有端口中到总根的路径开销最小,所以AP1为Master端口。
在这里插入图片描述

  • 域边缘端口:域边缘端口是指位于MST域的边缘并连接其它MST域或SST的端口。如上图所示,MST域内的AP1、DP1和DP2都和其它域直接相连,它们都是本MST域的域边缘端口。

端口角色总结:

端口角色说明
根端口在非根桥上,离根桥最近的端口是本交换机设备的根端口。根桥没有根端口
指定端口对一台设备而言,它的指定端口是向下游交换设备转发BPDU报文的端口。一般来说,根桥的所有端口都是指定端口
Alternate 端口从配置BPDU报文发送角度来看,Alternate端口就是由于学习到其他网桥发送的配置BPDU报文而阻塞的端口。它是根端口的备份。
Backup 端口从配置BPDU报文发送角度来看,Backup端口就是由于学习到自己发送的配置BPDU报文而阻塞的端口。它是指定端口的备份。(一般来说,除非人为构造,实际该类型端口很少见)
Master端口Master端口是MST域和总根相连的所有路径中最短路径上的端口,它是 交换设备上连接MST域到总根的端口。 Master端口是域中的报文去往总根的必经之路。 Master端口是特殊域边缘端口,Master端口在CIST上的角色是Root Port,在其它各实例上的角色都是Master端口。
域边缘端 口域边缘端口是指位于MST域的边缘并连接其它MST域或SST的端口。
边缘端口如果指定端口位于整个域的边缘,不再与任何交换设备连接,这种端口 叫做边缘端口。 边缘端口一般与用户终端设备直接连接。

端口状态

MSTP定义的端口状态与RSTP协议中定义相同。

STP端口状态M/RSTP端口状态端口状态对应的行为
DisabledDiscarding不转发用户流量也不学习MAC地址
Blocking
Listening
LearningLearning不转发用户流量但学习MAC地址
ForwardingForwarding既转发用户流量也学习MAC地址

MSTP报文

MSTP使用多生成树桥协议数据单元MST BPDU(Multiple Spanning Tree Bridge Protocol Data Unit)作为生成树计算的依据。MST BPDU报文用来计算生成树的拓扑、维护网络拓扑以及传达拓扑变化记录。

STP、RSTP、MSTP各BPDU的比较:

协议版本BPDU类型BPDU名称
00x00配置BPDU
00x80TCN BPDU
20x02RST BPDU
30x02MST BPDU

MSTP的报文格式如下。从下面可以知道,前36个字节和RST BPDU相同。从第37个字节开始时MSTP转有字段。

+--------------------------------+
|              DMAC              |
+--------------------------------+
|              SMAC              |
+--------------------------------+
|            Length              |
+--------------------------------+
|           LLC header           |
+--------------------------------+-----------------------
|       Protocol Identifier      |                ^
+--------------------------------+                |
|  Protocol Version Identifier   |                |
+--------------------------------+                |
|           BPDU Type            |                |
+--------------------------------+                |
|              Flags             |                |
+--------------------------------+                |
|          Root Identifier       |                |
+--------------------------------+                |
|          Root Path Cost        |                |
+--------------------------------+                |
|       Bridge Identifier        |                |
+--------------------------------+                |
|        Port Identifier         |                |
+--------------------------------+                |
|           Message Age          |                |
+--------------------------------+               BPDU
|            Max Age             |              payload
+--------------------------------+                |
|          Hello Time            |                |
+--------------------------------+                |
|        Forward Delay           |                |
+--------------------------------+----------      |
|       Version 1 Length         |    RSTP/MSTP   |
|                                |    Extension   |
+--------------------------------+----------      |
|       Version 3 Length         |     ^          |
+--------------------------------+     |          |
| MST Config ID Format Selector |      |          |
+--------------------------------+     |          |
|        MST Config Name        |      |          |
+--------------------------------+     |          |
|     MST Config reversion      |      |          |
+--------------------------------+     |          |
|       MST Config Digest       |      MSTP       |
+--------------------------------+   Extension    |
|  CIST Internal Root Path Cost  |     |          |
+--------------------------------+     |          |
|     CIST Bridge Identifier     |     |          |
+--------------------------------+     |          |
|      CIST Remaining Hops       |     |          |
+--------------------------------+     |          |
|   MSTI configuration Messages  |     |          |
|         (may be absent)        |     V          V
+--------------------------------+-----------------------
|               FCS              |
+--------------------------------+

字段说明:

字段长度(单位:字节)说明
DMAC6目的MAC地址,该字段标识帧的接收者。
SMAC6源MAC地址,该字段标识帧的发送者。
Length2指后续数据的字节长度,但不包括FCS字段。
Protocol Identifier2协议ID=“0”。
Protocol Version Identifier1协议版本标识符,STP为0x00,RSTP为0x02,MSTP为0x03。
BPDU Type1BPDU类型:
(1)0x00:STP的Configuration BPDU
(2)0x80:STP的TCN BPDU(Topology Change Notification BPDU)
(3)0x02:RST BPDU(Rapid Spanning-Tree BPDU)或者MST BPDU(Multiple Spanning-Tree BPDU)
Flags1标记域。对于STP:第一个bit(左边、高位bit)表示“TCA(拓扑改变响应)”,最后一个bit(右边、低位bit)表示“TC(拓扑改变)”,其他字段预留。
对于RSTP和MSTP:
Bit7:TCA (Topology Change Acknowledgement)
Bit6:Agreement
Bit5:Forwarding
Bit4:Learning
Bit3和Bit2:端口角色。
00:未知;
01(低位为1高位为0):Alternate / Backup;
10(低位为0高位为1):根端口;
11:指定端口
Bit1:Proposal
Bit0:TC (Topology Change)
Root Identifier8网桥ID都是8个字节——前两个字节是网桥优先级,后6个字节是网桥MAC地址。对于MSTP,是指CIST的总根交换机ID。
Root Path Cost4根路径开销,本端口累计到根桥的开销。对于MSTP,是指CIST外部路径开销指从本交换机所属的MST域到CIST根交换机的累计路径开销。CIST外部路径开销根据链路带宽计算。
Bridge Identifier8发送者BID,本交换机的Bridge ID。对于MSTP,是指CIST的域根交换机ID,即IST Master的ID。如果总根在这个域内,那么域根交换机ID就是总根交换机ID。
Port Identifier2发送端口PID,发送该BPDU的端口ID。对于MSTP,是指本端口在IST中的指定端口ID。
Message Age2该BPDU的消息年龄,以秒为单位。
Max Age2消息老化年龄,以秒为单位,超时则认为到根交换机的链路故障。
Hello Time2发送两个相邻BPDU间的时间间隔,以秒为单位。
Forward Delay2控制Listening和Learning状态的持续时间,以秒为单位。
Version 1 Length1Version1 BPDU的长度,值固定为0。只在RSTP和MSTP的BPDU中出现,STP的BPDU没有此字段。
Version 3 Length2Version3 BPDU的长度,只在MSTP的BPDU中出现。
MST Config ID Format Selector1固定为0。
MST Config Name32“域名”,字符串格式。
MST Config reversion2修订级别,非负整数。
MST Config Digest16利用HMAC-MD5算法将域中VLAN和实例的映射关系加密成16字节的摘要。
CIST Internal Root Path Cost4CIST内部路径开销,指从本端口到IST Master交换机的累计路径开销,只在MSTP的BPDU中出现。CIST内部路径开销根据链路带宽计算。
CIST Bridge Identifier8CIST的指定交换机ID,只在MSTP的BPDU中出现。
CIST Remaining Hops1BPDU报文在CIST中的剩余跳数,只在MSTP的BPDU中出现。
MSTI Configuration Messages (may be absent)n×16字节MSTI配置信息,只在MSTP的BPDU中出现。每个MSTI的配置信息占16 bytes,如果有n个MSTI就占用n×16bytes。单个MSTI Configuration Messages的字段说明如下:
MSTI Flags(1字节):MSTI标志。
MSTI Regional Root Identifier(8字节):MSTI域根交换机ID。
MSTI Bridge Priority(1字节):本交换机在MSTI中的指定交换机的优先级。
MSTI Remaining Hops(1字节):BPDU报文在MSTI中的剩余跳数。
FCS4帧校验序列FCS(Frame Check Sequence)是为接收网卡提供判断是否传输错误的一种方法,如果发现错误,丢弃此帧。
FCS只是通用叫法,具体的FCS还可以细分多种校验方法。在以太帧中,FCS通常采用循环冗余码校验CRC(Cyclical Redundancy Check)。

我们之前说过,属于同一个MST域的交换机必须(1)配置相同的域名(Region name)、相同的修订级别(Revison level),以及相同的VLAN与Instance的映射关系。对应MSTP的报文是指的MST Config ID Format Selector、MST Config Name、MST Config reversion、MST Config Digest4个字段的值要要完全一样,才是属于同一个域。

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 }

括号中的向量的优先级从左到右依次递减。

参考文献:

1、《HCNP路由交换学习指南》

2、华为 S7700 V200R019C10 配置指南-以太网交换

3、STP/RSTP/MSTP帧 - IP报文格式大全(html) - 华为 (huawei.com)

  • 27
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值