HCI网络问题有一大类是需要定界丢包是来源 HCI 还是物理网络,本篇kb针对此类问题给出一个通用的排查思路。
总体来说,这类边界问题涉及以下几类问题:
1. 识别是哪种场景丢包?
一般会有两种场景:
2. 抓包确认丢包情况
抓包是最基础的一环,如果还不懂,可以看这篇kb:
http://tskb.sangfor.com/forum.php?mod=viewthread&tid=31215
如果是ping网关的场景,只需要抓取对应主机的物理口即可(如果是虚拟机ping网关,就抓业务口;如果是管理网ping网关,就抓管理口)
如果是两台主机之间丢包场景,就分别抓两台主机的物理口
3. 根据抓包情况确认网口丢包统计
如果抓包发现包出了 HCI,这个时候包不一定就丢在物理网络,还需要排除物理网卡的可能;
因为tcpdump抓包是在二层,下面还有驱动和网卡硬件本身存在丢包的可能;
这篇文章其实也详细总结了这种情况:
http://tskb.sangfor.com/forum.php?mod=viewthread&tid=34312
PS:网口统计除了关注 err/drop 之外,还要关注 rx packets 和 tx packets 两项,如果这两项没变,说明网口硬件或驱动本身存在问题。
4. 物理网络抓包确认
如果网卡收发包统计都正常,问题时间点也没有 err/drop,那大概率是丢在物理网络,需要在物理网络抓包;
物理网络抓包一般要在交换机上镜像抓包,而能镜像的前提是要电口,如果是光口就比较麻烦(需要光转电的模块);
如果实在没有条件抓包,那还可以用一台 PC 直连 HCI 的网口测试,在 PC 上抓包确认;
如果还是没有条件,那可以简单粗暴对接两台 HCI 的网口,完全排除交换机的影响。
PS:走到这一步需要有确凿的证据,不然这么折腾会比较耗时,也容易产生满意度问题。
下面举几个典型的例子:
1. 外部交换机没配聚合导致有环,直观现象可能是“业务虚拟机到网关不通丢包等”
排查步骤:
(1)建议先用dpdoctor扫一遍,如果是 680及之后的版本,dp日志会记录环路日志,可以快速锁定问题
(2)环路日志需要分析确认下,不能看到有环路日志就丢一句话“查物理网络”,得拿出证据!
比如下面这条环路日志:
mac地址“fe-fc-fe-9c-99-70”在设备 3 的端口 1 和 3 上漂移。
在 CLI 确认设备 3 是 def_bvs_channel3
端口 1 和 3 分别是:
如下图:也就是 VM 的 MAC 在下图的两个红色点来回漂移;
出现这种情况只能是 VM 发出的包从一个成员口出去,再从另一个成员口环回来了!
(3)如果还想进一步确认,可以在两个成员口分别抓包来实锤
如下在两个成员口分别抓包,同一个 ARP 广播包在两个成员口都能抓到;
那如何判断哪个包是出去的,哪个是环进来的?
可以看包的长度,如果 length=46,就是出去的;如果 length=60,就是环进来的,因为进来的包会封上 VLAN 头。
另外,如果是通用模式接管的网卡(还不知道网卡的DPDK模式或是通用模式,可以看这篇文章:http://tskb.sangfor.com/forum.php?mod=viewthread&tid=31215),可以抓 p_ethX 口,通过指定 inbound 或 outbound 来进行区分:
有了这个截图,基本上证据已经很确凿了!
2. 外部交换机配置错误(如VLAN、igmp_snooping等)
这类问题一般都是网络不通,抓包看 HCI 发出了包,但未收到回复;
如果观察网口没有丢包统计,网口也正常收发包,那一般都是外部的问题。
igmp_snooping没开案例:
http://tskb.sangfor.com/forum.php?mod=viewthread&tid=31902
3. 还有一种情况,虽然外部没回包,但却是 HCI 的问题
比如 HCI 的两台 VM 配了相同的 MAC,那么外部交换机就会在两个口学到相同的 MAC,寻址的时候,如果走了另外的口就会导致丢包。
4. 如果发现网卡在丢包期间有明显丢包统计,那问题一般出在网卡。