为了理解MST和其他STP版本的互操作性,首先要来看看MST与没有每VLAN概念的纯IEEE802.1D STP或802.1w RSTP非MST交换机(本书称其为非MST交换机)之间互操作的方式。这些非MST交换机针对所有VLAN运行一个STP实例,所以在网络的非MST部分,所有VLAN共享同一个生成树。无论非MST交换机将端口置为何种角色和状态,这个角色和状态都由这个端口上的所有VLAN共享。STP和RSTP不理解也看不见在MST区域中独立的MST实例,整个MST区域对于STP和RSTP来说是一个“黑匣子”。非MST交换机通过运行IEEESTP/RSTP来完成互操作性;MST交换机在边界端口上只使用被称为IST的MST实例0,使用普通STP或RSTP BPDU的格式,并将协商的端口角色和状态应用到这些端口的所有VLAN上。MST实例0在此处的角色很重要——它与非MST邻居进行通信,并处理从这些邻居收到的BPDU。
 
MST区域和较老的IEEESTP各版本之间的互操作相对简单。非MST区域使用一个STP/RSTP实例。MST区域使用IST代表整个区域,并与边界端口上的非MST邻居进行通信。由IEEESTP/RSTP与IST交互生成的边界端口角色和状态绑定在所有VLAN上。
 
对于MST和PVST+区域,选择一个代表来代替整个区域通信,这两个代表之间的通信负责确定所有VLAN的边界端口角色和状态。这个操作执行起来比看起来要复杂一些。MST边界的角色和状态会无条件地实施在端口所有活跃的VLAN上(这是MST边界端口的工作方式),而PVST+端口对于每个VLAN都有独立的角色和状态。如果选出一个MST实例代表来代替一个MST区域,它给PVST+交换机信息的方式必须让每个接收到相同信息的PVST+实例都进行相同一致的选择。一致一词非常重要——它描述了一个过程,其中虽然只有一个MST实例和一个PVST+实例直接进行交互,但MST和PVST+的所有实例都达到了相同的端口角色和状态。PVST模拟机制的目的就是为了保持MST和PVST+区域之间互操作的一致性。
 
在MST到PVST+方向,MST区域选择IST作为代表,使用PVST+ BPDU将IST信息传递给所有PVST+实例。为了使PVST+区域对于所有已知VLAN,基于IST属性进行相同一致的决策,所有PVST+实例必须收到相同的PVST+ BPDU格式的IST信息。因此,MST边界端口会把所有活跃VLAN的IST BPDU信息复制到PVST+BPDU中。这样,MST为PVST+邻居提供了所有VLAN一致的信息。在任意一个端口上接收这些信息的PVST+邻居,将因此对于所有VLAN做出相同一致的端口角色和状态决策。
 
在相反方向中,MST使用VLAN 1作为整个PVST+区域的代表,处理IST中VLAN 1收到的BPDU。边界端口的角色和状态会绑定到所有含这个端口的活跃VLAN上。然而,MST必须确保由与VLAN 1 STP实例交互,从而确定的边界端口角色和状态,真正代表了所有其他PVST+实例的决策;即必须确定IST与VLAN 1 STP实例交互的结果,是否与运行在其他VLAN的STP实例的状态一致。
 
下面进行进一步的分析。运行在一个MST边界端口的IST,与VLAN 1 PVST+的交互基本上会产生三种端口角色:指定、根或非指定(是替换还是备用与此处无关)。

