iperf3: The Engineer’s Swiss Army Knife for Network Performance Testing

When something is “slow” on a network, opinions arrive before evidence. Storage teams blame the network, network teams blame the application, and application teams blame “the cloud”.☁️

iperf3 cuts through that noise by giving you hard, repeatable, protocol-level facts about throughput, latency behavior, and packet loss.

This post explains what iperf3 actually measures, how it works, how to install it, and the top 10 use cases every engineer should know, with concrete command examples.

1. What is iperf3 (and what it is not)

iperf3 is a client–server network testing tool that measures:

  • TCP and UDP throughput
  • Packet loss (UDP)
  • Jitter (UDP)
  • Connection behavior under parallel streams
  • Performance over time (interval reporting)

It does not:

  • Measure application performance
  • Replace packet captures
  • Diagnose routing correctness
  • Simulate real application payloads

Think of iperf3 as a controlled load generator, not an application simulator.

2. How iperf3 works (under the hood)

  • One host runs in server mode
  • Another runs as a client
  • The client generates traffic for a defined duration
  • The server measures what it actually receives
  • Results are reported at fixed intervals and as a summary

Start a server

iperf3 -s

Run a client

iperf3 -c <server-ip>

By default:

  • TCP
  • One stream
  • 10 seconds
  • Adaptive window sizing

Everything else is explicit configuration.

3. Installing iperf3

iperf3 is widely available and lightweight. Installation is usually trivial, but version consistency matters when comparing results.

3.1 Linux (Most Distributions)

Debian / Ubuntu

sudo apt update

sudo apt install -y iperf3

During installation you may be asked whether to start iperf3 as a daemon — this is optional and usually unnecessary.

RHEL / Rocky / Alma / CentOS Stream

sudo dnf install -y iperf3

Amazon Linux 2023

sudo dnf install -y iperf3

3.2 macOS (Homebrew)

brew install iperf3

Verify:

iperf3 –version

3.3 Windows

Option 1: Windows Subsystem for Linux (Recommended)

Install iperf3 inside WSL:

sudo apt install -y iperf3

This gives you Linux-consistent behavior and better scripting.

Option 2: Native Windows Binary

  1. Download the official build from the iperf project
  2. Extract iperf3.exe
  3. Run from PowerShell or CMD

iperf3.exe -c <server-ip>

Note: Native Windows builds sometimes show lower throughput due to driver and socket differences.

3.4 Containers (Docker)

Useful for ephemeral testing or CI pipelines.

docker run –rm -it networkstatic/iperf3 -s

Client:

docker run –rm -it networkstatic/iperf3 -c <server-ip>

3.5 Verifying Installation

iperf3 –version

You should see something like:

iperf 3.x (cJSON 1.x)

4. Why iperf3 is still relevant in 2026

Despite SD-WANs, overlays, service meshes, and cloud abstractions:

  • TCP still collapses under packet loss
  • Firewalls still mis-handle long-lived flows
  • VPNs still pin CPUs
  • East–west traffic still surprises people

iperf3 answers the single most important question first:

Can the network actually move data at the speed we think it can?

Top 10 iperf3 Use Cases (with Commands)

Use Case 1: Baseline TCP Throughput Between Two Hosts

iperf3 -c 10.0.0.10

Tells you

  • Real TCP throughput
  • Window scaling effectiveness
  • Obvious bottlenecks

Use Case 2: Parallel TCP Streams

iperf3 -c 10.0.0.10 -P 8

Tells you

  • Whether the link scales with concurrency
  • Presence of per-flow shaping

Use Case 3: Sustained Throughput Over Time

iperf3 -c 10.0.0.10 -t 120 -i 1

Tells you

  • Burst behavior
  • Throttling over time

Use Case 4: UDP Packet Loss and Jitter

iperf3 -c 10.0.0.10 -u -b 500M

Tells you

  • Packet loss
  • Jitter
  • True capacity without TCP recovery

Use Case 5: Maximum Loss-Free UDP Rate

iperf3 -c 10.0.0.10 -u -b 100M

iperf3 -c 10.0.0.10 -u -b 300M

iperf3 -c 10.0.0.10 -u -b 600M

Use Case 6: Reverse Direction Testing

iperf3 -c 10.0.0.10 -R

Use Case 7: VPN and Tunnel Testing

iperf3 -c 10.8.0.1 -P 4

Use Case 8: Firewall and Load Balancer Timeouts

iperf3 -c 10.0.0.10 -t 300

Use Case 9: NIC Offloads and Jumbo Frames

iperf3 -c 10.0.0.10 -P 4 -l 64K

Use Case 10: CI / Regression Testing (JSON Output)

iperf3 -c 10.0.0.10 -J > result.json

14. Common iperf3 Mistakes

  1. Testing from CPU-starved hosts
  2. Running tests too short
  3. Ignoring reverse tests
  4. Assuming TCP hides loss safely
  5. Forgetting MTU and MSS effects

15. Final Thoughts

iperf3 is deliberately simple.

That simplicity makes it dangerous to ignore.

If you don’t know what your network can do under controlled load, every performance discussion becomes opinion-driven theatre.

If you want next:

  • A one-page iperf3 cheat sheet
  • A decision tree for diagnosing poor results
  • Cloud-specific examples (AWS ENA, Azure Accelerated Networking)
  • An infographic showing TCP backoff vs UDP loss

Say the word.

0
0

Leave a Reply

Your email address will not be published. Required fields are marked *