USB 速度验证

USB 速度验证

设置:

  • 带 USB3.0 端口的戴尔笔记本电脑
  • TrueNas (12.2-RELEASE-p2 FreeBSD 12.2-RELEASE-p2 663e6b09467(HEAD) amd64)
  • 2 个网卡(ugreen usb3.0 至 1Gbit 以太网,每个网卡有 3 个 USB 端口)

两个设备均已使用 axge 驱动程序成功安装。一个硬盘通过 USB 连接到第一个设备,并获得接近 100Mb/s 的基准(因此每个设备上的 USB3.0 集线器工作正常)。

    root@truenas[~]# ifconfig ue0
    ue0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8000b<RXCSUM,TXCSUM,VLAN_MTU,LINKSTATE>
        ether 00:0e:c6:7c:e2:32
        inet 192.168.1.200 netmask 0xffffff00 broadcast 192.168.1.255
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
        nd6 options=1<PERFORMNUD>
    root@truenas[~]# ifconfig ue1
    ue1: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=80009<RXCSUM,VLAN_MTU,LINKSTATE>
        ether 00:0e:c6:7c:e1:cd
        inet 192.168.1.201 netmask 0xffffff00 broadcast 192.168.1.255
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
        nd6 options=1<PERFORMNUD>
root@truenas[~]# dmesg
...
re0: <RealTek 810xE PCIe 10/100baseTX> port 0x2000-0x20ff mem 0xc1404000-0xc1404fff,0xc1400000-0xc1403fff irq 16 at device 0.0 on pci2
re0: Using 1 MSI-X message
re0: ASPM disabled
re0: Chip rev. 0x40800000
re0: MAC rev. 0x00400000
miibus0: <MII bus> on re0
rlphy0: <RTL8201E 10/100 media interface> PHY 1 on miibus0
rlphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto, auto-flow
re0: Using defaults for TSO: 65518/35/2048
re0: Ethernet address: XX:XX:XX:XX:XX:XX
...
ugen0.5: <ASIX Elec. Corp. AX88179> at usbus0
axge0 on uhub7
axge0: <NetworkInterface> on usbus0
...
miibus1: <MII bus> on axge0
rgephy0: <RTL8169S/8110S/8211 1000BASE-T media interface> PHY 3 on miibus1
rgephy0:  none, 10baseT, 10baseT-FDX, 10baseT-FDX-flow, 100baseTX, 100baseTX-FDX, 100baseTX-FDX-flow, 1000baseT-FDX, 1000baseT-FDX-master, 1000baseT-FDX-flow, 1000baseT-FDX-flow-master, auto, auto-flow
ue0: <USB Ethernet> on axge0
ue0: Ethernet address: XX:XX:XX:XX:XX:XX
ugen0.6: <GenesysLogic USB3.1 Hub> at usbus0
uhub8 on uhub1
uhub8: <GenesysLogic> on usbus0
uhub8: 4 ports with 4 removable, self powered
ugen0.7: <ASIX Elec. Corp. AX88179> at usbus0
axge1 on uhub8
axge1: <NetworkInterface> on usbus0
miibus2: <MII bus> on axge1
rgephy1: <RTL8169S/8110S/8211 1000BASE-T media interface> PHY 3 on miibus2
rgephy1:  none, 10baseT, 10baseT-FDX, 10baseT-FDX-flow, 100baseTX, 100baseTX-FDX, 100baseTX-FDX-flow, 1000baseT-FDX, 1000baseT-FDX-master, 1000baseT-FDX-flow, 1000baseT-FDX-flow-master, auto, auto-flow
ue1: <USB Ethernet> on axge1
ue1: Ethernet address: XX:XX:XX:XX:XX:XX
ugen0.8: <AsmediaASM1051 USB3.0  Serial> at usbus0
umass0 on uhub8
umass0: <AsmediaASM1051 USB3.0  Serial, class 0/0, rev 3.00/1.00, addr 7> on usbus0
umass0:  SCSI over Bulk-Only; quirks = 0xc100
umass0:4:0: Attached to scbus4
(probe0:umass-sim0:0:0:0): REPORT LUNS. CDB: a0 00 00 00 00 00 00 00 00 10 00 00
(probe0:umass-sim0:0:0:0): CAM status: SCSI Status Error
(probe0:umass-sim0:0:0:0): SCSI status: Check Condition
(probe0:umass-sim0:0:0:0): SCSI sense: ILLEGAL REQUEST asc:20,0 (Invalid command operation code)
(probe0:umass-sim0:0:0:0): Error 22, Unretryable error
....
lo0: link state changed to UP
re0: link state changed to DOWN
ue0: link state changed to UP
ue1: link state changed to UP
...
ue0: link state changed to DOWN
ue1: link state changed to DOWN
ue0: link state changed to UP
ue1: link state changed to UP

