RSTP(Rapid Spanning Tree Protocol)在STP基础上进行了改进,实现了网络拓扑快速收敛。但RSTP和STP还存在同一个缺陷:由于局域网内所有的VLAN共享一棵生成树,因此无法在VLAN间实现数据流量的负载均衡,链路被阻塞后将不承载任何流量,造成带宽浪费,还有可能造成部分VLAN的报文无法转发。为了弥补STP和RSTP的缺陷,IEEE于2002年发布的802.1S标准定义了MSTP(Multiple Spanning Tree Protocol)。MSTP兼容STP和RSTP,既可以快速收敛,又提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN数据的负载均衡。
如上图所示,MSTP网络中包含1个或多个MST域(MST Region),每个MST Region中包含一个或多个MSTI。组成MSTI的是运行STP/RSTP/MSTP的设备,MSTI是所有运行STP/RSTP/MSTP的设备经MSTP协议计算后形成的树状网络。
MST域是多生成树域(Multiple Spanning Tree Region),由交换网络中的多台设备以及它们之间的网段所构成。同一个MST域的设备具有下列特点:
1、都启动了MSTP。
2、具有相同的域名。
3、具有相同的VLAN到生成树实例映射配置。
4、具有相同的MSTP修订级别配置。
一个局域网内可以存在多个MST域,一个域内可以有多个MSTI(多生成树实例),一个MSTI映射一个多个VLAN。而一个VLAN只能映射一个MSTI。
MST实例,代表了一个MST域内运行MSTP设备与对应的VLAN的映射关系,一个MST域内可以有多个MSTI,不同的MSTI映射不同的多个VLAN。如上图所示MST域4里有4个MST实例,不同的实例有不同的生成树结构对应不同的VLAN。
VLAN映射表描述了VLAN和MSTI之间的映射关系。如图2所示,MST Region4中,VLAN1映射到MSTI1,VLAN2映射到MSTI2,其余VLAN映射到MSTI3。如上图所示,MST域4里VLAN1映射了MSTI1,VLAN2映射了MSTI2,其他的VLAN映射MSTI3,这样VLAN1的流量就会通过MSTI1形成的生成树进行状态,VLAN2就会通过MST2形成的生成树进行转发,以此类推。
公共生成树CST,指的是所有运行了MSTP的MST域之间形成的生成树,将一个MST域当做一个节点,通过STP或RSTP算法生成树状结构,如上图所示,A0,B0,C0,D0各是一个MST域,将一个域看做一个节点在他们之间构建生成树结构,而每个域内部也通过STP/RSTP生成树状结构,这样整个网络都形成了一个无环的结构。且根据不同的VLAN有不同的转发路径。
内部生成树IST(Internal Spanning Tree)是各MST域内的一棵生成树。IST是一个特殊的MSTI,MSTI的ID为0,通常称为MSTI0。只有MSTI0才能接受其他域的数据。
即IST+CST,公共生成树+内部生成树共同构建了一个局域网内的完整的生成树结构,就如上图所示,IST+CST所构建的树状结构,就是一个完整的CIST并且是单生成树。
构成单生成树SST(Single Spanning Tree)有两种情况:
1、运行STP或RSTP的设备只能属于一个生成树。
2、MST域中只有一个设备,这个设备构成单生成树。
如上图CIST中的B0区域内的设备形成的就是SST。
端口角色 | 说明 |
---|---|
根端口 | 在非根桥上,离根桥最近的端口是本设备的根端口。根设备没有根端口。根端口负责向树根方向转发数据。 |
指定端口 | 对一台设备而言,它的指定端口是向下游设备转发BPDU报文的端口。 |
Alternate端口 | 从配置BPDU报文发送角度来看,Alternate端口就是由于学习到其它网桥发送的配置BPDU报文而阻塞的端口。从用户流量角度来看,Alternate端口提供了从指定桥到根的另一条可切换路径,作为根端口的备份端口。 |
Backup端口 | 从配置BPDU报文发送角度来看,Backup端口就是由于学习到自己发送的配置BPDU报文而阻塞的端口。从用户流量角度来看,Backup端口作为指定端口的备份,提供了另外一条从根节点到叶节点的备份通路。 |
Master端口 | Master端口是MST域和CIST总根相连的所有路径中最短路径上的端口。Master端口是域中的报文去往总根的必经之路。Master端口是特殊域边缘端口,Master端口在IST/CIST上的角色是Root Port,在其它各实例上的角色都是Master端口。 |
域边缘端口 | 域边缘端口是指位于MST域的边缘并连接其它MST域或SST的端口。进行MSTP计算时,域边缘端口在MSTI上的角色和CIST实例的角色保持一致。即如果边缘端口在CIST实例上的角色是Master端口(连接域到总根的端口),则它在域内所有MSTI上的角色也是Master端口。 |
边缘端口 | 如果指定端口位于整个域的边缘,不再与任何设备连接,这种端口叫做边缘端口。边缘端口一般与用户终端设备直接连接。端口使能MSTP功能后,会默认启用边缘端口自动探测功能,当端口在秒的时间内收不到BPDU报文,自动将端口设置为边缘端口,否则设置为非边缘端口。 |
注:MSTP的端口状态与RSTP一一致
MSTI和CIST(Common and Internal Spanning Tree)都是根据优先级向量来计算的,这些优先级向量信息都包含在MST BPDU(Bridge Protocol Data Unit)中。各交换设备互相交换MST BPDU来生成MSTI和CIST。
参与CIST计算的优先级向量:
{ 根交换设备ID,外部路径开销,域根ID,内部路径开销,指定交换设备ID,指定端口ID,接收端口ID }
参与MSTI计算的优先级向量:{ 域根ID,内部路径开销,指定交换设备ID,指定端口ID,接收端口ID }
括号中的优先级从左到右依次递减
向量名 | 说明 |
---|---|
根交换设备ID | 根交换设备ID用于选择CIST中的根交换设备。根交换设备ID = Priority(16bits) + MAC(48bits)。 |
外部路径开销(ERPC) | 从CIST的域根到达总根的路径开销。MST域内所有交换设备上保存的外部路径开销相同。若CIST根交换设备在域中,则域内所有交换设备上保存的外部路径开销为0。 |
域根ID | 域根ID用于选择MSTI中的域根。域根ID = Priority(16bits) + MAC(48bits)。 |
内部路径开销(IRPC) | 本桥到达域根的路径开销。域边缘端口保存的内部路径开销大于非域边缘端口保存的内部路径开销。 |
指定交换设备ID | CIST或MSTI实例的指定交换设备是本桥通往域根的最邻近的上游桥。如果本桥就是总根或域根,则指定交换设备为自己。 |
指定端口ID | 指定交换设备上同本设备上根端口相连的端口。Port ID = Priority(4位) + 端口号(12位)。端口优先级必须是16的整数倍。 |
接收端口ID | 接收到BPDU报文的端口。Port ID = Priority(4位) + 端口号(12位)。端口优先级必须是16的整数倍。 |
优先级向量比较原则如下。
经过比较配置消息后,在整个网络中选择一个优先级最高的交换设备作为CIST的树根。在每个MST域内MSTP通过计算生成IST;同时MSTP将每个MST域作为单台交换设备对待,通过计算在MST域间生成CST。CST和IST构成了整个交换设备网络的CIST。
在MST域内,MSTP根据VLAN和生成树实例的映射关系,针对不同的VLAN生成不同的生成树实例。每棵生成树独立进行计算,计算过程与STP计算生成树的过程类似
MSTI的特点:
1、每个MSTI独立计算自己的生成树,互不干扰。
2、每个MSTI的生成树计算方法与STP基本相同。
3、每个MSTI的生成树可以有不同的根,不同的拓扑。
4、每个MSTI在自己的生成树内发送BPDU。
5、每个MSTI的拓扑通过命令配置决定。
6、每个端口在不同MSTI上的生成树参数可以不同。
7、每个端口在不同MSTI上的角色、状态可以不同。
MSTP支持普通方式和增强方式的P/A机制,普通方式的P/A机制与RSTP相同,增强P/A机制的工作原理如下图所示:
上游设备发送P置位的BPDU请求进行P/A协商,下游设备收到好比较优先级发现比自己的要优,则进入同步状态阻塞其他非边缘端口并将接收上游BPDU的端口改为RP,但是不会直接进入forwarding状态,这时候上游设备会继续发送一个A置位的BPDU报文,下游设备收到后才将RP转为forwarding状态,而后下游设备回复A置位的BPDU,上游设备收到后,将端口状态变为forwarding。
缺省情况下,华为设备使用增强的快速迁移机制。如果华为设备和其他厂商的设备进行互通,而其他厂商的设备P/A机制使用普通的快速迁移机制,此时,可在华为设备上通过命令stp no-agreement-check设置P/A机制为普通的快速迁移机制,从而实现华为设备和其他厂商的设备进行互通。
拓扑如上图所示,PC1-PC4:192.168.1.1-192.168.1.4,三台交换机互连,SW1下有2台设备分属于vlan 10 20,SW2上有vlan 10 用户,SW3上又vlan 20用户,希望PC1去往PC3时走SW1-SW2-PC3,而PC2去往PC4时走SW1-SW3-PC4,然后当任意一条链路故障时,就走备用链路。相关配置如下:
LSW1:
vlan batch 10 20
stp region-configuration
region-name 1
instance 1 vlan 10
instance 2 vlan 20
active region-configuration
interface Ethernet0/0/1
port link-type access
port default vlan 10
stp edged-port enable
interface Ethernet0/0/2
port link-type access
port default vlan 20
stp edged-port enable
interface Ethernet0/0/3
port link-type trunk
port trunk allow-pass vlan 10 20
stp instance 2 cost 2000000
interface Ethernet0/0/4
port link-type trunk
port trunk allow-pass vlan 10 20
stp instance 1 cost 2000000
LSW2:
vlan batch 10 20
stp region-configuration
region-name 1
instance 1 vlan 10
instance 2 vlan 20
active region-configuration
interface Ethernet0/0/1
port link-type access
port default vlan 10
stp edged-port enable
interface Ethernet0/0/2
port link-type trunk
port trunk allow-pass vlan 10 20
interface Ethernet0/0/3
port link-type trunk
port trunk allow-pass vlan 2 to 4094
LSW3:
vlan batch 10 20
stp region-configuration
region-name 1
instance 1 vlan 10
instance 2 vlan 20
active region-configuration
interface Ethernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10 20
interface Ethernet0/0/2
port link-type trunk
port trunk allow-pass vlan 2 to 4094
interface Ethernet0/0/3
port link-type access
port default vlan 20
stp edged-port enable
配置完后,在LSW1上查看dis stp brief:
在实例1中,LSW1的E0/0/4接口被阻塞,在实例2中,LSW1的E0/0/3接口被阻塞。
因此我们可以画出MSTI图来:
然后我们来测试PC1到PC3的连通性:
然后shutdown LSW1上的E0/0/3接口才测试连通性: