为什么 USB3 5Gbe 网络适配器在 ubuntu 20.04 服务器上的速度只有上传速度的一半,并且下载速度限制为 800 Mbit/s,但在 5gig 光纤上上传速度却为 2Gbit/s?

为什么 USB3 5Gbe 网络适配器在 ubuntu 20.04 服务器上的速度只有上传速度的一半,并且下载速度限制为 800 Mbit/s,但在 5gig 光纤上上传速度却为 2Gbit/s?

我已将 QNAP QNA-UC5G1T 5Gbe usb 网络适配器连接到运行 Ubuntu 服务器 20.04.5 LTS 的 Raspberry Pi。我还有一个 5Gig 光纤互联网连接和一个 10G 交换机和 10G 路由器,在 Ubuntu 桌面上下载和上传的速度通常约为 4Gbit/s。

我必须通过编辑 /etc/netplan/50-cloud-init.yaml 中的文件来启用此适配器作为 eth1 接口,例如通过添加 eth1 条目

sudo nano /etc/netplan/50-cloud-init.yaml

network:
    ethernets:
        eth0:
            dhcp4: true
            optional: true
        eth1:
            dhcp4: true
            optional: true
    version: 2

然后运行

sudo netplan apply

它仅允许低于 1GB/s 的下载速度,更像是 750Mbits/s,但在 eth1 上上传速度达到近 2GB/s。我正在使用 speedtest-cli 测试它以估算速度。

此外,当我跑步时

ip a show eth1

它输出 qlen 为 1000,但实际应该是 5000

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff
    inet XXX.XXX.XX.XXX/XX brd XXX.XXX.XX.XXX scope global dynamic eth1
       valid_lft 85855sec preferred_lft 85855sec
    inet6 xxxx::xxxx:xxxx:xxxx:xxxx/xx scope link 
       valid_lft forever preferred_lft forever

ifconfig

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet XXX.XXX.XX.XXX  netmask XXX.XXX.XXX.0  broadcast XXX.XXX.XX.XXX
        inet6 xxxx::xxxx:xxxx:xxxx:xxxx  prefixlen 64  scopeid 0x20<link>
        ether 00:11:22:33:44:55  txqueuelen 1000  (Ethernet)
        RX packets 4195  bytes 992272 (992.2 KB)
        RX errors 0  dropped 47  overruns 0  frame 0
        TX packets 4107  bytes 595608 (595.6 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

这表明 txqueuelen 为 1000

但当我跑步时

ethtool eth1

它输出并清晰显示 5000baseT/Full 的链接模式和速度:5000Mb/s

Settings for eth1:
    Supported ports: [ TP ]
    Supported link modes:   100baseT/Full 
                            1000baseT/Full 
                            2500baseT/Full 
                            5000baseT/Full 
    Supported pause frame use: No
    Supports auto-negotiation: Yes
    Supported FEC modes: Not reported
    Advertised link modes:  100baseT/Full 
                            1000baseT/Full 
                            2500baseT/Full 
                            5000baseT/Full 
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes
    Advertised FEC modes: Not reported
    Speed: 5000Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: on
    MDI-X: Unknown
Cannot get wake-on-lan settings: Operation not permitted
    Current message level: 0x00000007 (7)
                   drv probe link
    Link detected: yes

当我跑步的时候sudo lshw -C network

我明白了

  *-network:0               
       description: Ethernet interface
       physical id: 2
       logical name: eth0
       serial: 55:44:33:22:11:00
       capacity: 1Gbit/s
       capabilities: ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=bcmgenet driverversion=v2.0 link=no multicast=yes port=MII
  *-network:1
       description: Ethernet interface
       physical id: 3
       bus info: usb@2:2.1
       logical name: eth1
       serial: 00:11:22:33:44:55
       capacity: 1Gbit/s
       capabilities: ethernet physical tp 100bt-fd 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=aqc111 driverversion=22-Aug-2005 duplex=full firmware=3.1.6 ip=XXX.XXX.XX.XXX link=yes multicast=yes port=twisted pair

我的网络:1 或 eth1 清楚显示容量限制为 1Gbit/s,并显示最大容量为 1000bt-fd。

我已经弄清楚了如何通过“在文件“/lib/udev/rules.d/70-persistent-net.rules”中配置 udev 规则”将 的 qlen 属性更新ip a show eth1为 5000,并将 的 txqueuelen更新为以下内容:ifconfig eth1

SUBSYSTEM=="net", ACTION=="add|change", DRIVERS=="aqc111", ATTR{address}=="00:11:22:33:44:55", KERNEL=="eth*", NAME="eth1", ATTR{tx_queue_len}="5000"

上述说明来自此处的 suse 支持文档:https://www.suse.com/zh-cn/support/kb/doc/?id=000019932

现在重启后,ip a show eth1和都ifconfig eth1显示更新后的 5000 属性。但sudo lshw -C network命令仍然显示容量为 1Gbit/s,最高容量仍为 1000bt-fd。

有没有办法更新 输出的这些值lshw -C network,以便适配器可以下载超过 1Gbit/s 的速度?为什么上传速度在 2Gbit/s 左右,而不像下载速度那样受到 1Gbit/s 容量的限制?

我应该指出,Ubuntu 服务器和桌面版都包含此网络适配器的驱动程序。我还尝试安装 Marvell 网站上的最新驱动程序,但这没有任何变化。它们是 aqc111 驱动程序。

我也能够按预期在 Ubuntu 桌面上运行它,无需任何特殊配置,只需即插即用。我刚刚运行了速度测试,在 Ubuntu Desktop 20.04.5 上获得了大约 2.2Gbit/s 的下载速度和近 3.5Gbit/s 的上传速度。

但出于某种原因,我很难弄清楚是否有办法提高 Ubuntu 服务器的下载速度。

提前致谢

答案1

Raspberry PI 是你的限制因素。内部总线限制了 USB。Pi 在许多方面都很棒,但不适合高吞吐量网络,

相关内容