链路聚合
链路聚合
所属等级: H3CNE
一、概述:
链路聚合是指将一组物理端口捆绑在一起作为一个逻辑接口来增加带宽的一种方法,又称为多端口负载均衡组。通过在两台设备之间建立链路聚合组(Link Aggregation Group, LAG ),可以提供更高的通信带宽和更高的可靠性,而这种提高不需要硬件的升级,并且还为两台设备的通信提供了冗余保护。
A、基本概念:
链路聚合,也称为端口捆绑,端口聚集或链路聚集。链路聚合是将多个端口聚合在一块形成一个汇聚组。使用链路汇聚服务的上层实体把同一聚合组内多条物理链路视为一条逻辑的链路。一个汇聚组好像就是一个端口。如右图。
链路聚合在数据链路层上实现, 部署链路聚合组的目的主要在于以下两点。

增加网络带宽:通过将多个连接的端口捆绑成为一个逻辑连接,捆绑后逻辑端口的带宽是每个独立端口的带宽总和。当端口上的流量增加而成为限制网络性能的瓶颈时,采用支持该特性的交换机可以轻而易举地增加网络的带宽。例如,可以将4个GE端口连接在一起,组成一个4Gbit/s的连接。业务流量能够以负载分担的方式运行在这4条GE链路上。
提高网络连接的可靠性:当主干网络以很高的速率连接时,一旦出现网络连接故障,后果是不堪设想的。高速服务器以及主干网络连接必须保证绝对的可靠。采用端口聚合的一个良好的设计可以对这种故障进行保护, 例如,聚合组中的一条链路出现故障或者维护人员由于误操作将一根电缆错误地拔下来,不会导致聚合组上的业务中断。也就是说,组成端口聚合的一个端口连接失败, 网络数据将自动重定向到那些好的连接上。这个过程非常快,交换机内部只需要将数据调整到另一个端口进行传送就可以了,从而保证了网络无间断地继续正常工作。
B、相关术语:
1、成员端口的状态:
聚合组内的成员端口具有以下三种状态:
选中(Selected)状态:此状态下的成员端口可以参与数据的转发,处于此状态的成员端口称为“选中端口”。
非选中(Unselected)状态:此状态下的成员端口不能参与数据的转发,处于此状态的成员端口称为“非选中端口”。
独立(Individual)状态:此状态下的成员端口可以作为普通物理口参与数据的转发。当聚合接口配置为聚合边缘接口,其成员端口未收到对端端口发送的LACP(Link Aggregation Control Protocol,链路聚合控制协议)报文时,处于该状态。
2、聚合组、成员端口和聚合接口:
链路捆绑是通过接口捆绑实现的,多个以太网接口捆绑在一起后形成一个聚合组,而这些被捆绑在一起的以太网接口就称为该聚合组的成员端口。每个聚合组唯一对应着一个逻辑接口,称为聚合接口。聚合组与聚合接口的编号是相同的,例如聚合组1对应于聚合接口1。聚合组/聚合接口可以分为以下几种类型:
二层聚合组/二层聚合接口:二层聚合组的成员端口全部为二层以太网接口,其对应的聚合接口称为二层聚合接口。
三层聚合组/三层聚合接口:三层聚合组的成员端口全部为三层以太网接口,其对应的聚合接口称为三层聚合接口。在创建了三层聚合接口之后,还可继续创建该三层聚合接口的子接口,即三层聚合子接口。三层聚合子接口处理与该子接口编号相同的VLAN的报文。
聚合接口的速率和双工模式取决于对应聚合组内的选中端口(成员端口的状态):聚合接口的速率等于所有选中端口的速率之和,聚合接口的双工模式则与选中端口的双工模式相同。
3、操作Key:
操作 Key 是系统在进行链路聚合时用来表征成员端口聚合能力的一个数值,它是根据成员端口上的一些信息(包括该端口的速率、双工模式等)的组合自动计算生成的,这个信息组合中任何一项的变化都会引起操作 Key 的重新计算。在同一聚合组中,所有的选中端口都必须具有相同的操作 Key。
C、配置分类:
根据对成员端口状态的影响不同,成员端口上的配置可以分为以下两类:
属性类配置:包含的配置内容如下图所示。在聚合组中,只有与对应聚合接口的属性类配置完全相同的成员端口才能够成为选中端口。
协议类配置:是相对于属性类配置而言的,包含的配置内容有 MAC 地址学习、生成树等。在聚合组中,即使某成员端口与对应聚合接口的协议配置存在不同,也不会影响该成员端口成为选中端口。在聚合接口上所作的协议类配置,只在当前聚合接口下生效。在成员端口上所作的协议类配置,只有当该成员端口退出聚合组后才能生效。
聚合接口上属性类配置发生变化时,会同步到成员端口上,同步失败时不会回退聚合接口上的配置。聚合接口配置同步到成员端口失败后,可能导致成员端口变为非选中状态,此时可以修改聚合接口或者成员端口上的配置,使成员端口重新选中。当聚合接口被删除后,同步成功的配置仍将保留在这些成员端口上。
由于成员端口上属性类配置的改变可能导致其选中/非选中状态发生变化,进而对业务产生影响,因此当在成员端口上进行此类配置时,系统将给出提示信息,由用户来决定是否继续执行该配置。

