1 网络可靠性需求
1.1 设备可靠性

设备无冗余设计的网络中,下游交换机采用单上行接入,上行交换机的接口故障或设备故障会导致下游网络全部中断。
设备冗余设计的网络中,下游交换机双上行接入,采用链路一主一备的方式,主链路上行接口、设备故障可以切换到备份链路,通过备份设备转发。
1.2 链路可靠性

为保证设备间链路可靠性,在设备间部署多条物理线路,为防止环路STP只保留一条链路转发流量,其余链路成为备份链路。
2 链路聚合技术原理
2.1 基本原理
2.1.1 提升链路带宽
设备之间存在多条链路时,由于STP的存在,实际只会有一条链路转发流量,设备间链路带宽无法得到提升。

2.1.2 以太网链路聚合
以太网链路聚合Eth-Trunk:简称链路聚合,通过将多个物理接口捆绑成为一个逻辑接口,可以在不进行硬件升级的条件下,达到增加链路带宽的目的。

2.1.3 链路聚合基本术语(概念)
聚合组(Link Aggregation Group,LAG)
若干条链路捆绑在一起所形成的的逻辑链路。
每个聚合组唯一对应着一个逻辑接口,这个逻辑接口又被称为链路聚合接口或Eth-Trunk接口。
成员接口和成员链路
组成Eth-Trunk接口的各个物理接口称为成员接口。
成员接口对应的链路称为成员链路。
活动接口和活动链路
活动接口又叫选中(Selected)接口,是参与数据转发的成员接口。
活动接口对应的链路被称为活动链路(ActiveTink)。
非活动接口和非活动链路
又叫非选中(Unselected)接口,是不参与转发数据的成员接口。
非活动接口对应的链路被称为非活动链路(Inactive link)。
聚合模式
根据是否开启LACP(Link Aggregation Control Protocol,链路聚合控制协议),链路聚合可以分为手工模式和LACP模式。
其他概念
活动接口上限阈值和活动接口下限阈值。

2.2 手工模式

手工模式:Eth-Trunk的建立、成员接口的加入均由手动配置,双方系统之间不使用LACP进行协商。
正常情况下所有链路都是活动链路,该模式下所有活动链路都参与数据的转发,平均分担流量,如果某条活动链路故障,链路聚合组自动在剩余的活动链路中平均分担流量。
当聚合的两端设备中存在一个不支持LACP协议时,可以使用手工模式。
手工模式缺陷:

为了使链路聚合接口正常工作,必须保证本端链路聚合接口中所有成员接口的对端接口:
属于同一设备
加入同一链路聚合接口
手工模式下,设备间没有报文交互,因此只能通过管理员人工确认。

手动模式下,设备只能通过物理层状态判断对端接口是否正常工作。
2.3 LACP模式

LACP模式:采用LACP协议的一种链路聚合模式。设备间通过链路聚合控制协议数据单元(Link Aggregation Control Protocol Data Unit,LACPDU)进行交互,通过协议协商确保对端是同一台设备、同一个聚合接口的成员接口。
LACPDU报文中包含设备优先级、MAC地址、接口优先级、接口号等。
2.3.1 系统优先级
LACP模式下,两端设备所选择的活动接口数目必须保持一致,否则链路聚合组就无法建立。此时可以使其中一端成为主动端,另一端(被动端)根据主动端选择活动接口。
通过系统LACP优先级确定主动端,值越小优先级越高。

2.3.2 接口优先级
选出主动端后,两端都会以主动端的接口优先级来选择活动接口,优先级高的接口将优先被选为活动接口。
接口LACP优先级值越小,优先级越高。

2.3.3 最大活动接口数
LACP模式支持配置最大活动接口数目,当成员接口数目超过最大活动接口数目时会通过比较接口优先级、接口号选举出较优的接口成为活动接口,其余的则成为备份端口(非活动接口),同时对应的链路分别成为活动链路、非活动链路。
交换机只会从活动接口中发送、接收报文。

当活动链路中出现链路故障时,可以从非活动链路中找出一条优先级最高(接口优先级、接口编号比较)的链路替换故障链路,实现总体带宽不发生变化、业务的不间断转发。

2.3.4 活动链路选举
第一步:
SW1、SW2配置LACP模式的链路聚合。两端都设置最大活跃接口数为2。
通过LACPDU选举出优先级较高的交换机SW1,作为LACP协商过程的主动端。

第二步:
SW1在本端通过比较接口优先级、接口编号选举出活动接口,其中1、2号接口在相同的接口优先级下拥有更小的接口编号,成为活动接口。

第三步:
SW1通过LACPDU将本端活动端口选举结果告知对端。

第四步:
SW2依据SW1的选举结果,明确本端的活动接口,同时对应的链路成为活动链路。至此,Eth-Trunk的活动链路选举过程完成。

2.3.5 负载分担

在使用Eth-Trunk转发数据时,由于聚合组两端设备之间有多条物理链路,如果每个数据帧在不同的链路上转发,则有可能导致数据帧到达对端时间不一致,从而引起数据乱序。
Eth-Trunk推荐采用逐流负载分担的方式,即一条相同的流负载到一条链路,这样既保证了同一数据流的数据帧在同一条物理链路转发,又实现了流量在聚合组内各物理链路上的负载分担。
负载分担模式:
Eth-trunk支持基于报文的IP地址或MAC地址来进行负载分担,可以配置不同的模式(本地有效,对出方向报文生效)将数据流分担到不同的成员接口上。
常见的模式有:源IP、源MAC、目的IP、目的MAC、源目IP、源目MAC。
实际业务中用户需要根据业务流量特征选择配置合适的负载分担方式。
业务流量中某种参数变化越频繁,选择与此参数相关的负载分担方式就越容易实现负载均衡。

