Iperf 2 & Iperf 3
Comparison Table
(as of June 2022)
IPerf 2 (this program) is different from the iperf3 found at https://github.com/esnet/iperf Each can be used to measure network performance, however, they DO NOT interoperate. They are completely independent implementations with different strengths, different options, and different capabilities. Both are under active development (as of mid-2021)
Here is a chart that shows the differences between the two programs
Feature | Iperf 2 | Iperf 3 |
Traffic types | ||
TCP traffic | Y | Y |
UDP traffic | Y | Y |
SCTP traffic | N | Y |
IPv4 | Y | Y |
IPv6 | Y | Y |
Multicast traffic (including SSM) | Y | N |
TCP connect only | Y | N |
Layer 2 checks | Y | N |
Output options | ||
Human format | Y | Y |
JSON output | N | Y |
CSV (basic only) | Y | N |
Hide IP addresses in output (v4 only) | Y | N |
Client side server reports | N | Y |
Traffic profiles | ||
Fair queue rate limiting | Y | Y |
Write rate limiting | Y | Y |
Read rate limiting (TCP) | Y | N |
Bursts | Y | Y |
Isochronous (video) TCP/UDP | Y | N |
Reverse roles | Y | Y |
Bidirectional traffic | Y | Y |
Full duplex same socket | Y | N |
TCP bounceback w/optional working load(s) | Y | N |
Low duty cycle traffic with server side stats | Y | N |
TCP_NOTSENT_LOWAT with select() (using the --tcp-write-prefetch option) | Y | N |
TCP near congestion (experimental) | Y | N |
Metrics | ||
Throughput | Y | Y |
Responsiveness per second (RPS) | Y | N |
UDP packets (total/lost) | Y | Y |
UDP Jitter | Y | Y |
Packet latencies UDP | Y | N |
Frame/burst latencies TCP/UDP | Y | N |
Write-to-read latencies TCP | Y | N |
Network power (latency/throughput) | Y | N |
InP - Bytes in queues (Little’s law) | Y | N |
TCP CWND | Y | N |
TCP retries | Y | Y |
TCP RTT | Y | Y |
Send side write delay histograms | Y | N |
UDP packets per second | Y | N |
Latency histograms | Y | N |
TCP connect times | Y | N |
TCP response per interval | Y | N |
Sum only output | Y | N |
Other | ||
Multi-threaded design | Y | N |
Parallel -P technique | Threads | Processes |
Real-time scheduling | Y | N |
-t support for server | Y | N |
TAP virtual interface support (receive only) via --tap-dev | Y | N |
CPU affinity | N | Y |
Zero copy | N | Y |
IPv6 Flow label | N | Y |
--omit option (skip first samples per time in seconds) | N | Y |
Incr dst ip option with -P | Y | N |
Incr dst ip option with -P | Y | N |
Incr dst port option with -P | Y | N |
Incr src port option with -P | Y | N |
Device or interface binding | Y | Y |
Source port binding | Y | N |
Scheduled tx start time | Y | N |
Delay tx start time | Y | N |
User password | N | Y |
Permit keys | Y (TCP only) | N |
UDP stateless | Y | N |
Python framework (asyncio) | Y (flows) | N |
Testing WiFi thru 100G | Y | N/A |
Scaling to 1000+ threads | Y | N/A |