(as of iperf 2.2.2)
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.
| 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 | Y | 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() (--tcp-write-prefetch) | Y | N |
| TCP near congestion / L4S (ECN, DualPI2 awareness) | Y (--udp-l4s, --near-congestion) | N |
| UDP L4S support with ECN CE marking stats | Y (--udp-l4s) | N |
| Concurrent TCP working load(s) alongside UDP/bounceback traffic | Y (--working-load) | N |
| Peer version detection | Y (-X) | N |
| TCP congestion control algorithm selection | Y (-Z/--tcp-cca) | Y (-C) |
| Variable/random packet length distributions (Markov chain) | Y | N |
| Simulated network delay per flow (TCP_TX_DELAY/SO_TXTIME) | Y (--send-delay) | N |
| Port range support (-p m-n) | Y | N |
| Batched UDP syscalls (sendmmsg/recvmmsg) | 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 |
| ECN CE mark counts (received CE-marked packets) | Y (--udp-l4s) | 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) | Y | Y |
| 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 | Y |
| MPTCP support | N | Y |
| 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 |