当前位置:文档之家› 多生成树协议详解

多生成树协议详解

多生成树协议详解

文章介绍的多生成树协议的历史,以及它的特点。并对相关的一些容易让人误解的术语做了澄清。最后以一个配置实例讲解如何通过多生成树协议实现基于VLAN的负载均衡。

标签:多生成树协议;STP;VLAN;區域;实例;负载均衡

网上配置多生成树协议的例子是非常多的,但它们有个共同特点:只讲配置步骤,不讲原理。这好比教人武术只讲招式不讲心法一样,搞不好将人引入歧途。厂家为何这么做,肯定有其目的,我们就不揣测了。还是自己动手,丰衣足食吧。引入生成树协议的目的是为了防止交换式以太网因为网络中存在环路,诱发广播风暴。最初的标准是STP(Spanning Tree Protocol),因为它的收敛速度太慢,于是又引入了RSTP(Rapid STP)。RSTP大大提高了生成树协议的收敛速度,并废除了和取代了STP。交换式网络的核心设备是交换机,和路由器不同,它会转发广播。因此,交换机无法隔离广播,多个交换机连接起来将构成一个大的广播域。但是VLAN的出现改变了这种状况。通过VLAN技术我们可以把一个大的LAN划分为若干个逻辑上的VLAN,VLAN之间的数据是相互隔离的,除非通过路由器,它们之间无法通信。这也意味着支持VLAN的交换机可以像路由器一样隔离广播。VLAN技术可以将广播风暴限制于VLAN的范围内。基于此,STP协议应该做个重大修改。不是在整个LAN的范围内计算生成树,而是每个VLAN独立计算一颗生成树。多生成树协议(Multiple STP,MST)就是VLAN 版的RSTP,为每个VLAN计算一颗RSTP生成树。了解到这一点,而且你熟悉RSTP的配置,配置MSTP就不是什么大的问题了。

一般而言,一个VLAN只是LAN的一部分,不会覆盖整个LAN。因此基于VLAN计算生成树可以减少工作量。MSTP最好和VTP(VLAN Trun Protocol)协议结合起来,因为VTP可以收集VLAN在LAN中的分布信息。如果某个交换机的所有端口都不是某个VLAN的成员,那么这个交换机可以排除于这个VLAN的RSTP生成树之外。不过要注意的是用于交换机级联的端口一般设置为trunk模式,默认情况下,任何VLAN的流量都可以通过trunk端口,因此我们可以将trunk端口看作任何VLAN的成员。但在实际当中,经过trunk端口的VLAN数量一般是有限的,我们最好将trunk端口允许通过哪些VLAN流量做个明确的限定。容易让初学者迷惑的是几个术语。

一个术语是区域(Region)。如果LAN比较大的话,可以考虑将LAN划分为若干区域,分开来管理。这就和OSPF将Internet划分为若干自治系统来管理一个道理。但实际上很少有LAN会大到非要划分为若干区域来管理。一般来说,整个LAN就是一个区域。我们只需在这个默认的区域内配置即可,不必考虑区域划分的问题。

另一个术语是实例(Instance)。这名字取得可不怎么样,一些文章将其解释得神神秘秘,其实它就是一种“组”。打个比方,默认情况下,交换机的端口都是

自动协商的。假设你非要手工配置为非自动协商的模式,一个48口的交换机,你就要配置48次。你可能就会想,能不能将这48个口归入一个组,然后配置这个组,这样就省事多了。实例实际上就是这种性质的组,用于将多个VLAN归入一个组中,然后集中配置。

图1 通过MSTP实现负载均衡

我们还是举例来说明吧。MST一个应用就是基于VLAN的负载均衡。请看图1,为提高可靠性,网络配置了两台核心交换机A和B,它们同时工作,各分摊一半的负荷。如果某台核心交换机出了故障,另一台核心交换机接管所有的负荷。C是一台接入层交换机,接入层交换机应该有很多台,但为简单起见,图中只标出了一台。每台接入层交换机都有两条线,分别连接到A和B,假设所有线路开销都是一样的。再假设,每台交换机都定义了1000个VLAN。规定正常情况下,1-500的VLAN流量由A处理,501-1000的VLAN流量由B处理。要做到这点,我们可以将VLAN 1-500归入一个实例1中,实例1以A为根交换机,最终的生成树将把B和C之间的链路阻塞掉,于是VLAN 1-500的流量只能走交换机A了。如果,A出现故障,交换机重新计算生成树,B和C之间的线路解除阻塞,VLAN1-500的流量改由B来处理。同理,我们可以将VLAN501-1000归入另一个实例2中,实例2以B为根交换机。下面是A交换机的配置脚本(以IOS为例):

switchA# configure terminal

switchA(config)# spanning-tree mode mst

——开启MST

switchA(config)# spanning-tree mst configuration

——进入MST配置模式

switchA(config-mst)# instance 1 vlan 1-500

——创建包含vlan1-500的实例1

switchA(config-mst)# instance 2 vlan 501-1000

——创建包含vlan501-1000的实例2

switchA(config-mst)# exit

switchA(config)# spanning-tree mst 1 root primary

——设置本交换机为实例1的根交换机

可以看出如果没有实例,每个VLAN都要分别设置根交换机,工作量是非常大的。从这个例子我们很容易看出引入实例的必要性。交换机B的配置和A 的差不多,差别只是最后一行脚本替换为spanning-tree mst 2 root primary。C也需配置MST,和A的配置也差不多,只需将最后一行脚本去掉。

参考文献

[1]Understanding Multiple Spanning Tree Protocol(802.1s).http:///c/en/us/support/docs/lan-switching/spanning-tree-protocol/24248-1 47.html?referring_site=bodynav.

[2]VLAN Trunking Protocol. http:///wiki/VLAN_Trunking_Protocol.

相关主题