Benchmarking Network Throughput Between Linux Hosts
This article will cover various methods for testing network throughput between two Linux hosts.
Two basic utilities commonly found on Linux systems are dd and netcat.
You can use these tools together to benchmark a network by reading and
redirecting /dev/zero on one system to a raw TCP listener (netcat) on
another.
Create a TCP listener on node-a using netcat:
# netcat -l 9919 > /dev/null
NOTE: netcat might also be named nc or ncat depending on your
distribution and how netcat was installed.
Redirect dd read blocks from /dev/zero to a TCP connection on node-b
(substitute node-a IP address in the following command):
# dd if=/dev/zero bs=1M count=1024 > /dev/tcp/<ip-of-node-a>/9919
Adjust the count= option to control the amount of data you’re sending
across slower networks. The speed of the dd will be equal to the maximum
network throughput between node-a and node-b.
iperf is a utility specifically for testing or benchmarking network
throughput between hosts. It’s not as likely to already be present, but
can often be installed using the package manager on most modern Linux
distributions.
On one node, create an iperf server (by default iperf listens on all
interfaces):
# iperf -s
On the peer node, connect to the server as a client, specifying the server’s IP address:
# iperf -c <ip-of-server-iperf>
You should see the bandwidth of the network between nodes output in both the client and server outputs.
The Ctrl+C key combination will stop the iperf server.
Reviewed 2020/12/01 - DGT