一、链路聚合简介

链路聚合(Link Aggregation),是指将多个物理端口捆绑在一起,成为一个逻辑端口,以实现出入流量在各成员端口中的负荷分担,交换机根据用户配置的端口负荷分担策略决定报文从哪一个成员端口发送到对端的交换机。

当交换机检测到其中一个成员端口的链路发生故障时,就停止在此端口上发送报文,并根据负荷分担策略在剩下链路中重新计算报文发送的端口,故障端口恢复后再次重新计算报文发送端口。链路聚合在增加链路带宽、实现链路传输弹性和冗余等方面是一项很重要的技术。

如果聚合的每个链路都遵循不同的物理路径,则聚合链路也提供冗余和容错。通过聚合调制解调器链路或者数字线路,链路聚合可用于改善对公共网络的访问。链路聚合也可用于企业网络,以便在吉比特以太网交换机之间构建多吉比特的主干链路。

二、链路聚合原理

  • 逻辑链路的带宽增加了大约(n-1)倍,这里,n为聚合的路数。另外,聚合后,可靠性大大提高,因为,n条链路中只要有一条可以正常工作,则这个链路就可以工作。除此之外,链路聚合可以实现负载均衡。因为,通过链路聚合连接在一起的两个(或多个)交换机(或其他网络设备),通过内部控制,也可以合理地将数据分配在被聚合连接的设备上,实现负载分担。

  • 因为通信负载分布在多个链路上,所以链路聚合有时称为负载平衡。但是负载平衡作为一种数据中心技术,利用该技术可以将来自客户机的请求分布到两个或更多的服务器上。 聚合有时被称为反复用或IMUX。如果多路复用是将多个低速信道合成为一个单个的高速链路的聚合,那么反复用就是在多个链路上的数据“分散”。它允许以某种增量尺度配置分数带宽,以满足带宽要求。链路聚合也称为中继。

  • 按需带宽或结合是指按需要添加线路以增加带宽的能力。在该方案中,线路按带宽的需求自动连接起来。聚合通常伴随着ISDN连接。基本速率接口支持两个64kbit/s的链路。一个可用于电话呼叫,而另一个可同时用于数据链路。可以结合这两个链路以建立l28kbit/s的数据链路。

三、链路聚合优点

  • 增加网络带宽:链路聚合可以将多个链路捆绑成为一个逻辑链路,捆绑后的链路带宽是每个独立链路的带宽总和。
  • 提高网络连接的可靠性:链路聚合中的多个链路互为备份,当有一条链路断开,流量会自动在剩下链路间重新分配。
  • 负载分担:在一个链路聚合组内,可以实现在各成员活动链路上的负载分担。

四、链路聚合基本概念

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

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

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

2、成员接口和成员链路

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

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

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

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

3、活动接口数上限阈值

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

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

注:手工负载分担模式链路聚合不支持活动接口数上限阈值的配置。

4、活动接口数下限阈值

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

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

5、链路聚合模式

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

五、链路聚合工作方式

工作方式有两种:手工负载分担、LACP模式。两种方式的对比:

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

1、手工负载分担及配置和实验

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

  • 手工负载分担模式允许在聚合组中手工加入多个成员接口,所有接口均处于转发状态,分担负载流量。
  • Eth-Trunk的创建,成员接口的加入都需要手工配置完成,没有LACP协议报文参与。
  • 手工负载分担模式通常应用在对端设备不支持LACP协议的情况下。

具体的配置方法:如下图,我们来做这个实验。sw1和sw2分别用两条网线链接而成,我们通过手动分担负载的方式来实现PC1和PC2的通信。

在这里插入图片描述

sw1配置
[sw1]interface Eth-Trunk 1   #1为ID,范围1-63
[sw1-Eth-Trunk1]mode ?
  lacp-static  Static working mode
  manual       Manual working mode

[sw1-Eth-Trunk1]mode manual load-balance 
[sw1-Eth-Trunk1]q
[sw1]int g0/0/1
[sw1-GigabitEthernet0/0/1]eth-trunk 1
[sw1-GigabitEthernet0/0/1]q
[sw1]int g0/0/2
[sw1-GigabitEthernet0/0/2]eth-trunk 1
[sw1-GigabitEthernet0/0/2]q


