• 全部
  • 经验案例
  • 典型配置
  • 技术公告
  • FAQ
  • 漏洞说明
  • 全部
  • 全部
  • 大数据引擎
  • 知了引擎
产品线
搜索
取消
案例类型
发布者
是否解决
是否官方
时间
搜索引擎
匹配模式
高级搜索

M-LAG交换机MAC同步不一致

2026-07-30提问
  • 0关注
  • 0收藏,164浏览
粉丝:0人 关注:0人

问题描述:

两台交换机组成M-LAG(只做2层透传VLAN)上联防火墙,分别通过聚合口1和主墙连接,聚合口2和备墙连接,当防火墙进行主备切换后会发送ARP报文通知交换机刷新MAC,但是他刚好hash只从聚合口的其中一条链路发给了交换机2,这个时候交换机2成功刷新MAC表切换到连接备墙的聚合2口,但是交换机1没收到这个arp,交换机1上查看这个mac还是对应的聚合1口直到有收到包才会切到聚合口2,导致这一段时间有一半业务会丢包,这种情况下M-LAG不会去同步MAC表项吗?有什么解决方法吗

最佳答案

粉丝:25人 关注:2人

一、核心问题解答:DRNI 会不会同步这条 MAC 表?
不会自动同步刷新!这是 DRNI 原生机制限制,不是 BUG。
先理清你的组网:
两台 DRNI 交换机(DR 系统),上行两条独立 Eth-Trunk:
SW1-Trunk1 → 主防火墙
SW2-Trunk2 → 备防火墙
防火墙 RBM 主备切换后发送免费 ARP (GARP),哈希路由只发到 SW2:
SW2 本地收到 GARP,本地 MAC 表更新:防火墙 MAC 出接口改为 Trunk2
SW1 没有收到这份 GARP,SW1 本地原有 MAC 表依然指向 Trunk1(旧主墙链路)
❗关键原理(重中之重)
DRNI 只同步DR 下行 DR 口学习到的 MAC;
从 IPP 上行接口(上联防火墙 Trunk)学习 / 刷新的动态 MAC 地址,DRNI 不会通过 Peer-Link(IPL)同步更新给对端!
原因:DRNI 设计逻辑 —— 上行属于独立三层网关侧路由域,设备各自独立学习上行 MAC,跨设备不自动同步上行动态 MAC 更新。
因此:SW1 不会自动同步 SW2 刚刚刷新的防火墙 MAC,必须等到流量触发新报文学习,中间窗口流量丢包。
二、为什么出现一半业务丢包?
下行终端流量会被 DRNI 负载分担:
流量由 SW2 转发:MAC 表正确,走 Trunk2 到备防火墙,正常通信;
流量由 SW1 转发:MAC 表还是旧条目,去往 Trunk1(原主防火墙,现在已经离线)→流量黑洞丢包。
三、分层解决方案(优先级从高到低)
方案 1:防火墙侧优化(最优,根治源头,推荐优先实施)
防火墙 RBM 切换时,两条上行链路同时发送免费 ARP,而不是单链路发送。
核查 F1000/F5000 防火墙 RBM 配置:
主备切换触发 GARP,所有业务接口同时发送免费 ARP,不要仅当前转发接口发送;
增加免费 ARP 发送次数(连续 3 次广播),避免被哈希随机丢在单条链路。
原理:当两条链路都收到 GARP,SW1、SW2 两台交换机同时刷新 MAC,不存在表项不一致窗口。
方案 2:交换机 DRNI 侧配置优化(组网无法改动防火墙时使用)
① 【首选】配置静态 MAC(适合防火墙网关 MAC 固定不变)
在两台 DRNI 交换机上同时配置防火墙网关 MAC 静态指向正确上行聚合口
plaintext
system-view
mac-address static 防火墙MAC地址 interface Eth-Trunk2 vlan X
优势:不受动态学习影响,切换后不会产生 MAC 漂移,永久解决;
局限:防火墙硬件 MAC 变更时需要同步修改配置。
② 开启 DRNI 对话式 MAC 学习(补充优化,不能根治但缓解收敛)
plaintext
system-view
mac-address drni forwarding-conversational-learning
作用:SW1 转发流量、查找 MAC 表发现条目失效时,可以向 Peer(SW2)请求最新 MAC 表项;
⚠️注意:属于报文触发被动查询,切换瞬间首包依然存在短暂丢包,无法做到零丢包,只能缩短收敛时间。
③ 缩短 MAC 地址老化时间(不推荐,应急方案)
plaintext
mac-address timer aging 30
默认 300s,改成 30 秒;
风险:MAC 频繁老化会增加 CPU 广播压力,大规模接入环境慎用。
方案 3:组网架构改造(长期优化方案)
当前组网缺陷:防火墙双上行分别接入两台 DRNI 成员,属于非标准 DRNI 双活上行。
标准稳定方案二选一:
防火墙做 DRNI(IRF/RBM),使用一条跨设备 Eth-Trunk 同时接入两台交换机;防火墙切换后 GARP 可以通过聚合组同时送达两台交换机;
防火墙上行先经过一台独立核心交换机,再接入 DRNI,避免非对称哈希。
四、补充避坑知识点
区分「下行 DR 口 MAC」和「上行普通接口 MAC」
下行 DR 口(下联终端服务器)学习 MAC → DRNI 自动双向同步;
上行普通 Eth-Trunk 学习 MAC → 默认不同步,就是你遇到的场景。
不要混淆 DRNI 和 IRF:IRF 集群所有 MAC 全局同步;DRNI 是跨设备聚合,上行独立学习机制,两者行为不一样。

