第21篇:链路聚合 Eth-Trunk——手工模式与 LACP 模式

一、写在前面

随着网络带宽需求的增长,单条链路往往不够用了。比如服务器和交换机之间需要 2G 带宽,但没有 2G 端口,怎么办?

链路聚合(Link Aggregation) 就是解决方案:将多条物理链路捆绑成一条逻辑链路,同时增加带宽和可靠性。

华为交换机上叫 Eth-Trunk,Cisco 叫 Port-Channel,本质是一样的。


二、为什么需要链路聚合?

2.1 单链路瓶颈

[交换机] ──── 1G ──── [服务器]

如果流量 > 1G → 瓶颈
换 10G 光模块 → 成本高,不灵活

2.2 链路聚合的好处

[交换机] ──── 1G ────
         ──── 1G ──── [服务器]
         ──── 1G ────
         逻辑上 = 3G 带宽
优势 说明
带宽提升 N 条链路叠加,接近 N 倍带宽
可靠性 某条物理链路断开,流量自动切换到其他链路
负载均衡 流量在成员链路间分担
成本低 用多个千兆口替代万兆口

三、Eth-Trunk 的两种模式

3.1 手工模式

完全由管理员手动配置,不依赖协商协议。

[SW1] interface eth-trunk 1                   ← 创建聚合口
[SW1-Eth-Trunk1] trunkport gigabitethernet 0/0/1 to 0/0/3  ← 加入成员口
[SW1-Eth-Trunk1] port link-type trunk
[SW1-Eth-Trunk1] port trunk allow-pass vlan 10 20

特点: - 不需要对端协商 - 双方配置必须一致(成员口数量、速率、双工模式) - 对端不配合也能工作(比如接第三方设备)

缺点:两端配置不完全匹配时,环路风险。

3.2 LACP 模式(推荐)

使用 LACP 协议(802.3ad)自动协商。

[SW1] interface eth-trunk 1
[SW1-Eth-Trunk1] mode lacp                        ← LACP 模式
[SW1-Eth-Trunk1] trunkport gigabitethernet 0/0/1 to 0/0/4

特点: - 两端自动协商成员口、协商主备 - 检测到链路故障自动调整 - 支持热备端口(M:N 备份)

3.3 两种模式对比

对比项 手工模式 LACP 模式
协商方式 无协商 LACP 协议自动协商
两端配置一致性要求 严格(全手动) 宽松(自动对齐)
故障检测 物理 Down 才能感知 支持 LACP 快速检测
热备端口 ❌ 不支持 ✅ 支持
三方设备对接 可用(需手动) 需对方支持 LACP
推荐度 不推荐 强烈推荐

四、LACP 模式详解

4.1 LACP 工作过程

SW1                          SW2
 │                            │
 │  1. LACPDU (系统优先级)     │
 │  ─────────────────────────> │
 │  2. LACPDU (系统优先级)     │
 │  <───────────────────────── │
 │                            │
 │  3. 确定主动端 ← 系统优先级比较  │
 │  4. 主动端决定成员端口       │
 │  5. 双方达成一致            │
 │                            │
 │  Eth-Trunk 建立成功         │

4.2 LACP 参数

参数 说明 默认值
系统优先级 决定哪一端是"主动端" 32768
端口优先级 决定哪条链路是"热备" 32768
超时时间 多久收不到 LACPDU 认为对端 Down 3 秒(短超时)/ 90 秒(长超时)

4.3 配置 LACP 模式

# SW1
[SW1] lacp priority 100                          ← 设 SW1 为主动端
[SW1] interface eth-trunk 1
[SW1-Eth-Trunk1] mode lacp
[SW1-Eth-Trunk1] trunkport gigabitethernet 0/0/1 to 0/0/4
[SW1-Eth-Trunk1] max active-linknumber 3         ← 最多 3 条活跃链路
[SW1-Eth-Trunk1] quit

