V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
frostnotfall
V2EX  ›  程序员

NAS 诡异 UDP 丢包问题

  •  
  •   frostnotfall · Mar 24, 2021 · 3998 views
    This topic created in 1870 days ago, the information mentioned may be changed or developed.

    说前提:

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

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

    Supplement 1  ·  Mar 24, 2021

    忘了说了,

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

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

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

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