LACP
了解LACP
链路聚合控制协议LACP(Link Aggregation Control Protocol),是基于IEEE802.3ad标准的一种实现链路动态聚合与解聚合的协议,以供设备根据自身配置自动形成聚合链路并启动聚合链路收发数据,LACP模式就是采用LACP的一种链路聚合模式。聚合链路形成以后,LACP负责维护链路状态,在聚合条件发生变化时,自动调整链路聚合。
如图1所示,DeviceA与DeviceB之间创建Eth-Trunk,需要将DeviceA上的四个接口与DeviceB捆绑成一个Eth-Trunk。由于错将DeviceA上的一个接口与DeviceC相连,这将会导致DeviceA向DeviceB传输数据时可能会将本应该发到DeviceB的数据发送到DeviceC上。而手工模式的Eth-Trunk不能及时检测到此故障。
如果在DeviceA和DeviceB上都启用LACP协议,经过协商后,Eth-Trunk就会选择正确连接的链路作为活动链路来转发数据,从而DeviceA发送的数据能够正确到达DeviceB。
LACP协议中涉及的概念包括:
- 系统LACP优先级
系统LACP优先级是为了区分两端设备优先级的高低而配置的参数。LACP模式下,两端设备所选择的活动接口必须保持一致,否则链路聚合组就无法建立。此时可以使其中一端具有更高的优先级,另一端根据高优先级的一端来选择活动接口即可。系统LACP优先级值越小优先级越高。
- 接口LACP优先级
接口LACP优先级是为了区别同一个Eth-Trunk中的不同接口被选为活动接口的优先程度,优先级高的接口将优先被选为活动接口。接口LACP优先级值越小,优先级越高。
- 成员接口M:N备份
LACP模式链路聚合由LACP确定聚合组中的活动和非活动链路,又称为M:N模式,即M条活动链路与N条备份链路的模式。这种模式提供了更高的链路可靠性,并且可以在M条链路中实现不同方式的负载均衡。
如图2所示,两台设备间有M+N条链路,在聚合链路上转发流量时在M条链路上分担负载,即活动链路,不在另外的N条链路转发流量,这N条链路提供备份功能,即备份链路。此时链路的实际带宽为M条链路的总和,但是能提供的最大带宽为M+N条链路的总和。
当M条链路中有一条链路故障时,LACP会从N条备份链路中找出一条优先级高的可用链路替换故障链路。此时链路的实际带宽还是M条链路的总和,但是能提供的最大带宽就变为M+N-1条链路的总和。
这种场景主要应用在只向用户提供M条链路的带宽,同时又希望提供一定的故障保护能力时。当有一条链路出现故障,系统能够自动选择一条优先级最高的可用备份链路变为活动链路。
如果在备份链路中无法找到可用链路,并且目前处于活动状态的链路数目低于配置的活动接口数下限阈值,那么系统将会把聚合接口关闭。
LACP模式实现原理
LACP通过链路聚合控制协议数据单元LACPDU(Link Aggregation Control Protocol Data Unit)与对端交互信息,LACPDU报文中包含设备的系统优先级、MAC地址、接口优先级、接口号和操作Key等信息。
LACP模式Eth-Trunk建立的过程如下:
在LACP模式的Eth-Trunk中加入成员接口后,两端互相发送LACPDU报文。
如图1所示,在DeviceA和DeviceB上创建Eth-Trunk并配置为LACP模式,然后向Eth-Trunk中手工加入成员接口。此时成员接口上便启用了LACP协议,两端互发LACPDU报文。
确定主动端和活动链路。
如图2所示,两端设备均会收到对端发来的LACPDU报文。以DeviceB为例,当DeviceB收到DeviceA发送的报文时,DeviceB会查看并记录对端信息,然后比较系统优先级字段,如果DeviceA的系统优先级高于本端的系统优先级,则确定DeviceA为LACP主动端。如果DeviceA和DeviceB的系统优先级相同,比较两端设备的MAC地址,MAC地址小的一端为LACP主动端。
选出主动端后,两端都会以主动端的接口优先级来选择活动接口,如果主动端的接口优先级都相同则选择接口编号比较小的为活动接口。两端设备选择了一致的活动接口,活动链路组便可以建立起来,从这些活动链路中以负载分担的方式转发数据。
LACP模式负载分担
在使用Eth-Trunk转发数据时,由于聚合组两端设备之间有多条物理链路,可能会产生同一数据流的第一个数据帧在一条物理链路上传输,而第二个数据帧在另外一条物理链路上传输的情况。这样一来同一数据流的第二个数据帧就有可能比第一个数据帧先到达对端设备,从而产生接收数据包乱序的情况。
为了避免这种情况的发生,Eth-Trunk采用逐流负载分担的机制,把数据帧中的地址通过HASH算法生成HASH-KEY值,然后根据这个数值在Eth-Trunk转发表中寻找对应的出接口,不同的MAC或IP地址HASH得出的HASH-KEY值不同,从而出接口也就不同,这样既保证了同一数据流的帧在同一条物理链路转发,又实现了流量在聚合组内各物理链路上的负载分担。逐流负载分担能保证包的顺序,但不能保证带宽利用率。
您可以根据流量模型设置不同的负载分担方式,流量中某个参数变化越频繁,选择对应负载分担方式的流量就越均衡。例如,如果报文的IP地址变化较频繁,那么选择基于dst-ip、src-ip或src-dst-ip的负载分担模式更有利于流量在各物理链路间合理的负载分担;如果报文的MAC地址变化较频繁,IP地址比较固定,那么选择基于dst-mac、src-mac或src-dst-mac的负载分担模式更有利于流量在各物理链路间合理的负载分担。
交换机可以基于报文的以下参数进行负载分担:
- 源MAC地址;
- 目的MAC地址;
- 源MAC地址和目的MAC地址;
- 源IP地址;
- 目的IP地址;
- 源IP地址和目的IP地址等。
如何配置LACP
- 执行命令system-view,进入系统视图。
- 执行命令interface eth-trunk trunk-id,创建Eth-Trunk接口,并进入Eth-Trunk接口视图。
- 执行命令mode lacp,配置Eth-Trunk的工作模式。缺省情况下,Eth-Trunk的工作模式为手工模式。
- 执行命令quit,返回系统视图。
- 请根据需要选择以下任一种方式:
- 在Eth-Trunk接口视图下向聚合组中加入成员接口
- 执行命令interface eth-trunk trunk-id,进入Eth-Trunk接口视图。
- 执行命令trunkport interface-type { interface-number1 [ to interface-number2 ] } &<1-8> [ mode { active | passive } ],增加成员接口。
在成员接口视图下向聚合组中加入成员接口
- 执行命令interface interface-type interface-number,进入接口视图。
- 执行命令eth-trunk trunk-id [ mode { active | passive } ],将当前接口加入Eth-Trunk。
- (可选)执行命令load-balance { dst-ip | dst-mac | src-ip | src-mac | src-dst-ip | src-dst-mac },配置Eth-Trunk负载分担方式。 缺省情况下,Eth-Trunk接口的负载分担模式为src-dst-ip。
下面这个示例显示了如何创建一个LACP模式的Eth-Trunk接口,并将接口GE1/0/1~GE1/0/3加入此Eth-Trunk,然后查看配置结果。
[HUAWEI] interface eth-trunk 1 [HUAWEI-Eth-Trunk1] mode lacp [HUAWEI-Eth-Trunk1] trunkport gigabitethernet 1/0/1 to 1/0/3 [HUAWEI-Eth-Trunk1] quit [HUAWEI] display eth-trunk 1 Eth-Trunk1's state information is: Local: LAG ID: 1 WorkingMode: LACP Preempt Delay: Disabled Hash arithmetic: According to SIP-XOR-DIP System Priority: 32768 System ID: 00e0-fca8-0417 Least Active-linknumber: 1 Max Active-linknumber: 8 Operate status: up Number Of Up Port In Trunk: 3 -------------------------------------------------------------------------------- ActorPortName Status PortType PortPri PortNo PortKey PortState Weight GigabitEthernet1/0/1 Selected 1GE 32768 1 305 10100010 1 GigabitEthernet1/0/2 Selected 1GE 32768 2 305 10100010 1 GigabitEthernet1/0/3 Selected 1GE 32768 3 305 10100010 1 Partner: -------------------------------------------------------------------------------- ActorPortName SysPri SystemID PortPri PortNo PortKey PortState GigabitEthernet1/0/1 32768 00e0-fca6-7f85 32768 1 305 10100011 GigabitEthernet1/0/2 32768 00e0-fca6-7f85 32768 2 305 10100011 GigabitEthernet1/0/3 32768 00e0-fca6-7f85 32768 3 305 10100011
LACP的其他配置
如果您想了解LACP的其他配置,包括配置LACP优先级、配置LACP抢占、配置接收LACP报文超时时间、配置增强型负载分担等,请参见《S12700 V200R013C00 配置指南-以太网交换》中的“以太网链路聚合配置-配置LACP模式链路聚合”。