MSTP简介

RSTP在STP基础上进行了改进,实现了网络拓扑快速收敛。但在划分VLAN的网络中运行RSTP/STP,局域网内所有的VLAN共享一棵生成树,被阻塞后的链路将不承载任何流量,无法在VLAN间实现数据流量的负载均衡,导致链路带宽利用率、设备资源利用率较低。

为了弥补RSTP/STP的缺陷,IEEE于2002年发布的802.1S标准定义了MSTP(Multiple Spanning Tree Protocol,多生成树协议)。MSTP兼容STP和RSTP,通过建立多棵无环路的树,解决广播风暴并实现冗余备份。

MSTP可以将一个或多个VLAN映射到一个Instance(实例),再基于Instance计算生成树,映射到同一个Instance的VLAN共享同一棵生成树

相关命令

配置生成树工作模式为mstp

[SW1]stp mode mstp

MSTP网络层次

MSTP把一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立。

MST Region(MST域)

一个局域网可以存在多个MST域,各MST域之间在物理上直接或间接相连。用户可以通过MSTP配置命令把多台交换设备划分在同一个MST域内。

MSTP网络中包含1个或多个MST域,每个MST域中包含一个或多个多生成树实例。

相关命令

进入MST域视图

[SW1]stp region-configuration

配置MST域的域名(缺省情况下,MST域名等于交换设备的桥MAC地址),同一个MST域的设备必须配置相同的域名

[SW1-mst-region]region-name ?STRING<1-32>  A maximum of 32 characters can be entered

MSTI(Multiple Spanning Tree Instance,多生成树实例)

一个MST域内可以生成多棵生成树,每棵生成树都称为一个MSTI。MSTI使用Instance ID标识,华为设备取值为0~4094。Instance0是缺省存在的,而且缺省时,华为交换机上所有的VLAN都映射到了Instance0。

VLAN映射表

描述了VLAN和MSTI之间的映射关系。每个VLAN只能对应一个MSTI,即同一VLAN的数据只能在一个MSTI中传输,而一个MSTI可能对应多个VLAN。

相关命令

配置多生成树实例与VLAN的映射关系(缺省情况下,所有VLAN均映射到CIST,即实例0上)

[SW1-mst-region]instance 1 vlan 1 to 10

激活MST域的配置

[SW1-mst-region]active region-configuration 

配置MST域的修订级别(各厂商设备的MSTP修订级别一般都默认为0,如果某厂商的设备不为0,为保持MST域内计算,在部署MSTP时,需要将各设备的MSTP修订级别修改为一致)

[SW1-mst-region]revision-level ?INTEGER<0-65535>  Revision level

CST(Common Spanning Tree,公共生成树)

连接交换网络内所有MST域的一棵生成树。

IST(Internal Spanning Tree,内部生成树)

是各MST域内的一棵自动计算的生成树。连接了该MST域内所有的设备。IST是一个特殊的MSTI,MSTI的Instance ID为0

CIST(Common and Internal Spanning Tree,公共和内部生成树)

通过生成树协议计算生成的,连接一个交换网络内所有交换设备的单生成树

SST(Single Spanning Tree,单生成树)

MST域中,运行生成树协议的交换设备只属于一个生成树实例,包括只有一个交换设备的情况。

总根(CIST Root)

是CIST的根桥。

域根(Regional Root)

IST域根

除了总根所在的MST域外,IST生成树中距离总根最近的交换设备。

MSTI域根

多生成树实例的根桥。

主桥(Master Bridge)

它是域内距离总根最近的交换设备,总根在MST域中,则总根为该域的主桥。因此,主桥包括总根和IST域根

MSTP的端口角色

MSTP中定义的所有端口角色包括:根端口、指定端口、Alternate端口、Backup端口、Master端口、域边缘端口和边缘端口。

其中,根端口、指定端口、Alternate端口、Backup端口、边缘端口的定义同RSTP。Master端口、域边缘端口是MSTP种新增的端口角色。

域边缘端口

域边缘端口是指位于MST域的边缘并连接其它MST域的端口。

Master端口

Master端口是MST域和总根相连的域边缘端口。

Master端口在CIST上的角色是Root Port,在其它各实例上的角色都是Master端口

MSTP的端口状态

MSTP定义的端口状态与RSTP协议中定义相同

Forwarding状态:端口既转发用户流量,学习MAC地址,又接收/发送BPDU报文。

