NAS 诡异 UDP 丢包问题

2021-03-24 14:41:41 +08:00
 frostnotfall

说前提:

R720xd, Esxi 7.0 U2, Intel X540 万兆 SR-IOV 给 WinServer 2019 作为 NAS 使用

发现问题

发现 samba 局域网共享听歌总是卡顿,iperf3 测试 UDP 丢包达 80%以上!

处理经过

  1. 怀疑网线或网口问题,更换了多个,没解决
  2. 怀疑主力机问题,格式化重装系统+更换万兆网卡+尝试板载网卡,还是丢包
  3. ESXi 上 win server 从 2019 换到 2016,虚拟机都是彻底删除重新建立的,无效
  4. 怀疑局域网内设备问题,比如 ARP 缓存之类的,路由器+万兆交换机双双重置,无效
  5. 索性将 ESXi 整个格式化了重新安装,无效

细节阐述

  1. ESXi 上的 winserver 2019 做 server 端,主力机做 client 端,测试丢包
  2. 主力机做 server 端,ESXi 上的 winserver 2019 做 client 端,不丢包
  3. iperf3 测试过程中使用 wireshark 抓包,只看 UDP 协议,没有异常包出现

剩下只能怀疑是 windows 系统层面的问题了,但是这块参考 ESXi 和 windows 的策略均无效,

  1. 网卡参数,巨帧开关,测试还是丢包
  2. 网卡参数,接收缓冲区,传输缓冲区,改了还是丢包
  3. MTU 更改,还是丢包

头都大了,有大佬碰到过这种问题或有什么思路吗

3271 次点击
所在节点    程序员
20 条回复
defunct9
2021-03-24 15:16:39 +08:00
没头绪,开 ssh,让我上去看看
hs0000t
2021-03-24 15:19:30 +08:00
是不是跟 smb 版本有关系?
vibbow
2021-03-24 15:29:19 +08:00
第一想法是去更新 firmware...
willamtang
2021-03-24 15:35:25 +08:00
绕过交换机直连看看还丢包么
LaTero
2021-03-24 15:44:10 +08:00
iperf3 的 udp 好像有问题,换个再测测看?
tankren
2021-03-24 15:45:42 +08:00
搞个 Ubuntu 虚拟机测试先咯 虚拟化的便利性不利用干啥
dawnh
2021-03-24 15:55:34 +08:00
有没有经过交换机?有的话看一下交换机是不是又组播相关设置,IGMP snoop 之类的。虽然可能性不高但我见过类似案例的也就这一种可能了。
kokutou
2021-03-24 16:13:18 +08:00
就没试过绕过交换机吗。。。
frostnotfall
2021-03-24 17:15:20 +08:00
@hs0000t #2 这个应该不是吧,因为丢包没走 smb
frostnotfall
2021-03-24 17:16:19 +08:00
@willamtang #4 交换机也换过,直连到没试过,因为是虚拟化,宿主机和虚拟机都走一根网线
frostnotfall
2021-03-24 17:17:58 +08:00
@vibbow #3 firmware 倒是没想过,反正虚拟机上的 intel 驱动换了个遍,另外宿主机的驱动是集成的,想换也没别的
frostnotfall
2021-03-24 17:18:49 +08:00
@kokutou #8 试了,双方都连路由器,也没用
frostnotfall
2021-03-24 17:20:27 +08:00
@dawnh #7 IGMP snoop 交换机上有,但是从来没设置过,回去试试,但是好像也不对,都是走的交换机,为何 Ubuntu 没事
frostnotfall
2021-03-24 17:25:19 +08:00
@LaTero #5 有什么其他测试 UDP 丢包的工具吗?
weyou
2021-03-24 17:50:14 +08:00
网线直连 nas 网口测 iperf
ch2
2021-03-24 18:09:05 +08:00
tcpdump
hahastudio
2021-03-24 18:17:12 +08:00
我前几天更新 Windows 也遇到了类似的问题
我的 Windows 是装在 Parallels 里的虚拟机,NAS 是用 samba 共享的
目前我缓解的办法是在 Parallels 里不用独立网卡了,跟 macOS 共享网络然后就没问题了

想起来你可以试一下 TCP 有没有类似的问题,出问题的时候我用 Windows 访问 NAS 上的 web service 都有问题
LaTero
2021-03-24 19:07:47 +08:00
@frostnotfall 试试 nuttcp,我之前也是 iperf 报了很高的 udp 丢包,查到了很多相关 issue 和提问,看到 nuttcp 试了下就很正常。
gBurnX
2021-04-18 15:55:35 +08:00
1.首先要确保,除了 R720xd 之外,其他所有设备,包括别的电脑、网卡、路由器、交换机、网线或光纤,都必须在万兆环境下,测试过,并且能达到线速。

2.R720xd 全格,装 Windows,然后两台 Windows 直接用 Dukto 在内网测网速试试。

测速时,两台电脑请打开任务管理器来监视 CPU 使用率与带宽使用率,打开资源监视器来监视磁盘负载(活动时间)。确保这三个指标低于 100%。

3.如果 3 指标都低于 100%但速度达不到线速,两台电脑换 Linux 系统试试。Linux 系统建议用 ftp 来测试。
测试时,两端打开 top 来监视 CPU 使用率,用 iostat -x -m -d 1 来监视磁盘负载(%util ),用 dstat -t -n -d -c -m -p -s --tcp --udp 来监视网络。

如果还不行,换网卡。

还不行,怀疑机器硬件问题。可以用硬件设备的逐个替换法来实验。比如换个主板,换个 CPU,换个内存等等。
frostnotfall
2021-09-28 10:01:18 +08:00
同步后一个发帖:
困扰半年多的局域网速度问题终于解决了,其中原因令人“暖心”:
WinServer 2019 默认开启 RSC ( Receive Segment Coalescing ),可以搜索下 RSC 是什么,简单说就是大量小的数据包交由网卡合并成大包后再交给 CPU,(而之都是由 CPU 直接处理),因而降低了 CPU 的使用率。
微软的初衷是好的,但网很多网卡都出现了严重的性能下降问题,从 Intel 到我的 AQC107 都这样。
结合上面的抓包,丢包导致重传的原因是 CPU 误以为数据包超时了引发重传,其实这时候数据包正在网卡内部处理,正等着继续整合后续的数据包后统一再发给 CPU 的。
我发现问题的时候正是升级到 WinServer2019 之后,然后再退回 WinServer2016 还是不行,就没想是系统的问题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/764650

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX