There are times in tech when you get to hear about a particular piece of software written to do a particular job and you think “yeah I’ve heard about that, I should check it out.”
Then you forget all about it (well I do) and life moves on. Months / years / decades (yeah… I know…) later, you hear about the same piece of software and once again you think “oh yeah, I really should check that out.”
For me such a piece of software is iPerf.
Embarrassingly, I first heard of iPerf back in the VMware ESX 2.5 / 3.0.x days; circa 2005. Some three years before I started posting to inter-webs. Well, here we are, some 15 years later and I’ve finally got around to looking at iPerf and how to apply it to some simple network testing.
So here we are.
Overview
What is iPerf?
A widely used tool for network performance measurement and tuning. It is significant as a cross-platform tool that can produce standardized performance measurements for any network. iPerf has client and server functionality, and can create data streams to measure the throughput between the two ends in one or both directions. Typical iPerf output contains a time-stamped report of the amount of data transferred and the throughput measured.
With that in mind, lets get testing.
Downloading iPerf
Unsurprisingly given it’s age, there are a few versions of iPerf to choose from. For simplicity, we will concentrate here on the latest version of iPerf; version 3.x onwards.
The home of iPerf is iperf.fr. As can be seen from the download page, iPerf is available for lots of platforms including Windows, Linux, FreeBSD, Apple macOS, Android and Apple iOS.
In this post, I’ll be concentrating on the following distributions (click to grab your own copy):
Magic iPerf for Android | iPerf for Windows 64bit | iPerf 3 Wifi Speed Test |
iPerf Basics
Network testing with iPerf requires two instances of iPerf to be running at any one time:
- One instance running in server mode
- One instance running in client mode
In fact, iPerf is so simple to run to achieve basic throughput testing, the basic command set can be seen in the following diagrams:
Reverse client to server testing is achieved using the -R switch:
Results
Windows to Windows
Testing from VM to VM within VMware ESXi, I achieved the following:
Client:(Click image to zoom in) | Server:(Click image to zoom in) |
3.49Gbits per second. Not bad
Google Pixel to Windows
Testing from my Google Pixel via WiFi to my laptop connected via a network cable to my router, I achieved the following:
Client:(Click image to zoom in) | Server:(Click image to zoom in) |
304Mbits per second. Nice!
Apple iPhone to Windows
Testing from Apple iPhone via WiFi to my laptop connected via a network cable to my router, I achieved the following:
Client:(Click image to zoom in) | Server:(Click image to zoom in) |
251Mbits per second. Not quite as fast as the Pixel, bit still quite respectable
Apple iPhone to Google Pixel
Finally, testing from Apple iPhone to Google Pixel via WiFi, I achieved the following:
Client:(Click image to zoom in) | Server:(Click image to zoom in) |
WiFi to WiFi? No problem!
Bit slower at 112Mbits per second, still respectable
Conclusion
So there we have it. Some simple network throughput testing using freeware apps on common platforms.
Good to see the Pixel beat the iPhone
-Chris