Learning状态:过渡状态,端口接收/发送BPDU报文,不转发用户流量但是学习MAC地址。

Discarding状态:端口只接收BPDU报文,不转发用户流量也不学习MAC地址。

MSTP端口状态

端口在拓扑中的角色

Forwarding

包括根端口、指定端口、Master端口、域边缘端口

Learning

包括根端口、指定端口、Master端口、域边缘端口

Discarding

包括根端口、指定端口、Master端口、域边缘端口、Alternate端口、Backup端口

MSTP报文

MSTP使用MST BPDU(Multiple Spanning Tree Bridge Protocol Data Unit,多生成树桥协议数据单元)作为生成树计算的依据。

Protocol Version Identifier:1 Byte,协议版本标识符,STP为0,RSTP为2,MSTP为3。

CIST Flags:1 Byte,CIST标志字段。

CIST Root Identifier:8 Byte,CIST的总根交换设备ID。

CIST External Path Cost:4 Byte,CIST外部路径开销指从本交换设备所属的MST域到CIST根交换设备所属的MST域的累计路径开销。CIST外部路径开销根据链路带宽计算。

CIST Regional Root Identifier:8 Byte,CIST的域根交换设备ID,即IST Master的ID。如果总根在这个域内,那么域根交换设备ID就是总根交换设备ID。

CIST Port Identifier:2 Byte,本端口在IST中的指定端口ID。

Message Age:2 Byte,BPDU报文的生存期。

Max Age:2 Byte,BPDU报文的最大生存期,超时则认为到根交换设备的链路故障。

Hello Time:2 Byte,Hello定时器,缺省为2秒。

Forward Delay:2 Byte,Forward Delay定时器,缺省为15秒。

Version 1 Length:1 Byte,Version1 BPDU的长度,值固定为0。

Version 3 Length:2 Byte,Version3 BPDU的长度。

MST Configuration Identifier:51 Byte,MST配置标识,表示MST域的标签信息,包含4个字段。

CIST Internal Root Path Cost:4 Byte,CIST内部路径开销指从本端口到IST Master交换设备的累计路径开销。CIST内部路径开销根据链路带宽计算。

CIST Bridge Identifier:8 Byte,CIST的指定交换设备ID。

CIST Remaining Hops:1 Byte,BPDU报文在CIST中的剩余跳数。

MSTI Configuration Messages:16 Byte,MSTI配置信息。每个MSTI的配置信息占16 Byte,如果有n个MSTI就占用n×16 Byte。

抓包观察

1 协议版本标识符:3(mstp)

2 CIST总根ID:0.4c:1f:cc:e8:0c:74

3 本地MST域到根域的累计路径开销:20000

4 本地MST域根设备ID:4096.4c:1f:cc:1a:55:04

5 Version3 BPDU的长度:80字节

6-7 MST域信息

8 本端口到IST Master交换设备的累计路径开销:20000

9 本桥通往域根的最邻近的上游桥ID:32768.4c:1f:cc:87:03:68

10 报文剩余跳数:20

11 MSTI 1 的配置信息

MSTP拓扑计算

CIST和MSTI都是根据优先级向量来计算的,这些优先级向量信息都包含在MST BPDU中。各交换设备互相交换MST BPDU来生成CIST和MSTI 。

参与CIST计算的优先级向量为(优先级从左到右依次递减):根交换设备ID,外部路径开销,域根ID,内部路径开销,指定交换设备ID,指定端口ID,接收端口ID。

参与MSTI计算的优先级向量为(优先级从左到右依次递减):域根ID,内部路径开销,指定交换设备ID,指定端口ID,接收端口ID。

如果端口接收到的BPDU内包含的配置消息优于端口上保存的配置消息,则端口上原来保存的配置消息被新收到的配置消息替代。端口同时更新交换设备保存的全局配置消息。反之,新收到的BPDU被丢弃

优先级向量

根交换设备ID

根交换设备ID用于选择CIST中的根交换设备。

根交换设备ID = Priority(16 bit) + MAC(48 bit)。

其中Priority为MSTI 0 的优先级。

外部路径开销(External Root Path Cost,ERPC)

从CIST的域根到达总根的路径开销。

MST域内所有交换设备上保存的外部路径开销相同。

若CIST根交换设备在域中,则域内所有交换设备上保存的外部路径开销为0。

域根ID

域根ID用于选择MSTI中的域根。

域根ID = Priority(16 bit) + MAC(48 bit)。

