您的位置:首页 > 编程语言 > PHP开发

华为交换技术——MSTP协议原理

2019-10-27 15:19 1806 查看

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对应。

4.端口角色
为了更好的理解端口的角色,请看下图:

MSTP中的端口角色除了边缘端口外,其他端口角色都参与MSTP的计算过程。同一端口在不同的MSTI可以担任搞不同的角色。
5.MSTP的端口状态

MSTP的端口状态分为一下三种:
Forwarding:在这种状态下,端口即转发用户流量,又接收/发送BPDU报文。
Learning:这是一种过渡状态,在learning状态下,交换机会根据收到的用户流量,学习MAC地址表,但不转发用户流量,所以被称为学习状态,learning状态的端口接收/发送BPDU报文,不转发用户流量。
Discarding:在这种状态下,端口只能接收BPDU报文。

三.MSTP的保护功能

在面对一些二层生成树*时,下面四个技术可以增加生成树的安全性
1.BPDU保护
在交换机上,通常将直接与用户端或文件服务器等非交换机设备相连的端口配置为边缘端口,以实现这些端口的快速收敛。正常情况下,这些端口不会受到BPDU。如果有人伪造BPDU恶气进攻交换机,当这些端口收到BPDU时,交换机自动将这些端口设置为非边缘端口,并重新进行生成树计算,从而引起网络震荡。
启用BPDU保护功能后,如果接口收到BPDU报文,那么该接口将被自动shutdown,从而避免了后续的非法操作及由此带来的网络震荡。配置的命令如下:

2.根保护
由于管理失误或人为恶意操作,网络中的合法交换机的端口可能会接收到优先级更高的BPDU,这将使目前网络中的根失去根的地位,之后将重新计算生成树,引起网络震荡,还有可能造成网络拥塞。为了防止以上情况的发生,交换机提供根保护功能。根保护功能维持端口的角色来保护根交换机的地位。配置了根保护功能的端口,在所有实例上的端口角色都保持为指定端口。当端口收到优先级更高的BPDU时,端口的角色不会变为非指定端口,而是进入侦听状态,不再转发报文。经过足够长的时间,如果端口一直没有再收到优先级较高的BPDU,端口则会恢复原本的正常状态。配置命令如下:

3.环路保护
根端口和其他阻塞端口状态会周期性地接收来自上游交换机的BPDU。当链路拥塞或者单向链路故障时,这些端口无法接收来自上游交换机的BPDU,交换机会重新选择根端口。原先的根端口会转变为指定端口,而原先阻塞的端口会变成转发状态,从而造成交换网络中可能产生环路。环路保护功能会抑制这种环路的产生。在启动了环路保护功能后,如果根端口收不到来自上游的BPDU,根端口会被设置进入阻塞状态;而阻塞端口则会一直保持在阻塞状态,不再转发报文,从而不会在网络中形成环路。收到拓补变更的BPDU时,端口才会被激活。配置命令如下:

4.TCP保护**
交换机在接收到TC-BPDU报文后,会执行MAC地址表项和ARP表项的删除操作。如果有人伪造TC-BPDU报文非法操作交换机,交换机短时间内会收到很多TCP-BPDU报文,频繁的删除操作会给设备造成很大的负担,给网络的稳定带来很大的隐患,启用TC保护功能后,在单位时间内,MSTP进程收到TC类型BPDU报文的数量大于配置的阈值,那么MSTP进程只会处理阈值指定的次数。对于其他超出阈值的TC类型BPDU报文,定时器到期后,MSTP进程只对其统一处理一次,这样可以避免频繁的删除MAC地址表项和ARP表项,从而达到保护交换机的目的。配置命令如下:

四.MST的相关配置

案例图如下:

实验要求如下:

实验步骤:

1.配置客户端IP地址。

2.配置vlan及trunk。
S1配置如下:

S2配置如下:

S3配置如下:

3.配置MSTP
S1配置如下:

S2配置如下:

S3配置如下

4.验证
在S3上使用display stp brief 命令查看STP接口角色及状态信息,结果如下图所示,其中instance1中的Ethernet0/0/1和instance2中的Ethernet0/0/1处于堵塞状态。同时两个实例之间互相独立,彼此不受影响。
PC1和PC2是可以通信的,不管任何交换机之间任意一条线路故障,也不会影响通信。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: