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

M-lag+VM虚拟机迁移

2小时前提问
  • 0关注
  • 0收藏,17浏览
粉丝:0人 关注:0人

问题描述:

组网:

1、组网如图所示,核心设备M-lag双活组网,三层连接外部网络至测试PC,核心下挂多组m-lag组网二层接入。接入与核心直接采用m-lag DR聚合接口互联。

2、交换机AB为一组、CD为一组。所有交换机连接VM接口均为ACCESS 单挂、非DR-LACP聚合。VM节点出接口偏向主备(基于虚拟机类型,意思虚拟机只会选一个物理出口

问题:

1、VM上虚拟机从VM节点1迁移到VM节点2时属于同一组leaf迁移。此时有两种现象:

      1)虚拟机迁移到VM2节点后还从连接交换机A的接口发出ping网关报文时,流量正常,链路对应图中VM2节点左线(偶尔丢1一个包属正常)

      2)虚拟机迁移到VM2节点后切换到连接B交换机的接口外发流量就有概率发生丢包情况(最多丢弃12个包),逻辑梳理:

虚拟机迁移后回发送ping报文,交换机B根据icmp数据更新本地mac地址表入口,并将数据包转发给网关,网关回程流量回哈希到交换机A,此时就概率出问题了(交换机A观察发现没有在交换机B将虚拟机的MAC更新出接口为交换机B自身下行物理接口后,将MAC出接口改为peer-link的聚合口,还保留为交换机A自身的物理下联口,属于AB交换机对于这个MAC都有自己独立的物理出接口,此时网关回程流量哈希到交换机A就会导致报文“黑洞”,哈希到交换机B就可以正常转发,因为交换机B的MAC出接口是迁移后真实的。这个状态观察最久持续12秒(流量黑洞12秒、丢了13个包),交换机A未切换MAC出接口为peer-link口的原因为?  猜测交换机B在本地通过虚拟机迁移后持续发出的ping 网关的icmp流量更新本地mac表出接口后没有立即同步给m-lag邻居,导致交换机A接收到哈希的流量不走peer-link横向转发、而是本地物理接口直接转发丢弃。同时观察交换机mac迁移时的时间是否和交换机上display m-lag drcp statist inter br 聚合口命令查看到的drcp最近一次同步时间类型? 这个同步会同步表项更新交换机A的MAC出接口,这样网关回程流量到了交换机A就可以横向转发???)

2、虚拟机从AB交换机组迁移到CD交换机组时,外部测试设备ping虚拟机时也会概率产生丢包:

      1)对于核心交换机来说虚拟机从AB迁移到CD后,就是一次MAC迁移(从聚合组A迁移到聚合组B),但此时虚拟机迁移后的数据包哈希发送到了交换机C然后发给了核心A,核心A就会更新MAC地址表入接口由聚合组A 到聚合组B(对于CD交换机组),此时设备回包到C到终端。

      2)外部测试PC的流量如果哈希负载到核心B,核心B发现目的MAC为自己上行接口、解析报文二三层、根据三层IP查询路由表、ARP表、MAC表,此时核心B把去往虚拟机的流量发给了交换机AB组设备(核心B没有从核心A同步MAC表?  且核心105XG是根据MAC表转发流量的),此时流量到了AB交换机,AB交换机发现该数据包的出接口和收到数据包的接口是相同的就会丢弃、造成黑洞,且上游设备一般根据流负载、就会一直丢)

      3)如果外部流量哈希到了核心A,核心A由于前面已经收到虚拟机迁移后流量进行了MAC更新,所以可以正常转发到交换机C到终端,终端的数据包即使发给核心B,核心B也是查询路由表转发到外部,这个情况下没什么异常???

3、M-lag情况下单挂接口MAC更新后会将MAC表项立即同步给m-lag邻居吗? 我看交换机display m-lag drcp stat in br 聚合口 发现30秒发一次表项同步???

4、有没有办法让M-lag设备A更新任意mac表项后立即同步给m-lag邻居(官方文档里面写的m-lag mac是实时同步、MAC更新后立即同步)

5、我上述反馈的丢包情况是否复核转发常理

6、核心为105X-G、接入为6526XE

7、VM侧勾选了迁移后“通告交换机”功能

 

 

1 个回答
TeamX 知了小白
粉丝:0人 关注:0人

1. 为什么交换机 A 没有立即将 MAC 出接口改为 Peer-Link?(场景一分析)

正常流程应该是:
VM 迁移到节点 2(连交换机 B) -> 交换机 B 从下行 Access 口学到 VM MAC -> 交换机 B 通过 Peer-Link 发送 MAC Sync Message 给交换机 A -> 交换机 A 收到消息,将本地 MAC 表的出接口修改为 Peer-Link(表示去对面找) -> 此时核心 A 的回程流量到达交换机 A,交换机 A 从 Peer-Link 转发给交换机 B,B 发给 VM。

异常原因分析(为什么会有 12 秒黑洞):
你观察到的“12秒”是一个非常关键的线索。在标准实现中,MAC 同步是实时的。出现 12 秒延迟通常有以下几种可能:

  • MAC 同步报文丢失/重传: 交换机 B 发出了同步报文,但交换机 A 没收到。交换机 B 可能在后台进行了重试。如果 Peer-Link 链路存在微突发拥塞,或者控制报文优先级设置不当,可能导致控制报文排队。
  • CPU 处理延迟: 如果交换机 A 的 CPU 负载极高,处理 M-LAG 控制报文的队列可能被阻塞。
  • MAC 防环/保护机制: 某些版本中,如果交换机 A 认为自己是该 MAC 的“Owner”(尽管 Access 端口通常是非 Owner),或者为了防止 MAC 震荡,可能会延迟更新。
  • Bug 或特性限制: 在较旧的软件版本中,Access 端口(单挂)的 MAC 同步机制不如 Eth-Trunk 稳定,可能存在同步延迟较大的已知缺陷。

