explaingit

esnet/iperf

8,481CAudience · ops devopsComplexity · 2/5LicenseSetup · easy

TLDR

iperf3 is a command-line tool that measures actual data transfer speed between two machines on a network, reporting throughput, packet loss, and related network performance stats.

Mindmap

mindmap
  root((repo))
    What it does
      Measure network speed
      Test TCP and UDP
      Report throughput stats
    Protocols
      TCP
      UDP
      SCTP
    Tech Stack
      C
      Linux
      macOS
    Audience
      Network engineers
      DevOps teams
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Measure the maximum throughput of a network link between two servers before deploying a streaming application

USE CASE 2

Diagnose network performance issues by running TCP and UDP bandwidth tests between machines

USE CASE 3

Benchmark a cloud or datacenter network connection to validate it meets expected performance

Tech stack

CTCPUDPSCTPLinux

Getting it running

Difficulty · easy Time to first run · 30min

Both machines need iperf3 installed, building from source uses the standard configure and make steps.

Use, copy, and redistribute freely including in commercial products, just keep the copyright notice.

In plain English

iperf3 is a command-line tool for measuring how fast data can be transferred across a network. You run it on two machines: one acts as the server and waits for connections, the other acts as the client and sends data. After the test finishes, it reports the actual throughput (how much data moved per second), packet loss, and related statistics. This helps network administrators and engineers understand whether a network link is performing as expected or whether something is limiting its speed. The tool supports three network protocols: TCP, which is the standard reliable protocol used by most internet traffic, UDP, which sacrifices reliability for speed and is used in video streaming and gaming, and SCTP, a less common protocol designed for reliability and multi-homing. Various parameters can be tuned, such as buffer sizes and test duration. Results can optionally be output as JSON, which makes it easier to feed into scripts or monitoring systems. iperf3 was built from scratch as a cleaner rewrite of the original iperf tool and is not compatible with it. It is developed primarily at ESnet and Lawrence Berkeley National Laboratory, and is used as a component in perfSONAR, a network measurement platform used by research and education networks worldwide. It also appears in various commercial networking products. Building it from source follows a standard configure, make, make install pattern. It runs on Linux, FreeBSD, and macOS, with community reports of success on Android and other platforms. The BSD license allows it to be used and redistributed freely, including in commercial settings.

Copy-paste prompts

Prompt 1
Show me how to run an iperf3 bandwidth test between my laptop and a remote Linux server, then interpret the results
Prompt 2
Help me write a shell script that runs iperf3 every hour and logs throughput to a CSV file for network monitoring
Prompt 3
Set up iperf3 in server mode on Ubuntu and run a UDP test from a client machine, what flags do I need?
Open on GitHub → Explain another repo

← esnet on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.