EtherChannel(PAgP and LACP)

什么是EtherChannel
我们在学习网络知识时,或者在与别人交流网络技术时,经常会遇到“以太通道、以太信道、 链路聚合、
链路汇聚、通道接口、端口聚合”等名词,还会有一些英文名称,例如:“Teaming、Port Channel、Link
Aggregation”等。这些不同的名称可能是出现在不同的网络设备品牌上,也或者是个人习惯的叫法。虽然
叫法不同,但其实这些全部都是指同一个技术,也就是EtherChannel技术。这种技术把Switch上两个或两
个以上的物理端口(Physical Ethernet Port)合并成一个逻辑端口(Logical Port)来使用。物理端
口可以是Ethernet、Fast Ethernet、Gigabit Ethernet等。

EtherChannel的配置方法有三种:
● Static 模式(On Mode)
● PAgP 模式(Port Aggregation Protocol),Cisco专有模式,只在Cisco交换机上可用
● LACP 模式 (Link Aggregation Control Protocol)

EtherChannel的好处:
● 增加带宽: 由于STP的作用,即便是有多个链路,但只能有一条链路是处于forwarding 状态,而其
它链路处于block状态,所以在STP下,多条链路只能起到链路冗余的作用,而不能增加带宽。如果用 Eth
erChannel,那么多条链路逻辑上是一条链路。
● 均衡负载:可能通过配置让数据流按照一定的算法均衡在几条绑定的各个链路上,其算法组合有多种,
缺省为基于源IP(src-dst-ip)。
● 内在的(build-in)链路冗余功能:当一条链路失效后,数据会自动调整到当前激活的链路上,且几
乎无延迟,而STP层面上的链路冗余要经过30秒的切换。

EtherChannel的一些特性:
● 允许多达8个冗余链接捆绑成一个逻辑链接
● 支持两种类型的以太通道—:端口聚合协议[PAgP]和链路聚合控制协议[LACP]
● 端口聚合协议[PAgP]是Cisco私有协议
● 链路聚合控制协议(LACP)是IEEE 802.3X开放标准
● LACP模式分为:active和passive
● PAgP模式分为 desire和auto
● 参与EtherChannel的所有端口的速度、Duplex、STP设置要一致。
实验拓扑
如下图是我们的实验拓扑,实验平台为GNS3。
● 这里我们沿用VTP实验中的拓扑
● 在CoreSW01、CoreSW02、CoreSW03、AccessSW01、AccessSW02验证LACP和PGaP
● 在AccessSW03、AccessSW04验证静态Static EtherChannel
静态Static Mode
Static On Mode硬件将端口放入同一个Group中,设置非常简单,但这种模式是具有一定的风险的,因为
Static Mode双方没有协议沟通,都会假定对方也是Static On Mode。当已经一端已经配置好但另一端还
没有设置完成的情况下,会造成Spanning Tree混乱导致产生Loop。所以在配置时,规范的做法是要先将端
口shutdown,
配置完成后再no shutdown端口。不建议使用这种模式,这里只是对此模式做一下简单的介绍。

1、如上面的拓扑图,AccessSW03、AccessSW04之间通过e0/2-3进行对接,此时我们先查看一下默认的生
成树状态。可以看到由于存在环路,Spanning Tree已经将AccessSW04的有e0/3 Block掉了。所以虽然有
两条连线,但只有其中一条是可用的,带宽并没有增加。
2、接下来我们在这两台Switch上配置静态EtherChannel,首先配置AccessSW03,将e0/2-3端口shutdo
wn。然后启用静态EtherChannel
AccessSW03(config)#interface range ethernet 0/2-3
AccessSW03(config-if-range)#shutdown
AccessSW03(config-if-range)#channel-group 2 mode on

3、在AccessSW04上启用静态EtherChannel
AccessSW04(config)#interface range ethernet 0/2-3
AccessSW04(config-if-range)#channel-group 2 mode on

4、现在两端都配置好了,将AccessSW03的e0/2-3端口no shutdown
AccessSW03(config-if-range)#no shutdown

5、现在两端已经建立起静态EtherChannel,查看EtherChannel Summary,可以看到Po1已经建立起来,由
于是静态的,所以没有协议。
6、再次查看Spanning Tree,可以看到Interface已经由原来的两个端口e0/2-3变成了Po1。
7、show interface port-channel 1,可以看到带宽是20000,是两个物理端口的总和。
PAgP
PAgP是思科的私有协议,只能在思科设备上配置。PAgP有两种模式:Desirable和Auto。Desirable相当于
主动方,会主动发送PAgP报文来建立聚合链路,并在链路聚合成功后会持续定时发送PAgP报文来维持Ether
Channel。Auto相当于被动方,所以两台Switch中使用PAgP时至少要有一方被设置为Desirable,另一方是
Desirable或Auto都可以。但是如果双方都是Auto,将无法建立聚合链路。

1、将EtherChannel配置成PAgP的方法与前面静态EtherChannel相同,把mode on改成mode desirable就
可以了,配置PAgP时不需要将端口先shut down。因为会有协议进行控制,不会造成Loop。

