Supported and working external Gigabit NIC
-
Hi.
I have seen multiple people asking the same question I have about a good external gigabit adapter that would work nicely with pfSense.
I just wanted to share my experience with 2 different USB 3.0 adapters that did not work as expected, and my current solution that works flawlessly, even though not optimal.
To verify the bandwidth I used iperf3 to the pfsense box from a machine connected to the NIC's network.
Tests were conducted on an Intel NUC (NUC11TNKi3) with a Tiger Lake CPU, which should not be a bottleneck at all for this (also, I checked the CPU usage while testing and it was very low).
Version of pfSense: 2.5.2-RELEASE.
Results:
-
ASUS OH102, Realtek RTL8153 chipset: https://www.asus.com/Accessories/Docks-Dongles-and-Cable/ASUS-Docks-Dongles-and-Cable/OH102-U3-TO-RJ45-DONGLE/ : approximately 90Mbps maximum
-
TRENDnet TU3-ETG, Asix ax88179 chipset:
https://www.trendnet.com/products/usb-adapter/usb-3.0-to-gigabit-adapter-TU3-ETG : approximately 120Mbps maximum
Current solution:
I had an unused Apple Thunderbolt 3 to Thunderbolt 2 adapter as well as an Apple Thunderbolt to Ethernet adapter.
It is not optimal in the practical sense of having 2 dongles connected in a row to the computer, but the performance is here: well over 900Mbps.
Freebsd uses the
bge
Broadcom BCM57xx/BCM590x Gigabit/Fast Ethernet driver:bge0: <Thunderbolt Ethernet, ASIC rev. 0x57766000> mem 0x6000010000-0x600001ffff,0x6000000000-0x600000ffff at device 0.0 on pci4 bge0: CHIP ID 0x57766000; ASIC REV 0x57766; CHIP REV 0x577660; PCI-E miibus0: <MII bus> on bge0 brgphy0: <BCM57765 1000BASE-T media interface> PHY 1 on miibus0 brgphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-master, 1000baseT-FDX, 1000baseT-FDX-master, auto, auto-flow bge0: Using defaults for TSO: 65518/35/2048 bge0: Ethernet address: XX:XX:XX:XX:XX:XX [redacted]
I would appreciate if someone has found an alternative compact solution for a performant usb 3 or thunderbolt 3 NIC that does not involve a thunderbolt external dock, and in a reasonable price range.
In any case, best of luck everyone with your installation endeavours.
-
-
The axe(4) driver is usually about as good as it gets for USB NICs.
Was is using axe or cdce? The generic cdce driver usually works but with limited features/speed.Really though just don't use USB if you can avoid it.
It is interesting that it's using a PCI device driver in that via Thunderbolt.
Steve
-
@stephenw10 Hi Steve, thanks for your message!
Here is the detection log:
ugen1.2: <ASIX Elec. Corp. AX88179> at usbus1 axge0 on uhub0 axge0: <NetworkInterface> on usbus1 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 [redacted]
So,
axge
is being used.The device is set as super speed (USB 3.0), and has only 1 configuration (so, no set_config magic):
ugen1.2: <ASIX Elec. Corp. AX88179> at usbus1, cfg=0 md=HOST spd=SUPER (5.0Gbps) pwr=ON (124mA) ... bNumConfigurations = 0x0001 ...
No issue with the interface speed detection, 1000baseT:
ue0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 description: WAN options=8000b<RXCSUM,TXCSUM,VLAN_MTU,LINKSTATE> ether XX:XX:XX:XX:XX:XX [redacted] inet6 XXXX::XXXX:XXXX:XXXX:XXXX%ue0 prefixlen 64 scopeid 0x7 [redacted] inet XXX.XXX.XXX.XXX netmask 0xffffff00 broadcast XXX.XXX.XXX.255 [redacted] media: Ethernet autoselect (1000baseT <full-duplex>) status: active nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
Also, no packet error shown with
netstat
, before anyone asks.Here is a
top
excerpt while testing:last pid: 54074; load averages: 0.19, 0.25, 0.24 up 0+10:59:43 08:20:17 176 threads: 5 running, 146 sleeping, 25 waiting CPU: 0.0% user, 0.0% nice, 0.1% system, 0.0% interrupt, 99.9% idle Mem: 24M Active, 48M Inact, 290M Wired, 73M Buf, 7119M Free Swap: 3881M Total, 3881M Free PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU COMMAND 11 root 155 ki31 0B 64K CPU1 1 659:00 100.00% [idle{idle: cpu1}] 11 root 155 ki31 0B 64K RUN 3 658:51 100.00% [idle{idle: cpu3}] 11 root 155 ki31 0B 64K CPU2 2 658:49 98.10% [idle{idle: cpu2}] 11 root 155 ki31 0B 64K CPU0 0 658:39 91.06% [idle{idle: cpu0}] 16 root -72 - 0B 176K - 1 0:11 8.98% [usb{usbus1}] 12 root -88 - 0B 400K WAIT 0 0:07 6.88% [intr{irq272: xhci1}] 0 root -76 - 0B 624K - 2 0:03 1.27% [kernel{if_io_tqg_2}] 0 root -76 - 0B 624K - 0 0:02 0.39% [kernel{if_io_tqg_0}] 0 root -76 - 0B 624K - 1 0:01 0.29% [kernel{if_io_tqg_1}] 0 root -76 - 0B 624K - 3 0:00 0.20% [kernel{if_io_tqg_3}] ...
I get approximately 90Mbps of real internet traffic bandwidth (through fast.com), so not great at all compared to 900Mbps+ for the thunderbolt adapter.
-
@c_c Oh wow.
I have randomly tried
ifconfig ue0 media auto mediaopt flow
, even though I did not see any particular error innetstat
and the bandwidth jumped to ~280Mbps.Not optimal, but that's a great improvement...!
Anyway, this adapter is still not a great option for gigabit internet with pfSense.
-
What is it connected to? The fact it requires flow control is unusual. Most connections work fine or better without it. It implies it's being overloaded somewhere.
There's not much you can do though, there are no tunables for that driver listed. It is using the driver correctly as you say.Steve
-
@stephenw10 it’s connected to the fiber appliance from the isp.
I think it’s a driver issue with that particular USB-ethernet chipset though: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=210488
Looks like flow control improves the performance of the driver for some reason.
-
@c_c said in Supported and working external Gigabit NIC:
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=210488
Ah, interesting, Do you see the very high error rate when flow control is not enabled?