Iperf is a versatile bandwidth measurement tool that is widely used by network engineers to assess how much TCP or UDP traffic an IP network can transport. This tool was first developed at the University of Illinois by the Distributed Applications Support Team to “test the limits of your network”. The value proposition is still very dear to today’s network engineers 🙂
I first used iperf in 2006 when I was a student at the University of Milan working on my Masters dissertation on mobile ad-hoc wireless networks (MANET). At the time, I had to measure how the distance between two ad-hoc wireless clients affected their transfer rate. I then compared the iperf measurements with simulations performed on two systems used for modeling wireless networks, ns-2 and glomosim, to find out which one between the two simulators was the most accurate.
Ten years later, as a network engineer, I had many occasions to again use this tool to assess bandwidth, packet loss, and jitter of wide area networks. What I particularly like about iperf is that it can be used not only in an academic environment, but also in enterprise networks to get reliable performance data about network quality. This information could be paired with the round-trip-time information provided by a ping test to get a complete picture.
More than bandwidth measurement tool: QoS and multicast.
Thanks to continuous improvements and new releases, iperf is, to date, used for more than just assessing the TCP or UDP bitrate of an IP network. It can verify quality of service policies by sending traffic marked with a specific DSCP value. Simply select the -S option followed by the priority class traffic should be marked with.
You could also test whether your network meets the requirements of VoIP traffic by generating a UDP stream marked with EF and then checking the packet loss and jitter at the receiver side. Consider pairing such a stream with high throughput TCP-based traffic to verify that your router’s low latency queues are prioritized against best effort traffic.
Testing a multicast network has always been challenging. Generally, engineers use the VLC player where one workstation is configured as a multicast sender (streaming server) and one workstation is configured as a multicast receiver (client). However, the VLC player requires a graphical environment to run. If you are a Linux aficionado and prefer working with a CLI environment, then you can use iperf to obtain the same result.
Use iperf to measure bandwidth in your enterprise
Have you ever dealt with an upset executive who complains that the Internet is slow after having run a speed test session? To prevent this surprise, you can periodically run iperf to make sure that your network performs well. By periodically running and recording iperf tests results, you have tangible data that you can present to management. In many instances I have found that iperf returns similar upload/download estimates as speed test services publicly available on the Internet.
Running iperf in NetBeez
The reason we decided to include iperf on NetBeez agents (BEEZ) is to let our users run bandwidth tests with a tool they would be familiar with. On the NetBeez dashboard, the user can select any agent as source or destination, define the TCP or UDP method, and start the transfer between any two beez. The test can be run between two wired agents, one wired and one wireless, one wireless and one virtual, and so on. Also between one of the beez and an external iperf server.
Including iperf in our dashboard is a great add-on for our users because they can easily run bandwidth tests between:
- Two remote offices to verify site-to-site bandwidth and network performance
- A wired agent and wireless agent to verify wireless performance and compare wired and wireless end-user experience
- An internal agent and one external agent to have a reliable corporate speed test service and generate a baseline of bandwidth available to the individual user
- Verify quality of service, voice over IP, multicast and IPv6 performance