[sw1]dis eth-trunk 1
Eth-Trunk1's state information is:
WorkingMode: NORMAL(模式)   Hash arithmetic: According to SIP-XOR-DIP(负载均衡类型)        
Least Active-linknumber: 1  Max Bandwidth-affected-linknumber: 8(最大8条)
Operate status: up          Number Of Up Port In Trunk: 2(已有2条)
--------------------------------------------------------------------------------
PortName                      Status      Weight 
GigabitEthernet0/0/1          Up          1      
GigabitEthernet0/0/2          Up          1  
sw2配置

sw2也是完全一样的,这里就不显示了。

2、LACP模式

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

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

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

基本概念:

  • 系统LACP优先级:系统LACP优先级是为了区分两端设备优先级的高低而配置的参数。LACP模式下,两端设备所选择的活动接口必须保持一致,否则链路聚合组就无法建立。此时可以使其中一端具有更高的优先级,另一端根据高优先级的一端来选择活动接口即可。系统LACP优先级值越小优先级越高。
  • 接口LACP优先级:接口LACP优先级是为了区别同一个Eth-Trunk中的不同接口被选为活动接口的优先程度,优先级高的接口将优先被选为活动接口。接口LACP优先级值越小,优先级越高。
  • 成员接口间M:N备份:LACP模式链路聚合由LACP确定聚合组中的活动和非活动链路,又称为M:N模式,即M条活动链路与N条备份链路的模式。这种模式提供了更高的链路可靠性,并且可以在M条链路中实现不同方式的负载均衡。

LACP模式实验:
sw1和sw2分别用4条网线连接在一起,接口如下图:
在这里插入图片描述

sw1配置
[sw1]interface Eth-Trunk 1  #创建1个聚合接口,ID为1
[sw1-Eth-Trunk1]mode lacp-static #模式设为lacp静态

[sw1-Eth-Trunk1]trunkport e0/0/1   #把接口加进来
Info: This operation may take a few seconds. Please wait for a moment...done.
[sw1-Eth-Trunk1]trunkport e0/0/2
Info: This operation may take a few seconds. Please wait for a moment...done.
[sw1-Eth-Trunk1]trunkport e0/0/3
Info: This operation may take a few seconds. Please wait for a moment...done.
[sw1-Eth-Trunk1]trunkport e0/0/4
Info: This operation may take a few seconds. Please wait for a moment...done.
[sw1-Eth-Trunk1]dis port vlan

[sw1-Eth-Trunk1]load-balance ?   #配置负载均衡,默认值为下面的src-dst-ip,也可以不配置。
  dst-ip       According to destination IP hash arithmetic
  dst-mac      According to destination MAC hash arithmetic
  src-dst-ip   According to source/destination IP hash arithmetic
  src-dst-mac  According to source/destination MAC hash arithmetic
  src-ip       According to source IP hash arithmetic
  src-mac      According to source MAC hash arithmetic
[sw1-Eth-Trunk1]q
[sw1]lacp priority 100   
#优先级默认是32768,我们只在sw1上配置,SW2不配置默认为32768,也就是说我们让SW1为主

[sw1]int Eth-Trunk 1
[sw1-Eth-Trunk1]least  active-linknumber 1 
#配置最小链路数量,其实这里默认就是1不需要配置

[sw1-Eth-Trunk1]max active-linknumber 2  
#配置最大链路数量为2,我们共4个物理线路,2条为一组,最大也就只能是2条了,这里配置2


[sw1-Eth-Trunk1]int e0/0/1    
[sw1-Ethernet0/0/1]lacp priority 10
[sw1-Ethernet0/0/1]int e0/0/2
[sw1-Ethernet0/0/2]lacp priority 20
[sw1-Ethernet0/0/2]int e0/0/3
[sw1-Ethernet0/0/3]lacp priority 30
[sw1-Ethernet0/0/3]int e0/0/4
[sw1-Ethernet0/0/4]lacp priority 40
#配置接口的优先级,就是哪个down了,另外下一个补上,相当于替补队员的顺序

