第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 系统优先级差异导致主动端选择异常
九、思考
- Eth-Trunk 手工模式和 LACP 模式的主要区别是什么?
- LACP 模式中,哪一端决定哪些端口成为活跃成员?由什么参数决定?
- Eth-Trunk 的负载均衡哈希算法保证同一流的报文走同一条链路,为什么?
- 一条链路的物理状态 Down 了,Eth-Trunk 会如何处理?
- 4 条 1G 链路做聚合,实际最大带宽是多少?如果有一条是 100M 呢?
- 为什么要设置 Max Active-linknumber?如果所有成员口都设为活跃,有什么问题?
下篇预告:第22篇《LACP协商过程与优先级配置》——深入LACP协商过程和优先级配置的细节。