验证方法:
在交换机 A 和 B 上执行 display m-lag mac-sync statistics。查看是否有 Sync Message Send FailDrop 计数增加。

2. 跨组迁移(AB -> CD)为什么会丢包?(场景二分析)

问题分析:
这是一个典型的核心间 MAC 不同步导致的问题。

  • 当前状态: VM 从 AB 迁到了 CD。
  • 核心 A 的行为: 核心 A 收到了来自 CD 组(经过 C/D 交换机)的流量,因此核心 A 更新了 MAC 表:VM_MAC -> Out: Peer-Link (指向 C/D)。这是正确的。
  • 核心 B 的行为: 核心 B 没有收到来自 CD 组的流量(因为流量哈希到了核心 A)。核心 B 的 MAC 表中,VM_MAC 依然指向 Peer-Link (指向 A/B) 或者表项已老化但未刷新。
  • 丢包过程:
    1. 外部 PC 发包,哈希到了 核心 B
    2. 核心 B 查 MAC 表,发现 VM_MAC 在 AB 组(因为它不知道 VM 去了 CD)。
    3. 核心 B 将流量发给 交换机 AB 组
    4. 交换机 AB 组收到流量,发现 VM 已经不在了(VM 在 CD),或者发现出接口和入接口相同(如果是直连丢弃),导致黑洞。

为什么核心 A 没同步给核心 B?
核心 A 和核心 B 之间也是 M-LAG 关系(通常称为 Core-M-LAG)。当核心 A 学到新 MAC(指向 CD)时,它必须通过核心间的 Peer-Link 把这个 MAC 同步给核心 B。
如果核心 B 没更新,说明核心间的 MAC 同步失败了

3. & 4. M-LAG MAC 同步是实时的吗?如何强制立即同步?

  • 官方文档 vs 实际实现: 官方文档说“实时同步”,指的是控制平面的信令交互是实时的(一旦触发,立即发报文)。但在数据平面,受限于硬件转发表项更新速度和软件处理队列,可能会有微小的延迟(通常 < 1秒)。
  • 关于 30 秒: 你看到的 display m-lag drcp stat in br 中的 30 秒是 DLS (Dynamic Link State)DRCP 的状态同步周期,用于检测链路状态和选举主备,这与 MAC 地址表项同步无关。MAC 同步是独立的过程。
  • 如何优化/强制同步:
    • 检查配置: 确保两端都开启了 MAC 同步功能(默认通常是开启的):[Switch] m-lag mac-sync enable
    • VM 侧行为: 你提到了“VM 侧勾选了通告交换机”。这非常重要。VM 迁移后发送 GARP (Gratuitous ARP)
      • 如果 VM 发送了 GARP,交换机 B 会刷新 MAC 表,并触发向 A 的同步。
      • 建议: 在 VM 迁移脚本中,确保在迁移完成后,显式发送一次 GARP 广播,或者在宿主机上触发网络重置,以加速 MAC 同步。
    • 调整同步策略(如果支持): 某些新版本支持调整 MAC 同步的批量大小或优先级,但这通常需要联系厂商技术支持获取特定补丁。

5. 上述反馈的丢包情况是否符合转发常理?

  • 瞬时丢包(1-3个包): 符合常理。任何二层移动(无论是 VM 迁移、网线重插)都会导致短暂的 MAC 学习和同步过程,这期间会有丢包。
  • 12 秒黑洞 / 跨组黑洞: 不符合常理。这属于故障或配置/版本缺陷。在成熟的 M-LAG 部署中,MAC 同步应该在几百毫秒内完成,绝不应超过 1 秒。

建议排查步骤

  1. 抓包分析(最关键):

    • Peer-Link 链路上抓包。
    • 过滤 M-LAG 控制报文(通常是 EtherType 0x894F 或类似的私有协议,具体看 H3C 定义)。
    • 观察:当 VM 迁移并发 Ping 时,交换机 B 是否发出了 MAC Sync Request?交换机 A 是否回复了 ACK
    • 如果 B 发了但 A 没回,或者 A 回了但没更新表项,这就是证据。
  2. 检查 MAC 同步统计:

    • 在核心 A、B 和接入 A、B 上执行 display m-lag mac-sync statistics
    • 关注 Total Sync MessagesFailed Messages
  3. 检查软件版本:

    • 105XG 和 6526XE 的 Comware 版本可能存在已知的 MAC 同步 Bug。建议查阅 Release Notes,寻找关于 "M-LAG MAC sync delay" 或 "Access port MAC sync" 的修复记录。
  4. 临时规避方案(治标不治本):

    • 如果无法立即升级版本,可以尝试在核心交换机上调整 mac-address aging-time(虽然这主要影响老化管理,不直接影响同步延迟)。
    • 确保 VM 侧的“迁移后通告”功能正常工作,并且 VM 网卡驱动支持快速 GARP。

暂无评论

编辑答案

你正在编辑答案

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

分享扩散:

提出建议

    +

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

确定

亲~检测到您登陆的账号未在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. 您是谁?(身份证明材料,可以是身份证或护照等证件)
我们认为知名企业应该坦然接受公众讨论,对于答案中不准确的部分,我们欢迎您以正式或非正式身份在根叔知了上进行澄清。

对根叔社区有害的内容

×

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

不规范转载

×

举报说明