MST将网络划分为一或多个区域。一个MST区域是一组以相同方式共同使用MST的交换机——除了其他特性外,它们运行相同数量的MST实例,并在这些实例上映射相同的VLAN集合。
例如,在下图中,工程师定义了一个MST区域,将其与非MST交换机相连。关注图的左侧,在MST区域中,实际上只需要两个STP实例——每个实例中包含差不多一半数量的VLAN。
MST相较于PVST+的一个关键优势是它对于一组VLAN只要求使用一个MST实例。如果MST区域中有数百个VLAN,而且使用了PVST+,就会用到数百组STP消息。对于MST,每个MST实例只需使用一组STP消息。
 
MST重新使用了IEEE802.1t中系统ID扩展的概念,将实例编号嵌入在网桥ID中。因为系统ID扩展字段包含12位,MST实例的编号范围在0~4095之间,在本书写作时,不同的Catalyst平台支持不同的范围:Catalyst 2950为0~15,Catalys 2960和3560为0~4094。MST标准允许有最多65个活跃MST实例(实例0加上至多64个自定义实例)。支持的实例数量已经比任何合理网络所要求的数量更多了,并且这个数量限制也是因为MST对它所承载的所有实例信息只使用一个BPDU,而且必须能放入一个以太网帧中。虽然典型的以太网MTU 1500字节中能够包含大约88个MST实例,但64个自定义实例对于任何实际需求来说都足够了,并且可以很好地放入普通的以太网帧中。在MST中,如果端口至少在一个MST实例中是指定端口的话,就会发送BPDU。由于MST对所有实例都使用一个BPDU,所以如果点到点链路两端的交换机分别是不同MST实例中的指定端口,它们可能就会看到互相发送的BPDU。
 
在所有MST实例中,实例0有特殊的意义。这个实例也被称为内部生成树,或IST,用作几个目的。首先,即使工程师没有创建其他MST实例,实例0也总是存在的,它为映射在一个区域中的VLAN提供了无环的环境。无需任何额外的配置,所有VLAN都会被映射到IST上。其次,IST是唯一一个与MST区域外的交换机上所运行的STP相互交互的实例。区域边界IST与邻居交换机之间无论确定了怎样的端口角色和状态,这个角色和状态都会被这个端口上所有的VLAN继承,而不仅仅映射到IST的VLAN上。这是MST总体操作的一部分,使这个区域对于其他区域和非MST交换机来说,看起来像是一台交换机。
 
如果网络由几个MST区域组成,每个区域都可以被看作是一台交换机。由多个MST区域组成的整个拓扑视图可以由此简化——想象一下每个位置上不再是一个个区域,而是使用一台交换机代替一个区域,同时保持连接不同区域之间的链路。显然,如果区域之间由冗余链路互连,这种简化后的网络中仍存在环路。MST通过构建所谓的通用生成树(CST)来阻塞这些环路。这个CST只是区域边界独立的IST交互的结果,在独立的区域之间构成一个生成树。CST有两个主要目的。
 
  • 用来确定区域之间的无环路径。它所带来的一个重要成果是在区域之间的链路上阻塞环路,而不是在区域内;就像交换机之间的环路要在交换机之间的链路上进行阻塞,而不是交换机“内部”阻塞。这种行为与简化的概念一致,即从外部看来,MST区域可被看作是一台交换机。
  • CST是非MST交换机(即STP和RSTP)能够理解并参与的唯一生成树,这方便了MST和较旧版本的互操作。在MST和STP/RSTP混合的环境中,STP/RSTP交换机会在不知情的情况下参与CST。CST中的开销只反映区域间和网络中非MST部分的链路开销。这些开销被MST称为外部开销。
 
在每个MST区域中,区域边界的CST与区域内的IST相融合。最终生成的树由MST区域间的无环互连路径,与每个MST区域内部的无环互连路径“粘合”在一起,称为通用内部生成树(Common and Internal SpanningTree),或CIST。这是跨越整个交换拓扑的一个生成树。因为MST区域有自己的IST根,CIST——由区域内IST和区域间CST组成——因此可以有多个根交换机。这些交换机被识别为CIST根交换机(一个CIST一台)和CIST区域根交换机(每个区域内的IST一台)。CIST区域根交换机只是某个区域内IST根交换机的另一种名称。
CIST根交换机由所有参与CIST交换机中网桥ID最低的交换机胜任,即从所有区域中的所有MST交换机中,根据IST网桥ID(由IST优先级、实例编号0和基本MAC地址组合而成)选出,以及从所有STP/RSTP交换机(如果有的话),只根据网桥ID中选出。如果运行纯MST的网络,CIST根交换机就是IST优先级(数值上)最低的交换机;优先级相等时,则选有最低基本MAC地址的交换机。
 
在其他不包含CIST根交换机的MST区域中,只有区域边界的MST交换机(即拥有去往其他区域链路的交换机)能够声明自己是IST根交换机。这是因为只允许根据以下两种情况设置CIST区域根ID:当且仅当交换机也是CIST根的时候;能接收到其它区域的BPDU的MST边界交换机。其他内部交换机无法参与IST根选举。从边界交换机中,首先选出去往CIST根交换机,外部根路径开销最低的交换机为IST根交换机。外部根路径开销是到达CIST根交换机所属区域的CST开销总和,或者换句话说,是到达CIST根交换机所在区域的CST开销;不考虑区域内链路的开销。开销相等时,使用边界交换机的最低IST网桥ID。
 
