前面提到的STP协议以及Cisco的私有协议PVST+都属于单生成树(SST)协议,也就是对于支持多VLAN的设备只能运行单一的生成树。能够参考博文:Cisco设备二层交换技术——STP协议详解服务器
MSTP是IEEE 802.1s中提出的一种STP和VLAN结合使用的新协议,它既继承了RSTP端口快速迁移的优势,又解决了RSTP中不一样VLAN必须运行在同一棵生成树上的问题。接下来咱们详细了解一下MSTP协议。网络
MSTP协议是一个公有的生成树协议,在实际生产环境中获得了普遍的应用。负载均衡
传统的生成树只能运行一个实例,且收敛速度慢,RSTP在传统STP基础上经过改进达到了加速网络拓补收敛的目的,可是目前依然存在一些缺陷。因为STP和RSTP在整个局域网中,全部的VLAN共享一个生成树实例,所以没法实现基于VLAN的负载均衡,网络环境稳定状态下备份链路始终不能转发数据流量,形成带宽的浪费!如图:
当交换机S1为根网桥时,S2和S3之间的链路将处于阻塞状态,不能转发任何流量。即便网络出现拥塞时,S2和S3之间的链路也不能够被使用,形成资源的浪费!ide
学过Cisco的朋友都知道Cisco的PVST技术是一种基于VLAN的生成树技术。每一个VLAN运行一个生成树,能够重复使用全部的链路,可是当企业生产环境中,有不少VLAN(好比100个VLAN时),交换网络中就须要运行100多个生成树实例,从而将大量占用交换设备的硬件资源及网络开销。oop
PVST和MSTP的比较图:学习
下面详细介绍一下——MSTP测试
MSTP是多生成树技术,容许在一个交换环境中运行多个生成树,每一个生成树成为一个实例。实例之间的生成树彼此独立,好比一个实例下的阻塞接口在另外一个实例中多是转发接口。和PVST不一样的是:MSTP容许多个VLAN运行一个生成树实例。大部分状况下,运行多个生成树实例的好处就在于链路的负载分担,可是当只有一个冗余链路时,运行两个生成树实例彻底能够实现负载均衡,同时又能节约系统开销。如图:
现实企业环境中,网络环境中运行多个实例是很是常见的状况。由于这样能够实现:不一样实例的根网桥在不一样物理交换机上,不但能够实现负载分担,并且不会由于过多的实例而占用系统资源。ui
MSTP将环形网络修剪成一个无环的树形网络,避免广播风暴的发生,同时还提供了数据转发的多个冗余路径,在数据转发过程当中实现VLAN数据的负载均衡。MSTP还兼容STP和RSTP。3d
MSTP把一个交换网络划分红多个域,每一个域内造成多棵生成树,生成树之间彼此独立。每棵生成树成为一个多生成树实例(MSTI),每一个域称为一个MST域。code
MSTP经过设置VLAN映射表,把VLAN和MSTI联系起来。每一个VLAN只能对应一个MSTI,即同一VLAN的数据只能在一个MSTI中传输,而一个MSTI能够对应多个VLAN。这样就能够充分的利用网络带宽,有效避免资源浪费!
在MSTP中。经过把整个互联的二层以太网划分红若干域。在域内,把其中的VLAN分红若干组,每组具备相同的拓补结构,而后定义若干MSTI,并把这些生成树实例和不一样的VLAN映射起来!
所谓实例就是多个VLAN的一个集合。经过将多个VLAN映射到一个实例,能够节省通讯开销和资源占用率。MSTP各个实例拓补的计算相互独立,在这些实例上能够实现负载均衡。能够把多个相同拓补结构的VLAN映射到一个实例中,这些VLAN在接口上的转发状态取决于接口在对应MSTP实例的状态。
若是仅仅是为了防止广播风暴等环路问题,运行CST已经能够实现。运行多实例的主要目的在于使其负载分担链路负载。因此运行的生成树实例数量通常取决于冗余线路的数量,若是只有一条冗余线路,那么最好运行两个实例。若是有两条冗余链路,那么运行三个实例将是最好的选择,并尽量保证每一个实例中流量相差不大。
一个二层交换网络能够划分多个MSTP域,每一个生成树域能够划分红多个MSTI,每一个实例中能够映射多个VLAN。为了让朋友更加详细的了解,请看下图:
图中的MSTP网络中包含3个MST域,分别是A、B、C,每一个MST域中包含一个或多个MSTI。以MSTP域B为例,包含两个MSTI,分别是Instance1和Instance2。Instance1和VLAN1~5映射;Instance2和VLAN6~10映射。
MST域是多生成树域,由局域网中的多台交换机及它们之间的网段构成。一个局域网能够存在多个MST域,各MST域之间在物理上直接或间接相连。用户能够经过MSTP配置命令把多台交换机划分在同一个MST域内。MST域中的交换机都启用了MSTP,配置相同的域名及VLAN映射表。
一个MST域内能够运行多个MSTI,MSTI之间彼此独立,MSTI能够与一个或者多个VLAN对应。但一个VLAN只能与一个MSTI对应。
为了更好的理解端口的角色,请看下图:
MSTP中的角色主要有如下几种:
根端口:非根交换机上到根交换机开销最小的端口就是该交换机的根端口。根端口可以转发数据流量到根交换机;图中P三、P四、P8为根端口。
指定端口:该交换机向下游交换机发送BPDU或者数据流量的端口;图中的P一、P二、P6(R3优先级高于R2)端口为指定端口。
边缘端口:位于网络最边缘处,不参与生成树计算,通常做为链接非交换机设备;如终端服务器、PC等。
预备端口:从转发流量的角度来看,预备端口提供了到达根交换机的一个备份链路。其接口状态为阻塞,不转发数据流量。当根端口被阻塞时,预备端口将成为新的根端口,主要是为了备份根端口;图中P5为预备端口。
备份端口:当同一台交换机的两个端口互相链接时就会造成一个环路,此时交换机会将其中一个端口堵塞,备份端口就是被堵塞的端口;从发送BPDU来看,备份端口就是因为学习到本设备上的其余端口发送的BPDU而被堵塞的端口;从转发用户流量来看,备份端口做为指定端口的备份,提供了一条从根交换机到叶节点(非根交换机)的备份链路;主要是备份指定端口;图中P7为指定端口。
MSTP中的端口角色除了边缘端口外,其余端口角色都参与MSTP的计算过程。同一端口在不一样的MSTI能够担任搞不一样的角色。
MSTP的端口有如下三种:
- Forwarding:在这种状态下,端口既转发用户流量,又接收/发送BPDU报文,称为转发状态;
- Learning:这是一种过渡状态。在Learning状态下,交换机会根据收到的用户流量,学习MAC地址表,但不转发用户流量,因此称为学习状态。Learning状态的端口接收/发送BPDU报文,但不转发用户流量;
- Discarding:在这种状态下,端口只接收BPDU报文,称为丢弃状态;
在交换机上,一般将直接与用户终端或文件服务器等非交换机设备相连的端口配置为边缘端口,以实现这些端口的快速收敛。正常状况下,这些端口不会收到BPDU。若是有人伪造BPDU恶意操做交换机,当这些端口接收到BPDU是,交换机会自动将这些端口设置为非边缘端口,并从新进行生成树计算,从而引发网络震荡。
启用BPDU保护功能后,若是接口收到BPDU报文,那么该接口将被自动shutdown,从而避免了后续的非法操做及由此带来的网络震荡。配置的命令以下:
[SW1]stp bpdu-protection //启用BPDU保护
因为管理失误或人为恶意操做,网络中的合法交换机的端口可能会接收到优先级更高的BPDU,这将使目前网络中的根失去根的地位,以后将从新计算生成树,引发网络震荡,还有可能形成网络拥塞。为了防止以上状况的发生,交换机提供根保护功能。根保护功能维持端口的角色来保护根交换机的地位。配置了根保护功能的端口,在全部实例上的端口角色都保持为指定端口。当端口收到优先级更高的BPDU时,端口的角色不会变为非指定端口,而是进入侦听状态,再也不转发报文。通过足够长的时间,若是端口一直没有再收到优先级较高的BPDU,端口则会恢复本来的正常状态。配置命令以下:
[SW1]int g0/0/1 [SW1-GigabitEthernet0/0/1]stp root-protection //开启根保护功能
根端口和其余阻塞端口状态会周期性地接收来自上游交换机的BPDU。当链路拥塞或者单向链路故障时,这些端口没法接收来自上游交换机的BPDU,交换机会从新选择根端口。原先的根端口会转变为指定端口,而原先阻塞的端口会变成转发状态,从而形成交换网络中可能产生环路。环路保护功能会抑制这种环路的产生。在启动了环路保护功能后,若是根端口收不到来自上游的BPDU,根端口会被设置进入阻塞状态;而阻塞端口则会一直保持在阻塞状态,再也不转发报文,从而不会在网络中造成环路。收到拓补变动的BPDU时,端口才会被激活。配置命令以下:
[SW1]int g0/0/1 [SW1-GigabitEthernet0/0/1]stp loop-protection //启用环路保护功能
交换机在接收到TC-BPDU报文后,会执行MAC地址表项和ARP表项的删除操做。若是有人伪造TC-BPDU报文非法操做交换机,交换机短期内会收到不少TCP-BPDU报文,频繁的删除操做会给设备形成很大的负担,给网络的稳定带来很大的隐患,启用TC保护功能后,在单位时间内,MSTP进程收到TC类型BPDU报文的数量大于配置的阈值,那么MSTP进程只会处理阈值指定的次数。对于其余超出阈值的TC类型BPDU报文,定时器到期后,MSTP进程只对其统一处理一次,这样能够避免频繁的删除MAC地址表项和ARP表项,从而达到保护交换机的目的。配置命令以下:
[SW1]stp tc-protection threshold 3 //启用TC保护,并设置的阈值为3
1.全部交换机启用MSTP协议,区域名称改成huawei,修改版本级别为1;
2.利用MSTP协议VLAN10和VLAN20的互访;
3.VLAN10的流量走向:PC1→S3→S1→R1;
4.VLAN20的流量走向:PC2→S3→S2→R1;
配置客户端地址过程过程略!配置路由器地址以下:
[R1]int g0/0/1 [R1-GigabitEthernet0/0/1]ip add 10.1.10.254 24 [R1-GigabitEthernet0/0/1]int g0/0/0 [R1-GigabitEthernet0/0/2]ip add 10.1.20.254 24 //华为设备接口默认是开启的,也可使用undo shutdown开启一下!
本次实验中,客户机与交换机链接口为Access接口,二层交换机与交换机链接口为Trunk接口,二层交换机和路由器链接口为Hybrid接口。常识:路由器不能够识别带VLAN标签的数据帧。
S1的配置以下:
[S1]vlan batch 10 20 [S1]int g0/0/2 [S1-GigabitEthernet0/0/2]port link-type hybrid [S1-GigabitEthernet0/0/2]port hybrid untagged vlan 10 [S1-GigabitEthernet0/0/2]port hybrid pvid vlan 10 [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 trunk [S1-GigabitEthernet0/0/3]port trunk allow-pass vlan all //基础指令这里就不介绍什么意思了!
S2的配置以下:
[S2]vlan batch 10 20 [S2]int g0/0/2 [S2-GigabitEthernet0/0/2]port link-type hybrid [S2-GigabitEthernet0/0/2]port hybrid untagged vlan 20 [S2-GigabitEthernet0/0/2]port hybrid pvid vlan 20 [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]int g0/0/3 [S2-GigabitEthernet0/0/3]port link-type trunk [S2-GigabitEthernet0/0/3]port trunk allow-pass vlan all
S3的配置以下:
[S3]vlan batch 10 20 [S3]int g0/0/1 [S3-GigabitEthernet0/0/1]port link-type trunk [S3-GigabitEthernet0/0/1]port trunk allow-pass vlan all [S3-GigabitEthernet0/0/1]int g0/0/2 [S3-GigabitEthernet0/0/2]port link-type trunk [S3-GigabitEthernet0/0/2]port trunk allow-pass vlan all [S3-GigabitEthernet0/0/2]int g0/0/3 [S3-GigabitEthernet0/0/3]port link-type access [S3-GigabitEthernet0/0/3]port default vlan 10 [S3-GigabitEthernet0/0/3]int g0/0/4 [S3-GigabitEthernet0/0/4]port link-type access [S3-GigabitEthernet0/0/4]port default vlan 20
根据实验要求,实验命令以下:
S1的配置以下:
[S1]stp mode mstp //将交换机配置成MSTP模式 [S1]stp region-configuration //进入MSTP配置模式 [S1-mst-region]region-name huawei //配置域名为huawei [S1-mst-region]revision-level 1 //配置版本等级为1 [S1-mst-region]instance 1 vlan 10 //将VLAN10加入实例1中 [S1-mst-region]instance 2 vlan 20 //将VLAN20加入实例2中 [S1-mst-region]active region-configuration //激活配置(必须配置) [S1-mst-region]quit [S1]stp instance 1 root primary //配置此交换机为实例1的主根 [S1]stp instance 2 root secondary //配置此交换机为实例2的备根
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 [S2]stp instance 1 root secondary [S2]stp instance 2 root primary //命令与S1基本类似,这里就很少说了!
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
在S3上使用一下命令查看效果!
[S3]display stp brief //查看STP接口角色及状态信息 MSTID Port Role STP State Protection 0 GigabitEthernet0/0/1 DESI FORWARDING NONE 0 GigabitEthernet0/0/2 DESI FORWARDING NONE 0 GigabitEthernet0/0/3 DESI FORWARDING NONE 0 GigabitEthernet0/0/4 DESI FORWARDING NONE 1 GigabitEthernet0/0/1 ROOT FORWARDING NONE 1 GigabitEthernet0/0/2 ALTE DISCARDING NONE //运行实例1时,g0/0/2接口阻塞 1 GigabitEthernet0/0/3 DESI FORWARDING NONE 2 GigabitEthernet0/0/1 ALTE DISCARDING NONE //运行实例2时,g0/0/1接口阻塞 2 GigabitEthernet0/0/2 ROOT FORWARDING NONE 2 GigabitEthernet0/0/4 DESI FORWARDING NONE
能够自行验证效果!PC1和PC2是能够通讯的,无论任何交换机之间任意一条线路故障,也不会影响通讯(模拟线路故障后,稍微等一下再测试通讯)!
———————— 本文至此结束,感谢阅读 ————————