一文彻底搞懂 M-LAG:架构、Peer-Link、Keepalive、MAD、故障切换与 IRF 对比

一文彻底搞懂 M-LAG:架构、Peer-Link、Keepalive、MAD、故障切换与 IRF 对比
前言在园区网和数据中心中我们经常通过链路聚合把多条物理链路捆绑成一条逻辑链路从而获得更高带宽和链路级冗余。但是普通链路聚合存在一个明显限制聚合组中的所有成员链路通常连接在同一台交换机上。假设一台服务器通过两条网线连接同一台交换机Server ├── Link 1 ── Switch A └── Link 2 ── Switch A当其中一条网线或接口故障时另一条链路还能继续工作但如果 Switch A 整机故障两条成员链路会同时失效。这说明普通链路聚合主要解决的是链路级故障却无法单独解决设备级故障M-LAG 正是为了解决这一问题而出现的。它让下游服务器或交换机把分别连接到两台物理设备的链路加入同一个聚合组从而同时获得链路冗余设备冗余带宽叠加双活转发故障快速切换。本文以 H3C M-LAG 实现为主要背景从架构、术语、建立过程、正常转发、Peer-Link、Keepalive、MAD、故障处理、IRF 对比和排障思路等方面系统讲清 M-LAG。TOC一、M-LAG 到底是什么M-LAG 的全称是Multichassis Link Aggregation跨设备链路聚合。它允许一台服务器、交换机或其他聚合设备将多条成员链路分别连接到两台物理交换机同时把这些链路视为同一个逻辑聚合组。典型结构如下┌── Device A Server / Switch ───┤ └── Device B其中Device A 和 Device B 组成 M-LAG 系统。对下游服务器或交换机来说这两台物理设备在链路聚合层面表现为一个逻辑聚合系统但与 IRF 不同两台 M-LAG 成员设备仍然保留各自独立的控制平面、管理平面和配置文件。更准确地说M-LAG 不是把两台交换机完整合并成一台设备而是在跨设备链路聚合层面让远端聚合设备把它们识别为一个系统。二、M-LAG 与普通链路聚合有什么区别1. 普通链路聚合普通 LACP 聚合通常要求成员链路连接到同一台逻辑设备┌── Link 1 Server ─────┤ └── Link 2 │ Switch A它可以应对单根网线故障单个接口故障单块业务板故障某条成员链路质量异常。但无法单独应对交换机整机故障。2. M-LAGM-LAG 将成员链路分散到两台设备┌── Link 1 ── Device A Server ─────┤ └── Link 2 ── Device B正常情况下两条链路可以同时进入 Selected 状态并共同转发。当 Device A 故障时Link 1 失效 Link 2 继续转发因此M-LAG 把可靠性从单纯的链路级提升到设备级。3. 下游设备需要理解 M-LAG 吗通常不需要。下游服务器或交换机一般只需要支持标准链路聚合或 LACP。真正负责协调两台上游设备的是 M-LAG 成员设备之间的厂商实现。需要注意下游 LACP 可以是标准协议但不同厂商的 M-LAG 对等系统实现通常不通用。以 H3C 为例M-LAG 成员设备之间使用厂商实现的 DRCP 和 Keepalive 机制因此不能简单地把一台 H3C 设备和一台其他厂商设备直接组成同一个 H3C M-LAG 系统。三、为什么需要 M-LAG1. 消除设备单点故障服务器同时连接两台交换机一台成员设备故障时另一台仍然可以继续转发。2. 提升带宽利用率相比传统 STP 阻塞一条冗余链路M-LAG 可以让两条聚合成员链路同时承载流量。3. 提供无环双归接入对于远端聚合设备来说两条链路属于同一个聚合组不会像两条独立二层链路那样形成普通二层环路。4. 缩小维护影响两台设备具有相对独立的控制和管理平面可以在满足版本与升级流程要求的前提下逐台维护减少业务整体中断时间。5. 适配多种双归场景常见应用包括服务器双归接入接入交换机双归上联园区核心或汇聚双机数据中心 Leaf 双机接入存储网络高可靠接入VXLAN 网络中的双归设备接入。四、H3C M-LAG 典型架构一个典型的 H3C M-LAG 系统通常包括M-LAG 成员设备 A M-LAG 成员设备 B Peer-Link Keepalive 链路 M-LAG 接口 M-LAG Group 远端聚合系统下面逐个解释。五、M-LAG 成员设备组成 M-LAG 系统的两台物理交换机互为 Peer。两台设备通常具有独立的设备名称独立的管理地址独立的控制平面独立的配置文件独立的重启和升级过程。为了让远端设备把两台成员设备识别为一个聚合系统两端必须正确配置 M-LAG 系统参数。以 H3C 为例常见逻辑包括两端配置相同的 M-LAG System MAC 两端配置相同的 M-LAG System Priority 两端配置不同的 M-LAG System NumberSystem MAC 和 System Priority 共同影响远端 LACP 对该系统的识别System Number 用来区分两台成员设备。六、Primary 和 SecondaryM-LAG 成员设备会协商出Primary主设备 Secondary备设备但不要把它理解为传统主备设备中“主设备转发、备设备待机”。正常情况下Primary 和 Secondary 都可以转发业务流量。主备角色主要影响部分需要集中处理的协议Peer-Link 故障后的保护动作M-LAG 系统分裂后的接口处理设备恢复时的状态同步顺序。H3C 设备可以根据角色优先级等因素选举 Primary。角色优先级数值越小优先级越高若优先级相同还会继续比较桥 MAC 等信息。七、Peer-Link 是什么Peer-Link 是两台 M-LAG 成员设备之间最关键的互联链路。它通常承担以下功能。1. 传输 M-LAG 协议报文H3C M-LAG 使用 DRCP 在成员设备之间交换系统和接口状态。2. 同步业务状态常见同步信息包括MAC 地址表ARP 表项邻居信息M-LAG 接口状态部分协议和业务状态。具体同步内容会随设备型号、软件版本和业务特性变化。3. 承载必要的数据流量Peer-Link 并不是只传协议报文。以下场景中业务流量可能经过 Peer-Link某一侧上行链路故障目标设备只单归在另一台成员设备报文从某一成员进入但正确出接口位于对端故障期间需要通过对端正常路径绕行。因此Peer-Link 的带宽不能只按照“心跳流量很小”来规划。4. Peer-Link 的设计建议在 H3C 官方建议中固定端口设备通常应至少使用两条物理链路组成 Peer-Link 聚合并尽量分散到不同的子卡或硬件故障域。同时还要关注成员接口速率一致允许通过的 VLANJumbo Frame 或 MTU 一致聚合模式链路恢复延迟Peer-Link 与业务上行的带宽关系。八、Keepalive 链路是什么Keepalive 是两台 M-LAG 成员设备之间的三层检测链路。它的主要任务是当 Peer-Link 发生故障时帮助本端判断对端设备到底是整机故障还是仍然存活但与自己失去了 Peer-Link 联系。为什么 Peer-Link 本身不能完成这个判断假设 Device A 看见 Peer-Link Down它无法仅凭这个现象判断情况一Device B 整机宕机 情况二Device B 正常只是 Peer-Link 线路断开 情况三中间接口或聚合成员发生故障。Keepalive 提供另一条独立检测路径。如果Peer-Link Down Keepalive Up说明对端设备还活着只是两台成员设备之间失去了主要同步链路。此时如果两台设备都继续认为自己应该独立转发就可能出现双主、环路、MAC 表不一致和错误转发。Keepalive 的部署建议H3C 官方建议两台成员设备之间建立专用直连链路不要与普通业务流量复用保证二层和三层可达Peer-Link 和 Keepalive 尽量位于不同物理故障域Keepalive 接口应配置为 MAD 保留接口避免保护动作将其关闭。Keepalive 主要用于检测不承担正常业务流量转发。九、M-LAG 接口与 M-LAG Group1. M-LAG 接口M-LAG 接口是成员设备连接远端聚合系统的二层聚合接口。例如Device ABridge-Aggregation 100 Device BBridge-Aggregation 100两侧接口分别加入同一个 M-LAG Group 后共同形成一条跨设备聚合链路。2. M-LAG GroupM-LAG Group 用于标识两台成员设备上属于同一远端聚合系统的接口。例如Device A 的 BAGG100 → M-LAG Group 100 Device B 的 BAGG100 → M-LAG Group 100这两个接口在物理上属于两台设备但对远端服务器或交换机来说它们共同属于同一个 LACP 聚合系统。3. 远端聚合系统远端设备可以是服务器 Bond/Team虚拟化宿主机接入交换机防火墙存储设备其他支持标准动态链路聚合的设备。远端通常不需要运行 DRCP只需要正确配置 LACP。十、M-LAG 系统如何建立从配置完成到系统正常转发一般会经历以下阶段。第一步配置基础系统参数两端需要满足系统配对条件例如相同的 M-LAG System MAC 相同的 M-LAG System Priority 不同的 M-LAG System Number第二步建立 Peer-Link两台设备通过 Peer-Link 交换 DRCP 报文。第三步M-LAG 配对设备收到对端报文后检查关键系统参数确认是否能够组成同一个 M-LAG 系统。第四步主备角色协商系统根据初始角色、健康状态、角色优先级和桥 MAC 等因素确定 Primary 与 Secondary。第五步配置一致性检查两台独立设备必须在关键业务参数上保持一致例如VLANM-LAG Group聚合模式接口类型STPMTU业务许可范围双活网关参数。部分关键配置不一致会直接导致 M-LAG 无法建立或接口无法正常转发部分业务配置不一致虽然不会阻止配对也可能造成单向通信、环路或流量黑洞。第六步建立 Keepalive两端周期性交换 Keepalive 报文以便在 Peer-Link 故障时进行对端存活检测。第七步同步状态并进入正常转发Peer-Link 正常、Keepalive 正常、配对和一致性检查通过后两台成员设备开始同步相关表项并共同转发业务流量。十一、正常状态下流量怎么走正常情况下两台 M-LAG 成员设备同时转发。1. 下行到上行流量服务器可能根据 LACP 哈希结果将不同业务流发送到 Device A 或 Device B。如果报文进入 Device A并且 Device A 本地存在正常上行路径通常会直接从本地上行转发。Device B 同理。这种方式称为Local Forwarding 本地优先转发它可以减少 Peer-Link 上不必要的业务流量。2. 上行到下行流量上游网络可能把报文送到任意一台 M-LAG 成员设备。如果目标服务器的本地成员链路可用设备直接从本地 M-LAG 接口转发。如果目标只单归在另一台设备或者本地路径故障则可能需要先经过 Peer-Link再由对端转发。3. Peer-Link 为什么不能太窄虽然正常双归流量通常优先本地转发但以下情况会增加 Peer-Link 负载单归设备较多某侧上行故障流量哈希不均大量东西向流量需要跨成员设备网络正在故障切换部分业务特性必须由对端处理。所以 Peer-Link 应按故障时可能出现的绕行流量规划而不是只按协议流量规划。十二、M-LAG 如何防止环路在 M-LAG 网络中远端把两条链路视为同一个聚合组正常情况下不会像两条独立链路一样被 STP 阻塞一条。但两台 M-LAG 成员设备之间仍存在 Peer-Link因此设备还需要通过内部转发规则避免报文来回绕行。H3C M-LAG 的典型思路包括流量优先本地转发从 Peer-Link 收到的部分流量不再从对应 M-LAG 接口重复发出通过 M-LAG 系统状态和接口角色控制数据路径在系统分裂时通过 MAD 或 Standalone 机制防止双主转发。可以简单理解为本地能转就本地转 只有必要时才经过 Peer-Link 从 Peer-Link 来的报文不能再次无条件返回 M-LAG 下行口。十三、六种常见故障场景场景一一条下行成员链路故障假设服务器连接 Device A 的链路故障Server—Device ADown Server—Device BUpLACP 会将故障成员链路移出转发集合流量切换到 Device B。影响通常是业务保持可用总带宽下降流量重新哈希部分会话可能出现瞬时抖动。场景二一台 M-LAG 成员设备整机故障如果 Device A 整机故障Device A 的上行、下行和 Peer-Link 同时失效服务器连接 Device A 的成员链路 DownDevice B 继续作为剩余正常路径转发。这正是 M-LAG 提供设备级冗余的核心场景。场景三某一侧上行链路故障假设 Device A 的上行链路全部故障但 Device A 和服务器之间的 M-LAG 成员链路仍正常。Device A 收到的上行业务流量可能通过 Peer-Link 发送给 Device B再由 Device B 的正常上行转发。此时Peer-Link 从主要承担同步的链路变成重要的故障绕行路径。如果 Peer-Link 带宽不足业务可能出现拥塞。场景四Keepalive 故障但 Peer-Link 正常此时两台设备仍可以通过 Peer-Link 进行 DRCP 协商和状态同步。通常情况下M-LAG 系统仍可继续运行两台设备继续双活转发设备产生 Keepalive 告警网络失去了一条双主判断路径。虽然业务可能暂时正常但风险已经上升应尽快修复。场景五Peer-Link 故障但 Keepalive 正常这是 M-LAG 中最需要重点理解的故障。Keepalive 仍然正常说明对端设备没有宕机 只是两台设备失去了 Peer-Link。如果两端都继续对外转发就可能产生双主冲突。H3C M-LAG 会通过 Keepalive 信息重新判定角色并由 MAD 机制对 Secondary 侧采取保护动作。场景六Peer-Link 与 Keepalive 同时故障这是风险最高的场景。两台设备既无法通过 Peer-Link 同步也无法通过 Keepalive 判断对端是否存活。可能出现两台设备都认为自己应继续转发MAC 和 ARP 表不同步LACP System ID 冲突二层环路单向通信流量黑洞重复网关响应。具体处理行为取决于设备版本和配置例如MAD DOWN 状态持久化M-LAG Standalone自动恢复保留接口角色和 LACP 优先级。因此设计时必须尽量让 Peer-Link 与 Keepalive 处于不同故障域。十四、Peer-Link 故障时 MAD 如何防止双主假设Peer-LinkDown KeepaliveUp两端仍然能够通过 Keepalive 确认对端设备存活。系统会重新确定 Primary 和 Secondary。H3C M-LAG 默认的典型保护思路是Primary 继续承担正常转发。 Secondary 进入 M-LAG MAD DOWN 状态 除系统或管理员排除的保留接口外 相关网络接口被关闭或抑制。这样可以避免两台设备在无法同步表项时同时无约束转发。为什么 Keepalive 接口必须是保留接口如果 MAD 动作把 Keepalive 接口也关闭两台设备会失去最后一条对端检测路径故障判断会更加困难。因此 Keepalive 接口通常应配置为M-LAG MAD Exclude / 保留接口Peer-Link 恢复后会立即放开接口吗不一定。设备通常需要重新建立 DRCP恢复 M-LAG 配对同步 MAC、ARP 等表项等待恢复延迟再恢复被 MAD 抑制的接口。延迟恢复可以避免状态尚未同步完成时立即引入流量造成黑洞或环路。十五、M-LAG Standalone 是什么如果 Peer-Link 和 Keepalive 都失效系统可能无法继续维持正常 M-LAG 协同。H3C 的 M-LAG Standalone 机制可以让两台设备在系统分裂后使用不同的 LACP System ID由远端 LACP 重新选择只有一侧成员口进入转发状态。核心思路是既然两台设备已经无法作为一个统一 M-LAG 系统协同就退化为两个独立聚合系统并通过 LACP 选择避免两侧同时转发。Standalone 不是所有网络都可以直接照搬的万能方案。部署前需要评估设备软件版本M-LAG 与 LACP 优先级远端设备的 LACP 行为故障恢复过程是否存在单归设备网关与 STP 状态厂商配置限制。十六、M-LAG 双活网关如果两台 M-LAG 成员设备同时承担服务器网关需要让终端无论通过哪条聚合成员链路进入都能获得一致的三层网关服务。常见设计是两台设备配置相同的网关 IP 两台设备对外呈现相同或一致的网关 MAC 两台设备同时进行三层转发这样可以实现网关本地转发网关设备冗余两条成员链路负载分担一台设备故障后另一台继续提供网关服务。但必须注意M-LAG 双活网关不是只把两侧 VLAN 接口 IP 配成一样就结束。还需要确认网关 MAC 一致性ARP/ND 同步路由一致性上下行流量路径Peer-Link 故障行为与 VRRP、OSPF、BGP 或 VXLAN 的配合关系当前设备型号和版本是否支持对应模式。十七、IRF 与 M-LAG 到底有什么区别IRF 和 M-LAG 都能实现设备级冗余和流量负载分担但两者的设计思路不同。1. IRFIRF 将多台物理设备虚拟成一台逻辑设备。典型特点统一控制平面统一管理平面统一配置通常使用一个管理地址成员设备之间通过 IRF 链路连接上下游都把整个 IRF 看作一台设备跨成员接口可以直接组成普通聚合。2. M-LAGM-LAG 不进行完整设备虚拟化。典型特点两台设备控制平面独立两台设备分别管理两侧配置独立但必须保持一致仅在链路聚合层面对远端呈现一个系统依赖 Peer-Link、Keepalive 和 MAD可以相对独立地进行逐台维护和软件升级。3. 对比表对比项IRFM-LAG逻辑形态多台设备虚拟成一台逻辑设备两台独立设备组成一个跨设备聚合系统控制平面统一相互独立管理平面统一管理两台分别管理配置方式一份逻辑配置两侧独立配置并进行一致性检查上下游感知整体是一台逻辑设备仅聚合层面对远端呈现一个系统成员互联IRF 链路Peer-Link Keepalive防分裂机制IRF MADM-LAG MAD / Standalone 等升级维护按 IRF 升级机制处理更适合逐台维护与缩短升级中断故障域控制面耦合更深控制面和管理面相对隔离运维特点配置统一、理解直观架构灵活但一致性与故障排查更复杂常见场景园区核心、汇聚、统一管理数据中心 Leaf、服务器双归、高可用接入H3C 官方建议在对网络高可用以及软件升级业务中断时间要求较高的场景可以优先评估 M-LAG。但这并不代表 M-LAG 在所有场景都优于 IRF。如果更重视统一配置简化管理设备整体虚拟化运维人员对堆叠架构更熟悉IRF 仍然具有明显优势。最终应根据设备能力、网络规模、升级要求、故障域和运维水平进行选择。十八、M-LAG 配置思路下面仅给出 H3C Comware 设备的通用配置逻辑不作为所有型号和版本的可直接执行脚本。实际部署前必须查询对应设备型号和软件版本的配置手册。1. 配置 M-LAG 系统参数两端需要规划相同的 System MAC 相同的 System Priority 不同的 System Number 合适的 Role Priority示意Device ASystem Number 1 Device BSystem Number 2 两端 System MAC 相同 System Priority 相同2. 配置 Keepalive两端使用独立三层地址互指Device A Source IP 10.255.255.1 Destination IP 10.255.255.2 Device B Source IP 10.255.255.2 Destination IP 10.255.255.1同时将 Keepalive 接口排除在 MAD 关闭范围之外。3. 配置 Peer-Link通常先创建动态聚合接口再将多条物理成员口加入聚合。逻辑步骤创建 Bridge-Aggregation 配置动态聚合 配置 Trunk 和允许 VLAN 加入至少两条物理成员链路 将聚合接口指定为 M-LAG Peer-Link4. 配置下联 M-LAG 接口两台设备分别创建连接同一远端设备的聚合接口并加入相同 M-LAG Group。Device ABAGG100 → M-LAG Group 100 Device BBAGG100 → M-LAG Group 100远端服务器或交换机创建普通动态 LACP 聚合。5. 配置业务 VLAN 和网关二层场景需要确保VLAN 存在Peer-Link 允许对应 VLAN两侧 M-LAG 接口配置一致STP 和环路检测配置一致。三层双活网关场景还需要配置相应的网关、路由和同步机制。十九、M-LAG 上线前检查清单系统参数[ ] 两端设备型号和版本满足 M-LAG 要求 [ ] System MAC 相同且全网唯一 [ ] System Priority 相同 [ ] System Number 不同 [ ] Role Priority 规划正确Peer-Link[ ] 使用动态聚合 [ ] 至少两条成员链路 [ ] 成员口速率一致 [ ] 分散在不同硬件故障域 [ ] VLAN 许可范围一致 [ ] MTU / Jumbo Frame 一致 [ ] 带宽能够承担故障绕行流量Keepalive[ ] 使用独立三层链路 [ ] 源、目的 IP 互通 [ ] 两端参数一致 [ ] 不与 Peer-Link 共用同一故障域 [ ] 配置为 MAD 保留接口M-LAG 接口[ ] 两侧 Group ID 对应正确 [ ] 使用动态 LACP [ ] VLAN 和接口类型一致 [ ] 远端聚合配置正确 [ ] 本端和对端接口均为 Up业务与保护[ ] 配置一致性检查通过 [ ] MAC / ARP 同步正常 [ ] MAD 状态正常 [ ] Standalone 策略符合设计 [ ] STP 与环路检测一致 [ ] 已完成链路和整机故障演练二十、M-LAG 故障怎么排查第一步检查物理链路查看Peer-Link 物理成员口Keepalive 接口M-LAG 下行成员口上行接口接口错误包光模块和链路质量。第二步检查 Peer-Link重点确认聚合接口是否 Up成员口是否 SelectedDRCP 是否正常VLAN 是否放行MTU 是否一致是否存在链路震荡。第三步检查 Keepalive重点确认源、目的 IP路由UDP 参数发送和接收计数超时状态是否误被 MAD 关闭。第四步检查 M-LAG 系统状态常见查看命令display m-lag summary display m-lag keepalive重点关注Primary / SecondaryPeer-Link 状态Keepalive 状态配对状态一致性检查M-LAG Group本端和对端接口状态。第五步检查 LACP 聚合display link-aggregation verbose重点关注System IDSelected / Unselected参考端口聚合模式两侧成员口状态远端 LACP 信息。第六步检查业务表项display mac-address display arp display vlan display stp确认MAC 学在哪一侧是否同步到对端ARP 是否完整VLAN 是否存在出接口是否正确是否发生 MAC 漂移。第七步检查 MAD 与恢复状态确认是否存在 M-LAG MAD DOWN 接口哪些接口被排除是否进入 StandalonePeer-Link 是否刚刚恢复是否仍在恢复延迟时间内。二十一、常见误区误区一M-LAG 就是把两台设备完全虚拟成一台不准确。M-LAG 主要在链路聚合层面对远端呈现一个系统两台成员设备仍然拥有独立控制和管理平面。误区二Primary 转发Secondary 不转发错误。正常情况下两台成员设备都参与业务转发。主备角色主要影响部分协议处理和故障保护动作。误区三Peer-Link 只传同步报文错误。Peer-Link 还可能承担单归设备通信和故障绕行流量。误区四Keepalive 可以代替 Peer-Link错误。Keepalive 主要用于对端存活与双主检测不承担完整状态同步和正常业务转发。误区五Peer-Link Down 后两台设备继续双活就行危险。两端无法同步状态时继续双活可能造成双主、环路和错误转发因此需要 MAD 等保护机制。误区六两台不同厂商设备可以直接组成 M-LAG通常不可以。远端设备可以通过标准 LACP 接入 M-LAG但组成同一 M-LAG 系统的两台 Peer 需要使用厂商支持的兼容实现。误区七为了让实验起来直接关闭一致性检查实验环境中可能有人临时关闭一致性检查但生产环境这样做会掩盖真实配置错误。正确做法是找到不一致项并修正而不是长期绕过检查。总结M-LAG 的核心可以概括为普通链路聚合 多条链路连接同一台设备只解决链路级故障。 M-LAG 聚合成员链路分散到两台设备 同时解决链路和设备级故障。几个关键组件可以这样记M-LAG 接口 连接远端服务器或交换机的跨设备聚合成员。 Peer-Link 负责 DRCP 协商、状态同步和必要的数据绕行。 Keepalive Peer-Link 故障时判断对端是否仍然存活。 Primary / Secondary 正常时都转发故障时行为不同。 MAD 系统分裂后抑制双主转发。 Standalone 双链路失联时退化为独立聚合系统 通过 LACP 只选择一侧转发。学习 M-LAG 时真正应该掌握的不是某一套命令而是以下故障判断Peer-Link 是 Up 还是 Down Keepalive 是 Up 还是 Down 对端设备到底是故障还是仍然存活 当前谁是 Primary谁是 Secondary 是否有接口进入 MAD DOWN 业务应该本地转发还是经过 Peer-Link 绕行只要把这几个问题梳理清楚M-LAG 的建立、转发和排障逻辑就会非常清晰。