RSTP和STP有一个重要的缺陷,那就是局域网内所有VLAN共享一颗生成树,被阻塞的链路将无法承载任何流量,这样就会导致链路带宽效率非常低下。因此在RSTP之后,又推出了基于802.1S标准的MSTP, MSTP能够兼容RSTP和STP,通过建立多棵没有环路的生成树,一方面能够解决广播风暴并实现冗余链路,同时也能够让阻塞端口承载流量。

MSTP概述

RSTP/STP的不足(1)

假设网络的拓扑如上图,交换机1 2 3组成了一个生成树网络,其中交换机1作为根桥,现在局域网里面有两个VLAN,分别是VLAN2和VLAN3,从这个图中可以看到交换机之间所有的端口都允许VLAN2和VLAN3的流量通过,交换机1是作为VLAN2的网关,交换机2是作为VLAN3的网关。现在有什么问题呢?配置了生成树协议之后,就会导致某一条链路变成阻塞,从图中的案例可以看出,2,3之间的链路被阻塞了,被阻塞的链路将不存在任何流量,就没有办法去实现关于VLAN流量的负载分担。

RSTP/STP的不足(2)

交换机2作为VLAN3的网关,虽然2,3之间的链路被阻塞了,但是交换机之间都允许VLAN 2  VLAN3的流量通过,也可以通过左边去访问网关,寻找网关设备交换机2,这样是没有问题的,但是这样产生了一个次优路径,关于VLAN3的流量直接寻找网关交换机2从右边走是直接可以达到的,产生了次优路径,同时次优路径还会引起什么问题呢?原本右边的路径被阻塞了,不承载任何流量,但是并不妨碍全网流量的可达性,如果忽略了次优路径这个问题,还可能会产生什么问题,所有的流量都从左边的这条路走,如果在同一时间并发的流量非常多的话,就有可能导致左边链路发生网络拥塞,从而影响用户通信质量,说到底,还是被阻塞的链路不承载任何流量而产生的问题。

多生成树协议概述

无论是STP还是RSTP,在局域网里面,但凡将某条链路阻塞之后,被阻塞的链路不承载任何流量,会导致该带宽浪费了,同时可能会引起用户通信的时候一些其他问题。为了解决这个问题,于是提出了基于802.1S标准的MSTP,多生成树协议,这个协议是用来解决流量负载分担这样的一个问题,同时能够兼容STP和RSTP,MSTP的基本工作原理是和RSTP是一样的,只不过提出了某些概念,能够去实现阻塞链路能够承载流量这样的一个功能。

在MSTP里面,将一个或多个VLAN映射到一个实例中,这个实例的概念在后续学习VPN相关知识里面,也会涉及。比如说虚拟转发表VRF,它其实也可以看作类似于一个实例的概念。

通过将多个VLAN映射到实例中,再基于这个实例去计算生成树,导致映射到同一个实例的VLAN共享一个生成树,如果不同的VLAN映射到不同的实例中,那么就相当于是独立计算各自的生成树,互不影响彼此独立。

假设发现左边和右边组成的网络都是三台交换机,现在将VLAN 1,10映射到实例1中,在实例1中去计算生成树的拓扑,交换机1是作为根桥设备,交换机2和交换机3之间的链路是被阻塞的,关于VLAN1,10的流量实际上全部是从左边,递交给上层设备。还是这样的一个网络,但是将VLAN11和20的流量映射到实例2中,但是在实例2中,交换机1不再是根桥了,重新去计算生成树,交换机2作为根桥,左边交换机1和交换机3之间的链路被阻塞,流量是从右边去递交给上层应用,然后试想一下,将这两个图合二为一,也就是说在同一个网络里面,关于VLAN1和10的流量映射到实例1 中,从左边去访问,相对于实例1而言,右边的链路是阻塞的,同样还是这样的一个二层网络,关于VLAN11 和20的流量,是从右边走的,交换机2作为根桥,交换机1和3对于实例2来说,它是被阻塞的,不同VLAN之间实现一个流量的负载分担,同时阻塞的链路在不同的实例里面,它可能是被激活的状态,去承载转发流量这样的一个功能,而不同实例之间生成树的计算,是完完全全隔离开的,互不影响。

MSTP的基本概念

MSI Region

