Diagnosing LAN Speeds
After having network issues/degradation while trying to access a work server, I had to diagnose the network the server is connected to. I had to set myself on a mission - and after realising that the seems to be very limited tools for such things, I stumbled upon 'iperf'.
Iperf is a command-line tool used in the diagnostics of network speed issues, it measures the maximum network throughput a server can handle. It is particularly useful when experiencing network speed issues, as you can use Iperf to determine which server is unable to reach maximum throughput.
Iperf installation
Iperf must be installed on both computers you are testing the connection between.
$ sudo apt-get install -y iperf
TCP Clients & Servers
Iperf requires two systems because one system must act as a server, while the other acts as a client. The client connects to the server you’re testing the speed of.
- On the node you wish to test, launch Iperf in server mode:
iperf -s
You should see output similar to:
2. On your second Linode, connect to the first. Replace dbelab04
with the first node’s IP address in my case i'm using the hostname
iperf -c dbelab04
You should see output similar to:
3. You will also see the connection and results on your Iperf server. This will look similar to:
4. To stop the Iperf server process, press CTRL + c
.
--------------------------------------------------------------------------------------------------
You can do pretty much the same thing with plain old nc
(netcat) if you're that way inclined. On the server machine:
$ nc -vvlnp 12345 >/dev/null
You should see something similar to:
And the client can pipe a 10Gb of zeros through dd
over the nc
tunnel.
$ dd if=/dev/zero bs=10M count=1K status=progress | nc -vvn 192.168.4.23 12345
You should see something similar to:
The timing there is given by dd
but it should be accurate enough as it can only output as fast the pipe will take it. If you're unhappy with that you could wrap the whole thing up in a time
call.
Remember that the result is in megabytes so multiply it by 8 to get a megabits-per-second speed. The demo above is running at 11.8mbps due to my laptops network limitation and number of hops...