实战笔记:华为 M-LAG 跨设备链路聚合配置

在企业数据中心网络架构中,传统的 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) :优先级低者。 注意:正常情况下,主备设备同时转发流量,没有性能差异。只有在故障场景下,主备角色的行为才会有所不同。

这是 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

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

虽然 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,不仅要会敲命令,更要理解其背后的状态机流转。希望这篇笔记能帮助大家在现网部署中少走弯路,构建坚如磐石的网络架构。