Iperf is a very handy network monitoring utility that can run network speed tests, as well as measure jitter and packet loss. It is available under Windows, OSX, and Linux. To run an Iperf test you need two hosts: the client or transmitter is the network traffic generator and the server or receiver that receives the traffic and provides the bandwidth measurement. If you need to run Iperf across multiple locations it can be cost prohibitive to deploy dedicated workstations for just this purpose. That is why the advent of the Raspberry Pi, a $50 Linux computer, was received with enthusiasm by network engineers: now you can have low-cost workstations that can be deployed easily across the network to be used for Iperf and other types of testing.
Over the last three years, following the Raspberry Pi’s lead, we have seen several other low-cost single boards coming under the spotlight. Each one has pros and cons in terms of pricing, availability, features, support, and more. In this post, I will present how five platforms perform in terms of Iperf bandwidth. The platforms are the Raspberry Pi versions B+ and 2, the Odroid C1+, the Banana Pi, and the Utilite Standard. The first two have FastE interfaces and the rest GbE. For details about the specs and features of each platform you can take a look at my recent post beyond Raspberry Pi.
Methodology for Iperf Comparison on Single Board Computers
The tests were done against a quad-core 3.3GHz Debian workstation with a 1GbE interface. Each device was connected to the workstations with a 3’ patch cable. Each test was performed 10 times and the measurements were averaged. No other computationally intensive processes were running on the devices.
The tests were done with the following TCP Iperf commands:
iperf -c
iperf -s
For a more details on Iperf and its features, you can read this tutorial on Raspberry Pi and Distributed Network Monitoring.
Iperf Results
The results shown in the following bar graph represent the bandwidth achieved by the Iperf test when each device plays the role of the transmitter and receiver. If you were expecting to get the same bandwidth regardless of whether the device is a transmitter or a receiver, you have to keep in mind that these are not full blown workstations and they were designed and built with strict cost and footprint requirements. For example, the Odroid C1+ has a 4K buffer size on the receiving side of the interface, but only a 2K one on the transmitting side. Consequently, when it plays the role of the receiver it achieves more than double performance. Similar hardware limitations exist for the other platforms.
The device with the most consistency between the roles of a receiver and a transmitter is the Raspberry Pi 2. And although it has the CPU power (quad-core x 900 MHz) to achieve more than 100 Mbps, its maximum bandwidth is limited by its 10/100 interface.
Between the GbE devices, the Utilite Standard achieves the highest bandwidth overall (938.1 Mbps as a transmitter) and for average bandwidth (816.9 Mbps)]. In terms of average performance, the Banana Pi comes in at a close second (793.3 Mbps), and the Odroid C1+ third (671.2 Mbps).
As you can see, apart from the Raspberry Pi 2, the rest of the devices exhibit significantly different performance when acting as a transmitter or a receiver. On top of that, some devices have higher performance when they are a transmitter and others when they are a receiver. The Banana Pi and the Utilite achieve close to 700Mpbs regardless of their role as a transmitter or a receiver.
Conclusion
If you search around you will find several other single board platforms with similar specifications that you could use as Iperf endpoints. Whichever you choose, make sure you know what bandwidth they can achieve as both transmitter and receiver. Iperf is a very useful tool, and if you have an endpoint at each of your network locations, you will be able to use it for network monitoring, testing, troubleshooting.