计算机网络-MSTP工作原理

前面大致学习了MSTP基础概念与组成,今天来了解MSTP的工作原理。

一、MSTP拓扑计算:

MSTP可以将整个二层网络划分为多个MST域各个域之间 通过计算生成CST域内生成IST ,CST和IST构成了整个交换设备网络的CIST

域内还可以基于实例计算生成多棵生成树,每棵生成树都被称为是一个MSTI。 简单理解就是通过分区域进行计算生成域内和域间的生成树,构成CIST。
CIST MSTP构成

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

  • 参与CIST计算的优先级向量为:{ 根交换设备ID,外部路径开销,域根ID,内部路径开销,指定交换设备ID,指定端口ID,接收端口ID }
  • 参与MSTI计算的优先级向量为:{ 域根ID,内部路径开销,指定交换设备ID,指定端口ID,接收端口ID }

注意:括号中的向量的优先级从左到右依次递减,值越小越优先。

优先级向量说明:

  • 根交换设备ID:根交换设备ID用于选择CIST中的根交换设备。根交换设备ID = Priority(16 bit) + MAC(48 bit)。其中Priority为MSTI0的优先级,示例:32768.4c1f-ccb1-1240
  • 外部路径开销(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:CIST或MSTI实例的指定交换设备是本桥通往域根的最邻近的上游桥。如果本桥就是总根或域根,则指定交换设备为自己。
  • 指定端口ID:指定交换设备上同本设备上根端口相连的端口。Port ID = Priority(4 bit) + 端口号(12 bit)。端口优先级必须是16的整数倍。示例:128.1
  • 接收端口ID:接收到BPDU报文的端口。Port ID = Priority(4 bit) + 端口号(12 bit)。端口优先级必须是16的整数倍。

二、CIST计算

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

在每个MST域内,MSTP通过计算生成IST;同时MSTP将每个MST域作为单台交换设备对待,通过计算在MST域间生成CST。CST和IST构成了整个交换设备网络的CIST。
CIST计算

选择一个整个MSTP网络的最优设备作为总根,然后每个域内选择一个域根,构成CIST。

三、MSTI计算

在MST域内,MSTP根据VLAN和生成树实例的映射关系,针对不同的VLAN生成不同的生成树实例。每棵生成树独立进行计算,计算过程与STP计算生成树的过程类似。
MSTI计算

MSTI的特点:

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

根桥和备份根桥:可以通过计算来自动确定生成树的根桥,用户也可以手动配置设备为指定生成树的根桥或备份根桥。

  • 设备在各生成树中的角色互相独立,在作为一棵生成树的根桥或备份根桥的同时,也可以作为其它生成树的根桥或备份根桥;但在同一棵生成树中,一台设备不能既作为根桥,又作为备份根桥。
  • 在一棵生成树中,生效的根桥只有一个;当两台或两台以上的设备被指定为同一棵生成树的根桥时,系统将选择MAC地址最小的设备作为根桥。
  • 可以在每棵生成树中指定多个备份根桥。当根桥出现故障或被关机时,备份根桥可以取代根桥成为指定生成树的根桥;但此时若配置了新的根桥,则备份根桥将不会成为根桥。如果配置了多个备份根桥,则MAC地址最小的备份根桥将成为指定生成树的根桥。

四、MSTP网络数据转发

在运行MSTP协议的网络中,一个VLAN报文将沿着如下路径进行转发:

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

数据转发1 数据转发2

先从MSTI内部走,然后经过CST骨干路径转发到其他域。

总结:MSTP的工作原理大致是先确定整个MSTP域的总根 ,不同的MSTP域的域根连接总根构成CST ,然后不同的MSTP域内部确定一个无环的内部生成树IST ,选举规则依据优先级向量决定,值越小越优先。在MST域内依据不同创建不同实例并映射VLAN形成MSTI,内部生成树实例。数据转发先在域内沿着IST转发 ,然后域间通过CST转发

本文由mdnice多平台发布

相关推荐
这个DBA有点耶2 天前
SQL调优进阶:从“优化一条SQL”到“优化一个系统”的思维升级
java·大数据·数据库·sql·程序人生·dba·改行学it
空中湖3 天前
电池简史(五):极限之梦与终章——锂硫、锂空气、量子电池,以及你该知道的电池投资与生活指南
数据库·程序人生
言乐63 天前
技术员与健康
程序人生
️学习的小王3 天前
itnan.cc(艾恩网址导航):一款面向开发者的可私有化自定义导航站
程序人生·全文检索
可爱系程序猿3 天前
dinput8.dll 缺失导致游戏启动失败?DirectInput 和模组冲突排查记录
程序人生·游戏·电脑
郝学胜-神的一滴4 天前
算法实战:最小k个数——大顶堆的优雅解法
开发语言·数据结构·c++·python·程序人生·算法·排序算法
思维矩阵K4 天前
从“打螺丝宿命论”重思教育焦虑与阶级斗争的当代意义
程序人生
白鳯5 天前
《索拉里斯星》星海未知处,爱与理性的边界
程序人生·其他·读书·感悟·科幻小说·索拉里斯星·莱姆
郝学胜-神的一滴6 天前
Qt 高级编程 035:无边框窗口+自定义标题栏 完整实现详解
开发语言·c++·qt·程序人生·用户界面
CoderYanger6 天前
视频切割脚本(Python版)
linux·开发语言·windows·后端·python·程序人生·职场和发展