组网:
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侧勾选了迁移后“通告交换机”功能
正常流程应该是:
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 秒延迟通常有以下几种可能:
验证方法:
在交换机 A 和 B 上执行 display m-lag mac-sync statistics。查看是否有 Sync Message Send Fail 或 Drop 计数增加。
问题分析:
这是一个典型的核心间 MAC 不同步导致的问题。
VM_MAC -> Out: Peer-Link (指向 C/D)。这是正确的。VM_MAC 依然指向 Peer-Link (指向 A/B) 或者表项已老化但未刷新。VM_MAC 在 AB 组(因为它不知道 VM 去了 CD)。为什么核心 A 没同步给核心 B?
核心 A 和核心 B 之间也是 M-LAG 关系(通常称为 Core-M-LAG)。当核心 A 学到新 MAC(指向 CD)时,它必须通过核心间的 Peer-Link 把这个 MAC 同步给核心 B。
如果核心 B 没更新,说明核心间的 MAC 同步失败了。
display m-lag drcp stat in br 中的 30 秒是 DLS (Dynamic Link State) 或 DRCP 的状态同步周期,用于检测链路状态和选举主备,这与 MAC 地址表项同步无关。MAC 同步是独立的过程。[Switch] m-lag mac-sync enable抓包分析(最关键):
MAC Sync Request?交换机 A 是否回复了 ACK?检查 MAC 同步统计:
display m-lag mac-sync statistics。Total Sync Messages 和 Failed Messages。检查软件版本:
临时规避方案(治标不治本):
mac-address aging-time(虽然这主要影响老化管理,不直接影响同步延迟)。
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论