3 链路聚合使用场景
1.交换机之间、交换机与服务器之间
为保证交换机之间的链路带宽以及可靠性,可以在交换机之间部署多条物理链路并使用Eth-Trunk。
为了提高服务器的接入带宽和可靠性,将两个或者更多的物理网卡聚合成一个网卡组,与交换机建立链路聚合。

2.交换机与堆叠系统、防火墙双机热备心跳线
堆叠系统使得两台交换机成为一台逻辑上的设备,交换机与堆叠系统通过链路聚合互联可以组建高可靠、无环的网络。
防火墙双机热备组网中使用心跳线来检测对端设备的状态,为防止单端口、单链路故障导致的状态监测错误可以部署Eth-Trunk,使用Eth-Trunk作为检测状态的心跳线。

4 链路聚合的配置
4.1 配置命令
1.创建链路聚合组
# 创建Eth-Trunk接口,并进入Eth-Trunk接口视图。
[Huawei] interface eth-trunk trunk-id
2.配置链路聚合模式
# Mode lacp配置链路聚合模式为lacp模式、mode manual load-balance配置链路聚合模式为手工模式。
# 需要保持两端链路聚合模式一致。
[Huawei-Eth-Trunk1] mode { lacp | manual load-balance }
3.将接口加入链路聚合组中(以太网接口视图)
# 在接口视图下,把接口加入到Eth-Trunk中。
[Huawei-GigabitEthernet0/0/1] eth-trunk trunk-id
4.将接口加入链路聚合组中(Eth-Trunk视图)
# 在Eth-Trunk视图中将接口加入到链路聚合组中。
# 3、4两种方式都可以将接口加入到链路聚合组中。
[Huawei-Eth-Trunk1] trunkport interface-type { interface-number }
5.使能允许不同速率端口加入同一Eth-Trunk接口的功能
# 缺省情况下,设备未使能允许不同速率端口加入同一Eth-Trunk接口的功能,只能相同速率的接口加入到同一个Eth-Trunk接口中。
[Huawei-Eth-Trunk1] mixed-rate link enable
6.配置系统LACP优先级
# 系统LACP优先级值越小优先级越高,缺省情况下,系统LACP优先级为32768。
[Huawei] lacp priority priority
7.配置接口LACP优先级
# 接口视图下配置接口LACP优先级。
# 缺省情况下,接口的LACP优先级是32768。
# 接口优先级取值越小,接口的LACP优先级越高。
# 只有在接口已经加入到链路聚合中才可以配置该命令。
[Huawei-GigabitEthernet0/0/1] lacp priority priority
8.配置最大活动接口数
# 配置时需注意保持本端和对端的最大活动接口数一致,只有LACP模式支持配置最大活动接口数
[Huawei-Eth-Trunk1] max active-linknumber { number }
9.配置最小活动接口数
# 本端和对端设备的活动接口数下限阈值可以不同,手动模式、LACP模式都支持配置最小活动接口数。
# 配置最小活动接口数目的是为了保证最小带宽,当前活动链路数目小于下限阈值时,Eth-Trunk接口的状态转为Down。
[Huawei-Eth-Trunk1] least active-linknumber { number }
4.2 链路聚合配置
1.手工模式链路聚合配置

需求描述:
SW1、SW2都连接着VLAN10、VLAN20的网络。
SW1和SW2之间通过两根以太网链路互联,为了提供链路冗余以及保证传输可靠性,在SW1、SW2之间配置手工模式的链路聚合。
SW1的配置如下:
[SW1] interface eth-trunk 1
[SW1-Eth-Trunk1] trunkport gigabitethernet 0/0/1 to 0/0/2
[SW1-Eth-Trunk1] port link-type trunk
[SW1-Eth-Trunk1] port trunk allow-pass vlan 10 20
SW2的配置如下:
[SW2] interface eth-trunk 1
[SW2-Eth-Trunk1] trunkport gigabitethernet 0/0/1 to 0/0/2
[SW2-Eth-Trunk1] port link-type trunk
[SW2-Eth-Trunk1] port trunk allow-pass vlan 10 20
2.LACP模式链路聚合配置

需求描述:
SW1、SW2都连接着VLAN10、VLAN20的网络。
SW1和SW2之间通过三根以太网链路互联,为了提供链路冗余以及保证传输可靠性,在SW1、SW2之间配置LACP模式的链路聚合,并且手动调整优先级让SW1成为主动端,并配置最大活跃端口为2,另外一条链路作为备份。
SW1的配置如下:
[SW1] interface eth-trunk 1
[SW1-Eth-Trunk1] mode lacp
[SW1-Eth-Trunk1] max active-linknumber 2
[SWi-Eth-Trunk1] trunkport gigabitethernet 0/0/1 to 0/0/3
[SW1-Eth-Trunk1] port Iink-type trunk
[SWi-Eth-Trunk1] port trunk allow-pass vlan 10 20
[SW1-Eth-Trunk1] quit
[SW1] lacp priority 30000
SW2的配置如下:
[SW2] interface eth-trunk 1
[SW2-Eth-Trunk1] mode lacp
[SW2-Eth-Trunk1] max active-linknumber 2
[SW2-Eth-Trunk1] trunkport gigabitethernet 0/0/1 to 0/0/3
[SW2-Eth-Trunk1] port link-type trunk
[SW2-Eth-Trunk1] port trunk allow-pass vlan 10 20
[SW2-Eth-Trunk1] quit