EtherChannel(以太通道) 亦称为Link-Aggregation(链路聚合,端口捆绑)
在switch到switch、switch到router之间提供冗余的、高速的连接方式
简单说就是将两个设备间多条FE或GE物理链路捆在一起组成一条设备间逻辑链路,
从而达到增加带宽,提供冗余的目的。
下面具体结合配置了解它的特点:
构成etherchannel的端口必须配置成相同的特性,如双工模式、速度、同为FE或GE端口、native VLAN,、VLAN range,、and trunking status and type.等
当etherchannel中某一条link failed时,etherchannel中其它link照常工作。
当配置layer 2端口作etherchannel时只要在成员端口配置模式下用channel-group n命令指定该端口要加入的channel-group组,这时switch会自动创建port-channel接口
当配置layer 3端口作etherchannel时,还需现在全局配置模式下用 interface port-channel n 命令手工创建port-channel接口。
二层以太通道:
interface range fa0/23 - 24
channel-group 1 mode [ on | active | passive | auto | desirable ]
注1: PAgP中使用desirable(主动发送PAgP的协商报文),
auto(被动接收PAgP的协商报文)
注2: LACP中使用 active (主动发送LACP的协商报文),
passive (被动接收LACP的协商报文)
三层以太通道:
interface port-channel 1
no switchport
ip add 100.1.1.1 255.255.255.0
interface range fa0/23 - 24
no switchport
channel-group 1 mode on
查看命令:
show interface fa1/0/23 etherchannel
show etherchannel 1 port-channel
show etherchannel summary
具体配置:
Switch# configure terminal
Switch(config)# interface range fastethernet0/4 -5
Switch(config-if-range)# switchport mode access
Switch(config-if-range)# switchport access vlan 10
Switch(config-if-range)# channel-group 5 mode desirable|auto|on
Switch(config-if-range)# end
以上配置将F0/4、F0/5端口加入channel-group 5 ,作etherchannel的端口可为access端口也可为trunk端口。在将两个swith间的link作etherchannel与两个 swith间的link作trunk有一点相似的地方就是:
配置trunk时两端的端口有几种模式:trunk、auto、desirable等,
配置 etherchannel时两端的端口有desirable|auto|on(使用PAGP)或active|passive(使用LACP)几种模式,
不同的是trunk端口间协商是使用DTP(dynamic trunking protocol);而etherchannel端口间协商是使用PAGP(Port Aggregation Protocol,cisco专有)或LACP (Link Aggregation Control Protocol,802.3AD )
EtherChannel的动态协商协议
- PAgP (Port Aggregation Protocol)
cisco 私有 - LACP (Link Aggregation Control Protocol)
IEEE 802.3ad standard
对于使用PAGP的三种模式,
desirable 表示该端口会主动发PAGP数据包与对端进行协商
auto 表示该端口不会主动发PAGP数据包与对端进行协商
on 表示强制将该端口加入etherchannel,不需用PAGP协议与对端进行协商
对于使用LACP的两种模式,
active 表示该端口会主动发LACP数据包与对端进行协商
passive 表示该端口不会主动发LACP数据包与对端进行协商
on 表示强制将该端口加入etherchannel,不需用LACP协议与对端进行协商
==========================
PAgP或LACP模式:
auto,当侦测到PAgP设备时,将只启用PAgP。将端口置于被动协商状态,可以对接收到的PAgP作出响应,但是,不能主动发送PAgP包进行协商。
desirable,无条件启用PAgP。将接口置于主动协商状态,通过发送PAgP包,主动与其他接口进行协商。
on,将接口强行指定至Channel。只有两个on模式接口组连接时,EtherChannel才可用。
non-silent,如果交换机连接到有PAgP能力的伙伴,可以将接口配置为non silent(非沉默)运行。如果没有为auto或desirable模式指定non-silent关键字,默认为silent。沉默设置被用于连接到文件服务器或包分析仪。该设置允许PAgP,将接口添加至Channel组,并使用接口进行传输。
active,当侦测到LACP设备时,将只启用LACP。激活接口的主动协商状态,通过发送LACP包,与其他接口进行主动协商。
passive,当侦测到LACP设备时,将只启用LACP。将端口置于被动协商状态,可以对接收到的LACP作出响应,但是,不能主动发送LACP包进行协商。
采用PAgP协议时,以下几种模式可以构建EtherChannel:
一个接口为desirable模式,另一个接口为desirable或auto模式。
一个接口为auto模式,另一个接口为desirable模式。
采用LACP协议时,以下几种模式可以构建EtherChannel:
一个接口为active模式,另一个接口为active或passive模式。
一个接口为passive模式,另一个接口为active模式。
Switch(config-if)# channel-group port_channel_number mode {{auto [non-silent] | desirable [non-silent] | on} | {active | passive}}
============================
PAgP中在 1个 Port-Channel中允许加入8个端口
LACP中在 1个 Port-Channel中允许加入16个端口,只有8个是active状态
若通过PAgP或LACP进行 动态协商,需要满足以下条件:
1)vlan特性: ( access / trunk )
2)trunk特性: fa0/1:vlan 1-10, fa0/2: vlan1-5
3)速 率
4)双工模式
若二个接口配置允许的VLAN 不同,
会出现错误
interface fa1/0/23
switchport trunk enca dot1q
switchport mode trunk
switchport
EC-5-CANNOT-BUNDLE2:Fa1/0/24 in not compatible with Fa1/0/23 and will be suspended(vlan mask is different
除了以上作etherchannel的基本配置外,还有一些扩展特性。
etherchannel在作数据转发时,我们可以通过接口配置命令 pagp port-priority 改变优先级设定哪条物理link主用,哪条备用,一旦主用物理link上产生阻塞,备用link立即启用。
etherchannel在作数据转发时,是基于数据包的源或目的MAC地址随机选择etherchannel中的一条物理link进行数据转发的。我们可以通过全局配置命令port-channel load-balance选择是根据源MAC地址还是根据目的MAC地址进行数据转发来实现负载平衡。
例如:
当有两台switch,它们之间有几条link 互联作etherchannel,switchA一端连接一台server,switchB一端连接多台clientPC,swithA一端的数据流是同一源MAC地址的数据包通过etherchannel转发向不同目的MAC地址。这时,为了充分利用etherchannel中的所有的物理 link,在swithA一端就应该配置为基于数据包的目的MAC地址方式,而switchB一端的数据流是不同源MAC地址的数据包通过 etherchannel转发向同目的MAC地址。在swithB一端就应该配置为基于数据包的源MAC地址方式。
EtherChannel负载均衡
EtherChannel还具有负载分担和线路备份的作用。所谓负载分担,是指当交换机之间或交换机与服务器之间在进行通信时,EtherChannel的所有链路将同时参与数据的传输,从而使所有的传输任务都能在极短的时间完成,线路占用的时间更短,网络传输的效率更高。
所谓线路备份,是指当部分EtherChannel链路出现故障时,并不会导致连接的中断,其他链路将能够不受影响地正常工作,从而增强了网络的稳定性和安全性。
配置Etherchannel负载均衡。
Switch(config)# port-channel load-balance {dst-ip | dst-mac | src-dst-ip | src-dst-mac | src-ip | src-mac}
注意负载均衡是指从交换机向外发送的流量按照实现指定的方法将这些流量分配到信道中的各条链路上,负载均衡的可选方法一般有:
port-channel load-balance {dst-ip | dst-mac | src-dst-ip | src-dst-mac | src-ip | src-mac}
其中dst代表目的,src代表源。
举个例子说明一下:
现有port-channel 1,其中有4个接口,负载均衡方法为dst-mac,则按照以下方法实现负载均衡;
读取帧中目的mac,取其最后2位(二进制),如果这两位是00,则走线路0(信道中的第一个端口),01走线路2,10走线路3,11走4。
也就是说,信道中如果有2个端口则取源(目的)mac(ip)的最后1位,4个端口取最后2位,8个端口取3位,为什么?换算成十进制你就知道了!
还有就是如果负载均衡方法为src-dst-ip | src-dst-mac时,取出的位数还是由信道中端口数来决定,和上面是一样的,不过要对取出的数值按位进行异或(XOR)运算,由运算结果决定线路号。
0 XOR 0 = 0
0 XOR 1 = 1
1 XOR 0 = 1
1 XOR 1 = 0
到这儿你应该可以理解这种为什么不是严格的负载均衡了吧?流量并不是很平均的分配到各条线路的!所以在设置负载均衡办法的时候一定要注意啊!否则可能流量还是挤在某条或某几条线路上。
校验配置。
Switch# show etherchannel load-balance