链路汇聚——EtherChannel

简介

随着互联网的不断发展,网络已经渗透到社会生活的各个方面,尤其是园区网已经成为了学校师生学习和工作的必要支撑,承载着学校教学和管理的各种信息及应用服务等。在没有对网络系统采取必要冗余措施的情况下,当设备、链路出现故障或需要维护、升级时必定造成网络中断,那我们在组网设计的时候如何避免这种故障呢?让我们学习一下今天的新技术EtherChanner。

EtherChannel就是将多条链路捆在一起,使其有多条链路的带宽。多条链路可以负载均衡,某条链路down掉,也有冗余链路不至于断网。如两台交换机各连多个终端,两台交换机间就一条链路的话带宽不够,可以多连几条,然后将它们捆绑起来增加带宽。

你可以手动配,也可以用动态协商:PAGP(Cisco私有),LACP(IEEE 802.3ad)

手动配置

  • On模式:不协商,直接配etherchannel
    链路汇聚——EtherChannel
    链路汇聚——EtherChannel
    在另一台交换机上同样手动配置即可(配置要两边一起配,如果只配了SW1,不配SW2的话会检测到错误)。这样两台交换机间的两条链路被捆绑成了一条虚拟链路。
    链路汇聚——EtherChannel
    因为上面两条链路均配成了trunk,因此用show interface trunk命令可以看到f0/5和f0/6不见了,只能看到po1口。同样此时就算down掉一个口,po1口仍旧是ok的,使Trunk链路有了冗余能力。

动态协商

  • PAGP
    Auto:被动
    Desirable:主动 会发也会收协商消息
    两个Auto不能协商成功,其他可以协商成功
  • LACP
    Active:相当于PAGP的auto
    Paccive:相当于PAGP的desirable 又发又收协商消息
    两个Passive不能协商成功,其他可以协商成功
  • 上面手动配的命令:mode后面跟on。自动协商的话,SW1(config-if-range)#channel-protocol pagp/lacp修改协议后,mode后面可以跟auto,desirable,active,passive。
  • active和passive用LACP协商,auto和desirable用PAgP协商。两者不能兼容,一边LACP,一边PAgP是起不来的。

二者区别:

参数 LACP PAGP
起源 IEEE在2000年通过了802.3ad(LACP) 在1990年代初期发明
支持的供应商 开放标准 思科专有
标准 以太网通道和IEEE 802.3ad 以太网通道
模式 被动:此模式将端口置于被动协商状态。在这种模式下,端口会响应收到的LACP数据包,但不会启动LACP数据包协商。(LACP的默认模式)活动:此模式将端口置于活动协商状态,在该状态下,该端口通过发送LACP数据包启动与其他端口的协商。 自动:该模式将接口置于被动协商状态,在该状态下,接口会对收到的PAGP数据包做出响应,但不会启动PAGP协商。(PAGP的默认模式)理想:此模式将接口置于活动协商状态,在该状态下,该接口通过发送PAGP数据包启动与其他接口的协商。

LACP和PAGP协议相似,但配置模式和聚合机制不同。如何在LACP和PAGP之间进行选择。您必须找出设备接口支持的协议。网络设备上的每个接口都应具有标识的适当协议(PAGP或LACP),并配置是否应进行协商。由于LACP是基于IEEE的协议,因此更常用于捆绑链路,以在配线间和数据中心之间获得最大吞吐量。但是,当思科设备嵌入到您的网络中并且您的网络体系结构可以支持PAGP协商时,也需要PAGP。

配置三层Channel

所谓三层的channel其实就是将多个三层接口绑定。只能在三层交换机上配置。
在3550这样的交换上,所有接口默认都是二层接口。首先需要将交换机的二层接口改为三层接口。可以使用以下命令实现:

将二层接口改成三层接口:

interface range f0/23 - 24
no switchport

然后再绑定:

interface range f0/23 - 24
channel-group 1 mode desirable

给channel通道配上IP地址:

interface port-channel 1
ip address 100.1.1.1 255.255.255.0

要点

  • 端口需要支持EtherChannel(这是不言自明的)
  • 端口速率和双工要一致(一端100M,另一端1000M是无法捆在一起的。LACP只支持全双工模式)
  • 相同VLAN(想一下就知道了,捆起来后两个端口变成了一个端口,一个端口怎么能属于不同的VLAN呢)
  • 如果捆绑了Trunk端口那allowed VLAN也要一致
  • 捆成EtherChannel后,支持不同的cost开销(即端口开销不一致也没关系)
  • 捆起来后端口不能成为目标端口destination port(流量分析时会将一个端口的流量引导向某一目标端口,如果成为了EtherChannel就不能引导向该端口了)
  • 捆起来后三层IP地址应该配到EtherChannel下

通常经验
要捆成EtherChannel,需要端口基本情况一致,因此配置前先将端口都default一下。另外两个端口的配置信息(如VLAN等,当然前提是配置一样)会被EtherChannel直接继承,不会重新配。在EtherChannel上改动配置信息后,物理端口的配置信息会跟着变。

负载均衡

EtherChannel是支持负载均衡的。可以基于源IP地址(src-ip)、目的IP地址(dst-ip)、源MAC地址(src-mac)、目的MAC地址(dst-mac)、源IP地址和目的IP地址(src-dst-ip),以及源MAC地址和目的MAC地址(src-dst-mac),来负载均衡。默认是基于源MAC地址(src-mac)的。

例如SW1和R1间用EtherChannel捆绑后,SW1接的大量终端访问R1时,对于R1来说源MAC地址都是一样的(SW1的MAC地址),所以要改成基于目标MAC地址来负载均衡。如果是路由器间捆绑成EtherChannel的话,那源MAC和目标MAC就区分不出来,就要基于三层源IP或目标IP来负载均衡。

EtherChannel查看命令
默认情况下是基于源MAC地址的负载均衡

SW1#show etherchannelload-balance
//可以看当前基于何种方式来负载均衡

SW1(config)#port-channelload-balance dst-mac
//修改负载均衡的方式