今天讲解下链路聚合的两种模式:

根据是否启用链路聚合控制协议 LACP,链路聚合分为手工负载分担模式和LACP 模式。

一、手工负载分担模式链路聚合

手工负载分担模式下, Eth-Trunk的建立、成员接口的加入由手工配置,没有链路聚合控制协议的参与。

该模式下所有活动链路都参与数据的转发,平均分担流量,因此称为负载分担模式。

如果某条活动链路障,链路聚合组自动在剩余的活动链路中平均分担流量。

当需要在两个直连设备间提供一个较大的链路带宽而设备又不支持LACP 协议时,可以使用手工负载分担模式。

二、LACP 模式链路聚合

背景:

作为链路聚合技术,手工负载分担模式 Eth-Trunk可以完成多个物理接口聚合成一个 Eth-Trunk 口来提高带宽,同时能够检测到同一聚合组内的成员链路有断路等有限故障,但是无法检测到链路层故障、链路错连等故障。

为了提高 Eth-Trunk 的容错性,并且能提供备份功能,保证成员链路的高可靠性,出现了链路聚合控制协议LACP(LinkAggregation Control Protocol), LACP模式就是采用 LACP 的一种链路聚合模式。

LACP 为交换数据的设备提供一种标准的协商方式,以供设备根据自身配置自动形成聚合链路并启动聚合链路收发数据。聚合链路形成以后,LACP 负责维护链路状态,在聚合条件发生变化时,自动调整或解散链路聚合。

如图所示, DeviceA 与DeviceB 之间创建 Eth-Trunk,需要将DeviceA 上的四个接口与 DeviceB捆绑成一个Eth-Trunk。由于错将 DeviceA上的一个接口与 DeviceC 相连,这将会导致DeviceA 向DeviceB传输数据时可能会将本应该发到 DeviceB 的数据发送到DeviceC 上。而手工负载分担模式的 Eth-Trunk不能及时检测到故障。

如果在 DeviceA 和DeviceB 上都启用 LACP协议,经过协商后, Eth-Trunk 就会选择正确连接的链路作为活动链路来转发数据,从而DeviceA 发送的数据能够正确到达 DeviceB。

Eth-Trunk 错连示意图

基本概念

·系统LACP 优先级

系统 LACP 优先级是为了区分两端设备优先级的高低而配置的参数。LACP 模式下,两端设备所选择的活动接口必须保持一致,否则链路聚合组就无法建立。此时可以使其中一端具有更高的优先级,另一端根据高优先级的一端来选择活动接口即可。系统LACP 优先级值越小优先级越高。

·接口LACP 优先级

接口 LACP 优先级是为了区别不同接口被选为活动接口的优先程度,优先级高的接口将优先被选为活动接口。接口LACP 优先级值越小,优先级越高。

·成员接口间M:N 备份

LACP 模式链路聚合由LACP 确定聚合组中的活动和非活动链路,又称为 M:N模式,即 M 条活动链路与N 条备份链路的模式。这种模式提供了更高的链路可靠性,并且可以在M 条链中实现不同方式的负载均衡。

如图所示,两台设备间有 M+N条链路,在聚合链路上转发流量时在 M 条链路上分担负载,即活动链路,不在另外的N 条链路转发流量,这 N条链路提供备份功能,即备份链路。此时链路的实际带宽为 M条链路的总和,但是能提供的最大带宽为 M+N 条链路的总和。

当 M 条链路中有一条链路故障时,LACP 会从 N条备份链路中找出一条优先级高的可用链路替换故障链路。此时链路的实际带宽还是 M条链路的总和,但是能提供的最大带宽就变为M+N-1 条链路的总和。

M:N 备份示意图

这种场景主要应用在只向用户提供 M条链路的带宽,同时又希望提供一定的故障保护能力。当有一条链路出现故障时,系统能够自动选择一条优先级最高的可用备份链路变为活动链路。

如果在备份链路中无法找到可用链路,并且目前处于活动状态的链路数目低于配置的活动接口数下限阈值,那么系统将会把聚合接口关闭。

LACP 模式实现原理:

基于 IEEE802.3ad 标准的LACP,链路聚合控制协议是一种实现链路动态聚合与解聚合的协议。

LACP 通过链路聚合控制协议数据单元LACPDU(LinkAggregation Control Protocol Data Unit)与对端交互信息。

在 LACP 模式的Eth-Trunk 中加入成员接口后,这些接口将通过发送 LACPDU向对端通告自己的系统优先级、 MAC 地址、接口优先级、接口号和操作Key 等信息。对端接收到这些信息后,将这些信息与自身接口所保存的信息比较以选择能够聚合的接口,双方对哪些接口能够成为活动接口达成一致,确定活动链路。

LACPDU 报文详细信息如图所示。