二、聚合原理:
A、聚合前提:
在创建链路聚合组,将物理链路加入链路聚合组时需确保以下参数保持一致, 其中的逻辑参数指的是同一汇聚组中端口的基本配置。
1、物理参数:
进行汇聚的链路数目须一致
进行聚合的链路的速率须一致
进行聚合的链路的双工方式须一致
2、逻辑参数:
STP 配置一致,包括端口的STP使能/关闭 、与端口相连的链路属性(如点对点或非点对点)、STP优先级 、路径开销 、报文发送速率限制、是否环路保护、 是否根保护、是否为边缘端口。华三试题中无需一致,GVRP 配置也无
QoS 配置一致,包括流量限速、优先级标记、默认的 802.1p 优先级、带宽保证、 拥塞避免,流重定向、流量统计等。
VLAN 配置一致,包括端口上允许通过的 VLAN、端口默认 VLANID。
端口配置一致,包括端口的链路类型,如 Trunk、Hybrid、Access 属性。
另外,使能了某些功能的端口无法加入到链路聚合组中,例如配置了镜像的监控端口和目的端口、配置了静态MAC地址的端口、配置了静态ARP的端口、便能 802.1x 的端口、VPN 端口等。
B、聚合方式**:**
链路聚合根据是否启用链路聚合控制协议可以分为3种方式:手工聚合、静态聚合、动态聚合。
1、手工聚合:
手工聚合是一种最基本的链路聚合方式,在该模式下,链路聚合组的建立、成员接口的加入,以及哪些接口作为活动接口完全由手工来配置,没有链路聚合控制协议的参与。手工主备模式通常应用在两端或其中端设备不支持LACP协议的情况。
2、静态聚合:
静态聚合模式下,链路聚合组的建立,成员接口的加入都是由手工配置完成的。但与手工负载分担模式链路聚合不同的是,该模式下LACP协议为使能状态,负责活动接口的选择。也就是说,当把一组接口加入链路聚合组后,这些成员接口中哪些接口作为活动接口,哪些接口作为非活动接口还需要经过 LACP 协议报文的协商确定。
静态聚合不需要启动聚合协议,如果一方不支持聚合协议或者双方设备支持的聚合协议不兼容时使用 (H3C-Cisco) 用的较多
端口不与对端设备交互信息,两台交换机各自选出各自的参考端口。参考端口选举规则:
高速全双工>低速全双工>高速半双工>低速半双工
端口ID小的优先
1、选择参考端口:
参考端口从本端的成员端口中选出,其操作 Key 和属性类配置将作为同一聚合组内的其他成员端口的参照,只有操作Key 和属性类配置与参考端口一致的成员端口才能被选中。
对于聚合组内处于 up 状态的端口,按照端口的优先级->全双工/高速率->全双工/低速率->半双工/高速率->半双工/低速率的优先次序,选择优先次序最高、且属性类配置与对应聚合接口相同的端口作为参考端口;如果多个端口优先次序相同,首先选择原来的选中端口作为参考端口;如果此时多个优先次序相同的端口都是原来的选中端口,则选择其中端口号最小的端口作为参考端口;如果多个端口优先次序相同,且都不是原来的选中端口,则选择其中端口号最小的端口作为参考端口。
2、确定成员端口的状态:


