大家好,今天给大家介绍一下链路聚合原理,本文目录:

定义

以太网链路聚合Eth-Trunk简称链路聚合,它通过将多条以太网物理链路捆绑在一起成为一条逻辑链路,从而实现增加链路带宽的目的。同时,这些捆绑在一起的链路通过相互间的动态备份,可以有效地提高链路的可靠性。

目的

随着网络规模不断扩大,用户对骨干链路的带宽和可靠性提出越来越高的要求。在传统技术中,常用更换高速率的设备的方式来增加带宽,但这种方案需要付出高额的费用,而且不够灵活。

采用链路聚合技术可以在不进行硬件升级的条件下,通过将多个物理接口捆绑为一个逻辑接口,达到增加链路带宽的目的。在实现增大带宽目的的同时,链路聚合采用备份链路的机制,可以有效的提高设备之间链路的可靠性。

链路聚合技术主要有以下三个优势:

1、增加带宽

链路聚合接口的最大带宽可以达到各成员接口带宽之和。

2、提高可靠性

当某条活动链路出现故障时,流量可以切换到其他可用的成员链路上,从而提高链路聚合接口的可靠性。

3、负载分担

在一个链路聚合组内,可以实现在各成员活动链路上的负载分担。

基本概念

如图所示,DeviceA与DeviceB之间通过三条以太网物理链路相连,将这三条链路捆绑在一起,就成为了一条逻辑链路。这条逻辑链路的最大带宽等于原先三条以太网物理链路的带宽总和,从而达到了增加链路带宽的目的;同时,这三条以太网物理链路相互备份,有效地提高了链路的可靠性。

链路聚合研究现状(非常全面的链路聚合原理介绍)(1)

以下是链路聚合的一些基本概念:

1、链路聚合组和链路聚合接口

链路聚合组LAG(Link Aggregation Group)是指将若干条以太链路捆绑在一起所形成的逻辑链路。

每个聚合组唯一对应着一个逻辑接口,这个逻辑接口称之为链路聚合接口或Eth-Trunk接口。链路聚合接口可以作为普通的以太网接口来使用,与普通以太网接口的差别在于:转发的时候链路聚合组需要从成员接口中选择一个或多个接口来进行数据转发。

2、成员接口和成员链路

组成Eth-Trunk接口的各个物理接口称为成员接口。成员接口对应的链路称为成员链路。

3、活动接口和非活动接口、活动链路和非活动链路

链路聚合组的成员接口存在活动接口和非活动接口两种。转发数据的接口称为活动接口,不转发数据的接口称为非活动接口。

活动接口对应的链路称为活动链路,非活动接口对应的链路称为非活动链路。

4、活动接口数上限阈值

设置活动接口数上限阈值的目的是在保证带宽的情况下提高网络的可靠性。当前活动链路数目达到上限阈值时,再向Eth-Trunk中添加成员接口,不会增加Eth-Trunk活动接口的数目,超过上限阈值的链路状态将被置为Down,作为备份链路。

例如,有8条无故障链路在一个Eth-Trunk内,每条链路都能提供1G的带宽,现在最多需要5G的带宽,那么上限阈值就可以设为5或者更大的值。其他的链路就自动进入备份状态以提高网络的可靠性。

5、活动接口数下限阈值

设置活动接口数下限阈值是为了保证最小带宽,当前活动链路数目小于下限阈值时,Eth-Trunk接口的状态转为Down。

例如,每条物理链路能提供1G的带宽,现在最小需要2G的带宽,那么活动接口数下限阈值必须要大于等于2。

6、链路聚合模式

链路聚合模式分为手工模式和LACP模式两种。

两者的区别:

维度 手工模式 LACP模式 定义 Eth-Trunk的建立、成员接口的加入由手工配置,没有链路聚合控制协议的参与。 Eth-Trunk的建立是基于LACP协议的,LACP为交换数据的设备提供一种标准的协商方式,以供系统根据自身配置自动形成聚合链路并启动聚合链路收发数据。聚合链路形成以后,负责维护链路状态。在聚合条件发生变化时,自动调整或解散链路聚合。 设备是否需要支持LACP协议 不需要 需要 数据转发 一般情况下,所有链路都是活动链路。所有活动链路均参与数据转发。如果某条活动链路故障,链路聚合组自动在剩余的活动链路中分担流量。 一般情况下,部分链路是活动链路。所有活动链路均参与数据转发。如果某条活动链路故障,链路聚合组自动在非活动链路中选择一条链路作为活动链路,参与数据转发的链路数目不变。 是否支持跨设备的链路聚合 不支持 支持 检测故障 只能检测到同一聚合组内的成员链路有断路等有限故障,但是无法检测到链路故障、链路错连等故障。 不仅能够检测到同一聚合组内的成员链路有断路等有限故障,还可以检测到链路故障、链路错连等故障。

设备支持的链路聚合方式手工模式链路聚合

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

