链路聚合

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

基本概念:

  • Link Aggregation Group (LAG、链路聚合组)
    指将若干跳以太链路捆绑在一起所形成的逻辑链路,每个聚合组唯一对于这一个逻辑接口,这个接口称之为链路聚合接口或Eth-Trunk接口。链路聚合接口可以作为普通以太网接口来使用
    与普通以太网接口的差距在于:转发的时候链路聚合接口需要从成员接口中选择一个或多个接口来进行转发

  • 成员接口与成员链路
    组成链路聚合接口的各个物理接口成为成员接口,成员接口所对应的链路为成员链路

  • 活动接口与非活动接口
    链路聚合组的成员接口分为活动接口与非活动接口,转发数据的接口为活动接口,不转发则为非活动接口

  • 活动链路与非活动链路
    活动接口对应的链路称为活动链路,非活动接口的链路则为非活动链路

聚合模式

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

维度 手工模式 LACP 模式
定义 Eth-Trunk的建立、成员接口的加入由手工配置,没有链路聚合控制协议的参与 Eth-Trunk 的建立、成员接口的加入由手工配置,没有链路聚合控制协议的参与
是否需要支持 LACP 协议 ×
数据转发 一般情况下,所有链路都是活动链路。所有活动链路均参与数据转发。如果某条活动链路故障,链路聚合组自动在剩余的活动链路中分担流量 一般情况下,部分链路是活动链路。所有活动链路均参与数据转发。如果某条活动链路故障,链路聚合组自动在非活动链路中选择一条链路作为活动链路,参与数据转发的链路数目不变
是否支持跨设备链路聚合 ×
故障检测 只能检测到同一聚合组内的成员链路有断路等有限故障,但是无法检测到链路故障、链路错连等故障 只能检测到同一聚合组内的成员链路有断路等有限故障,但是无法检测到链路故障、链路错连等故障

设备支持的链路聚合方式
同一设备:是指链路聚合时,同一聚合组的成员接口分布在同一设备
堆叠设备:是指在堆叠场景下,成员接口分布在堆叠的各个成员设备上
跨设备:是指 Eth-Trunk 基于 LACP 进行了扩展,能够实现多态设备间的链路聚合

手工模式

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

LACP 模式

作为链路聚合技术,手工负载分担模式 Eth-Trunk 可以完成多个物理接口聚合成一个Eth-Trunk口来提高带宽,同时能够检测到同一聚合组内的成员链路有断路等有限故障,但是无法检测到链路层故障、链路错连等故障。为了提高 Eth-Trunk 的容错性,并且能提供备份功能,保证成员链路的高可靠性,出现了链路聚合控制协议 LACP(Link Aggregation Control Protocol),LACP 模式就是采用 LACP 的一种链路聚合模式。LACP 为交换数据的设备提供一种标准的协商方式,以供设备根据自身配置自动形成聚合链路并启动聚合链路收发数据。聚合链路形成以后,LACP 负责维护链路状态,在聚合条件发生变化时,自动调整或解散链路聚合

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

LACPDU

系统优先级:用于选举主动端,优先级越小越优先
接口优先级:用于选举活动接口与非活动接口,优先级越小越优先
成员接口间 M:N 备份:LACP 模式链路聚合由 LACP 确定聚合组中的活动和非活动链路,又称为 M:N 模式,即 M 条活动链路与 N 条备份链路的模式。这种模式提供了更高的链路可靠性,并且可以在 M 条链路中实现不同方式的负载均衡

负载分担

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

基于包

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

基于流

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

负载分担

相关指令

系统视图

创建聚合组

# interface Eth-Trunk 编号
interface Eth-Trunk 1

查看聚合组信息

display interface eth-trunk 1

指定 LACP 优先级(越小越优先)

# lacp prioity 优先级 
lacp prioity 1

接口视图

将接口添加至聚合组

# eth-trunk 编号
eth-trunk 1

配置接口 LACP 优先级

# lacp prioity 优先级 
lacp prioity 1

配置最大活跃端口数

# max active-linknumber 数量
max active-linknumber 3

配置最小活跃端口数

# least active-linknumber 数量
least active-linknumber 3

三层链路聚合配置

interface Eth-trunk 1
undo portswitch   # 禁用交换端口
ip address 192.168.0.1    # 配置链路地址
interface g0/0/1
eth-trunk 1

聚合组视图

选择聚合模式

# mode 模式
mode lacp-static 

将接口添加至当前聚合组

# trunkport interface-type 接口号
trunkport GigabitEthernet 0/0/1

允许不同速率接口加入聚合

mixed-rate link enable

Slow Protocols