暂无评论

2 个回答
粉丝:13人 关注:9人

M-LAG默认会同步MAC表项,但需满足以下条件:1. 两台M-LAG设备间的peer-link正常;2. 配置了mac-address sync enable(部分版本默认开启)。若未同步,可能是peer-link故障或同步功能未开启。
排查步骤:
1. 检查peer-link状态:display interface peer-link,确保物理和协议均up。
2. 确认MAC同步功能:display mac-address sync status,若未开启,执行mac-address sync enable。
3. 查看MAC表同步情况:display mac-address,对比两台设备同一MAC的出接口是否一致。
解决方法:
1. 确保peer-link链路可靠(建议用聚合口做peer-link,避免单点故障)。
2. 开启MAC同步功能(全局配置mac-address sync enable)。
3. 若防火墙主备切换时ARP报文仅从单链路发送,可在M-LAG设备上配置ARP代理或调整聚合口hash算法(如基于源IP+目的IP),使ARP报文能通过两条链路发送,确保两台设备都收到ARP更新。
关键命令:
开启MAC同步:mac-address sync enable
检查peer-link:display interface peer-link
检查MAC同步状态:display mac-address sync status

暂无评论

粉丝:27人 关注:1人

你遇到的问题核心在于:M-LAG的MAC同步是基于表项的同步,而防火墙发出的ARP报文是逐包的触发事件。当ARP报文因哈希算法只到达一台交换机时,另一台无法被“事件”触发,因此不会主动更新MAC表项

🔍 问题深度解析

M-LAG的MAC同步机制如下

  • MAC同步基于表项:当交换机从一个M-LAG接口学到新的MAC地址后,它会将这个MAC地址表项同步给对端设备。

  • ARP是触发事件:ARP报文是触发交换机去学习或更新MAC表项的“事件”。

你遇到的情况是,防火墙切换后发出的ARP报文只到达交换机2。交换机2收到后更新了MAC表(指向聚合口2),并将这个新的MAC表项同步给了交换机1

关键在于:交换机1确实收到了来自交换机2的MAC表项同步信息。但这个同步信息是“交换机2的MAC表项更新了”,而不是“收到一个ARP报文”。

在M-LAG的实现中,为了防止环路,从peer-link(堆叠链路)收到并同步过来的MAC表项,并不会被交换机1的转发芯片直接用于数据转发,它只会被标记为“已同步”状态

因此,当有去往该MAC地址的数据流量到达交换机1时,由于本地芯片中没有“活跃”的转发条目,交换机会按照默认的MAC地址学习机制,将流量通过peer-link扔给交换机2去处理,同时等待从本地物理接口(聚合口) 收到真实的ARP报文来触发本地学习。这就是丢包和延迟的根源

💡 解决方案

要根治此问题,核心思路是确保防火墙发出的ARP报文能同时被两台M-LAG交换机收到

