曾经我很天真的以为MST,只是把多个VLAN捆绑成INSTANCE,省去了PVST每个VLAN都跑生成树的麻烦,后来才知道,绝不仅仅是这样。

首先说说MSTP的结构,

MSTP采用二级结构。分region跑STP,在同一个region需要满足:instance(instance是从1-4094)和vlan映射表一致,name一致,revision一致,共三个条件。在每个region内的STP我们称为IST。在整个MSTP拓扑中,可以拥有多个region,在region之间跑的生成树称为CST,协议是RSTP(- -)。每个region有一个根桥称为regional root,整个系统有一个总根桥。

这里出现了一个很神奇的东西:instance 0

称为CIST实例,vlan映射表是 所有没有被映射到任何实例的vlan(就是1-4094中,没有被使用的)

所谓CIST就是CST+IST,简而言之就是整个网络。为什么要有这个呢?我个人认为,我们在计算CST的生成树时,把一个region看成一个交换机,然后再看CST的根桥,根端口,指定端口,再计算出端口角色。但是计算机运算无法把一个region逻辑上看成一个交换机,它还是要从整个CIST着手计算,所以有了实例0的出现,但是它只是为了计算CST的生成树,和IST没什么联系(虽然我们还是可以看到IST的端口出现在实例0中Orz...)。具体计算过程我觉得相当复杂,所以我推荐仅仅把它看做CST的生成树就好了,写作instance 0我就当它是RSTP。

下面谈谈端口角色和类型

端口角色用大家喜闻乐见的:根、指定、替代、备份,多了一些特有的端口角色:主端口和域边界端口

端口类型:Shr和Shr Bound(RSTP)    参照cisco,其实也就是共享和边界

端口角色前面4个不说了,主端口指的是某个域的边界端口,同时在CST的RSTP中的根端口,在instance 0中cisco显示为Role=Mstr,Type=Shr Bound(RSTP)。

域边界端口这个容易理解了,就是域的边界端口嘛,即CST中的端口,在instance 0中cisco显示为,Role=在CST中的RSTP中该是什么就是什么,Type=Shr Bound(RSTP)

PS:主端口当然也是域边界端口。

转发流程简单说一下

交换机收到同一区域的包(大概是检查region.name,region.revision,stp.type等等一致),通过IST转发,也就是region内同一VLAN内广播。

交换机收到非同一区域的包(最直接的region.name不同),会向域边界端口转发。