MSTP详解-原理篇
相关文章推荐:
STP和RSTP详解-原理篇
STP和RSTP详解-配置篇
MSTP详解-配置篇
一、 MSTP产生背景
IEEE 于2002年发布的802.1S标准定义了MSTP
RSTP和STP 缺点:
- 同一局域网内所有的vlan共享一个生成树,无法在vlan间实现数据流量的负载均衡;
- 链路利用率低,被阻塞的冗余链路不承载任何流量,造成了带宽的浪费,还可能造成部分vlan报文无法转发。
MSTP:MSTP兼容STP和RSTP,既可以快速收敛,又能使不同VLAN的流量沿各自的路径转发,从而为冗余链路提供了更好的负载分担机制。
二、 MSTP基本概念
- MSTP网络层次结构
MSTP不仅涉及多个MSTI(生成树实例),而且还可划分多个MST域(MST Region,也称为MST区域)。总的来说,一个MSTP网络可以包含一个或多个MST域,而每个MST域中又可包含一个或多个MSTI。组成每个MSTI的是其中运行STP/RSTP/MSTP的交换设备,是这些交换设备经MSTP协议计算后形成的树状网络。
- MSTP域
- 同一MSTP域设备的特点
- 都启动MSTP
- 具有相同的域名
- 具有相同的VLAN到生成树实例映射配置
- 具有相同的MSTP修订级别配置
一个MSTP网络可以存在多个MST域,各MST域之间在物理上直接或间接相连。用户可以通过MSTP配置命令把多台交换设备划分在同一个MST域内。
3. MSTI-多生成树实例
MSTI是指MST域内的生成树。一个MST域内可以通过MSTP生成多棵生成树,各棵生成树之间彼此独立。一个MSTI可以与一个或者多个VLAN对应,但一个VLAN只能与-个MSTI对应。
4. VLAN映射表
VLAN映射表是MST域的属性,描述了VLAN和MST域中对应MSTI之间的映射关系。也就是把那些VLAN分别加入哪个MSTI中。
5. IST -内部生成树
IST是各个MST域内部的一棵生成树,是仅针对具体的MST域来计算的。但它是一个特殊的MSTI,其MSTIID为0,即IST通常称为MSTI0。每个MST域中只有一个IST,包括对应MST域中所有互联的交换机。
6. CST - 公共生成树
CST:是连接整个MSTP网络内所有MST域的一棵单生成树,是针对整个MSTP网络来计算的,每个网络中只有一个CST,每个MST域中的IST是整个MSTP网络CIST在对应MST与中的一个片段
7. CIST - 公共和内部生成树
CIST是通过STP或RSTP协议计算生成的,连接整个MSTP网络内所有交换机的单生成树,由IST和CST共同构成。这里要注意了,上面介绍的CST是连接交换网络中所有MST域的单生成树,而此处的CIST则是连接交换网络内的所有交换机的单生成树。即每个MSTP网络中也只有一个CIST。交换网络中的所有MST域的IST和CST一起构成一棵完整的生成树,也就是这里的CIST。
8. SST
构成SST(生成树)有两种情况
- 运行STP或RSTP生成树协议的交换机只属于一个生成树
- MST与中只有一个交换机,这个交换机构成了生成树,如上图的B0区域
9. 总根
总根是CIST生成树的根桥,通常是交换网络中最上层的交换机,上图中的总根是A0域中的IST生成树的根,一个MSTP网络只有一个总根
10. 根域
在MSTP网络中,每MST域都有一个特殊的IST实例,以及许多MSTI实例,所以域根(Regional Root)又分为IST域根和MSTI域根。
- 各个MST域中的IST生成树中举例CIST总根举例最近的交换机是IST域根,总根所在MST域的IST域根就是总根。
- MSTI的域根是对应生成树实例的树根,域中不同的MSTI有各自的域根。而且,MST域内各棵生成树的拓扑不同,域根也可能不同。
三、MSTP端口角色
MSTP端口角色相比RSTP中多一个主端口(master port ),根端口、指定端口、Alternate 端口、Backup端口和边缘端口这五种主要端口角色的作用与RSTP协议中对应的端口角色定义完全相同。
与RSTP相同,在MSTP中除了边缘端口外,其他端口都参与MSTP的计算过程,同一端口在不同生成树中担任不同角色
Master端口
Master端口是MST域和总根相连的所有路径中最短路径上的端口,它是交换机上连接MST域到总根的端口。Master端口是域中的报文去往总根的必经之路。Master端口是特殊域边缘端口,Master 端口在CST/CIST上的角色是根端口,在其他各实例上的角色都是Master。在图中,交换设备S1、S2、S3、S4和它们之间的链路构成一个MST域,SI交换设备的端口AP1在域内的所有端口中到总根的路径开销最小,所以API为Master端口。
域边缘端口
域边缘端口是指位于MST域的边缘并连接其他MST域或SST的端口。进行MSTP计算时,域边缘端口在MSTI上的角色和CIST实例的角色保持一致。即如果边缘端口在CIST实例上的角色是Master端口(连接域到总根的端口),则它在域内所有MSTI上的角色也是Master端口。在图中,AP1是域边缘端口,它在CIST上的角色是Master端口,则API在MST域内所有生成树实例上的角色都是Master端口。
四、MSTP的端口状态与收敛机制
端口角色端口状态 | 根端口/Master端口 | 指定端口 | 域边缘端口 | Aiternate端口 | Backup端口 |
---|---|---|---|---|---|
Forwarding | √ | √ | √ | - | - |
Leaning | √ | √ | √ | - | - |
Discarding | √ | √ | √ | √ | √ |
MSTP的收敛机制与RSTP是完全一样的,具体点击这里查看
五、 MSTP 拓扑计算原理
MSTP将整个层网络划分为多个MST域,把每个域视为一个节点。各个MST域之间按照STP或者RSTP协议算法进行计算并生成CST(是单生成树);在一个MST域内则是通过MSTP协议算法计算生成若干个MSTI(是多生成树),其中实例0被称为IST。MSTP使用MST BPDU(Multiple Spanning Tree Bridge Protocol Data Unit,多生成树桥协议数据单元)作为生成树计算的依据。MSTBPDU报文用来计算生成树的拓扑、维护网络拓扑以及传达拓扑变化记录。
5.1 MSTP 向量优先级
优先级向量名 | 说明 |
---|---|
根桥ID | 根桥ID用于选择CIST中的根桥。在BPDU中对应的网桥ID,计算公式为:Priority(l6bits)+MAC(48bits) |
外部路径开销(ERPC) | 从MST域根到达总根的路径开销。MST域内所有交换机上保存的外部路径开销相同。若CIST根桥在域中,则域内所有交换机上保存的外部路径开销为0 |
域根ID | 也就是通常所说的MSTI树根,域根ID用于选择MSTI中的树根。它也是通过网桥ID来选举的,计算公式为:Priority(l6bits)+ MAC(48bits) |
内部路径开销(IRPC) | 本交换机到达域根桥的路径开销。域边缘端口保存的内部路径开销值大于(优先级越低)非域边缘端口保存的内部路径开销 |
指定桥 | CIST或MSTI实例的指定桥是本交换机通往域根的最邻近的上游交换机。如果本交换机就是总根或域根,则指定桥为自己 |
指定端口 | 指定桥上与本交换机根端口相连的端口就是指定端口。其端口ID(Port ID)=Priority(8位)+端口号(8位)。 |
接收端口 | 端口优先级必须是16的整数倍接收到BPDU报文的端口。其端口ID(Port ID)= Priority(8位)+端口号(8位)。端口优先级必须是16的整数倍 |
- 最小向量拥有最高优先级:比较规则如下
- 首先,比较根桥ID。
- 如果根桥ID相同,再比较外部路径开销。
- 如果外部路径开销还相同,再比较域根ID.
- 如果域根ID仍然相同,再比较内部路径开销。
- 如果内部路径仍然相同,再比较指定桥ID。
- 如果指定桥ID仍然相同,再比较指定端口ID。
- 如果指定端口ID还相同,再比较接收端口ID。
5.2 CIST 的计算
经过配置消息交换比较后,首先在整个网络中选择一个优先级最高的交换机作为CIST的树根,然后在每个MST域内通过MSTP协议算法计算生成IST;同时MSTP将每个MST域作为单台交换机对待,通过STP或者RSTP协议算法在MST域间计算生成CST。
CST和IST构成了整个交换机网络的CIST。
5.3 MSTI计算
在MST域内,MSTP根据VLAN和生成树实例的映射关系,针对不同的VLAN生成不同的生成树实例
特点:
(1)每个MSTI独立计算自己的生成树,互不干扰。
(2)每个MSTI的生成树计算方法与RSTP基本相同。
(3)每个MSTI的生成树可以有不同的根,不同的拓扑。
(4)每个MSTI在自己的生成树内发送BPDU。
(5)每个MSTI的拓扑通过命令配置决定(不是自动生成的)。
(6)每个端口在不同MSTI上的生成树参数可以不同。
(7)每个端口在不同MSTI上的角色、状态可以不同。
5.4 MSTI 生成树算法实现
在一开始时,每台交换机的各个端口会生成以自身交换机为根桥的配置消息,其中根路径开销为0,指定桥ID为自身交换机ID,指定端口为本端口。每台交换机都向外:发送自己的配置消息,并在接收到其他配置消息后进行如下处理。
(1)当端口收到比自身的配置消息优先级低(优先级的比较就是根据前面介绍的向量优先级比较规则进行的)的配置消息时,交换机把接收到的配置消息丢弃,对该端口的配置消息不作任何处理。
(2)当端口收到比本端口配置消息优先级高的配置消息时,交换机把接收到的配置消息中的内容替换该端口的配置消息中的内容:然后交换机将该端的配置消 息和交换机上的其他端口的配置消息进行比较,选出最优的配置消息。
计算生成树的步骤如下。
(1)选举根桥。此步是通过比较所有交换机发送的配置消息的树根ID,树根ID值最小的交换机为CIST根桥,或者MST域根桥。
(2)选举非根桥上的根端口。每台非根桥把接收到最优配置消息的那个端口定为自身交换机的根端口。
(3)选举指定端口。在这一步又分为以下两个子步骤:
首先,交换机根据根端口的配置消息和根端口的路径开销,为每个端口计算一个标准的指定端口配置消息:用树根ID替换为根端口配置消息中的树根ID;用根路径开销替换为根端口配置消息中的根路径开销加上根端口的路径开销:用指定桥ID替换为自身交换机的ID:用指定端口ID替换为自身端口ID。
然后,交换机对以上规则计算出来的配置消息和对应端口上原来的配置消息进行比较。如果端口上原来的配置消息更优,则交换机将此端口阻塞,端口的配置消息不变,并且此端口将不再转发数据,只接收配置消息(相当于根端口);如果通过以上替换计算出来的配置消息比端口上原来的配置消息更优,则交换机就将该端口设置为指定端口,端口上的配置消息替换成通过以上替换计算出来的配置消息,并周期性向外发送。
(4)在MSTI生成树拓扑收敛后,无论非根桥是否接收到根桥传来的信息都按照Hello定时器周期性发送BPDU。如果一一个端口连续3个Hello时间(这个是缺省的设置)接收不到指定桥(也就是它所连接的上-级交换机)送来的BPDU,那么该交换机认为与此邻居之间的链路失败。
5.5 MSTP 对拓扑变化的处理
在MSTP中检测拓扑是否发生了变化的标准是根据–个非边缘端口的状态是否迁移到Forwarding状态,如果是迁移到了Forwarding状态,则会发生拓扑变化。
交换机一旦检测到拓扑发生变化,进行如下处理。
- 为本交换机的所有非边缘指定端口启动一个TC While Timer(该计时器值是Hello Time的两倍),并在这个时间内,清空这些端口上学来的MAC地址。如果是根端口上有状态变化,则启动根端口。
- 发生状态变化的这些端口向外发送TC BPDU,其中的TC置位,直到TC While Timer超时。根端口总是要发送这种TC BPDU。
其他交换机接收到TC BPDU,进行如F处理。
- 清空所有端口学来的MAC地址,收到TC BPDU的端口除外。
- 为所有自己的非边缘指定端口和自己的根端口启动TC While计时器,重复上述过程。
六、 MSTP BPDU 报文
名称 | 版本 | 类型 |
---|---|---|
配置BPDU | 0 | 0X00 |
RST BPDU | 2 | 0X02 |
MST BPDU | 3 | 0X02 |
TCN BPDU | 0 | 0X80 |
MST BPDU 报文结构如下图,无论是域内的MST BPDU 还是域间的 MST BPDU,前36字节和 RST bpdu是相同的,从第37 字节开始是 MSTP专有字段
2. MSTP BPDU报文格式可配置功能目前MSTP的BPDU报文存在两种格式。
(1)dotls:IEEE802.1s规定的报文格式。
(2)legacy:华为私有协议报文格式。
华为交换机支持自动识别报文格式的功能,支持自动识别模式
[Huawei-GigabitEthernet0/0/1]stp compliance ?
auto Protocol type is auto
dot1s Protocol type is 802.1s
legacy Protocol type is legacy