方案一:调整聚合口负载均衡算法(推荐优先尝试)

修改防火墙与交换机之间聚合口的哈希算法,让ARP报文有概率通过两条链路分别发送。

  • 操作位置:在M-LAG交换机上,进入对应的聚合接口视图。

  • 核心命令link-aggregation load-sharing mode destination-ip source-ip

  • 原理:将哈希因子从只基于MAC改为基于IP,增加哈希结果的随机性,让ARP报文更有可能分布到不同的成员链路上。不过,这无法保证100%的均匀分布。

方案二:配置ARP代理(ARP Proxy)

在M-LAG交换机上开启ARP代理功能,由交换机代为响应ARP请求。

  • 操作位置:交换机系统视图。

  • 核心命令arp proxy enable

  • 原理:当交换机1收到目的MAC未知的ARP请求时,它可以代替终端进行响应,从而避免流量被错误引导

方案三:升级软件版本(根治方案)

如果上述方案都无法有效解决问题,可以检查交换机当前运行的软件版本,确认是否为H3C官方已知的存在此问题的版本。

  • 操作:访问H3C官网,查询你的交换机型号是否存在修复此类MAC同步问题的新版本软件,并在维护窗口期进行升级。

🛠️ 验证与排查步骤

在实施解决方案前,建议先按以下步骤排查,确认问题根因:

  1. 检查M-LAG系统状态

    bash
    display m-lag summary

    确保 Peer-link接口状态、Keepalive链路状态均为 UP

  2. 确认MAC同步功能已开启

    bash
    display mac-address sync status

    若未开启,需在系统视图下执行 mac-address sync enable 开启

  3. 对比两台交换机的MAC表

    bash
    display mac-address | include [故障MAC]

    在交换机1和交换机2上分别执行,对比该MAC地址的出接口是否一致。如果不一致,则印证了问题。

暂无评论

编辑答案

你正在编辑答案

如果你要对问题或其他回答进行点评或询问,请使用评论功能。

分享扩散:

提出建议

    +

亲~登录后才可以操作哦!

确定

亲~检测到您登陆的账号未在http://hclhub.h3c.com进行注册

注册后可访问此模块

跳转hclhub

你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作

举报

×

侵犯我的权益 >
对根叔社区有害的内容 >
辱骂、歧视、挑衅等(不友善)

侵犯我的权益

×

泄露了我的隐私 >
侵犯了我企业的权益 >
抄袭了我的内容 >
诽谤我 >
辱骂、歧视、挑衅等(不友善)
骚扰我

泄露了我的隐私

×

您好,当您发现根叔知了上有泄漏您隐私的内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到pub.zhiliao@h3c.com 邮箱,我们会尽快处理。
  • 1. 您认为哪些内容泄露了您的隐私?(请在邮件中列出您举报的内容、链接地址,并给出简短的说明)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)

侵犯了我企业的权益

×

您好,当您发现根叔知了上有关于您企业的造谣与诽谤、商业侵权等内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到 pub.zhiliao@h3c.com 邮箱,我们会在审核后尽快给您答复。
  • 1. 您举报的内容是什么?(请在邮件中列出您举报的内容和链接地址)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)
  • 3. 是哪家企业?(营业执照,单位登记证明等证件)
  • 4. 您与该企业的关系是?(您是企业法人或被授权人,需提供企业委托授权书)
我们认为知名企业应该坦然接受公众讨论,对于答案中不准确的部分,我们欢迎您以正式或非正式身份在根叔知了上进行澄清。

抄袭了我的内容

×

原文链接或出处

诽谤我

×

您好,当您发现根叔知了上有诽谤您的内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到pub.zhiliao@h3c.com 邮箱,我们会尽快处理。
  • 1. 您举报的内容以及侵犯了您什么权益?(请在邮件中列出您举报的内容、链接地址,并给出简短的说明)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)
我们认为知名企业应该坦然接受公众讨论,对于答案中不准确的部分,我们欢迎您以正式或非正式身份在根叔知了上进行澄清。

对根叔社区有害的内容

×

垃圾广告信息
色情、暴力、血腥等违反法律法规的内容
政治敏感
不规范转载 >
辱骂、歧视、挑衅等(不友善)
骚扰我
诱导投票

不规范转载

×

举报说明