[sw1]int eth-trunk 1
[sw1-Eth-Trunk1]lacp preempt enable  #配置抢占

[sw1-Eth-Trunk1]lacp preempt delay ?
  INTEGER<10-180>  Value of preemption delay time, the default value is 30 (in
                   second)   默认30秒,范围可以是10-180

[sw1-Eth-Trunk1]lacp preempt delay 30   #这里就先配置30

sw2配置
[sw2]interface Eth-Trunk1
[sw2-Eth-Trunk1] mode lacp-static
[sw2-Eth-Trunk1] max bandwidth-affected-linknumber 2
[sw2-Eth-Trunk1] lacp preempt enable
[sw2-Eth-Trunk1]#
[sw2-Eth-Trunk1]interface Ethernet0/0/1
[sw2-Ethernet0/0/1] eth-trunk 1
Info: This operation may take a few seconds. Please wait for a moment...done.
[sw2-Ethernet0/0/1] lacp priority 10
[sw2-Ethernet0/0/1]#
[sw2-Ethernet0/0/1]interface Ethernet0/0/2
[sw2-Ethernet0/0/2] eth-trunk 1
Info: This operation may take a few seconds. Please wait for a moment...done.
[sw2-Ethernet0/0/2] lacp priority 20
[sw2-Ethernet0/0/2]#
[sw2-Ethernet0/0/2]interface Ethernet0/0/3
[sw2-Ethernet0/0/3] eth-trunk 1
Info: This operation may take a few seconds. Please wait for a moment...done.
[sw2-Ethernet0/0/3] lacp priority 30
[sw2-Ethernet0/0/3]#
[sw2-Ethernet0/0/3]interface Ethernet0/0/4
[sw2-Ethernet0/0/4] eth-trunk 1
Info: This operation may take a few seconds. Please wait for a moment...done.
[sw2-Ethernet0/0/4] lacp priority 40
[sw2-Ethernet0/0/4]
[sw2-Ethernet0/0/4]q
[sw2]lacp pr	
[sw2]lacp priority 200    #也可以不配置,默认为32768,SW1为100
[sw2]
[sw2]dis Eth-Trunk 1
Eth-Trunk1's state information is:
Local:
LAG ID: 1                                   WorkingMode: STATIC   #静态                             
Preempt Delay Time: 30(抢占延迟)            Hash arithmetic: According to SIP-XOR-DIP   #负载均衡策略       
System Priority: 200(系统优先级)            System ID: 4c1f-cc52-655b                         
Least Active-linknumber: 1(最小激活链路数量) Max Active-linknumber: 2 (最大激活链路数量)                   
Operate status: up(状态OK)                 Number Of Up Port In Trunk: 4                     
--------------------------------------------------------------------------------
ActorPortName          Status   PortType PortPri PortNo PortKey PortState Weight
Ethernet0/0/1   (激活)Selected 100M     10      2      289     10111100  1     
Ethernet0/0/2   (激活)Selected 100M     20      3      289     10111100  1     
Ethernet0/0/3          Unselect 100M     30      4      289     10100000  1     
Ethernet0/0/4          Unselect 100M     40      5      289     10100000  1    

Partner:
--------------------------------------------------------------------------------
ActorPortName          SysPri   SystemID        PortPri PortNo PortKey PortState
Ethernet0/0/1          100      4c1f-cc6d-2b8c  10      2      289     10111100
Ethernet0/0/2          100      4c1f-cc6d-2b8c  20      3      289     10111100
Ethernet0/0/3          100      4c1f-cc6d-2b8c  30      4      289     10111100
Ethernet0/0/4          100      4c1f-cc6d-2b8c  40      5      289     10111100

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

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

六、配置负载分担方式时的注意事项

  • 负载分担方式只在流量的出接口上生效,如果发现各入接口的流量不均衡,请修改上行出接口的负载分担方式。
  • 尽量将数据流通过负载分担在所有活动链路上传输,避免数据流仅在一条链路上传输,造成流量拥堵,影响业务正常运行。
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