MSTP Region的概念也称为MST域的概念,在STP网络里面,将交换网络分为多个域,每个域里面包含多个实例,不同的实例去单独计算关于生成数的拓扑,这个时候就组成了一个非常复杂的网络。如图中的拓扑中发现MSTP一共划分了4个域,每个域内又单独计算关于VLAN映射到不同实例,然后不同的实例在基于自己的单域去计算拓扑和完成收敛。也就是说MSTP多域的场景是比较复杂的。

MSTP多域的场景其实在现网中的用的是比较少的,它一般的作用是用来起到分割网络的这样的一个作用,而MSTP单一的场景在现网中用的是比较多的,它一般是用来解决被阻塞链路,无法实现流量负载分担和产生次优路径等问题,而多域的场景一般是有多个交换网络里面,通过划分多个MSTP域,将网络的层次划分的更加清晰,帮助去管理一个分割的作用,从图中可以看到,在多域场景下,实际上是比较复杂的,如何去判断一台交换机处于哪一个域呢?一般情况下要满足4个条件,第一个,交换机必须要启用MSTP协议,华为S系列的交换机默认是开启了生成树协议,同进工作模式就启用了MSTP;第二个,所有交换机的域名要保持一致,同时要区分大小写、第三个,所有交换机关于VLAN映射的的实例必须相同;最后一个MSTP的修订级别也要一样,这4个条件都满足的情况下,代表了交换机处于哪一个MSTP域中。

在多域的场景下,虽然单域不同的VLAN映射到不同的实例里面去独立计算,能够去解决一个环路的问题,同时彼此独立,互不干扰,但是在多域的场景下,不同域之间也有可能成环,如何去解决多域的场景,不同域之间的环路问题,同时在多域的场景,它是有怎样的工作模式。

MSTI

按照图中的拓扑,将VLAN1映射到实例1中,VLAN2映射到实例2中,其他VLAN映射到VLAN3中,针对实例1 ,计算出来的A是根根桥,在交换机2中,交换机B为根桥,在实例3中,根桥为交换机3。不同的实例,根桥发生了变化,导致在他的眼中网络拓扑也就发生了改变,而且阻塞的链路也是不一样的。正常情况下会用Instance ID,去标识具体的实例,取值范围是0~4094,在一个域内可以部署多个生成树实例,多个VLAN可以映射到同一个实例中,这里需要注意一上,一般情况下,一个VLAN只能映射到一个实例里面,比如说将VLAN1映射到实例1中,就不可以再将VLAN1映射到别的实例中,如果把VLAN1的流量映射到不同的实例中,VLAN1的流量它可能从多条路径都可以进行转发,那么就可能重新产生环路问题,因此一个VLAN只能映射到一个实例。

CST

公共生成树CST,所谓的公共生成树,MSTP支持多域的应用场景,在多域的场景下,不同域之间也产生了环路,CST就是为了解决多域场景下,不同域之间的环路问题,图中深蓝色部分就连接了各个域。如何解决环路问题呢,很简单,他将一下域看成一个超级大的交换机,交换机成环,通过生成树去解决,所以把域看成交换机,交换机互联形成环路,就用CST去避免环路的形成。

在多域的场景下,通过CST,去连接各个不同的域。发现3,4被阻塞了,如果3里面的设备要访问4里面的设备,就要通过1和2之间进行访问。类似于虚拟化的概述一样,将多台交换机组成的域逻辑虚拟化成一台超级大的交换机,然后进行互联,从而阻塞某条链路。

IST

内部生成树IST,IST生成树是在各个MSTP的域内的一棵生成树,它是一个比较特殊的实例组成,实例为0的这样的一个生成树,叫做IST,默认所有的VLAN都会映射到实例0里面,然后在实例0里面计算出一颗没有环路的生成树,帮助去转发数据流量。

比如图中不同的MST域1 2 3 4在各自的域内分别生成了自己的IST 1 2 3 4,其中的域4所形成的IST就是这样的一个标识,它代表了自己域内所有交换设备所构成的IST,其中它的实例ID为0 。

CIST

CIST叫做公共和内部生成树,就是公共生成树CST和内部生成树IST,组合在一起,变成了CIST,构建成一棵完整的生成树,CST是为了解决多域场景下不同域之间的环路,IST是为了解决所有VLAN映射在实例0里面形成一颗没有环路的生成树,这两个组合在一起,就变成了整个多域场景下完完全全从某一节点到目的节点没有任何环路产生的一颗单向生成树。

