Open Article in New Tab
Problem Summary
Network adapter performance issues or unexpected speed throttling are commonly caused by local network bottlenecks, driver configurations, VPN services, or Wi-Fi priority settings rather than adapter hardware defects. Establishing a direct point-to-point connection and running an iPerf benchmark isolates network bottlenecks and confirms whether the adapter is achieving its rated throughput.
Isolating the Issue
We recommend starting by isolating the issue to the lowest OSI layer and working up. The Open Systems Interconnection (OSI) model is a framework for understanding network communications and is divided into seven layers:
-
Physical - This is the physical adapters, wires between two points. It can be thought of as each discrete component for example a USB to Ethernet adapter, or Ethernet cable.
-
Data Link Layer - This layer handles the direct communications between devices, using the hardware MAC Address. Communications at this layer are blocked by a router. (MAC address) hardware: Ethernet switch
-
Network Layer - This layer includes the IP address and allows for transmitting data between routed networks. (IPv4, IPv6) hardware: Router.
-
Transport Layer - This layer handles the end-to-end message delivery, and optionally error recovery and flow control, and operates in software. (TCP, UDP). For our purposes this as high as Plugable products really interact, the three next layers are independent of our products.
-
Session Layer - Opens, manages, and closes sessions between applications.
-
Presentation Layer - This includes SSL/TLS encryption, data formats like JPEG or PNG
-
Application Layer - This is the interaction layer for most users and applications, including web pages: HTML, JavaScript etc content.
Physical
When you receive no network connection at all, try a different Ethernet cable, Ethernet switch port, or bypass any devices and connections between the computer's network port and the Ethernet switch. Intermediary devices and connections (like keystone wall sockets, IP telephony systems, etc) can cause reduced network reliability. Check for the Ethernet port Link and Activity LEDs on both the computer's Ethernet adapter, and the switch port.
Data Link and Network
For simplicity these can be combined for testing, check to see if the system is receiving an IP address with terminal commands like ipconfig /all in Windows, or ip -a -br -4 in Linux. We can also check for local network connectivity by "pinging" a local resource like the router ping 192.168.1.1 where "192.168.1.1" is the IP address of the router - this will depend on your specific network configuration.
For performance related issues testing the local network, that is devices connected by one or more Ethernet switches, or even directly connected Ethernet port to Ethernet port is the first step in narrowing down an internet slowdown, to determine if the issue is between the computer and router, or between the router and internet service provider.
Local network performance testing can take a couple of forms, the most common is a utility like iPerf3 that is specifically designed for testing or benchmark a network connection. iPerf3 is designed specifically for Linux and Unix-like operating systems, it has been ported by 3rd parties to both Windows and macOS but has some limitations.
iPerf 3 Basic Benchmark
Testing with iPerf3 requires two computers - a server and a client. Generally we recommend a Linux system for the server, this will be more stable and provide more testing options, however a Windows or macOS server may also be used for basic testing. The client computer can also be Linux, Windows, or macOS, again with some limitations for non-Linux clients that shouldn't impact this this testing.
Installing iPerf3
For Linux install iPerf3 from your package manager: for Fedora (Redhat based distributions): sudo dnf -y install iperf3, or for Ubuntu (Debian based): sudo apt update && sudo apt install iperf3.
For Windows iPerf3 has been maintained by a 3rd party on GitHub and can be downloaded by selecting the Releases on the right column.
For macOS the easiest installation is through homebrew: brew install iperf3.
Connect the computer to the network - or directly to the client computer - direct connections are not covered here but you can look up how to manually set IP addresses on both computers. Then look up the IP address assigned to the server open a terminal and run the following command
- Windows:
ipconfig /all
- Linux:
ip -br -4 addr
- Mac: You will need to look up the IP address through the macOS Apple Menu > System Settings > Network settings menu
The server simply needs to run iPerf3 with the -s argument. Open a terminal and navigate to the iPerf3 executable (Windows - for Linux and macOS after installation iPerf3 will be in the PATH), and run the program
- Windows:
iperf3.exe -s
- Linux/mac:
iperf3 -s
Running a test
The most basic tests iPerf3 offers are 10-second upload or download tests, however there are many configuration options available to us. Open a terminal and navigate to the iPerf3 executable (Windows - for Linux and macOS after installation iPerf3 will be in the PATH), and run the program:
- Windows:
iperf3.exe -c Server_IP
- Linux/mac:
iperf3 -c Server_IP
This will start an upload test to the server and print the result after each second, and a summary result to the terminal.
We can similarly start a download test by adding the -R reverse direction flag with the following:
- Windows:
iperf3.exe -c Server_IP -R
- Linux/mac:
iperf3 -c Server_IP -R
Here is the example output of a download test from a local server at 192.168.1.250.
Connecting to host 192.168.1.250, port 5201
Reverse mode, remote host 192.168.1.250 is sending
[ 5] local 192.168.1.90 port 39982 connected to 192.168.1.250 port 5201
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 112 MBytes 935 Mbits/sec
[ 5] 1.00-2.00 sec 112 MBytes 936 Mbits/sec
[ 5] 2.00-3.00 sec 112 MBytes 937 Mbits/sec
[ 5] 3.00-4.00 sec 112 MBytes 936 Mbits/sec
[ 5] 4.00-5.00 sec 112 MBytes 936 Mbits/sec
[ 5] 5.00-6.00 sec 112 MBytes 936 Mbits/sec
[ 5] 6.00-7.00 sec 112 MBytes 937 Mbits/sec
[ 5] 7.00-8.00 sec 112 MBytes 936 Mbits/sec
[ 5] 8.00-9.00 sec 112 MBytes 936 Mbits/sec
[ 5] 9.00-10.00 sec 112 MBytes 936 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.04 sec 1.09 GBytes 935 Mbits/sec 0 sender
[ 5] 0.00-10.00 sec 1.09 GBytes 936 Mbits/sec receiver
iperf Done.
Each line shows the amount of data and average speed within a 1-second interval, this is great for catching intermittent issues, brief or transient slowdowns etc.
The summary (below the dashed lines) shows the Bitrate at 935 or 936 Mbits/second - measured by the client and serve respectively, with zero Retr (Re-transmits) from the client. This is pretty typical for a gigabit Ethernet connection (1000Mbps) through a home network (in this case two Ethernet switches).
Longer tests can be run by specifying the number of seconds: -t SECONDS where SECONDS is the time in seconds, for example 600 for 10 minutes. Additional settings and options can be found in the iPerf3 documentation and manual.
What does iPerf3 tell us?
iPerf3 tests the network bandwidth between two computers, by default this uses TCP (up to OSI Layer 4), for a local network segment. If the network performance between the client and server meets the expected bandwidth then performance issues are most likely outside of this scope. Internet speed testing can test the performance from the local network to the internet resource, however internet speeds will generally be less stable than local network speeds, many ISPs (Internet Service Providers) use shared bandwidth for multiple customers which can create slow times of day (for example when people start getting home from school/work), and may have asynchronous upload and download speeds. When comparing internet speed test results we recommend keeping your internet service expectations in mind.
For internet speed tests there are many options from different providers, these generally all operate through the web browser, introducing potential slowdowns from browser extensions and configuration, VPN (Virtual Private Network) connections and more. Here are some of the more common internet-based speed tests we see.
If benchmark speeds remain significantly lower than expected or the test fails to run, verify that both host computers support the targeted Ethernet link rates, test with a Cat 6a or better Ethernet cable, and temporarily disable security software that may filter local network traffic. If performance issues continue, contact Plugable support at support@plugable.com with your product model, host system specifications, and iPerf test results or PlugDebug diagnostic logs.
Applicable To
- Plugable products with Ethernet ports, or Plugable Ethernet adapters
- Systems running Windows, macOS, or Linux
If you have any questions please feel free to contact us at support@plugable.com and we'll be happy to help!