Break those bottlenecks: Performance test your network with Iperf

Getting a grip on network performance numbers is one of the most difficult tasks for network managers. Unlike many information technology statistics such as disk space utilization and available memory, network performance is a very subjective issue--what's slow to you might be a zippy network to someone else.

Getting a grip on network performance numbers is one of the most difficult tasks for network managers. Unlike many information technology statistics such as disk space utilization and available memory, network performance is a very subjective issue--what's slow to you might be a zippy network to someone else. Translating "the network's really slow today" into useful numbers is practically impossible.

Wouldn't it be great if there were a tool that let you quickly measure end-to-end performance, was supported by multiple operating systems, and didn't blast your budget into the red zone? Thankfully, there is--it's called Iperf, and it's available at no cost from the National Laboratory for Applied Network Research. While not as full-featured as comparable commercial offerings such as Ganymede Software's Chariot, Iperf provides more than enough data to help network managers bust those bottlenecks.

Iperf is a performance measurement tool for TCP/IP and UDP/IP that provides network throughput information and statistics on jitter, packet loss, and maximum segment and transmission unit sizes. The client application can also create UDP streams of a specific bandwidth and is multicast-compliant. Written to overcome limitations in older tools such as ttcp and nettest, Iperf is available in both source code and binary formats and includes a Java-based front end called jperf.

Robert Currier has been in data networking for more than 15 years, the last five as Director of Data Communications at Duke University.To understand how Iperf can help with tuning TCP connections, consider one of the most important TCP characteristics: window size. The TCP window size setting controls how much data can be in transit at any given moment. If the window size is too small the transmitting host sits idle, drastically reducing overall throughput.

You can calculate the maximum theoretical window size by multiplying the lowest link bandwidth by the round trip time of an ICMP packet. For example, let's assume we're sending a large file from Duke University in North Carolina to MIT in Massachusetts. If the lowest link bandwidth is 45Mbps, and the round trip time is 23 milliseconds, the bandwidth delay product would be:

45Mbps * 23ms = 130KBytes

Theoretically then the best window size would be 130Kbytes. Practically, not all operating systems support unlimited window sizes--the limit can be as low as 64Kbytes or as high as several megabytes. NLANR's User's Guide to TCP Windows provides a detailed look at window sizing issues.

Using Iperf gives you a much better understanding of how TCP/IP settings can impact network performance. In our organization, we've been able to increase throughput by a factor of three simply by increasing the window size. You won't see such a dramatic improvement in every instance, but if your users have been complaining about bandwidth bottlenecks, running an Iperf test session could help you pinpoint the problem.

In my next column I'll show you how to configure an Iperf test session and how to turn the results into a net gain in bandwidth.