2、另外,PAgP对端口的一至性检查比较严格,所以配置时最好手动指定一下duplex和bandwidth。

3、根据拓扑,我们把相应的聚合链路配置为PAgP模式,配置命令示例如下:
CoreSW01(config)#interface ethernet 3/2-3
CoreSW01(config-if)#channel-group 2 mode desirable
CoreSW01(config-if)#duplex full
CoreSW01(config-if)#bandwidth 10000000
CoreSW01(config-if)#exit

4、在所有需要配置PAgP的Switch上完成配置。根据拓扑,CoreSW01上有三条聚合链路,模式均为PAgP,配
置完成后,如下图,可以看到三条聚合链路Po1、Po2、Po3,状态为SU,协议为PAgP,相关端口处于P状态,
说明这三条PAgP链路都是正常工作的。
LACP
LACP是IEEE的标准(802.3ad),配置方法与PAgP相同,只是把mode由Desirable改为Active,将Auto改
成Passive。所以,与PAgP相同,只要有一方配置为Active就可以建立聚合链路,如果双方都是Passive则
无法建立EtherChannel。

1、根据拓扑,我们把相应的聚合链路配置为LACP模式,配置命令示例如下:
CoreSW02(config)#interface ethernet 1/0-2
CoreSW02(config-if)#channel-group 2 mode active
CoreSW02(config-if)#duplex full
CoreSW02(config-if)#bandwidth 10000000
CoreSW02(config-if)#exit

2、在所有需要配置PAgP的Switch上完成配置。根据拓扑,CoreSW02上有2条聚合链路的模式为LACP,配置
完成后,如下图,可以看到Po3、Po4状态为SU,协议为LACP,相关端口处于P状态,说明这LACP链路都是正
常工作的。
3、LACP最多支持8个端口聚合,但是在一个Group中,最多可以添加16个端口,另外这8个端口将用作热备
端口(Hot-Standby),当有Active端口出现问题后,由Hot-Standby端口立即补上,我们单独建立两台交
换机来演示一下。如下图两台Switch之间一共有12个端口进行连接。
4、将所有端口加入到channel-group 1,模式为Active。然后查看EtherChannel状态。可以看到在Po1
中,e0/0到e1/3为聚合端口,e2/0-3为热备端口。哪些端口会被设置为Active端口,哪些会被设置为Hot-
standby端口,是由端口优先级Port Priority决定的,如果优先级相同,再由Port ID决定。较小的值将
被优先选择。注意如果要修改端口优先级,需要在两台Switch上同步操作,使相对应的端口状态一致。如果
两边端口状态不一致,则聚合会出现问题甚至无法聚合。
5、show interface port-channel 1,可以看到带宽是80000,是8个物理端口的总和。
关于Load Balancing
EtherChannel将多个端口聚合成一个逻辑端口,那么交换机是如何在这些聚合在一起的物理端口上传送数
据的呢,也就是说Switch会把Traffic放到哪一个物理端口上传输呢,这里就要讲到Load balancing负载
均衡。

1、首先看一下负载均衡有哪此类型,可以看到这里列出了6种,这个会因为Swith型号的不同而有所区别,
高端的Switch支持的类型会更多一些。比如这里的src-ip,是指交换机会根据数据包的源IP地址来选择使
用EtherChannel的哪一个物理端口把数据包送出去。如果是dst-ip,那就是指交换机根据数据包的目标地
址来选择端口。
port-channel load-balance ?
2、交换机会给EtherChannel中的端口预先分配一个Port ID,Port ID从0~7,这个分配会尽量做到平均分
配,比如EtherChannel中有4个端口,那么就是第一个端口(0、4),第二个端口(1、5),第三个端口
(2、6),第四个端口(3、7)。每个端口被分配了两个Port ID,然后再根据选择的load-balance算法
将数据包分配给不同的端口进行传输。比如选择的是src-ip,交换机会检查Source IP地址的最后三位去计
算出一个Port ID,举例如下:

源IP = 192.186.1.11; 11=00001011; 最后三位= 011; 再将011换算成10进制=3
源IP = 192.168.1.22; 22=00010110; 最后三位= 110; 再将110换算成10进制=6
通过上面的换算,192.168.1.11的数据将通过第四个端口转发,192.168.1.22的数据包将通过第三个端
口转发。以此类推。

3、端口的数量也会影响是否会做到最平均的分配,如下图可以看到,只有端口数量是2、4、8时,才能真正
把流量最平均的分配到每一个端口上。所以如果是5个端口,并不会是每个端口20%。这是由Port ID的数量
和分配方式决定的。
4、通过以上对Load Balancing的简单讨论,可以看出究竟使用哪一种load balanc方案是没有准确答案
的,这个要根据实际的应用环境来分析判断。比如如果所有接入的客户端大部份的流量都是到一台NAS服务
器下载或上传文件,那么如果接入端的交换机设置成dst-ip显然是错误的,因为所有流量最后都是去找同
一个目标IP地址,换算出来的Port ID都是相同的,这会导致所有流量都会走同一个物理端口,而其它端口
都基本处于低负载状态,并没有起到负载均衡的效果。

发表评论