Iperf(at)Workiperf3 tests from the browser.
Measure bandwidth, retransmissions, jitter and packet loss between two machines without typing a single iperf3 command. The client shows the result live and keeps every test; the server shows who is testing. Runs on Rocky Linux 9, in VMware and in Proxmox, and installs from one package without internet access.
| Interval | Bitrate | Transfer | Retransmissions |
|---|---|---|---|
| 0.00–1.00 s | 936 Mbit/s | 112 MBytes | 0 |
| 1.00–2.00 s | 941 Mbit/s | 112 MBytes | 0 |
| 2.00–3.00 s | 940 Mbit/s | 112 MBytes | 2 |
| Received | 939 Mbit/s | 336 MBytes | 2 |
The client
2.1.0The web UI where you fill in server, port and test parameters and press Start test. The result arrives line by line, with graph, summary and history. The interface is available in English and Norwegian.
- Measures
- TCP and UDP, upload, download (
-R) or both directions at once (--bidir). 1–128 parallel streams, target bandwidth, IPv4 and IPv6. - Shows
- Last interval, average, maximum and progress while the test runs, one graph line per direction and finally a summary with retransmissions or jitter and loss.
- Remembers
- Every test is saved with its full log. The history can be filtered, every test can be opened, and everything can be exported to CSV.
- Advanced
- Omit the ramp-up (
-O), TCP window (-w), datagram length (-l) and source address (-B) for machines with several network cards.
The server
2.1.0Runs iperf3 -s as systemd services on ports 5201 and 5202, and shows a status page refreshed every three seconds. A machine can also be client and server at the same time.
- Listens
- One iperf3 server per port (
iperf3-server@5201,@5202), for TCP and UDP. Restarted automatically. - Shows
- State per port, the number of active connections and who connects, uptime and the server log with a time stamp per line.
- Opens
- The firewall is set up automatically for the role: the web port, and 5201–5202 tcp and udp on the server.
- Secures
- Hardened systemd services under their own users, optional password, and the web port only for the management network if you want.
Using them together
Two virtual machines with the traffic passing through the network you want to measure. From package to first result in a few minutes.
- Install the server
sudo ./install.sh serverstarts iperf3 on 5201 and 5202 and opens the firewall. - Install the client
sudo ./install.sh client --default-server 172.16.101.61. At the end the installer checks that the server answers. - Run a test
Open
http://172.16.101.60/, choose TCP or UDP, direction and streams, and press Start test. - Compare
Every test lands in the history with sent and received rate, jitter, loss and retransmissions. Export to CSV for your report.
Installation
One offline package with three RPMs: iperf3 3.21 (static), Caddy 2.11.4 and Iperf(at)Work 2.1.0. The installer checks checksums and ports, installs without repositories, sets up the firewall and runs a self test at the end.
Rocky Linux 9 Minimal, VMware or Proxmox VM
$ sha256sum -c Iperf-by-web-2.1.0-offline.tar.gz.sha256
$ tar xzf Iperf-by-web-2.1.0-offline.tar.gz
$ cd Iperf-by-web-2.1.0
$ sudo ./check-prereqs.sh --lang en
$ sudo ./install.sh server --lang en
# on the client: sudo ./install.sh client --default-server 172.16.101.61
Everything needed (Python 3, iproute, systemd) is part of Rocky Linux 9 Minimal. SELinux can stay on. Use VMXNET3 in VMware and VirtIO in Proxmox for realistic results.
VMware appliance with Photon OS
$ tar xzf Iperf-by-web-2.1.0-offline.tar.gz && cd Iperf-by-web-2.1.0
$ sudo ./check-prereqs.sh --lang en
$ sudo ./install.sh client --default-server 172.16.101.61
# Photon has iptables: open 80/tcp (and 5201–5202 on the server)
$ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
The packages have dependencies that resolve on both Rocky/RHEL and Photon OS, and are installed with rpm when dnf is missing. Python 3 must be present on the appliance.
The web UI uses plain HTTP and should only be reachable from a trusted management network. Restrict it with --admin-net 10.10.0.0/24, and turn on a password with sudo iperf-by-web-ctl password set.
Screenshots
The interface is available in English and Norwegian (EN | NO in the top right corner) and works on mobile too. The pictures here are from the English edition; the Norwegian page shows Norwegian screenshots. Click for full size.
Documents
Everything is in the docs/ folder of the package and is installed in /usr/share/doc/iperf-by-web/. The user manual also opens from the UI.
Every tab and field, reading the result, typical measurements, troubleshooting and the HTTP API. English and Norwegian.
Platforms, transfer without network, every option, VMware, Proxmox, Photon OS, firewall, upgrade from 2.0.0. English and Norwegian.
Architecture, validation, parsing, security, packaging and build (AsciiDoc). Read it here.
What is new, changed and fixed in 2.1.0, 2.0.0 and 1.0 (Norwegian).
iperf3 (BSD-3-Clause), musl (MIT), Caddy (Apache-2.0) and all 144 Go modules reviewed. No copyleft (Norwegian).
Code review, security assessment, findings that were fixed, and the results of the self test and installation tests (Norwegian).