V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
frostnotfall
V2EX  ›  程序员

NAS 诡异 UDP 丢包问题

  •  
  •   frostnotfall · 2021-03-24 14:41:41 +08:00 · 3012 次点击
    这是一个创建于 1128 天前的主题,其中的信息可能已经有所发展或是发生改变。

    说前提:

    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 更改,还是丢包

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

    第 1 条附言  ·  2021-03-24 17:24:20 +08:00

    忘了说了,

    1. 宿主机下的另一个虚拟机Ubuntu,同样的SR-IOV虚拟化网卡,UDP都是0.0x%的丢包率,应该算是不存在丢包了
    2. 直接搞块pcie的独立万兆网卡,直通上去后还是丢包

    winserver的嫌疑最大,但不知从何处下手

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

    想起来你可以试一下 TCP 有没有类似的问题,出问题的时候我用 Windows 访问 NAS 上的 web service 都有问题
    LaTero
        18
    LaTero  
       2021-03-24 19:07:47 +08:00 via Android   ❤️ 1
    @frostnotfall 试试 nuttcp,我之前也是 iperf 报了很高的 udp 丢包,查到了很多相关 issue 和提问,看到 nuttcp 试了下就很正常。
    gBurnX
        19
    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
        20
    frostnotfall  
    OP
       2021-09-28 10:01:18 +08:00
    同步后一个发帖:
    困扰半年多的局域网速度问题终于解决了,其中原因令人“暖心”:
    WinServer 2019 默认开启 RSC ( Receive Segment Coalescing ),可以搜索下 RSC 是什么,简单说就是大量小的数据包交由网卡合并成大包后再交给 CPU,(而之都是由 CPU 直接处理),因而降低了 CPU 的使用率。
    微软的初衷是好的,但网很多网卡都出现了严重的性能下降问题,从 Intel 到我的 AQC107 都这样。
    结合上面的抓包,丢包导致重传的原因是 CPU 误以为数据包超时了引发重传,其实这时候数据包正在网卡内部处理,正等着继续整合后续的数据包后统一再发给 CPU 的。
    我发现问题的时候正是升级到 WinServer2019 之后,然后再退回 WinServer2016 还是不行,就没想是系统的问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3487 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 11:15 · PVG 19:15 · LAX 04:15 · JFK 07:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.