在企业数据中心网络架构中,传统的 STP(生成树协议)虽然能防环,但会阻塞冗余链路,导致带宽浪费且收敛慢。为了实现双活转发、毫秒级倒换、带宽利用率 100%,M-LAG(Multichassis Link Aggregation Group,跨设备链路聚合组)成为了现代数据中心接入层和汇聚层的标配技术。
今天这篇笔记,我们将基于华为 CloudEngine 系列交换机(如 CE6800),结合真实的现网配置案例,深入拆解 M-LAG 的核心原理、关键组件以及配置中的"隐形深坑"。
一、 核心概念:M-LAG 是如何工作的?
简单来说,M-LAG 将两台物理上独立的交换机(SwitchA 和 SwitchB),在逻辑上虚拟成一台设备。下联的服务器或交换机通过标准的 LACP 协议与这两台设备进行链路聚合,完全感知不到后端其实是两台设备。
要实现这一机制,必须理解以下四个核心组件:
1. DFS Group (Dynamic Fabric Service Group)
这是 M-LAG 的"大脑"。它负责两台设备间的配对、状态协商以及表项同步。
- DFS 主设备 (Master):优先级高者当选。负责协调系统行为。
- DFS 备设备 (Backup) :优先级低者。 注意:正常情况下,主备设备同时转发流量,没有性能差异。只有在故障场景下,主备角色的行为才会有所不同。
2. Peer-Link (心跳与数据同步链路)
这是 M-LAG 的"大动脉",必须是二层 Eth-Trunk 接口。
- 作用:传输协商报文、同步 MAC/IP 表项、以及在单归链路故障时转发流量(例如服务器只连了 SwitchA,但网关在 SwitchB,流量需走 Peer-Link)。
- 要求:带宽要足够大,通常建议万兆起步,且做链路聚合增加可靠性。
3. 双主检测链路 (DAD / Keepalive)
这是 M-LAG 的"保命符"。
- 痛点:如果 Peer-Link 断了,两台设备都以为对方挂了,都会抢占 Master 角色,导致"双主"冲突,网络瞬间瘫痪。
- 解法:通过一条独立的三层链路(通常使用管理口 Mgmt 或独立业务口),互相发送心跳报文。一旦检测到 Peer-Link 断开但心跳还在,备设备会自动 Error-Down 掉 M-LAG 成员口,防止双主。
4. M-LAG 成员接口
直接连接下联设备(服务器/交换机)的接口。这些接口被加入 Eth-Trunk,并绑定到特定的 M-LAG ID。
二、 现网配置实战(以 SW1/SW2 为例)
以下配置基于真实的生产环境脱敏整理。场景为两台 TOR 交换机通过 M-LAG 双活接入服务器。
1. 基础环境与 DAD 链路准备
首先配置时钟同步(日志排错必备),并建立用于双主检测的 DAD 链路。这里我们使用 VPN 实例隔离心跳流量,更加安全。
# SW1 & SW2 通用配置
clock timezone Beijing add 08:00:00
# 创建 DAD 专用的 VPN 实例
ip vpn-instance DAD
ipv4-family
route-distinguisher 100:100
ipv6-family
route-distinguisher 100:100
# 配置 DAD 物理接口 (以 25GE1/0/19 为例)
interface 25GE1/0/19
undo portswitch # 切换为三层模式
ip binding vpn-instance DAD # 绑定 VPN
ipv6 enable
ipv6 address FDFF:FFFF:FFFF:FF00::1/126 # SW2 配置为 ::2/126
m-lag unpaired-port reserved # 关键!将该口标记为保留口,防止被误关
2. 配置 DFS Group (核心)
# SW1 配置 (Master)
dfs-group 1
priority 150 # 优先级高,成为主
source ipv6 FDFF:FFFF:FFFF:FF00::1 vpn-instance DAD
m-lag up-delay 240 # 延迟启动,等待对端同步
auto-recovery interval 10 # 自动恢复时间
# SW2 配置 (Backup)
dfs-group 1
priority 120 # 优先级低,成为备
source ipv6 FDFF:FFFF:FFFF:FF00::2 vpn-instance DAD
m-lag up-delay 240
auto-recovery interval 10
3. 配置 Peer-Link (大动脉)
Peer-Link 是 M-LAG 的基石,配置必须严谨。
# SW1 & SW2 通用配置
interface Eth-Trunk0
description pT:SW2:(Local)Eth-Trunk0
mode lacp-static # 必须静态 LACP
lacp timeout fast # 快速超时,加快故障检测
peer-link 1 # 宣告为 Peer-Link
port vlan exclude 1 # 排除默认 VLAN,安全规范
#
# 将物理口加入 Eth-Trunk0 (以 23, 24 口为例)
interface 25GE1/0/23
eth-trunk 0
storm suppression broadcast cir 1 mbps # 抑制广播风暴
port crc-statistics trigger error-down # CRC 错误过多自动 Down 口,防止脏数据
4. 配置 M-LAG 成员接口 (下联服务器)
这是实际承载业务的接口。
# SW1 & SW2 通用配置 (以 Eth-Trunk1 为例)
interface Eth-Trunk1
description dT:Server-01
port link-type trunk
port trunk allow-pass vlan 3650 to 3699 4000
stp disable # M-LAG 接口通常关闭 STP,由 M-LAG 协议防环
mode lacp-static
lacp timeout fast
dfs-group 1 m-lag 1 # 绑定 DFS 组 1,M-LAG ID 为 1 (两端 ID 必须一致)
三、 "避坑"心法
在配置 M-LAG 时,除了照搬命令,以下几点经验至关重要:
1. 关于 MAC 地址的"防环玄学"
很多文档没讲清楚什么时候需要配置 stp bridge-address。
-
原则 :如果 M-LAG 系统(作为一台逻辑设备)的上联或下联设备也是二层交换机,那么这对 M-LAG 交换机必须配置相同的 STP Bridge MAC 地址。
-
原因:如果不配相同,上联交换机会认为收到了来自两个不同桥的 BPDU,导致拓扑计算混乱或环路。
-
操作 :
# 查看主设备 MAC display system mac-address # 在两台设备上强制指定相同的 MAC stp bridge-address bc99-30f1-3320
2. 单臂流量与 Peer-Link 带宽规划
虽然 M-LAG 是双活,但如果服务器只有一根线连到 SwitchA,而网关在 SwitchB,流量就会穿越 Peer-Link。
- 建议:Peer-Link 的带宽总和应至少等于所有下行 M-LAG 成员口带宽总和的 50% 甚至更多,防止单点故障后 Peer-Link 拥塞。
3. 排错利器:Display 命令
配置完成后,不要只看接口 Up/Down,必须检查 M-LAG 状态。
# 查看 DFS 组状态
display dfs-group 1
# 重点关注字段:
# Heart beat state: OK (心跳正常)
# State: Master / Backup (角色正确)
# Port State: Up (成员口正常)
# Causation: - (无异常原因)
4. 启动顺序与延时
配置 m-lag up-delay 非常重要。当设备重启时,给它几分钟时间等待对端上线同步表项。如果急着转发,可能会因为 MAC 表项未同步而导致短暂丢包或环路。
四、 总结
M-LAG 是构建高可靠数据中心网络的基石。它通过 DFS Group 协商 、Peer-Link 同步 、DAD 防双主 三大机制,完美解决了传统堆叠技术的局限性(如升级需中断业务)。
掌握 M-LAG,不仅要会敲命令,更要理解其背后的状态机流转。希望这篇笔记能帮助大家在现网部署中少走弯路,构建坚如磐石的网络架构。