By Bruce Mah, ESnet Planning & Architecture Group
A recent post on Microsoft’s Networking blog, clickably titled “Three Reasons Why You Should Not Use iPerf3 on Windows,” caused a mini-kerfuffle in the world of network speed measurement and a lively discussion in the comments section. Although the post has since been updated with some important disclaimers — the no. 1 answer to the question being that ESnet has never and still does not support Windows for iperf3 — ESnet’s iperf3 team wanted to set the record straight on a few additional points publicly for anyone who might still be confused.
A little background on ESnet and iperf3
ESnet (www.es.net) provides scientific networking services to support the U.S. Department of Energy and its national laboratories, user facilities, and scientific instruments complex. We developed iperf3 as a rewrite of iperf2 in order to be able to test the end-to-end performance of networks doing large transfers of scientific data. The primary consumer of iperf3 is the perfSONAR measurement system), which is widely used in the research and education (R&E) networking community. iperf3 is of course also usable as a standalone tool, which is one of the reasons it’s been released separately on GitHub. Many large corporations, including SpaceX’s Starlink and Comcast, are using it to measure their own networks. It has been downloaded from GitHub nearly 100,000 times according to a third-party tool; this does not measure the other ways that users could acquire iperf3.
Work on iperf3 started in 2009 (the first commit was an import of the iperf-2.0 sources), with the first public release in 2013. The commit history (and the original iperf2 project maintainer) will confirm that iperf3 was intended essentially as an iperf2 replacement. Thus there was a time during which iperf2 was basically abandonware. Fortunately, Bob McMahon from Broadcom has assumed the maintainership of this code base and is actively developing for it.
Linux vs. other operating systems
Most of the high-performance networking that we see in the R&E networking space comes from Linux hosts, so it was natural that this is the main supported platform. Supporting iperf3 on FreeBSD and macOS has ensured some level of cross-platform support, at least to the extent of other UNIX and UNIX-like systems. While we have had many requests to make iperf3 work under Windows, we didn’t have the developer skills or resources to support that — and we still don’t. The fact that iperf3 works on Windows at all is a result of code contributions from the community, which we gratefully acknowledge.
There are many facets to end-to-end application network performance. These include of course routers, switches, NICs, and network links, but also the end host operating system, runtime libraries, and the application itself. To that extent iperf3 does characterize the performance of a certain set of applications designed for UNIX but trying to run (with some emulation or adaptation) in a Windows environment. We completely agree that this may not provide the highest throughput numbers on Windows, compared to a program that uses native APIs.
Iperf3 and Windows
ESnet is happy to see that iperf.fr has removed the old, obsolete binaries from their Web site. This is a problem that can affect any open-source project, not just iperf3.
As mentioned earlier, we’ve generally accepted patches for iperf3 to run on Windows (or other not-officially-supported operating systems such as Android, iOS, or various commercial UNIXes). These changes have allowed Windows hosts to run iperf3 tests (apparently with sub-optimal performance) against any other instance of iperf3, regardless of operating system.
If there’s interest on the part of Microsoft in making a more-Windows-friendly version of iperf3, we’d welcome a conversation on that topic. Feel free to reach out to me (Bruce Mah) anytime.
You must be logged in to post a comment.