# 设置端口优先级(决定哪条链路成为热备)
[SW1] interface gigabitethernet 0/0/4
[SW1-GigabitEthernet0/0/4] lacp priority 100     ← 优先级高(数值小),会成为活跃链路
[SW1-GigabitEthernet0/0/4] quit

# SW2 配置(LACP 自动协商,简单配置即可)
[SW2] interface eth-trunk 1
[SW2-Eth-Trunk1] mode lacp
[SW2-Eth-Trunk1] trunkport gigabitethernet 0/0/1 to 0/0/4

五、流量负载均衡方式

5.1 负载均衡哈希

Eth-Trunk 不是简单地"轮询"发送,而是通过 Hash 算法决定每条报文走哪条链路:

# 配置负载均衡方式
[SW1] interface eth-trunk 1
[SW1-Eth-Trunk1] load-balance src-dst-ip          ← 基于源+目的 IP 哈希
模式 说明 适用场景
src-dst-ip 按源/目的 IP 哈希 三层转发(推荐)
src-dst-mac 按源/目的 MAC 哈希 二层转发
src-ip 按源 IP 哈希 特定场景
dst-ip 按目的 IP 哈希 特定场景

5.2 要点

  • 同一流的报文一定走同一条物理链路(避免乱序)
  • 不同流分布在不同的物理链路上
  • 成员数越多,负载越均匀

六、配置约束

6.1 成员端口要求

约束 说明
端口类型 同为电口或同为光口
速率 建议相同速率(不同速率也能聚合,但以低速率为准)
双工模式 必须一致
VLAN 配置 成员口的 Access/Trunk/Hybrid 配置需一致
最大成员数 华为 CE 系列最多 32 个,S 系列最多 8 个

6.2 不能同时加入的端口

× 物理口已经在其他 Eth-Trunk 中
× 物理口配置了静态 MAC 地址
× 物理口是堆叠成员端口
× 物理口已配置 802.1X

七、验证命令

# 查看 Eth-Trunk 概要
[SW1] display eth-trunk 1
Eth-Trunk1's state information:
WorkingMode: LACP               HashArithmetic: XOR
Max Active-linknumber: 3         Min Active-linknumber: 1
Operate status: up              Number Of Up Port In Trunk: 3
---------------------------------------------------------------------
PortName                      Status      Weight
GigabitEthernet0/0/1          Up          1
GigabitEthernet0/0/2          Up          1
GigabitEthernet0/0/3          Up          1
GigabitEthernet0/0/4          **Standby** ← 热备端口

# 查看 LACP 状态
[SW1] display lacp statistics eth-trunk 1

# 查看流量负载分担情况
[SW1] display interface eth-trunk 1
Input: 1000 packets/sec  ← 总带宽 = 各成员口的累加

八、常见故障

8.1 只有一条链路 Up

可能原因:两端协商模式不一致
检查:display eth-trunk 看两端模式是否为 LACP

8.2 带宽没有叠加

可能原因:Hash 不均
检查:大量流量 Hash 到同一条链路上
解决:换负载均衡模式(如从 src-mac 换成 src-dst-ip)

8.3 协商失败

可能原因:
1. 两端物理口速率/双工不一致
2. 端口是 Hybrid 但配置了 untagged VLAN 不一致
3. LACP 系统优先级差异导致主动端选择异常

九、思考

  1. Eth-Trunk 手工模式和 LACP 模式的主要区别是什么?
  2. LACP 模式中,哪一端决定哪些端口成为活跃成员?由什么参数决定?
  3. Eth-Trunk 的负载均衡哈希算法保证同一流的报文走同一条链路,为什么?
  4. 一条链路的物理状态 Down 了,Eth-Trunk 会如何处理?
  5. 4 条 1G 链路做聚合,实际最大带宽是多少?如果有一条是 100M 呢?
  6. 为什么要设置 Max Active-linknumber?如果所有成员口都设为活跃,有什么问题?

下篇预告:第22篇《LACP协商过程与优先级配置》——深入LACP协商过程和优先级配置的细节。