A DPDK-based network traffic generator and load testing tool for benchmarking L4 load balancers, gateways and servers.
esnet/iperf
iperf3 is a command-line tool for measuring the maximum achievable bandwidth on IP networks over TCP, UDP, and SCTP.
- Stars
- 8,865
- Forks
- 1,469
- Open issues
- 245
- Last commit
- 10 days ago
What is it?
iperf3 actively measures the maximum achievable bandwidth between two hosts on an IP network. You run it as a server on one machine and a client on another, and it reports throughput or bitrate, packet loss and other parameters for each test. Timing, protocol, and buffer settings can be tuned from the command line.
iperf3 is a from-scratch rewrite of the original iperf, with a smaller codebase and a library version of its functionality for use in other programs. It adds features such as a zero-copy mode and optional JSON output. It is not backwards compatible with the original iperf, and the separate iperf2 project continues in its own development.
The project is principally developed by ESnet and Lawrence Berkeley National Laboratory and is a component of the perfSONAR network measurement system. Development targets Ubuntu Linux, FreeBSD, and macOS, and it builds with the standard configure and make steps.
Key features
- 01Measures TCP, UDP, and SCTP throughput between two hosts.
- 02Reports bitrate, packet loss, and other per-test statistics.
- 03Supports tuning of timing, protocol, and buffer parameters.
- 04Offers optional JSON output for scripting and parsing.
- 05Provides a zero-copy sendfile mode and CPU affinity settings for advanced testing.
- 06Ships a library version of its functionality for embedding in other programs.
Use cases
- Checking the achievable bandwidth of a link or path between two servers.
- Troubleshooting network throughput issues and comparing results across configurations.
- Running network performance tests as part of a perfSONAR measurement deployment.
- Automating bandwidth tests in scripts using JSON output.
Quick start
- 1
Clone the source repository
git clone https://github.com/esnet/iperf.git - 2
Build and install from source
./configure; make; make install
Things to know
- Only Ubuntu Linux, FreeBSD and macOS are officially supported; other platforms are not guaranteed.
- The metadata license is unspecified (NOASSERTION), though the README describes a BSD-style license with U.S. government notices.
Topics
FAQ
- What is iperf?
- iperf3 is a command-line tool for measuring the maximum achievable bandwidth on IP networks over TCP, UDP, and SCTP. iperf3 actively measures the maximum achievable bandwidth between two hosts on an IP network. You run it as a server on one machine and a client on another, and it reports throughput or bitrate, packet loss and other parameters for each test. Timing, protocol, and buffer settings can be tuned from the command line.
- Is iperf free to use? What license does it have?
- iperf is open source under the Other license. Check the license terms before using it in commercial products.
- Is iperf still maintained?
- Actively maintained. The last commit to iperf was on Oct 27, 2026.
- What can I use iperf for?
- Checking the achievable bandwidth of a link or path between two servers. Troubleshooting network throughput issues and comparing results across configurations. Running network performance tests as part of a perfSONAR measurement deployment. Automating bandwidth tests in scripts using JSON output.
- How do I install iperf?
- Clone the source repository: git clone https://github.com/esnet/iperf.git Build and install from source: ./configure; make; make install
- Where can I get iperf?
- The source code and installation instructions are on GitHub: https://github.com/esnet/iperf
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
Self-hosted network speed testing and server monitoring tool with a web UI, built in Go and React.
An asynchronous, event-driven Java framework for building maintainable, high-performance network protocol servers and clients.
Command-line network scanner in Go that supports ARP, ICMP, TCP, UDP and SOCKS5 scans with JSON output for automation.
A single bash script that benchmarks a Linux server's disk, network, and CPU/memory using fio, iperf3, and Geekbench.
An eBPF-based network analysis CLI that captures HTTP, Redis, MySQL, Kafka and DNS traffic and shows where latency occurs in the kernel.