在局域网中,我们为了保证网络的健壮性和稳定性,一般会在关键的部位实施冗余,最(便)常(宜)见(点)的,就是实施链路冗余或者设备冗余:
局域网交换机实施冗余和负载均衡(初级篇)

局域网交换机实施冗余和负载均衡(初级篇)

看起来是很爽了,实际上问题是大大的,比如图1,如果交换机A、B之间的4个端口都处于转发状态,而此时下联的任意某台PC发出一个广播包,会怎么样?很悲催!由于交换机两条线路形成了环路,并且交换机端口又不能隔离广播包,所有的端口都会无条件的转发这个广播包,从而造成广播风暴,最终会导致网络资源耗尽,交换机死机。。。(你也可能会被XX骂一顿)

为了解决交换网络实施冗余导致的环路,大拿们开发了STP(Spanning Tree Protocol)生成树协议,它的原理说起来也很简单,把环路中的某一个端口关闭掉(阻塞),从而解决环路;当未阻塞的链路(主线)出现故障的时候,再把阻塞的那个端口打开,从而启动备线,这样就实现了冗余,但是,同一时刻只能用一条线传输数据(还剩下一半的悲催)。

局域网交换机实施冗余和负载均衡(初级篇)

当然,即使开启了STP(一般交换机都是默认开启),你可能还是会被XX骂!因为:第一,你浪费了一条线的资源,虽然实现了冗余,但是未能负载均衡;第二,图-2中,核心之间的链路被阻塞了,而下行的两条链路却是转发的,这个算是哪门子的备份?(我们应该实现的是下行的两条链路之间的备份)

对于图一的问题,如果我们是chunǚ座的,有严重的强迫症(前提还要有钱),我们设施了大量冗余,然而永远只有一条链路处于可用状态(图-3):

局域网交换机实施冗余和负载均衡(初级篇)

对于这样的冗余网络,我们建议实施以太信道—EtherChannel,它可以把最多8条相同的链路捆绑(虚拟)成一条,而对于STP来说,只认虚拟后的链路,既然只有一条链路,就不存在阻塞端口了。至于这些链路在EtherChannel中如何分配流量,这和STP已经没有关系了,所以实施EtherChannel既可以防止环路,又可以实现带宽的提升,还可以实现自动负载均衡,好处太多。

EtherChannel有思科私有的PAGP协议,也有标准化的LACP协议,两者差别很小,但是互相不兼容。以下是图-3实施思科PAGP的过程和效果:

A(config)#inter range fa0/1-4
A(config-if-range)#shut    #关闭端口后再做以太信道的配置
A(config-if-range)#swi mo trunk   #配置中继
A(config-if-range)#channel-protocol pagp   #思科默认就是PAGP协议,可以不写
A(config-if-range)#channel-group 1 mode desirable  #配置主动模式
A(config-if-range)#no shut

B(config)#inter range fa0/1-4
B(config-if-range)#shut
B(config-if-range)#swi mo tr
B(config-if-range)#channel-protocol pagp
B(config-if-range)#channel-group 1 mode auto  #配置被动模式
B(config-if-range)#no shut

局域网交换机实施冗余和负载均衡(初级篇)

从拓扑的灯状态已经看到,所有的链路都已经处于转发状态(绿灯),我们也可以通过查看STP状态来验证:

局域网交换机实施冗余和负载均衡(初级篇)

话再说回来,对于图二,不但默认选择的阻塞链路有问题,而且由于要实现备份的两条链路分别是连接不同的核心交换机,无法直接实施EtherChannel,又该怎么办呢?

在思科设备上,不论是开启哪种(新旧版本)生成树,都可以实现,如图-2,如果有两个以上的VLAN,可以让不同VLAN的根部署在不同的核心交换机上,从而让阻塞的端口分布在不同的下行链路上。

局域网交换机实施冗余和负载均衡(初级篇)

以下是以思科交换机为例,实施基于VLAN的RSTP负载均衡的配置以及结果:

CORE-1(config)#vlan 2
CORE-1(config-vlan)#vlan 3
CORE-1(config-vlan)#inter g0/1-2
CORE-1(config-if-range)#swi trunk encapsulation dot1q   #三层交换机先配置封装协议
CORE-1(config-if-range)#swi mo tr   #配置中继

CORE-2(config)#vlan 2
CORE-2(config-vlan)#vlan 3
CORE-2(config-vlan)#inter g0/1-2
CORE-2(config-if-range)#swi trunk encapsulation dot1q 
CORE-2(config-if-range)#swi mo tr

A-1(config)#vlan 2
A-1(config-vlan)#vlan 3
A-1(config-vlan)#inter range g0/1-2
A-1(config-if-range)#swi mo tr
A-1(config-if-range)#inter fa0/1
A-1(config-if)#swi mo acc
A-1(config-if)#swi acc vlan 2
A-1(config-if)#inter fa0/2
A-1(config-if)#swi mo acc
A-1(config-if)#swi acc vlan 3

CORE-1(config)#spanning-tree mode rapid-pvst   #配置快速STP,思科叫RPVST
CORE-1(config)#spanning-tree vlan 2 root primary   #配置VLAN2的主根
CORE-1(config)#spanning-tree vlan 3 root secondary #配置VLAN3的备根

CORE-2(config)#sp m r
CORE-2(config)#span vlan 3 roo pri
CORE-2(config)#span vlan 2 roo sec

A-1(config)#sp m r

验证拓扑中灯的状态:
局域网交换机实施冗余和负载均衡(初级篇)

注意,如果是华为设备,由于STP和RSTP不支持基于VLAN的STP负载均衡,所以要启用MSTP才能实现。

对于图-2的拓扑,大家还要了解一个技术,思科Nexus交换机上支持vPC,全称是Virtual Port-Channel,是一种支持跨设备进行链路捆绑的协议,也就是允许一个设备使用2个上游的设备端口来实现Port Channel,这样是不是更厉害了?当然不是所有设备都支持这种高级功能的,你懂的。

文章篇幅有限,详细的STP、EtherChannel的原理和配置,可以参考《网络工程师小白入门》专栏:思科、华为配置对比入门,结合wireshark抓包讲解,一学三用!

双11活动特惠,学院限时开团,原价51元,开团价39元:

详情,请狠狠的戳:https://blog.51cto.com/cloumn/detail/55 局域网交换机实施冗余和负载均衡(初级篇)