CIST区域根交换机对区域有特别的重要性:它自己的CIST根端口称为主端口(这是MST中增加的端口角色),这个端口也就是去往区域外CIST根交换机的根端口,这个端口还为区域中的所有MST实例提供从区域到CIST根的连通性。

STP-12-MST工作原理的更多相关文章

  1. 《浏览器工作原理与实践》 <12>栈空间和堆空间:数据是如何存储的?

    对于前端开发者来说,JavaScript 的内存机制是一个不被经常提及的概念 ,因此很容易被忽视.特别是一些非计算机专业的同学,对内存机制可能没有非常清晰的认识,甚至有些同学根本就不知道 JavaSc ...

  2. STP(生成树)的概述和工作原理

    一.STP的简介 二.STP的概述 三.STP的工作原理 四.生成树的算法 五.BPDU(桥协议数据单元) 六.STP收敛 TP简介 STP - Spanning Tree Protocol(生成树协 ...

  3. 浏览器内部工作原理--作者:Tali Garsiel

    本篇内容为转载,主要用于个人学习使用,作者:Tali Garsiel 一.介绍 浏览器可以被认为是使用最广泛的软件,本文将介绍浏览器的工作原理,我们将看到,从你在地址栏输入google.com到你看到 ...

  4. springMVC 的工作原理和机制

    工作原理上面的是springMVC的工作原理图: 1.客户端发出一个http请求给web服务器,web服务器对http请求进行解析,如果匹配DispatcherServlet的请求映射路径(在web. ...

  5. ORACLE工作原理小结

    ORACLE工作原理1-连接 我们从一个用户请求开始讲,ORACLE的完整的工作机制是怎样的,首先一个用户进程发出一个连接请求,如果使用的是主机命名或者是本地服务命中的主机名使用的是机器名(非IP地址 ...

  6. Asp.Net工作原理

    1. ASP.NET页面的的一般处理过程: 客户请求WEB页面 WEB服务寻找指令文件(.ASPX) ASP.NET代码被发送给CLR进行编译 HTML流返回给浏览器和指令 浏览器处理HTML并显示页 ...

  7. Mina工作原理分析

    Mina是Apache社区维护的一个开源的高性能IO框架,在业界内久经考验,广为使用.Mina与后来兴起的高性能IO新贵Netty一样,都是韩国人Trustin Lee的大作,二者的设计理念是极为相似 ...

  8. Struts2工作原理

    Struts2工作原理 Struts2请求响应流程: 在struts2的应用中,从用户请求到服务器返回相应响应给用户端的过程中,包含了许多组件如:Controller.ActionProxy.Acti ...

  9. Servlet 工作原理解析

    转自:http://www.ibm.com/developerworks/cn/java/j-lo-servlet/ Web 技术成为当今主流的互联网 Web 应用技术之一,而 Servlet 是 J ...

  10. 虚函数列表: 取出方法 // 虚函数工作原理和(虚)继承类的内存占用大小计算 32位机器上 sizeof(void *) // 4byte

    #include <iostream> using namespace std; class A { public: A(){} virtual void geta(){ cout < ...

随机推荐

  1. hiho一下 第四十七周 拓扑排序一 【静态数组链式前向星存储结构实现 + 拓扑跳出 】

    题目1 : 拓扑排序·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 由于今天上课的老师讲的特别无聊,小Hi和小Ho偷偷地聊了起来. 小Ho:小Hi,你这学期有选什么 ...

  2. 大数据初级笔记二:Hadoop入门之Hadoop集群搭建

    Hadoop集群搭建 把环境全部准备好,包括编程环境. JDK安装 版本要求: 强烈建议使用64位的JDK版本,这样的优势在于JVM的能够访问到的最大内存就不受限制,基于后期可能会学习到Spark技术 ...

  3. python当前工作文件夹中创建空的.txt文件

    import os def new_txt(): a1='实线' b = os.getcwd() + '\\fazhandadao_test_txt\\' if not os.path.exists( ...

  4. jQuery移动光标改变图像

    脚本代码移动光标改变图像是一款让你通过移动光标显示和调整多个图像或其他方法来触发. 代码:http://www.huiyi8.com/sc/10628.html

  5. pod lib lint 报错 Unable to find a specification for `AMap2DMap` depended upon by `DingtalkPod

    执行 pod验证 报错如下 ➜  DingtalkPod git:(2.0.0) ✗ pod lib lint --sources='https://github.com/AloneMonkey/Mo ...

  6. ivew组件的使用

    iview的官网:https://www.iviewui.com/docs/guide/start 1.选择快速上手 2.安装 解压,cmd,cd进你解压后的文件,cnpm i 3.打包 npm ru ...

  7. MySQL活动期间订单满600元并且在活动日期之前超过30天没有下过单_20161030

    计算 活动期间订单满600元并且在活动日期之前超过30天没有下过单 首先拿到这个需求,首先需要明确活动日期区间 10.29-10.31,其次要取这个时间段内某天订单额最高的那天及订单额,再次需要判断这 ...

  8. bzoj 4453 cys就是要拿英魂! —— 后缀数组+单调栈+set

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4453 这种问题...一般先把询问离线,排序: 区间对后缀排名的影响在于一些排名大而位置靠后的 ...

  9. C# 性能分析工具

    http://msdn.microsoft.com/zh-cn/vstudio/aa497289(en-us).aspx Performance This section includes infor ...

  10. Scala学习——操作符(初)

    经常看到却反应不出来的(->) val a = 2 val b = a->4 //表示生成一个tuple println(b._1+" "b._2) //2 4