问题:当我通过每个接口(ue0、ue1)测量互联网连接时,我最多只能获得 60Mbits,但应该在 300Mbits 左右(这是我的 ISP 资费)。

当我设置ifconfig ue0 media 100baseTX mediaopt full-duplex为接口时,我获得了完整的 100Mbits 连接。但使用默认的 1000baseT 时,如果提供高达 60Mbits 的带宽,效果会更差。


我用 Ubuntu 18 的 LiveCD 做了一个简单的测试,我确实使用相同的设置获得了完整的互联网连接,这意味着问题不在于电缆、路由器、提供的互联网连接、USB 端口等。


AXGE 驱动程序应该工作正常,至少互联网上的极少数结果表明这一点。我对这种情况真的很困惑,更糟糕的是没有那么多相关信息。

我缺少什么?

答案1

USB 速度验证

我首先要考虑的是 USB 部分。

从您添加的片段中我们可以看到:

Mortherbord USB (unknown) -> Unknown (Prabably GenesysLogic) (uhub7) -> axge0 (ugen0.5)
Mortherbord USB (unknown) -> GenesysLogic (uhub8) -> axge1 (ugen0.7)

所以我们有不少于2个USB芯片组(戴尔主板、Ugreen集线器)和驱动程序或其组合可以与我们一起玩游戏。

首先我会这样做:

grep usbus /var/run/dmesg.boot

在这里,我将了解我正在使用哪些 USB 驱动程序以及支持哪些速度。戴尔是否使用常规 EHCI、UHCI、OHCI 或 XHCI 驱动程序?是否显示为“超高速?”

我们将寻找以下内容:

usbus0: 5.0Gbps Super Speed USB v3.0
usbus1: 480Mbps High Speed USB v2.0
usbus2: 480Mbps High Speed USB v2.0

然后我会查看输出,usbconfig它告诉我们不同端口的速度。

在你的设置中我会尝试:

usbconfig -d ugen0.5 dump_device_desc
usbconfig -d ugen0.7 dump_device_desc

再次确保您看到 axge0 和 axge1 的“Super Speed”。

如果您没有看到“Super Speed”,请验证您在 Linux 下是否看到相同的速度。高速足以让你的300Mbps饱和。

所以这个问题理论上可以与USB相关。也许 Linux 驱动程序对您的芯片组有一些怪癖,这可以解释这种差异。

其他报道

如果您看到“Super Speed”,那么我必须说我在互联网上看到的报道比您更糟糕:

Bug 225179 - axge 驱动程序的性能问题

USB 以太网适配器 (AX88179) 问题

流量控制

然而还有另一个机会。它很可能仅在您只有“高速”时才有意义。试试看netstat -i你是否有很多Ierrs。在这种情况下尝试:

ifconfig ue0 media auto mediaopt flow

上述命令将重新建立与链路伙伴的链路并启用以太网流量控制。执行上述命令后,使用 ifconfig(8) 检查当前媒体。当一切正常时,您应该在 ifconfig 输出的媒体行中看到“rxpause”和“txpause”。注意,链接伙伴还应该支持流量控制,否则上面的命令不起作用。

Bug 210488 - 高网络负载下的 ue0 axge AX88179 Ierrs 错误

如果我正确读取 dmesg,默认值是“自动流”,上面的命令将其更改为“流”。

没有骰子?

如果以上方法都无法让您取得任何进展(或者有更好的答案),请考虑参与 Bug 225179。

答案2

我的两个 AX88179 适配器也遇到同样的问题,一个位于扩展坞中,另一个位于 dingle 中。在 Windows 和 Linux Live CD 下,我的速度约为 5-6MB/s。这些芯片存在一些奇怪的错误,当你用谷歌搜索它时,你可以找到人们报告这个错误。

相关内容