华为设备⼆层交换技术——MSTP协议详解
MSTP是IEEE 802.1s中提出的⼀种STP和VLAN结合使⽤的新协议,它既继承了RSTP端⼝快速迁移的优点,⼜解决了RSTP中不同VLAN必须运⾏在同⼀棵⽣成树上的问题。接下来我们详细了解⼀下MSTP协议。
MSTP协议是⼀个公有的⽣成树协议,在实际⽣产环境中得到了⼴泛的应⽤。
⼀、MSTP概述
传统的⽣成树只能运⾏⼀个实例,且收敛速度慢,RSTP在传统STP基础上通过改进达到了加速⽹络拓补收敛的⽬的,但是⽬前依然存在⼀些缺陷。由于STP和RSTP在整个局域⽹中,所有的VLAN共享⼀个⽣成树实例,因此⽆法实现基于VLAN的负载均衡,⽹络环境稳定状态下备份链路始终不能转发数据流量,造成带宽的浪费!如图:
交换机S1为根⽹桥时,S2和S3之间的链路将处于阻塞状态,不能转发任何流量。即使⽹络出现拥塞时,S2和S3之间的链路也不可以被使⽤,造成资源的浪费!
学过Cisco的朋友都知道Cisco的PVST技术是⼀种基于VLAN的⽣成树技术。每个VLAN运⾏⼀个⽣成树,可以重复使⽤所有的链路,但是当企业⽣产环境中,有很多VLAN(⽐如100个VLAN时),交换⽹
络中就需要运⾏100多个⽣成树实例,从⽽将⼤量占⽤交换设备的硬件资源及⽹络开销。
PVST和MSTP得⽐较图:
下⾯详细介绍⼀下——MSTP
MSTP是多⽣成树技术,允许在⼀个交换环境中运⾏多个⽣成树,每个⽣成树成为⼀个实例。实例之间的⽣成树彼此独⽴,⽐如⼀个实例下的阻塞接⼝在另⼀个实例中可能是转发接⼝。和PVST不同的是:MSTP允许多个VLAN运⾏⼀个⽣成树实例。⼤部分情况下,运⾏多个⽣成树实例的好处就在于链路的负载分担,但是当只有⼀个冗余链路时,运⾏两个⽣成树实例完全可以实现负载均衡,同时⼜能节约系统开销。如图:
现实企业环境中,⽹络环境中运⾏多个实例是⾮常常见的情况。因为这样可以实现:不同实例的根⽹桥在不同物理交换机上,不但可以实现负载分担,⽽且不会因为过多的实例⽽占⽤系统资源。
MSTP将环形⽹络修剪成⼀个⽆环的树形⽹络,避免⼴播风暴的发⽣,同时还提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN数据的负载均衡。MSTP还兼容STP和RSTP。
MSTP把⼀个交换⽹络划分成多个域,每个域内形成多棵⽣成树,⽣成树之间彼此独⽴。每棵⽣成树成为⼀个多⽣成树实例(MSTI),每个域称为⼀个MST域。
MSTP通过设置VLAN映射表,把VLAN和MSTI联系起来。每个VLAN只能对应⼀个MSTI,即同⼀VLAN的数据只能在⼀个MSTI中传输,⽽⼀个MSTI可以对应多个VLAN。这样就可以充分地利⽤⽹络带宽,有效避免资源浪费!
⼆、MSTP的基本原理
在MSTP中。通过把整个互联的⼆层以太⽹划分成若⼲域。在域内,把其中的VLAN分成若⼲组,每组具有相同的拓补结构,然后定义若⼲MSTI,并把这些⽣成树实例和不同的VLAN映射起来!
所谓实例就是多个VLAN的⼀个集合。通过将多个VLAN映射到⼀个实例,可以节省通信开销和资源占⽤率。MSTP各个实例拓补的计算相互独⽴,在这些实例上可以实现负载均衡。可以把多个相同拓补结构的VLAN映射到⼀个实例中,这些VLAN在接⼝上的转发状态取决于接⼝在对应MSTP实例的状态。
如果仅仅是为了防⽌⼴播风暴等环路问题,运⾏CST已经可以实现。运⾏多实例的主要⽬的在于使其负载分担链路负载。所以运⾏的⽣成树实例数量⼀般取决于冗余线路的数量,如果只有⼀条冗余线路,那么最好运⾏两个实例。如果有
载。所以运⾏的⽣成树实例数量⼀般取决于冗余线路的数量,如果只有⼀条冗余线路,那么最好运⾏
两个实例。如果有两条冗余链路,那么运⾏三个实例将是最好的选择,并尽可能保证每个实例中流量相差不⼤。
1.MSTP的⽹络层次
⼀个⼆层交换⽹络可以划分多个MSTP域,每个⽣成树域可以划分成多个MSTI,每个实例中可以映射多个VLAN。为了让朋友更加详细地了解,请看下图:
图中的MSTP⽹络中包含3个MST域,分别是A、B、C,每个MST域中包含⼀个或多个MSTI。以MSTP域B为例,包含两个MSTI,分别是Instance1和Instance2。Instance1和VLAN1~5映射;Instance2和VLAN6~10映射。
2.MST域
MST域是多⽣成树域,由局域⽹中的多台交换机及它们之间的⽹段构成。⼀个局域⽹可以存在多个MST域,各MST域之间在物理上直接或间接相连。⽤户可以通过MSTP配置命令把多台交换机划分在同⼀个MST域内。MST域中的交换机都启⽤了MSTP,配置相同的域名及VLAN映射表。
3.MSTI
⼀个MST域内可以运⾏多个MSTI,MSTI之间彼此独⽴,MSTI可以与⼀个或者多个VLAN对应。但⼀个VLAN只能与⼀个MSTI对应。sm新男团
4.端⼝⾓⾊
为了更好地理解端⼝的⾓⾊,请看下图:
MSTP中的⾓⾊主要有以下⼏种:
根端⼝:⾮根交换机上到根交换机开销最⼩的端⼝就是该交换机的根端⼝。根端⼝能够转发数据流量到根交换机;图中P3、P4、P8为根端⼝。
指定端⼝:该交换机向下游交换机发送BPDU或者数据流量的端⼝;图中的P1、P2、P6(R3优先级⾼于R2)端⼝为指定端⼝。
边缘端⼝:位于⽹络最边缘处,不参与⽣成树计算,⼀般作为连接⾮交换机设备;如终端服务器、PC等。
预备端⼝:从转发流量的⾓度来看,预备端⼝提供了到达根交换机的⼀个备份链路。其接⼝状态为阻塞,不转发数据流量。当根端⼝被阻塞时,预备端⼝将成为新的根端⼝,主要是为了备份根端⼝;图中P5为预备端⼝。
备份端⼝:当同⼀台交换机的两个端⼝互相连接时就会形成⼀个环路,此时交换机会将其中⼀个端⼝堵塞,备份端⼝就是被堵塞的端⼝;从发送BPDU来看,备份端⼝就是由于学习到本设备上的其他端⼝发送的BPDU⽽被堵塞的端⼝;从转发⽤户流量来看,备份端⼝作为指定端⼝的备份,提供了⼀条从根交换机到叶节点(⾮根交换机)的备份链路;主要是备份指定端⼝;图中P7为指定端⼝。
MSTP中的端⼝⾓⾊除了边缘端⼝外,其他端⼝⾓⾊都参与MSTP的计算过程。同⼀端⼝在不同的MSTI可以担任着不同的⾓⾊。
5.MSTP的端⼝状态
MSTP的端⼝有以下三种:
Forwarding:在这种状态下,端⼝既转发⽤户流量,⼜接收/发送BPDU报⽂,称为转发状态;Learning:这是⼀种过渡状态。在Learning状态下,交换机会根据收到的⽤户流量,学习MAC地址表,但不转发⽤户流量,所以称为学习状态。Learning状态的端⼝接收/发送BPDU报⽂,但不转发⽤户流量;Discarding:在这种状态下,端⼝只接收BPDU报⽂,称为丢弃状态;
三、MSTP的保护功能
1.BPDU保护
1.BPDU保护
在交换机上,通常将直接与⽤户终端或⽂件服务器等⾮交换机设备相连的端⼝配置为边缘端⼝,以实现这些端⼝的快速收敛。正常情况下,这些端⼝不会收到BPDU。如果有⼈伪造BPDU恶意操作交换机,当这些端⼝接收到BPDU时,交换机会⾃动将这些端⼝设置为⾮边缘端⼝,并重新进⾏⽣成树计算,从⽽引起⽹络震荡。
启⽤BPDU保护功能后,如果接⼝收到BPDU报⽂,那么该接⼝将被⾃动shutdown,从⽽避免了后续的⾮法操作及由此带来的⽹络震荡。配置的命令如下:
[SW1]stp bpdu-protection
//启⽤BPDU保护
2.根保护
由于管理失误或⼈为恶意操作,⽹络中的合法交换机的端⼝可能会接收到优先级更⾼的BPDU,这将使⽬前⽹络中的根失去根的地位,之后将重新计算⽣成树,引起⽹络震荡,还有可能造成⽹络拥塞。为了防⽌以上情况的发⽣,交换机提供根保护功能。根保护功能维持端⼝的⾓⾊来保护根交换机的地位。配置了根保护功能的端⼝,在所有实例上的端⼝⾓⾊都保持为指定端⼝。当端⼝收到优先级更⾼
的BPDU时,端⼝的⾓⾊不会变为⾮指定端⼝,⽽是进⼊侦听状态,不再转发报⽂。经过⾜够长的时间,如果端⼝⼀直没有再收到优先级较⾼的BPDU,端⼝则会恢复原本的正常状态。配置命令如下:
[SW1]int g0/0/1
[SW1-GigabitEthernet0/0/1]stp root-protection
//开启根保护功能
3.环路保护
根端⼝和其他阻塞端⼝状态会周期性地接收来⾃上游交换机的BPDU。当链路拥塞或者单向链路故障时,这些端⼝⽆法接收来⾃上游交换机的BPDU,交换机会重新选择根端⼝。原先的根端⼝会转变为指定端⼝,⽽原先阻塞的端⼝会变成转发状态,从⽽造成交换⽹络中可能产⽣环路。环路保护功能会抑制这种环路的产⽣。在启动了环路保护功能后,如果根端⼝收不到来⾃上游的BPDU,根端⼝会被设置进⼊阻塞状态;⽽阻塞端⼝则会⼀直保持在阻塞状态,不再转发报⽂,从⽽不会在⽹络中形成环路。收到拓补变更的BPDU时,端⼝才会被激活。配置命令如下:
[SW1]int g0/0/1
[SW1-GigabitEthernet0/0/1]stp loop-protection
//启⽤环路保护功能
4.TC保护
戾怎么读交换机在接收到TC-BPDU报⽂后,会执⾏MAC地址表项和ARP表项的删除操作。如果有⼈伪造TC-BPDU报⽂⾮法操作交换机,交换机短时间内会收到很多TCP-BPDU报⽂,频繁的删除操作会给设备造成很⼤的负担,给⽹络的稳定带来很⼤的隐患,启⽤TC保护功能后,在单位时间内,MSTP进程收到TC类型BPDU报⽂的数量⼤于配置的阈值,那么MSTP进程只会处理阈值指定的次数。对于其他超出阈值的TC类型BPDU报⽂,定时器到期后,MSTP进程只对其统⼀处理⼀次,这样可以避免频繁的删除MAC地址表项和ARP表项,从⽽达到保护交换机的⽬的。配置命令如下:
四、MSTP的相关配置
1.案例环境如下:
2.案例要求
1.所有交换机启⽤MSTP协议,区域名称改为huawei,修改版本级别为1;
2.利⽤MSTP协议VLAN10和VLAN20的互访;
3.VLAN10的流量⾛向:PC1→S3→S1→R1;
4.VLAN20的流量⾛向:PC2→S3→S2→R1;
3.案例实施
(1)配置客户端及路由器IP地址
配置客户端地址过程过程略!配置路由器地址如下:
[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开启⼀下!
(2)配置VLAN及Trunk
百里挑一何孟怀
本次实验中,客户机与交换机连接⼝为Access接⼝,⼆层交换机与交换机连接⼝为Trunk接⼝,⼆层交换机和路由器连接⼝为Hybrid接⼝。常识:路由器不可以识别带VLAN标签的数据帧。
S1的配置如下:
[S1]vlan batch 10 20
umbrella[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