其中Priority为MSTI0的优先级。

内部路径开销(Internal Root Path Cost,IRPC)

本桥到达域根的路径开销。

域边缘端口保存的内部路径开销大于非域边缘端口保存的内部路径开销。

指定交换设备ID

指定交换设备是本桥通往域根的最邻近的上游桥。

如果本桥就是总根或域根,则指定交换设备为自己。

指定端口ID

指定交换设备上同本设备上根端口相连的端口。

Port ID = Priority(4 bit) + 端口号(12 bit)。

端口优先级必须是16的整数倍。

接收端口ID

接收到BPDU报文的端口。

Port ID = Priority(4 bit) + 端口号(12 bit)。

端口优先级必须是16的整数倍。

CIST计算

1 经过比较MST BPDU消息后,在整个网络中选择一个优先级最高的交换设备作为CIST的树根,即总根。

2 在每个MST域内,MSTP通过计算生成IST。

3 同时MSTP将每个MST域作为单台交换设备对待,通过计算在MST域间生成CST。

MSTI计算

在MST域内,MSTP根据VLAN和生成树实例的映射关系,针对不同的VLAN生成不同的生成树实例。

每个MSTI独立计算自己的生成树,互不干扰,计算方法与STP基本相同,可以有不同的根,不同的拓扑,在自己的生成树内发送BPDU,拓扑通过命令配置决定。

每个端口在不同MSTI上的生成树参数、角色、状态可以不同。

通过计算来自动确定生成树的根桥,用户也可以手动配置设备为指定生成树的根桥或备份根桥,但在同一棵生成树中,一台设备不能既作为根桥,又作为备份根桥,根桥只有一个,备份根桥可以有多个,当根桥故障时,优先级最优的备份根桥会成为根桥。

相关命令

配置根桥和备份根桥(primary优先级是0,secondary优先级是4096)

[SW1]stp instance 1 root ?primary    Primary root switchsecondary  Secondary root switch

配置交换设备在指定生成树实例中的优先级

[SW1]stp instance 1 priority ?INTEGER<0-61440>  Bridge priority, in steps of 4096

配置路径开销值的计算方法(缺省情况下,路径开销值的计算方法为IEEE 802.1T标准)

[SW1]stp pathcost-standard ?dot1d-1998  IEEE 802.1D-1998dot1t       IEEE 802.1Tlegacy      Legacy

dot1d-1998:指定路径开销值的计算方法是IEEE 802.1D-1998标准方法,取值范围为1~65535。
dot1t:指定路径开销值的计算方法是IEEE 802.1T标准方法,取值范围为1~200,000,000。
legacy:指定路径开销值的计算方法是华为计算方法,取值范围为1~200,000。

配置当前端口在指定生成树上的端口路径开销(缺省情况下,端口在各个生成树上的路径开销为端口速率对应的路径开销)

[SW1-GigabitEthernet0/0/1]stp instance 1 cost ?INTEGER<1-200000000>  Port path cost

配置当前端口在生成树计算时的优先级(缺省情况下,交换设备端口的优先级取值是128,步进16)

[SW1-GigabitEthernet0/0/1]stp instance 1 port priority ?INTEGER<0-240>  Port priority, in steps of 16

MSTP网络数据转发

在MST域内,沿着其对应的MSTI转发。在MST域间,沿着CST转发。

比如,vlan2映射到了MSTI  2,在整个CIST中,数据会沿着每个MST域内的MSTI 2的生成树进行转发。在MST域的边界出会根据CST进行转发。

