目录
MSTP概述
MSTP的基本原理
MSTP的网络层次
实验案例(MSTP的负载均衡)
传统的生成树只运行一个实例,且收敛速度慢,RSTP在传统STP基础上通过改进达到了加速网络拓扑收敛的目的,但是依然存在缺陷。由于STP和RSTP在整个局域网中,所有的VLAN共享一个生成树实例,因此无法实现基于VLAN的负载均衡,并且存在闲置链路,网络环境稳定状态下备份链路始终不能转发数据流量,造成带宽的浪费。
如图所示,在STP或RSTP生成树时,若交换机S1为根交换机时,S2和S3之间的链路将处于阻塞状态,且不转发任何流量。即使网络拥塞时,S2和S3之间的链路也不能被利用,造成资源的浪费。
MSTP (Multiple Spanning Tree Algorithm and Protocol)是多生成树技术,允许在一个交换环境中运行多个生成树,每个生成树称为一个实例,实例之间的生成树彼此独立,如一个实例下的阻塞接口在另外一个实例上可能是转发接口。和PVST不同,MSTP允许多个VLAN运行一个生成树实例。大部分情况下,运行多个生成树实例的好处就在于链路的负载分担,但是当只有一条冗余链路时,运行两个生成树实例完全可以实现负载均衡,同时又能节约系统开销。所以MSTP实现的是链路冗余,结合vrrp可以实现虚拟网关冗余来实现大部分中小企业的需求。vrrp的博客会陆续更新。
如下图所示,网络环境中存在两个生成树实例,不同实例的根网桥在不同物理交换机上,不但可以实现负载分担,而且不会因为过多的实例而占用系统资源。
MSTP将环路网络修剪成一个无环的树形网络,避免广播风暴的产生,同时还提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN数据的负载均衡,MSTP还兼容STP和RSTP。
MSTP把一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立。每棵生成树称为一个多生成树实例( Multiple Spanning Tree Instance,MSTI),每个域称为一个MST域。
MSTP通过设置VLAN映射表(即VLAN和MSTI的对应关系表),把VLAN和MSTI联系起来。每个VLAN只能对应一个MSTI,即同一 VLAN 的数据只能在一个MSTI中传输,而一个MSTI可以对应多个VLAN,如上图所示, Instance1对应VLAN 10, Instance2对应VLAN 20,S1为MSTI的根交换机,S2为MSTI2的根交换机, Instance1阻塞S2与S3之间链路; Instance2阻塞S1与S3之间链路,,可以充分利用网络带宽,有效避免资源浪费。
在MSTP中,通过把整个互联的二层以太网络划分成若干域。在域内,把其中的VLAN分成若干组,每组具有相同的拓扑结构,然后定义若干MSTI,并把这些生成树实例和不同的VLAN映射起来。
所谓实例就是多个VLAN的一个集合。通过将多个VLAN映射到一个实例,可以节省通信开销和资源占用率。MSTP各个实例拓扑的计算相互独立。在这些实例上可以实现负载均衡。可以把多个相同拓扑结构的VLAN映射到一个实例里,这些VLAN在接口上的转发状态取决于接口在对应MSTP实例的状态。
一个二层交换网络可以划分多个MST域( Multiple Spanning Tree Region ),每个生成树可以划分多个MSTI,每个实例中可以映射多个VLAN。
下图所示的MSTP网络中包含3个MST域。分别是A、B、C。每个MST域中包含一个或多个MSTI。MST域B中包含两个MSTI,分别是 Instance 1和 Instance 2。 Instance1和VLAN 1-5映射, Instance2和VLAN 6-10映射。
MST域
MST域是多生成树域。由局域网中的多台交换机及它们之间的网段构成。一个局域网可以存在多个MST域,各MST域之间在物理上直接或间接相连。用户可以通过MSTP配置命令把多台交换机划分在同一个MST域内。MST域中的交换机都启用了MSTP,配置了相同的域名及VLAN映射表(VLAN映射表是MST域的属性,它描述了VLAN和MSTI之间的映射关系)。
MSTI
一个MST域内可以运行多个MSTI。MSTI之间彼此独立,MSTI可以与ー个或者多个VLAN对应。但一个VLAN只能与一个MSTI对应。
端口角色
MSTP中的端口角色主要有根端口、指定端口、预备端口、备份端口和边缘端口。除边缘端口外,其他端口角色都参与MSTP的计算过程。同一端口在不同的MSTI中可以担任不同的角色。
根端口:非根交换机上到根交换机开销最小的端口就是该交换机的根端口,根端口能够转发数据流量到根交换机。如上图所示,P3、P4和P8为根端口。
指定端口:该交换机向下游交换机发送BPDU或者数据流量的端口,如上图所示,P1、P2和P6为指定端口( 当S3优先级高于S2时 )。
边缘端口:位于网络最边缘处,不参与生成树计算,一般作为连接非交换机设备,如终端服务器、PC等。
预备( Alternate)端口:从转发数据流量的角度来看,预备端口提供了到达根交换机的一条备份链路。其接口状态为阻塞,不转发数据流量。当根端口被阻塞时,预备端口将成为新的根端口,如上图所示,P5为预备端口。
备份( Backup)端口:当同一台交换机的两个端口互相连接时就存在一个环路,此时交换机会将其中一个端口阻塞,备份端口就是被阻塞的那个端口。从发送BPDU来看,备份端口就是由于学习到本设备上其他端口发送的BPDU而被阻塞的端口。从转发用户流量来看,备份端口作为指定端口的备份,提供了一条从根交换机到叶节点(非根交换机)的备份通路。
MSTP的端口状态
Forwarding:在这种状态下,端口既转发用户流量,又接收/发送BPDU报文。
Learning:这是一种过渡状态。在 Learning状态下,交换机会根据收到的用户流量,学习MAC地址表,但不转发用户流量,所以称为学习状态。 Learning状态的端口接收/发送BPDU报文,不转发用户流量。
Discarding:在这种状态下,端口只接收BPDU报文。
当前网络有三台交换机,两台终端PC,交换机开启MSTP协议,区域名称为HUAWEI,修订版本级别为1。分别建立MSTI1和MSTI2,VLAN10映射到MSTI1,VLAN20映射到MSTI2,MSTI1的根网桥在S1上,MSTI2的根网桥在S2上。VLAN10中的客户端地址为10.1.10.1,VLAN20中的客户端地址为10.1.20.1。利用MSTP实现VLAN10和VLAN20的互访,并且VLAN10的流量通过路径S3 → S1 → R1到达网关,VLAN20的流量通过路径S3 → S2 → R1到达网关,如下图所示。
R1的配置
[Huawei]int g0/0/0
[Huawei-GigabitEthernet0/0/0]ip add 10.1.10.254 24
[Huawei-GigabitEthernet0/0/0]un sh
Info: Interface GigabitEthernet0/0/0 is not shutdown.
[Huawei-GigabitEthernet0/0/0]int g0/0/1
[Huawei-GigabitEthernet0/0/1]ip add 10.1.20.254 24
[Huawei-GigabitEthernet0/0/1]un sh
Info: Interface GigabitEthernet0/0/1 is not shutdown.
[Huawei-GigabitEthernet0/0/1]quit
S1的配置如下
[S1]vlan batch 10 20
Info: This operation may take a few seconds. Please wait for a moment...done.
[S1]int g0/0/2
[S1-GigabitEthernet0/0/2]port link-type trunk
[S1-GigabitEthernet0/0/2]port trunk allow-pass vlan all
[S1-GigabitEthernet0/0/2]int g0/0/1
[S1-GigabitEthernet0/0/1]port link-type trunk
[S1-GigabitEthernet0/0/1]port trunk allow-pass vlan all
[S1-GigabitEthernet0/0/1]int g0/0/3
[S1-GigabitEthernet0/0/3]port link-type hybrid
[S1-GigabitEthernet0/0/3]port hybrid untagged vlan 10
[S1-GigabitEthernet0/0/3]port hybrid pvid vlan 10
[S1-GigabitEthernet0/0/3]quit
S2的配置
[S2]vlan batch 10 20
Info: This operation may take a few seconds. Please wait for a moment...done.
[S2]int g0/0/2
[S2-GigabitEthernet0/0/2]port link-type trunk
[S2-GigabitEthernet0/0/2]port trunk allow-pass vlan all
[S2-GigabitEthernet0/0/2]int g0/0/1
[S2-GigabitEthernet0/0/1]port link-type trunk
[S2-GigabitEthernet0/0/1]port trunk allow-pass vlan all
[S2-GigabitEthernet0/0/1]quit
[S2]int g0/0/3
[S2-GigabitEthernet0/0/3]port link-type hybrid
[S2-GigabitEthernet0/0/3]port hybrid untagged vlan 20
[S2-GigabitEthernet0/0/3]port hybrid pvid vlan 20
[S2-GigabitEthernet0/0/3]quit
S3的配置
[S3]vlan batch 10 20
Info: This operation may take a few seconds. Please wait for a moment...done.
[S3]int e 0/0/3
[S3-Ethernet0/0/3]port link-type access
[S3-Ethernet0/0/3]port default vlan 10
[S3-Ethernet0/0/3]int e0/0/4
[S3-Ethernet0/0/4]port link-type access
[S3-Ethernet0/0/4]port default vlan 20
[S3-Ethernet0/0/4]quit
[S3]int e0/0/1
[S3-Ethernet0/0/1]port link-type trunk
[S3-Ethernet0/0/1]port trunk allow-pass vlan all
[S3-Ethernet0/0/1]int e0/0/2
[S3-Ethernet0/0/2]port link-type trunk
[S3-Ethernet0/0/2]port trunk allow-pass vlan all
[S3-Ethernet0/0/2]quit
配置MSTP,S1如下:
[S1]stp mode mstp //开启mstp模式
[S1]stp region-configuration //进入生成树区域配置
[S1-mst-region]region-name HUAWEI //区域名字
[S1-mst-region]revision-level 1 //定义修订等级
[S1-mst-region]instance 1 vlan 10 //vlan10加入生成树1
[S1-mst-region]instance 2 vlan 20 //vlan 20 加入生成树2
[S1-mst-region]active region-configuration //激活配置
Info: This operation may take a few seconds. Please wait for a moment...done.
[S1-mst-region]quit
[S1]stp instance 1 root primary //在该交换机上把instance1设为主根桥
[S1]stp instance 2 root secondary //在该交换机上把instance2设为备份根桥
S2配置如下:
[S2]stp mode mstp
[S2]stp region-configuration
[S2-mst-region]region-name HUAWEI
[S2-mst-region]revision-level 1
[S2-mst-region]instance 1 vlan 10
[S2-mst-region]instance 2 vlan 20
[S2-mst-region]active region-configuration
Info: This operation may take a few seconds. Please wait for a moment...done.
[S2-mst-region]quit
[S2]stp instance 1 root secondary
[S2]stp instance 2 root primary
S3配置如下:
[S3]stp mode mstp
[S3]stp region-configuration
[S3-mst-region]region-name HUAWEI
[S3-mst-region]revision-level 1
[S3-mst-region]instance 1 vlan 10
[S3-mst-region]instance 2 vlan 20
[S3-mst-region]active region-configuration
Info: This operation may take a few seconds. Please wait for a moment...done.
[S3-mst-region]quit
验证配置结果
在S3上使用 display stp brief 命令查看STP接口角色及状态信息。结果如下所示、其中 Instance1中的 Ethernet 0/0/2和 Instance 2中的 Ethernet 0/0/1处于阻塞状态。同时,两个实例之间互相独立彼此不受影响。
[S3]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/1 DESI FORWARDING NONE
0 Ethernet0/0/2 DESI FORWARDING NONE
0 Ethernet0/0/3 DESI FORWARDING NONE
0 Ethernet0/0/4 DESI FORWARDING NONE
1 Ethernet0/0/1 ROOT FORWARDING NONE
1 Ethernet0/0/2 ALTE DISCARDING NONE
1 Ethernet0/0/3 DESI FORWARDING NONE
2 Ethernet0/0/1 ALTE DISCARDING NONE
2 Ethernet0/0/2 ROOT FORWARDING NONE
2 Ethernet0/0/4 DESI FORWARDING NONE
PC>ping 10.1.20.1
Ping 10.1.20.1: 32 data bytes, Press Ctrl_C to break
Request timeout!
From 10.1.20.1: bytes=32 seq=2 ttl=127 time=78 ms
From 10.1.20.1: bytes=32 seq=3 ttl=127 time=109 ms
From 10.1.20.1: bytes=32 seq=4 ttl=127 time=110 ms
From 10.1.20.1: bytes=32 seq=5 ttl=127 time=109 ms
--- 10.1.20.1 ping statistics ---
5 packet(s) transmitted
4 packet(s) received
20.00% packet loss
round-trip min/avg/max = 0/101/110 ms