可以在这个CIST里面选任意节点,都可以达到想要访问的节点,同时没有环路的产生,因此可以看出CIST它是整个多域应用场景下没有环路产生的整颗树。

SST

SST,单独生成树,所谓单独生成树,其实比较特殊,如果域内只有一台交换机,没有别的交换机,这样一个单域的应用场景。假设域里面有多个交换机,但是多个交换机只运行了一颗生成树,没有别的实例,那它也算作SST,正常场景下情况下,单交换机开成的这样的一个域,称它为SST的场景是比较多的,现网中SST的场景可能是比较少见的。

总根,域根和主桥

在STP和RSTP里面交换机的角色只有两种,一个根桥,一个是非根桥,在MSTP里面,交换机的角色就比较多了,总根,域根,主桥。

CIST,是多域应用场景下一棵完整没有环路的生成树,总根,就是在整颗树上他承担根桥的地位,这样的一个角色称它为总根。

而所谓的域根,域根分为两个,分别为IST域根和MSTI域根,这两个域根区别非常大,首先看一下关于生树实例里面的域根,生成树实例里面的域根和STP和RSTP里面的根桥是一样的,类似于在单个域内,单个实例里面,哪台交换机承担根桥的角色,它就可以看作是实例里面的域根,而IST域根,它是用来表达距离总根最近的交换机设备,它就称为IST域根,这个近一般是指开销,一般情况下,哪台设备是作为IST的域根,它既然代表是连接到总根开销最小的那台设备,那么它一般情况下一定是处于整个单域的边缘设备,用来连接别的域的这样一台设备,它的开销肯定是小的。因此,一般把域边缘的设备,看作是IST的域根。

主桥,主桥的概念其实和域根的概念其实有点类似,IST Master它是域内距离总根最近的交换设备,其实就是IST域根的概念,这两个的概念是一样的,如果总根在MST域中,它就是主桥,也就是说在总根所在区域内,它的主桥是比较特殊的,总根就是主桥,在其他区域里面,IST域根的概念其实就是IST主桥的Master的概念,这两个是没有本质的区别的,都是距离总根最近的这样的一个设备。

总结:首先总根可以理解为在多域场景下,整个全网里面它桥ID最小的这台设备,有且只有一个,而MSTI域根是指在单域内不同生成树实例里面所存在的根桥,根据不同的实例,它的根桥所在的设备也不一样的,而IST的域根,和IST的这样的一个Master主桥,它的概念是一样的,是用来代表总根最近的那台交换设备,但是它并不是在某个域里面桥ID最小的那台设备,而是根据距离开销的方式去计算哪台设备是作为IST域根,最后一个比较特殊的是总根所在域里面的主桥,那就是它自己。最重要的是理解总根,域根和主桥的概念。

小结

MSTP的端口角色

MSTP的端口角色(1)

MSTP端口的角色比RSTP多了两种,分别是Master端口和域边缘端口,根端口,指定端口,AP端口,BP端口和RSTP中的一样。

根端口它是非根桥设备上用来接收根桥下发的BPDU,是距离根桥最近的端口,称它为根端口,指定端口,作为根桥设备,它的端口就直接是指定端口,作为非根桥设备,这个指定端口是向下游转发根桥BPDU的端口,AP端口是用来作为根端口的备份,一般代表接收其它交换机发送过来的BPDU,发现收到的没有自己的优,它就会成为AP端口,而BP端口,是作为指定端口的备份端口,一般情况下是接触到了自己交换机发过来的BPDU,然后该端口就成为了BP端口。

MSTP的端口角色 (2)

Master端口和域边缘端口。

域边缘端口,在多域的场景下,连接其它域的端口角色,称它为域边缘端口,如图中的拓扑,有三个域,分别是1 2 3,其中总根在MSTP域2中,从图中的案例可以看出,交换机3连接域3的端口为域边缘端口,这个端口一般称为域边缘端口,是用来连接其它域的端口,这个时候有个问题,交换机2和交换机4相连,交换机4在另一个域中,交换机2连接交换机4的端口,也可以看做是域边缘端口,但是它比较特殊,因为它所连接的域,里面有总根,所以这个端口可以理解为一个特殊的域边缘端口,也是Master端口。