2022-08-14 网工进阶(二十六) MSTP-网络层次、端口角色、端口状态、拓扑计算相关推荐

  1. 2022-07-15 网工进阶(十九)BGP-状态机、对等体之间的交互原则、影响对等体关系建立的因素、对等体表、路由表、详细路由表、路由属性

    BGP状态机 BGP对等体的交互过程中存在6种状态机:空闲(Idle).连接(Connect).活跃(Active).Open报文已发送(OpenSent).Open报文已确认(OpenConfirm ...

  2. 2021-12-29 网工基础(十六)动态路由OSPF基础

    一 动态路由概述 动态路由协议能够自动发现和生成路由,并在拓扑变化时及时更新路由,可以有效减少管理人员工作量,更适用于大规模网络. 自动发现.学习路由.感知拓扑变更. 二 动态路由分类 按工作区域分类 ...

  3. 网站开发进阶(二十六)js刷新页面方法大全

    一.前言​ 在项目开发过程中,需要实现刷新页面.经过学习,发现下面这条语句就可以轻松实现. location.reload(); // 刷新页面 有关刷新页面的其它方法,具体学习内容如下,有需要的朋友 ...

  4. 跨平台应用开发进阶(二十六) :忐忑悲壮路,心酸出坑史——记第一次iOS艰辛上架路

    文章目录 一.前言 二.上架问题汇总 2.1 Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage We noticed th ...

  5. Android进阶(二十六)MenuInflater实现菜单添加

    MenuInflater实现菜单添加 前言 之前实现的Android项目中可以实现菜单的显示.但是再次调试项目时发现此功能已无法实现,很是令人费解.难道是因为自己手机Android系统的问题?尝试通过 ...

  6. 第二人生的源码分析(二十六)底层网络协议

    为了理解第二人生的客户端与服务器的沟通,那么下面就来分析一下第二人生采用的网络协议.在目前的网络里,主要有两个协议:TCP和UDP,而第二人生里是采用UDP协议.TCP协议与UDP协议的主要区别,就是 ...

  7. 博文总集(三) 之网工进阶

    缓慢更新中 2022-04-03 网工进阶(一)认识网络设备_鹅一只的博客-CSDN博客_上行接口板 2022-04-04 网工进阶(二)IP路由基础.OSPF-基本概念.RID.区域_路由器rid是 ...

  8. Android进阶(二十八)上下文菜单ContextMenu使用案例

    上下文菜单ContextMenu使用案例 前言 回顾之前的应用程序,发现之前创建的选项菜单无法显示了.按照正常逻辑来说,左图中在"商品信息"一栏中应该存在选项菜单,用户可进行分享等 ...

  9. python爬虫进阶案例,Python进阶(二十)-Python爬虫实例讲解

    #Python进阶(二十)-Python爬虫实例讲解 本篇博文主要讲解Python爬虫实例,重点包括爬虫技术架构,组成爬虫的关键模块:URL管理器.HTML下载器和HTML解析器. ##爬虫简单架构 ...

  10. C/C++基础讲解(二十六)之数值计算与趣味数学篇(打鱼还是晒网与怎样存钱以获取最大利息)

    C/C++基础讲解(二十六)之数值计算与趣味数学篇(打鱼还是晒网与怎样存钱以获取最大利息) 程序之美 前言 很多时候,特别是刚步入大学的学子们,对于刚刚开展的计算机课程基本上是一团迷雾,想要弄明白其中 ...

最新文章

  1. Java项目启动时执行指定方法的几种方式
  2. DOM节点删除方法小结
  3. Xamarin.Forms教程开发Xamarin.Forms应用程序需要的工具
  4. Solaris 系统中的snoop命令详解
  5. Scala特质的动态混入(超强扩展性)
  6. android Eclipse导入com.android.internal.R和layoutlib.jar报错解决方案
  7. 事件处理之二:点击事件监听器的五种写法
  8. openocd安装与调试
  9. vue Bus 总线 组件间通信
  10. 第十天内容《基础交换十》
  11. Android 利用属ObjectAnimator,AnimatorSet性动画绘制一个弹球,加速下落,到底部时挤压,然后减速上弹...
  12. AcWing 847. 图中点的层次(BFS模板)
  13. Netty之大名鼎鼎的EventLoop
  14. paddle2.0实现DNN(minst数据集)
  15. 程序员为了讨好大舅子,竟自学自动化编程
  16. 搭建jitsi的prosody出现的问题
  17. C语言实现摄氏、华氏温度转换
  18. POJ:3276-Face The Right Way(线性反转)
  19. Revit API:找到轮廓族的路径
  20. Android 10.0 Launcher3 抽屉式(双层)app列表排序

热门文章

  1. 微信公众号正确使用开放标签wx-open-launch-weapp
  2. JavaSE学生管理系统(ArrayList集合来做)
  3. 突破从0到1后,鲜花电商2.0时代怎么走?
  4. [蓝桥杯]K倍区间(c++超详解)
  5. Could you please ... ? - 小强说
  6. 怎么把wps表格里某一列有重复项的整行删掉
  7. Mybatis(第二篇:联表查询)
  8. (C++)一个按时间片轮转法实现进程调度的程序
  9. 哈佛大学公开课:计算机科学cs50 学习笔记(第10集:指针,内存)
  10. 基于matlab的热红外图像温度检测