MacOS – What dowload speeds is the Apple USB Ethernet Adapter capable of

ethernetmacosNetworkperformance

I have a 2014 MBP running 10.13.6.

The first two pics show my baseline ethernet performance, with the Speedtest desktop app, and with Fast.com, respectively. I get this same performance with wireless, ethernet→thunderbolt (Apple Thunderbolt Ethernet Adapter), and ethernet→USB (Monoprice [Realtek 1853] USB Ethernet Adapter, advertised as USB 3.0, 10/100/1000BASE-T).

The next pair show what I get with ethernet→USB with the Apple USB Ethernet Adapter (advertised as USB 2.0, 10/100BASE-T).

Both the Monoprice and Apple USB Ethernet adapters were plugged directly into the USB 3.0 port on my Mac.

Summary, and other info.:

enter image description here

My question: It seems that the Apple USB Ethernet adapter should have a ceiling of either 100 Mbps (100BASE-TX) or 480 Mbps. But I'm only getting low-30's Mbps download speeds with the Apple device. What should be its actual peformance?

BASELINE PERFORMANCE WITH MONOPRICE (REALTEK 1853) USB ETHERNET ADAPTER PLUGGED INTO USB 3.0; GET SAME PERFORMANCE WITH BOTH APPLE THUNDERBOLT ETHERNET ADAPTER, AND WIRELESS:

PERFORMANCE WITH APPLE USB ETHERNET ADAPTER PLUGGED INTO USB 3.0:

Best Answer

What is iPerf3

iPerf3 is a tool for active measurements of the maximum achievable bandwidth on IP networks.

Setting up iPerf3

You need two different nodes (computers) on your network. They can be macOS, Windows, BSD, or Linux; it really doesn't matter. Ideally, you want to connect via Ethernet; WiFi isn't recommended unless of course you're evaluating your WiFi bandwidth.

You can obtain the downloadable binaries from https://iperf.fr/ or install via the following:

  • MacPorts - port install iperf3
  • Homebrew - brew install iperf3

Other Operating Systems

  • FreeBSD - pkg add iperf or via ports cd /usr/local/ports/benchmarks/ && make install clean
  • Ubuntu & Debian Distros: apt-get iperf3
  • RedHat, CentOS, Fedora, etc: yum install iperf. You may need the EPEL repositories (yum install epel-release) There's two components - a server and a client.

    These commands are provided as a convenience; be sure to reference the user documentation for your specific OS regarding software installation.

Once installed on two different computers ideally on the exact same subnet on the same swtich run one instance as a server and the other as a client:

iPerf Server

% iperf3 -s

-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------

iPerf Client

% iperf3 -c IP <Address/Hostname>

Connecting to host node1, port 5201
[  7] local 192.168.1.33 port 55455 connected to 192.168.1.23 port 5201
[ ID] Interval           Transfer     Bitrate
[  7]   0.00-1.00   sec  65.1 MBytes   546 Mbits/sec                  
[  7]   1.00-2.00   sec  59.6 MBytes   500 Mbits/sec                  
[  7]   2.00-3.00   sec  62.3 MBytes   522 Mbits/sec                  
[  7]   3.00-4.00   sec  61.8 MBytes   519 Mbits/sec                  
[  7]   4.00-5.00   sec  61.5 MBytes   516 Mbits/sec                  
[  7]   5.00-6.00   sec  59.2 MBytes   497 Mbits/sec                  
[  7]   6.00-7.00   sec  60.6 MBytes   509 Mbits/sec                  
[  7]   7.00-8.00   sec  59.7 MBytes   501 Mbits/sec                  
[  7]   8.00-9.00   sec  62.6 MBytes   525 Mbits/sec                  
[  7]   9.00-10.00  sec  64.4 MBytes   540 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  7]   0.00-10.00  sec   617 MBytes   518 Mbits/sec                  sender
[  7]   0.00-10.00  sec   615 MBytes   516 Mbits/sec                  receiver

iperf Done.

The Results

You should see a similar output table on both the server and the client. From what this is telling me is that on a virtualized Gigabit Ethernet adapter, I'm getting about half of my bandwidth ~500Mbits throughput. I'm assuming that's due to overhead of "going up and down" networking stack of the the virtualized adapter.