所谓的Master端口,它其实是一种特殊的域边缘端口,也是连接其它域的,只不过这个域里面存在了总根这台交换设备。Master端口是MST域和总根相连所有路径上最短的端口,它是交换设备连接MSTP域到总根的端口,该端口是整个MSTP域里面距离总根最近的端口。距离总根最近交换机的角色称它为IST域根,这个端口是连接到总根所有路径上最短的端口,可以看做是IST交换设备上的端口,它是域中所有报文去往总根的必经之路,Master端口是特殊的域边缘端口,在CIST的角色是RP根端口,在其它实例角色是Master端口,也就是说Master端口在CIST里都会以RP的形式存在。所谓的Master端口,它是一种特殊的域边缘端口,是CIST设备上的一个根端口。

MSTP的端口角色(3)

边缘端口在RSTP中的边缘端口的概念是类似的,代表着直接与用户终端设备连接,不再和其它任何交换设备连接,而在MSTP中,这个边缘端口意味着这台设备处于整个域的边缘。

MSTP的端口状态

MSTP端口的状态和RSTP中是一样的,分别是Discardiing,Learning和Forwarding,MSTP的工作原理和RSTP基本上是一样的,只不过在一些应用场景下,提出了一个概念,能够去实现流量的负载分担,所谓的概念就是实例的概念,同时在多域的应用场景下,多出了很多其它的一些应用,在现网中应用最多的是单域场景。MSTP它也有P/A机制,但是它的P/A机制在RSTP的基础上,进行了改良,称为增强型P/A机制。P/A机制一般情况下在全双工的模式下才可以去使用的,而点到点的半双式模式下,一般是无法进行P/A机制协商,这里需要注意一下在现网中的一些应用。

MSTP报文

和RSTP的报文非常相似,因为它前面36个字节是一模一样的,这也是综为什么能够实现一个后向兼容,兼容RSTP和STP,同时又增加了自己一些独有的字段,包括实例ID,CIST开销。

MSTP工作原理

拓扑计算主要是将多域之间用CST去计算,然后域内生成IST,同时每个域内可以用多个VLAN映射到同一个生成树,形成实例的概念,它们之间无论是CIST实例,还是MSTI,它们都需要通过优选级向量去计算。

MSTI计算首先去比域根ID,然后再比内部开销,最后比较接收端口ID。

CIST计算

首先通过MSTP的BPDU报文进行比较相关的参数,选举出整个多域应用场景下,桥ID最小的那台设备,作为CIST的树根,也就是总根的设备,然后MST域内,自己去计算生成IST,然后域间,将每个域当作独立的交换设备去对待,去生成CST,然后CST和IST组合在一起,就构建了整个设备的CIST。比如说将域1里面这台设备作为总根,然后选出IST,然后拓扑就变成了整个组合在一起形成了CIST。

MSTI计算

不同域内是通过VLAN和生成树的映射关系,然后独立各自去计算拓扑,互不干扰,同时在每个实例里面,每台交换机所承担的角色是不一样的,包括根桥和备份根桥,都可以通过命令直接人工去指定,哪台设备在整个实例里面,是作为根桥还是备份根桥。 甚至不需要通过去比较一些参数。每棵生成树自己去独立计算,它的计算过程和单独的生成树是一样的。在不同实例里面去计算,生成的拓扑和根桥角色也都是不一样的。

MSTP网络数据转发

在MST域内,沿着对应的MSTI转发,在域间通过CST转发,这样就发现,任何数据 的交互从源到目的沿着完美的,最优路径进行数据的转发,同时没有环路的产生,这就是MSTP的一个基本概念。

MSTP在现网中的应用场景其实是比较简单的,而且配置起来也非常简单,但是在学习过程中,相关的概念是比较多的。总的来说MSTP它的工作原理并没有增加其他新的机制,它的计算过程和RSTP基本上是类似的,同时MSTP它的产生,是为了解决在局域网多个VLAN共享一棵生成树,主要是去实现流量的负载分担,在阻塞链路上去分担部分的流量,使链路带宽更高效的利用起来,防止网络发生拥塞,帮助用户更好的进行通信。

MSTP的基本配置

MSTP的基础配置命令

配置MST域并激活

单域多实例场景配置

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