XYCOVO CONSOLE KURISU · WEB 渗透 / AI 辅助攻防 ONLINE
#014 · 2025-05-10✓ PASS

链路聚合

链路聚合原理、手工模式与 LACP 模式、华为 Eth-Trunk 配置、负载分担方式及二层/三层链路聚合实战。
网络网络安全链路聚合eth-trunkAUTHOR: KURISU

链路聚合(Link Aggregation)将多条物理链路捆绑为一条逻辑链路,在不升级硬件的前提下实现带宽倍增、可靠性提升和负载分担。


一、为什么需要链路聚合

在企业网络的核心层或汇聚层之间,单一物理链路的带宽往往无法满足需求。传统的解决方案是升级硬件(如更换万兆光模块),但这会带来高昂的成本。

链路聚合提供了更优雅的替代方案:

  • 增加带宽:N 条物理链路聚合后,逻辑带宽接近 N 倍(实际略小于各成员链路带宽之和)
  • 提高可靠性:任一物理接口故障时,其他接口自动接替,流量不中断
  • 负载分担:数据在多条链路上平均传输,避免单条链路拥塞

二、链路聚合基本概念

2.1 核心术语

概念说明
聚合组(LAG)Link Aggregation Group,华为称为 Eth-Trunk
成员接口加入聚合组的物理接口
聚合模式手工模式 / LACP 模式
活跃接口被选中参与数据转发的成员接口
非活跃接口处于备份状态、不参与数据转发的成员接口

2.2 链路聚合的前提条件

聚合组成员接口必须满足以下条件才能成功聚合:

条件说明
接口数量一致两端物理接口数量完全相同
双工模式一致同为全双工或同为半双工
速率一致所有成员接口速率相同
流控配置一致两端流控配置相同
聚合模式一致两端同为手工模式或同为 LACP 模式
接口无配置加入聚合组前,成员接口不能有独立配置

聚合接口不能嵌套——一个 Eth-Trunk 接口不能再被加入另一个 Eth-Trunk。


三、手工模式

3.1 工作原理

手工模式下:

  • 所有成员接口在加入后立即成为活跃接口
  • 默认使用源目 IP 异或的方式进行负载分担
  • 不需要协议协商,配置简单,但没有链路状态检测机制

3.2 配置步骤

两种方式将物理接口加入 Eth-Trunk:

# 方式一:在 Eth-Trunk 接口下添加成员
[SW1] interface Eth-Trunk 0
[SW1-Eth-Trunk0] trunkport GigabitEthernet 0/0/1 to 0/0/2

# 方式二:在物理接口下加入 Eth-Trunk
[SW2] interface GigabitEthernet 0/0/1
[SW2-GigabitEthernet0/0/1] eth-trunk 0
[SW2-GigabitEthernet0/0/1] quit
[SW2] interface GigabitEthernet 0/0/2
[SW2-GigabitEthernet0/0/2] eth-trunk 0

3.3 完整配置示例

拓扑

SW1 ════ Eth-Trunk 1(GE0/0/1 + GE0/0/2)════ SW2
# ============ SW1 配置 ============
[SW1] interface Eth-Trunk 0
[SW1-Eth-Trunk0] trunkport GigabitEthernet 0/0/1 to 0/0/2
[SW1-Eth-Trunk0] port link-type trunk
[SW1-Eth-Trunk0] port trunk allow-pass vlan 10 to 20
[SW1-Eth-Trunk0] quit

[SW1] vlan batch 10 to 20

# ============ SW2 配置 ============
[SW2] vlan batch 10 to 20
[SW2] interface Eth-Trunk 0
[SW2-Eth-Trunk0] trunkport GigabitEthernet 0/0/1 to 0/0/2
[SW2-Eth-Trunk0] port link-type trunk
[SW2-Eth-Trunk0] port trunk allow-pass vlan 10 to 20

# ============ 验证 ============
display eth-trunk 0
display interface Eth-Trunk 0
display trunkmembership eth-trunk 0

成员接口加入聚合组后,所有后续配置应在 Eth-Trunk 接口下执行(如 trunk、access、IP 等)。成员接口在加入前不能有独立配置,否则会报错:The port has other configurations. Please clear them first.


四、LACP 模式(802.3ad)

4.1 协议概述

LACP(Link Aggregation Control Protocol)是 IEEE 802.3ad 标准的链路聚合控制协议。相比手工模式,LACP 增加了:

  • 链路状态检测:通过 LACPDU 报文维护链路状态
  • 自动协商:两端自动协商聚合参数
  • 活跃接口选举:支持最大活跃接口数限制
  • 故障切换:活跃接口故障时自动从备选中激活