STP-13-MST和其它STP版本的互操作性(没写完)的更多相关文章

  1. Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR tensorflow-1.13.1和1.14windows版本目前不支持CUDA10.0

    报错出现 Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR tensorflow-1.13.1和1.14windows版本目前不支持 ...

  2. CentOS 6.5以上版本安装mysql 5.7 完整版教程(修订版)

    转载自:https://codeday.me/collect/20170524/21861.html 1: 检测系统是否自带安装mysql # yum list installed | grep my ...

  3. Error:java:错误:不支持发行版本 5(或写着其他版本的~)

      很多人会出现:Error:java:错误:不支持发行版本 5(或13等版本),均是因为此几个地方版本不一致 [若你下载的jdk版本真的是5,请你更新jdk !!]   (上图打开方式:左上角,Fi ...

  4. JDK、Eclipse、Myeclipse、Tomcat等各种软件的版本详解(写给对版本和兼容性问题焦头烂额的你)

    这篇文章我们来探讨一下关于JDK.Eclipse.Myeclipse.Tomcat的版本问题.一.关于版本的几个概念1.32位和64位两个版本:    简言之,64位的操作系统支持识别4G以上的内存条 ...

  5. Git版本控制器使用总结性梳理

    Git为何物?Git 是什么?大家肯定会说不就是版本控制器嘛,是的Git是目前世界上最先进的分布式版本控制系统(没有之一).1)那什么是版本控制器?举个简单的例子,比如我们用Word写文章,那你一定有 ...

  6. 【技巧】解决win10的1803版本下,无法收到1809推送、从而无法更新到1903版本的问题。

    figure:first-child { margin-top: -20px; } #write ol, #write ul { position: relative; } img { max-wid ...

  7. 团队作业5:Alpha版本测试和发布(歪瑞古德小队)

    目录 一.项目文档和代码 二.Alpha版本测试报告 2.1 功能测试 2.1.1 功能列表 2.1.2 场景测试 2.1.3 测试结果 2.1.4 bug清单 2.2 兼容性测试 2.3 性能测试 ...

  8. 【Alpha版本】冲刺阶段——Day 6

    我说的都队 031402304 陈燊 031402342 许玲玲 031402337 胡心颖 03140241 王婷婷 031402203 陈齐民 031402209 黄伟炜 031402233 郑扬 ...

  9. Git回退到服务器某个版本正确姿势

    背景: Git协作中,成员不可避免地会提交一些错误的版本,由于Git相比SVN引入了本地仓库,操作会相对复杂,以下为姿势分解 找一个源文件RspUtils.java,加上一行注释 //测试回退git服 ...

随机推荐

  1. IIS反向代理实现Revel域名访问

    Revel实现域名访问 1.在cmd中启动revel项目,我设置的端口为8000 2.下载IIS的Application Request Routing Cache组件下载地址 3.安装ARR 4.打 ...

  2. datax 添加oraclewriter

    日期格式: <param key="dtfmt" value="yyyy-MM-dd hh24:mi:ss"/>

  3. ss命令能识别的TCP状态的关键字

    [TCP_ESTABLISHED] = "ESTAB",         [TCP_SYN_SENT] = "SYN-SENT",         [TCP_S ...

  4. AtCoder Grand Contest #026 C - String Coloring

    Time Limit: 3 sec / Memory Limit: 1024 MB Score : 600600 points Problem Statement You are given a st ...

  5. CentOS7的安装以及GPT和MBR

    讲到GPT(GUID partition Table)和MBR(Master Boot Record)首先要将一下EFI(Extension Firmware Interface)和BIOS(Basi ...

  6. bzoj 4319 Suffix reconstruction —— 贪心构造

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4319 思维还是不行...这样的构造都没思路... 首先,我们可以按 rank 的顺序从小到大 ...

  7. 百度地图API的第一次接触

    因为项目的需求,第一次接触了百度API. 第一步:引用百度地图API的脚本 如果在局域网环境中,要把地图文件和js文件都要下载下来 <script type="text/javascr ...

  8. POCO库中文编程参考指南(7)Poco::Net::DatagramSocket

    1 构造函数 创建一个未连接的 IPv4 数据报 Socket: DatagramSocket(); 创建一个指定 IP 类型(IPv4 或 IPv6)的数据报 Socket: explicit Da ...

  9. 三 lambda表达式有什么用

    (转载: https://mp.weixin.qq.com/s/-PHOc6p-qKJBktle28AUgA) 一: 直接把代码块赋值给变量 我们知道,对于一个Java变量,我们可以赋给其一个“值”. ...

  10. SELinux处理命令

    1 查看SELinux状态 Enforcing为开启状态:Disabled为关闭状态. [root@localhost /]# getenforce Enforcing 2 临时关闭SELinux [ ...