二层协议-MSTP


多生成树协议MSTP,协议标准IEEE 802.1s,通过生成多个生成树,来解决以太网环路问题。
BPDU包组播地址:01-80-C2-00-00-00
MSTP的报文是通过802.3(Vlan)承载的。

MSTP出现的背景

  1. RSTP和STP还存在同一个缺陷:由于局域网内所有的VLAN共享一棵生成树,因此无法在VLAN间实现数据流量的负载均衡,链路被阻塞后将不承载任何流量,还有可能造成部分VLAN的报文无法转发
  2. MSTP兼容STP和RSTP,既可以快速收敛,又提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN数据的负载均衡
  3. MSTP把一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立。每棵生成树叫做一个多生成树实例MSTI,每个域叫做一个MST域

生成树实例是多个VLAN的一个集合。通过将多个VLAN捆绑到一个实例,可以节省通信开销和资源占用率。MSTP各个实例拓扑的计算相互独立,在这些实例上可以实现负载均衡。可以把多个相同拓扑结构的VLAN映射到一个实例里,这些VLAN在端口上的转发状态取决于端口在对应MSTP实例的状态

因此,MSTP的目的有两个

  1. 形成多棵无环路的树,解决广播风暴并实现冗余备份
  2. 多棵生成树在VLAN间实现负载均衡,不同VLAN的流量按照不同的路径转发。

报文格式

MSTP的报文是通过RSTP报文来承载的,因此BPDU Type=02,只不过是多了一个MST扩展,扩展中包含MSTP的内容。
报文格式
无论是域内的MST BPDU还是域间的,前36个字节和RST BPDU相同。从第37个字节开始是MSTP专有字段,最后的MSTI配置信息字段由若干MSTI配置信息组连接而成。

  • Version 3 Length:MSTP的BPDU的长度
  • MST Configuration Identifier:MST配置标识,表示MST域的标签信息,包含4个字段。
  • CIST Internal Root Path Cost:CIST内部路径开销指从本端口到IST Master交换设备的累计路径开销。CIST内部路径开销根据链路带宽计算
  • CIST Bridge Identifier:CIST的指定交换设备ID
  • CIST Remaining Hops:BPDU报文在CIST中的剩余跳数
  • MSTI Configuration Messages:MSTI配置信息。每个MSTI的配置信息占16 bytes,如果有n个MSTI就占用n×16bytes

同一个MST域的条件(重点)⭐️

  1. 都启动了MSTP
  2. 具有相同的域名
  3. 具有相同的VLAN到生成树实例映射配置
  4. 具有相同的MSTP修订级别配置

MST配置标识必须一致:
MST配置标识

优先级只能是4096的倍数的原因:
RootID = PRI(2B)+背板MAC(6B) = PRI(4bit)+SYSID(12bit,这一块就是VlanID,最大4096)+MAC(6B)
设置优先级时primary代表优先级为0,secondary代表优先级为4096

术语以及之间的关系图谱

图1
图2

  • 多生成树实例MSTI
    所有运行STP/RSTP/MSTP的交换设备经MSTP协议计算后形成的树状网络
  • 多生成树域MST域
    由交换网络中的多台交换设备以及它们之间的网段所构成
  • 公共生成树CST
    连接交换网络内所有MST域的一棵生成树
    如果把每个MST域看作是一个节点,CST就是这些节点通过STP或RSTP协议计算生成的一棵生成树
    如图1所示,黑色线条连接各个域构成CST
  • 内部生成树IST
    各MST域内的一棵生成树
    IST是一个特殊的MSTI,MSTI的ID为0,通常称为MSTI0,IST是CIST在MST域中的一个片段
    如图1所示,深蓝色线条在域中连接该域的所有交换设备构成IST
  • 单生成树SST:两种情况
    1. 运行STP或RSTP的交换设备只能属于一个生成树
    2. MST域中只有一个交换设备,这个交换设备构成单生成树
  • 公共内部生成树CIST:所有MST域的IST+CST
  • 域根,IST域根和MSTI域根
    • IST域根如图1所示,在MST域中IST生成树中距离总根最近的交换设备是IST域根
    • MSTI域根是每个多生成树实例的树根,如图2所示,域中不同的MSTI有各自的域根,一个MST域内可以生成多棵生成树,每棵生成树都称为一个MSTI
  • 总根
    全网中BID最小的为总根
  • 主桥
    域内距离总根最近的交换设备,如图1中的黄色交换机,如果总根在MST域中,则总根为该域的主桥

CIST中的选举过程

  1. 先选举总根
  2. 每个区域需要选举域根。域根是到达总根距离最短的设备,每个区域只能选举一个域根。如果该区域中存在总根,那么总根同时也是该区域的域根
  3. 非总根和域根的设备需要选举一个到达总根距离最短的RP
  4. 每条链路需要选举DP

MSTP拓扑计算

MSTP可以将整个二层网络划分为多个MST域,各个域之间通过计算生成CST域内则通过计算生成多棵生成树每棵生成树都被称为是一个多生成树实例其中实例0被称为IST,其他的多生成树实例为MSTI。MSTP同STP一样,使用配置消息进行生成树的计算,只是配置消息中携带的是设备上MSTP的配置信息。

优先级向量

MSTI和CIST都是根据优先级向量来计算的,这些优先级向量信息都包含在MST BPDU中。各交换设备互相交换MST BPDU来生成MSTI和CIST。
参与CIST计算的优先级向量为:{ 根交换设备ID,外部路径开销,域根ID,内部路径开销,指定交换设备ID,指定端口ID,接收端口ID }
参与MSTI计算的优先级向量为:{ 域根ID,内部路径开销,指定交换设备ID,指定端口ID,接收端口ID }

比较原则(CIST选举的顺序)(重点)⭐️

确定设备角色和端口角色;同一向量比较,值最小的向量具有最高优先级

  1. 比较CIST的总根的BID,越小越优
  2. 比较CIST中到达总根的ERPC(外部根路径开销),越小越优
  3. 比较CIST中域根的BID,越小越优
  4. 比较CIST中到达域根的IRPC(内部根路径开销),越小越优
  5. 比较CIST中BPDU包发送者的BID,越小越优
  6. 比较CIST中BPDU包发送者的PORT ID,越小越优
  7. 比较CIST中BPDU包接收者的PORT ID,越小越优

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

CIST的计算

经过比较配置消息后,在整个网络中选择一个优先级最高的交换设备作为CIST的树根。
在每个MST域内MSTP通过计算生成IST;同时MSTP将每个MST域作为单台交换设备对待,通过计算在MST域间生成CST。
CST和IST构成了整个交换设备网络的CIST。

MSTI的计算

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

MSTI的特点

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

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

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

MSTP拓扑变化处理与RSTP拓扑变化处理过程类似


追问

为什么需要使用 MSTP

MSTP 的作用主要是用来负载,可以通过实例进行 VLAN 内流量的负载

  • STP
    • 形成一棵无环路的树,解决广播风暴并实现冗余备份,收敛速度较
    • 无需区分用户或业务流量,所有VLAN 共享一棵生成树
  • RSTP
    • 形成一棵无环路的树,解决广播风暴并实现冗余备份,收敛速度
    • 无需区分用户或业务流量,所有VLAN 共享一棵生成树
  • MSTP
    • 形成多棵无环路的树,解决广播风暴并实现冗余备份,收敛速度,多棵生成树在VLAN间实现负载均衡,不同VLAN的流量按照不同的路径转发
    • 需要区分用户或业务流量,并实现负载分担。不同的VLAN通过不同的生成树转发流量,每棵生成树之间相互独立