4.2 系统优先级与接口优先级

LACP 通过优先级机制决定谁是主动端、哪些接口成为活跃接口:

系统 LACP 优先级(越小越优)
  ↓ 决定主动端
接口 LACP 优先级(越小越优)
  ↓ 决定活跃接口选举
接口编号(越小越优)

4.3 LACP 聚合建立过程

1. 成员接口加入 Eth-Trunk → 两端相互发送 LACPDU 报文
2. 比较系统优先级 → 优先级高(数值小)的一端成为主动端
   (若优先级相同,比较 MAC 地址,MAC 小的成为主动端)
3. 选出主动端后,两端均按主动端的接口优先级选择活跃接口
   (若优先级相同,接口编号较小的优先)

在 LACP 中,两端所选的活跃接口必须保持一致。

4.4 LACP 静态模式 vs 动态模式

模式Eth-Trunk 建立成员加入活跃接口选举管理员参与
静态 LACP手动配置手动配置LACP 协议允许
动态 LACPLACP 协议自动LACP 协议自动LACP 协议不允许

华为设备常用静态 LACP 模式mode lacp-static)。


五、LACP 模式配置

5.1 基础 LACP 配置

场景:SW1 和 SW2 之间 4 条链路聚合,只允许 2 条作为活跃链路。

# ============ SW1 配置 ============
# 创建 Eth-Trunk 并设置模式
[SW1] interface Eth-Trunk 0
[SW1-Eth-Trunk0] mode lacp-static
[SW1-Eth-Trunk0] trunkport GigabitEthernet 0/0/1 to 0/0/4
[SW1-Eth-Trunk0] max active-linknumber 2               # 最大活跃接口数
[SW1-Eth-Trunk0] quit

# 设置系统优先级(使 SW1 成为主动端)
[SW1] lacp priority 100

# 设置接口优先级(GE0/0/1、GE0/0/2 优先成为活跃接口)
[SW1] interface GigabitEthernet 0/0/1
[SW1-GigabitEthernet0/0/1] lacp priority 100
[SW1-GigabitEthernet0/0/1] quit
[SW1] interface GigabitEthernet 0/0/2
[SW1-GigabitEthernet0/0/2] lacp priority 100
[SW1-GigabitEthernet0/0/2] quit

# ============ SW2 配置 ============
[SW2] interface Eth-Trunk 0
[SW2-Eth-Trunk0] mode lacp-static
[SW2-Eth-Trunk0] trunkport GigabitEthernet 0/0/1 to 0/0/4
[SW2-Eth-Trunk0] quit

# ============ 验证 ============
display eth-trunk 0

验证输出

[SW1] display eth-trunk 0
Eth-Trunk0's state information is:
Local:
LAG ID: 0                   WorkingMode: STATIC
Preempt Delay Time: 10      Hash arithmetic: According to SIP-XOR-DIP
System Priority: 100        System ID: 4c1f-ccc8-7da9
Least Active-linknumber: 1  Max Active-linknumber: 2
Operate status: up          Number Of Up Port In Trunk: 2
--------------------------------------------------------------------------------
ActorPortName          Status   PortType PortPri PortNo PortKey PortState Weight
GigabitEthernet0/0/1   Selected 1GE      100     2      49      10111100  1
GigabitEthernet0/0/2   Selected 1GE      100     3      49      10111100  1
GigabitEthernet0/0/3   Unselect 1GE      32768   4      49      10100000  1
GigabitEthernet0/0/4   Unselect 1GE      32768   5      49      10100000  1

可见 GE0/0/1 和 GE0/0/2 因为接口优先级较高(100 < 32768)被选为活跃接口(Selected),GE0/0/3 和 GE0/0/4 处于备选状态(Unselect)。

5.2 LACP 抢占配置

当故障的活跃接口恢复后,可以通过抢占功能让其重新成为活跃接口:

# 在 Eth-Trunk 接口下启用抢占
[SW1] interface Eth-Trunk 0
[SW1-Eth-Trunk0] lacp preempt enable

# 设置抢占延迟(秒)
[SW1-Eth-Trunk0] lacp preempt delay 10

抢占延迟的作用:避免链路抖动导致的频繁切换,给予网络稳定的时间。

5.3 配置流程最佳实践

第 1 步:创建 Eth-Trunk 接口并设置模式
第 2 步:设置 LACP 系统优先级(确定主动端)
第 3 步:将物理接口加入 Eth-Trunk
第 4 步:设置最大活跃接口数
第 5 步:设置接口优先级(确定哪些接口优先活跃)
第 6 步:配置 Eth-Trunk 的业务属性(Trunk/Access/IP 等)
第 7 步:启用抢占和设置抢占延迟