LACP 模式 Eth-Trunk 建立的过程如下:

  1. 两端互相发送 LACPDU报文。如图所示,在DeviceA 和 DeviceB上创建 Eth-Trunk 并配置为LACP 模式,然后向Eth-Trunk中手工加入成员接口。此时成员接口上便启用了 LACP 协议,两端互发LACPDU报文。

  1. 确定主动端和活动链路。

如图所示,两端设备均会收到对端发来的 LACPDU报文。以 DeviceB 为例,当DeviceB收到 DeviceA发送的报文时, DeviceB 会查看并记录对端信息,并且比较系统优先级字段,如果DeviceA 的系统优先级高于本端的系统优先级,则确定 DeviceA为 LACP主动端。

选出主动端后,两端都会以主动端的接口优先级来选择活动接口,两端设备选择了一致的活动接口,活动链路组便可以建立起来,从这些活动链路中以负载分担的方式转发数据。

·LACP 抢占

使能LACP 抢占后,聚合组会始终保持高优先级的接口作为活动接口的状态。

如图 所示,接口 port1、port2 和 port3为 Eth-Trunk 的成员接口,设备A 为主动端,活动接口数上限阈值为 2,三个接口的LACP 优先级分别为 10、20、 30。当通过LACP 协议协商完毕后,接口 port1和 port2 因为优先级较高被选作活动接口,port3 成为备份接口。

以下两种情况需要使能 LACP的抢占功能。§port1 接口出现故障而后又恢复了正常。当接口 port1出现故障时被 port3 所取代,如果在Eth-Trunk 接口下未使能抢占,则故障恢复时 port1将处于备份状态;如果使能了 LACP抢占,当port1 故障恢复时,由于接口优先级比 port3高,将重新成为活动接口, port3再次成为备份接口。

如果希望 port3 接口替换port1、 port2中的一个接口成为活动接口,可以配置 port3 的接口LACP 优先级较高,但前提条件是已经使能了 LACP抢占功能。如果没有使能 LACP抢占功能,即使将备份接口的优先级调整为高于当前活动接口的优先级,系统也不会进行重新选择活动接口的过程,不切换活动接口。

LACP 抢占延时

LACP 抢占发生时,处于备用状态的链路将会等待一段时间后再切换到转发状态,这就是抢占延时。配置抢占延时是为了避免由于某些链路状态频繁变化而导致Eth-Trunk 数据传输不稳定的情况。

如图所示, port1 由于链路故障切换为非活动接口,此后该链路又恢复了正常。若系统使能了LACP 抢占并配置了抢占延时, port1重新切换回活动状态就需要经过抢占延时的时间。

活动链路与非活动链路切换

LACP 模式链路聚合组两端设备中任何一端检测到以下事件,都会触发聚合组的链路切换:

§链路 Down 事件。

§以太网 OAM 检测到链路失效。

§LACP 协议发现链路故障。

§接口不可用。

§在使能了 LACP 抢占前提下,更改备份接口的优先级高于当前活动接口的优先级。

当满足上述切换条件其中之一时,按照如下步骤进行切换:

  1. 关闭故障链路。
  2. 从N 条备份链路中选择优先级最高的链路接替活动链路中的故障链路。
  3. 优先级最高的备份链路转为活动状态并转发数据,完成切换。

使用链路聚合进行负载分担

数据流是指一组具有某个或某些相同属性的数据包。这些属性有源 MAC地址、目的 MAC 地址、源IP 地址、目的 IP地址、 TCP/UDP 的源端口号、TCP/UDP 的目的端口号等。

在使用 Eth-Trunk 转发数据时,由于聚合组两端设备之间有多条物理链路,就会产生同一数据流的第一个数据帧在一条物理链路上传输,而第二个数据帧在另外一条物理链路上传输的情况。这样一来同一数据流的第二个数据帧就有可能比第一个数据帧先到达对端设备,从而产生接收数据包乱序的情况。

为了避免这种情况的发生, Eth-Trunk采用逐流负载分担的机制,这种机制把数据帧中的地址通过HASH算法生成 HASH-KEY 值,然后根据这个数值在Eth-Trunk 转发表中寻找对应的出接口,不同的 MAC或 IP 地址HASH 得出的 HASH-KEY值不同,从而出接口也就不同,这样既保证了同一数据流的帧在同一条物理链路转发,又实现了流量在聚合组内各物理链路上的负载分担,即逐流的负载分担。逐流负载分担能保证包的顺序,但不能保证带宽利用率。

负载分担的类型主要包括以下几种,用户可以根据具体应用选择不同的负载分担类型。

·根据报文的源 MAC 地址进行负载分担;

·根据报文的目的 MAC 地址进行负载分担;

·根据报文的源 IP 地址进行负载分担;

·根据报文的目的 IP 地址进行负载分担;

·根据报文的源 MAC 地址和目的MAC 地址进行负载分担;

·根据报文的源 IP 地址和目的IP 地址进行负载分担;

·根据报文的 VLAN、源物理端口等对L2、 IPv4、IPv6 和 MPLS报文进行增强型负载分担。