手工模式下,Eth-Trunk的建立、成员接口的加入由手工配置,没有链路聚合控制协议LACP的参与。当需要在两个直连设备之间提供一个较大的链路带宽而设备又不支持LACP协议时,可以使用手工模式。手工模式可以实现增加带宽、提高可靠性和负载分担的目的。

如图所示,DeviceA与DeviceB之间创建Eth-Trunk,手工模式下三条活动链路都参与数据转发并分担流量。当一条链路故障时,故障链路无法转发数据,链路聚合组自动在剩余的两条活动链路中分担流量。

链路聚合研究现状(非常全面的链路聚合原理介绍)(2)

LACP模式链路聚合背景

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

为了提高Eth-Trunk的容错性,并且能提供备份功能,保证成员链路的高可靠性,出现了链路聚合控制协议LACP(Link Aggregation 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。

链路聚合研究现状(非常全面的链路聚合原理介绍)(3)

基本概念系统LACP优先级

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

接口LACP优先级

接口LACP优先级是为了区别同一个Eth-Trunk中的不同接口被选为活动接口的优先程度,优先级高的接口将优先被选为活动接口。接口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条链路的总和。

链路聚合研究现状(非常全面的链路聚合原理介绍)(4)

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

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

LACP模式实现原理

基于IEEE802.3ad标准的LACP是一种实现链路动态聚合与解聚合的协议。LACP通过链路聚合控制协议数据单元LACPDU(Link Aggregation Control Protocol Data Unit)与对端交互信息。

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

链路聚合负载分担方式背景

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

对于负载分担,可以分为逐包的负载分担和逐流的负载分担。

逐包的负载分担

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

逐流的负载分担

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

负载分担方式

为了避免数据包乱序情况的发生,Eth-Trunk采用逐流负载分担的机制,其中如何转发数据则由于选择不同的负载分担方式而有所差别。

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

配置负载分担方式时,请注意:

堆叠环境下的链路聚合基本概念堆叠设备

将多台设备通过专用的堆叠电缆连接起来,对外呈现为一台逻辑设备。比如图3-11中DeviceB和DeviceC通过堆叠,对外呈现为一台设备。

跨框Eth-Trunk接口

将堆叠设备不同设备中的物理接口聚合到一个逻辑接口Eth-Trunk接口中。当堆叠设备中某台设备故障或加入Eth-Trunk接口中的物理成员口故障,可通过堆叠设备间线缆跨框传输数据流量,从而保证了数据流量的可靠传输,同时实现了设备间的备份。

接口流量本地优先转发

如图中b图所示,在网络无故障的情况下从DeviceB或DeviceC上来的流量,通过本设备中的成员口转发,而不是像a图中通过堆叠设备间线缆跨框转发。

链路聚合研究现状(非常全面的链路聚合原理介绍)(5)

跨框Eth-Trunk接口流量本地优先转发

在设备堆叠情况下,为了保证流量的可靠传输,流量的出接口设置为Eth-Trunk接口。那么Eth-Trunk接口中必定存在跨框成员口。当堆叠设备转发流量时,Eth-Trunk接口通过HASH算法可能会选择跨框的成员口。由于堆叠设备间线缆带宽有限,跨框转发流量增加了堆叠设备之间的带宽承载压力,同时也降低了流量转发效率。为了解决这个问题,可以使能Eth-Trunk接口流量本地优先转发。

如图所示,DeviceB和DeviceC组成堆叠,堆叠设备和DeviceA之间用Eth-Trunk连接。通过在堆叠设备上部署接口流量本地优先转发功能,可实现:

入本设备流量从本设备转发

当Eth-Trunk接口在DeviceB有出接口且出接口无故障时,DeviceB的Eth-Trunk接口转发表中将只包含DeviceB的出接口。这样DeviceB到DeviceA的流量在通过HASH算法选择出接口时只能选中DeviceB的接口,流量从DeviceB本设备转发出去。

入本设备流量跨框转发

当Eth-Trunk接口在DeviceB本设备无出接口或者出接口全部故障时,DeviceB的Eth-Trunk转发表中将包含Eth-Trunk接口中所有可转发的出接口。这样DeviceB到DeviceA的流量在通过HASH算法选择出接口时将选中DeviceC上的出接口,流量将通过DeviceC跨框转发。

跨设备链路聚合E-Trunk

E-Trunk(Enhanced Trunk)是一种实现跨设备链路聚合的机制,基于LACP(单台设备链路聚合的标准)进行了扩展,能够实现多台设备间的链路聚合,从而把链路可靠性从单板级提高到了设备级。

E-Trunk机制主要应用于CE双归接入网络时,CE与PE间的链路保护以及对PE设备节点故障的保护。在没有使用E-Trunk前,CE通过Eth-Trunk链路只能单归到一个PE设备。如果Eth-Trunk出现故障或者PE设备故障,CE将无法与PE设备继续进行通信。使用E-Trunk后,CE可以双归到PE上,从而实现设备间保护。

链路聚合研究现状(非常全面的链路聚合原理介绍)(6)

,