六、负载分担

6.1 基于流的负载分担

链路聚合采用基于流(Flow)的负载分担方式,而非逐包分担。原因是逐包分担会导致数据包乱序问题。

如果五元组(源 IP、目的 IP、源端口、目的端口、协议号)相同,则认为是同一条数据流,走同一条物理链路。

6.2 华为设备默认方式

华为设备默认通过源目 IP 异或(SIP-XOR-DIP)来区分不同的数据流。

6.3 修改负载分担方式

[SW2-Eth-Trunk1] load-balance ?
  dst-ip     根据目的 IP 哈希
  dst-mac    根据目的 MAC 哈希
  src-dst-ip 根据源/目的 IP 哈希
  src-dst-mac 根据源/目的 MAC 哈希
  src-ip     根据源 IP 哈希
  src-mac    根据源 MAC 哈希

# 例如:修改为根据源目 IP 哈希
[SW2-Eth-Trunk1] load-balance src-dst-ip

七、三层链路聚合

Eth-Trunk 不仅适用于二层交换机之间,也可以在三层路由器上使用。

7.1 切换为三层接口

# 将 Eth-Trunk 切换为三层接口
[Router] interface Eth-Trunk 0
[Router-Eth-Trunk0] undo portswitch

# 配置 IP 地址
[Router-Eth-Trunk0] ip address 10.0.0.1 24

# 添加成员接口
[Router-Eth-Trunk0] trunkport GigabitEthernet 0/0/1 to 0/0/2

7.2 三层链路聚合场景

[R1] ════ Eth-Trunk(IP: 10.0.0.0/30)════ [R2]

          GE0/0/1 + GE0/0/2 捆绑
# R1 配置
[R1] interface Eth-Trunk 1
[R1-Eth-Trunk1] undo portswitch
[R1-Eth-Trunk1] ip address 10.0.0.1 30
[R1-Eth-Trunk1] mode lacp-static
[R1-Eth-Trunk1] trunkport GigabitEthernet 0/0/1 to 0/0/2

# R2 配置
[R2] interface Eth-Trunk 1
[R2-Eth-Trunk1] undo portswitch
[R2-Eth-Trunk1] ip address 10.0.0.2 30
[R2-Eth-Trunk1] mode lacp-static
[R2-Eth-Trunk1] trunkport GigabitEthernet 0/0/1 to 0/0/2

八、查看与排错命令

8.1 常用查看命令

# 查看 Eth-Trunk 详细信息
display eth-trunk [编号]

# 查看 Eth-Trunk 接口状态
display interface Eth-Trunk [编号]

# 查看 Eth-Trunk 成员信息
display trunkmembership eth-trunk [编号]

# 查看 LACP 统计信息
display lacp statistics eth-trunk [编号]

8.2 常见问题排查

现象可能原因排查方法
聚合口无法 Up两端物理接口数量不一致display eth-trunk 查看成员状态
成员接口加入失败接口有残留配置clear configuration this 清空接口配置
部分接口未激活最大活跃接口数限制display eth-trunk 查看 Selected/Unselect
两端活跃接口不一致LACP 主动端选举问题检查系统优先级和 MAC 地址
流量不均衡哈希算法不适合业务调整 load-balance 模式
LACPDU 不通VLAN/Trunk 配置问题确保两端接口的 L2 连通性

九、手工模式 vs LACP 模式对比

特性手工模式LACP 模式
协议开销LACPDU 报文交互
链路检测仅物理层物理层 + 协议层
活跃接口控制全部活跃支持最大活跃接口数限制
故障切换物理 up/down 感知协议快速感知 + 自动切换
配置复杂度
推荐场景简单环境企业生产环境

十、设计最佳实践

  1. 优先使用 LACP 模式:企业生产环境推荐使用 LACP 静态模式,提供协议级链路检测
  2. 最大活跃接口数规划:通过 max active-linknumber 限制活跃链路数,其余作为备份
  3. 优先级规划:系统优先级决定主动端,接口优先级决定哪些链路活跃
  4. 统一配置入口:接口加入 Eth-Trunk 后,所有配置在 Eth-Trunk 接口下执行
  5. 负载分担优化:根据实际业务流量特征选择合适的 load-balance 模式
  6. 三层链路聚合:路由器之间同样可以使用 Eth-Trunk,先执行 undo portswitch 切换为三层接口

← #013 小皮面板(phpStudy)搭建…#015 生成树协议… →