确定静态聚合组内成员端口状态时,需要注意:
当一个成员端口的操作 Key 或属性类配置改变时,其所在静态聚合组内各成员端口的选中/非选中状态可能会发生改变。
当静态聚合组内选中端口的数量已达到上限,对于后加入的成员端口和聚合组内选中端口的端口优先级:
全部相同时,后加入的成员端口即使满足成为选中端口的所有条件,也不会立即成为选中端口。这样能够尽量维持当前选中端口上的流量不中断,但是由于设备重启时会重新计算选中端口,因此可能导致设备重启前后各成员端口的选中/非选中状态不一致。
存在不同时,若后加入的成员端口的属性类配置与对应聚合接口相同,且端口优先级高于聚合组内选中端口的端口优先级,则端口优先级高的成员端口会立刻取代端口优先级低的选中端口成为新的选中端口。
3、动态聚合:
动态聚合:双方系统使用 LACP 协议协商链路信息,交互聚合组中成员端口状态
动态聚合模式下,链路聚合组根据协议自动创建,聚合端口也是根据 KEY 值自动匹配添加(KEY 值是根据数据包的 MAC 地址或 IP 地址,经 HASH 算法计算得出 ), 不允许用户增加或删除动态 LACP 汇聚中的成员端口。只有速率和双工属性相同,连接到同一个设备,有相同基本配置的端口才能被动态聚合在一起,
1、选择参考端口:参考端口从聚合链路两端处于 up 状态的成员端口中选出,其操作 Key 和属性类配置将作为同一聚合组内的其他成员端口的参照,只有操作 Key 和属性类配置与参考端口一致的成员端口才能被选中。
首先,从聚合链路的两端选出设备ID(由系统的 LACP 优先级和系统的 MAC 地址共同构成)较小的一端:先比较两端的系统 LACP 优先级,优先级数值越小其设备ID越小;如果优先级相同再比较其系统 MAC 地址,MAC 地址越小其设备ID越小。
其次,对于设备 ID 较小的一端,再比较其聚合组内各成员端口的端口ID(由端口优先级和端口的编号共同构成):先比较端口优先级,优先级数值越小其端口 ID 越小;如果优先级相同再比较其端口号,端口号越小其端口 ID 越小。端口 ID最小、且属性类配置与对应聚合接口相同的端口作为参考端口。
2、确定成员端口的状态:在设备 ID 较小的一端,动态聚合组内成员端口状态的确定流程如左图所示。与此同时,设备 ID 较大的一端也会随着对端成员端口状态的变化,随时调整本端各成员端口的状态,以确保聚合链路两端成员端口状态的一致。确定动态聚合组内成员端口状态时,需要注意:
仅全双工端口可成为选中端口。
当一个成员端口的操作 Key 或属性类配置改变时,其所在动态聚合组内各成员端口的选中/非选中状态可能会发生改变。
当本端端口的选中/非选中状态发生改变时,其对端端口的选中/非选中状态也将随之改变。
当动态聚合组内选中端口的数量已达到上限时,后加入的成员端口一旦满足成为选中端口的所有条件,就会立刻取代已不满足条件的端口成为选中端口。


C、LACP协议报文:
链路聚合控制协议 LACP,是基于 IEEE 802.3ad 标准的用于实现链路动态汇聚的协议。LACP 协议通过链路汇聚控制协议数据单元(LACPDU )与对端交互信息。
LACP 工作模式分为 ACTIVE 和 PASSIVE 两种。
如果动态聚合组内成员端口的 LACP 工作模式为 PASSIVE,且对端的 LACP 工作模式也为 PASSIVE 时,两端将不能发送 LACPDU。
如果两端中任何一端的 LACP 工作模式为 ACTIVE 时,两端将可以发送 LACPDU。
LACP 优先级:根据作用的不同,可以将 LAC P优先级分为系统 LACP 优先级和端口优先级两类,如下图所示。

LACP 为交换数据的设备提供了一种标准的协商方式,供系统根据自身配置自动形成聚合链路,并启动聚合链路收发数据。聚合链路形成后,负责维护链路状态,在聚合条件发生变化时,自动调整或解散链路聚合。协议的报文结构如下图所示,总长度为1024位(bit),合计128字节。如图所示

三、链路聚合属性:
链路聚合组的实现如图所示,SWA 和 SWB 之间采用静态聚合的方式进行链路捆绑,实现三条链路的聚合。
在链路聚合组的配置中,除了实现模式外,还可以配置活动链路上限阐值和活动链路下限阐值。如上图所示,可以配置活动链路上限阐值为2,那么就意昧着,在GE1/0/1、GE1/0/2,GE1/0/3这3条被聚合的链路中,LACP 会协商出两条链路作为活动链路,而剩下的链路则作为备用链路,当聚合组中的其中一条链路出现故障的时候,备用链路才会成为活动链路进行数据转发。
活动链路下限阐值的配置则主要是为了能够保证带宽满足业务需求。如上图所示,如果 SWA 和 SWB 之间需要转发1.5Gbit/s的流量.那么在配置链路聚合组的时候就可以选择配置活动链路的下限阈值为2。在默认情况下活动链路下限阎值为1,那么如果聚合组中的两条链路出现故障,聚合组仍能正常工作,但此时带宽只有1Gbit/s,会导致业务丢包。
配置了活动链路下限阈值后,如果活动链路数小于阈值,那么链路聚合组会置为 DOWN 状态,不再转发业务。所以,在存在其它业务保护路径的情况下,若 SWA 的业务也可以通过 SWC 到达 SWB,那么就可以在 SWA 和 SWB 之间的链路聚合组上配置活动链路下限阈值,在聚合组链路带宽小于1.5Gbit/s的时候,让聚合组状态置 DOWN,业务倒换到另外的路径上进行传递。如果没有另外的业务保护路径,就没必要配置活动链路下限阉值。

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