Freebsd

在 FreeBSD 中通過 Asix AX88179 的乙太網性能在 1Gbit 連接時很慢

  • October 13, 2021

設置:

  • 帶 USB3.0 埠的戴爾筆記型電腦
  • TrueNas (12.2-RELEASE-p2 FreeBSD 12.2-RELEASE-p2 663e6b09467(HEAD) amd64)
  • 2 個 NIC(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 驅動程序應該可以正常工作,至少網際網路上的極少數結果是這樣說的。我真的對這種情況感到困惑,更糟糕的是,沒有太多相關資訊。

我錯過了什麼?

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”,那麼我必須說我在 Internet 上看到的報導比您更糟糕:

錯誤 225179 - axge 驅動程序的性能問題

USB 乙太網適配器 (AX88179) 問題

流量控制

然而,還有另一個機會。如果您只有“高速”,它很可能只相關。試試看netstat -i你有沒有很多Ierrs。在這種情況下嘗試:

ifconfig ue0 media auto mediaopt flow

上面的命令將重新建立與連結夥伴的連結並啟用乙太網流量控制。執行上述命令後,使用 ifconfig(8) 檢查目前媒體。當一切正常時,您應該在 ifconfig 輸出的媒體行中看到“rxpause”和“txpause”。注意,連結夥伴也應該支持流量控制,否則上面的命令無效。

請參閱錯誤 210488 - ue0 axge AX88179 Ierrs 錯誤在嚴重的網路負載下

如果我正確閱讀了 dmesg,則預設值為“自動流”,上面的命令將其更改為“流”。

不說?

如果以上都沒有讓你更進一步(或者有更好的答案),那麼考慮加入 Bug 225179。

引用自:https://unix.stackexchange.com/questions/632301