Perform network throughput tests


iperf3 -s [ options ]

iperf3 -c server [ options ]

Runs on:

QNX Neutrino


The general options include:

-B host
--bind host
Bind to a specific interface.
Emit debugging output. Primarily (perhaps exclusively) of use to developers.
-F name
--file name
Client-side: read from the file and write to the network, instead of using random data. Server-side: read from the network and write to the file, instead of throwing the data away.
-f k|m|K|M
--format k|m|K|M
The format to report: Kbits, Mbits, KBytes, MBytes.
Show a help synopsis.
-i n
--interval n
Pause for n seconds between periodic bandwidth reports. The default is 1; use 0 to disable.
Output in JSON format.
--logfile file
Send output to a log file.
-p n
--port n
Set the server port to listen on or connect to to n (default 5201).
Give more detailed output.
Show version information, and then quit.

The server-specific options include:

Handle one client connection, then exit.
Run the server in background as a daemon.
-I file
--pidfile file
Write a file with the process ID, most useful when running as a daemon.
Run in server mode.

The client-specific options include:

Use only IPv4.
Use only IPv6.
-b n[K|M]
--bandwidth n[K|M]
Set the target bandwidth to n bits/sec (default 1 Mbit/sec for UDP, unlimited for TCP). If there are multiple streams (-P flag), the bandwidth limit is applied separately to each stream.

You can also add a “/” and a number to the bandwidth specifier. This is called burst mode. It sends the given number of packets without pausing, even if that temporarily exceeds the specified bandwidth limit. Setting the target bandwidth to 0 will disable bandwidth limits (particularly useful for UDP tests).

-c host
--client host
Run in client mode, connecting to the specified server.
--cport port
Bind data streams to a specific client port (for TCP and UDP only, default is to use an ephemeral port).
Get the output from the server. The output format is determined by the server (in particular, if the server was invoked with the --json flag, the output will be in JSON format, otherwise it will be in human-readable format). If the client is run with --json, the server output is included in a JSON object; otherwise it's appended at the bottom of the human-readable output.
-k n[K|M]
--blockcount n[K|M]
The number of blocks (packets) to transmit (instead of -t or -n).
-l n[K|M]
--length n[K|M]
The length of buffer to read or write (default 128 KB for TCP, 8 KB for UDP).
-M n
--set-mss n
Set the TCP/SCTP maximum segment size (MTU - 40 bytes).
Set TCP/SCTP no delay, disabling Nagle's Algorithm.
-n n[K|M]
--bytes n[K|M]
The number of bytes to transmit (instead of -t).
--nstreams n
Set the number of SCTP streams.
-O n
--omit n
Omit the first n seconds of the test, to skip past the TCP slow-start period.
-P n
--parallel n
The number of parallel client streams to run.
Run in reverse mode (server sends, client receives).
-S n
--tos n
Set the IP “type of service.”
-T str
--title str
Prefix every output line with this string.
-t n
--time n
The time in seconds to transmit for (default 10 secs).
Use UDP rather than TCP.
-w n[K|M]
--window n[K|M]
The window size / socket buffer size (this gets sent to the server and used on that side too).
-X name
--xbind name
Bind SCTP associations to a specific subset of links using sctp_bindx(). The -B flag is ignored if you specify this flag. Normally SCTP will include the protocol addresses of all active links on the local host when setting up an association. Specifying at least one -X name disabled this behavior. You must specify this flag for each link to be included in the association; it's supported for both iperf servers and clients (the latter are supported by passing the first -X argument to bind()). Hostnames are accepted as arguments and are resolved using getaddrinfo(). If you specify the -4 or -6 flag, names that don't resolve to addresses within the specified protocol family are ignored.
Use a “zero copy” method of sending data, such as sendfile(), instead of the usual write().


The iperf3 tool measures network throughput. It can test either TCP or UDP throughput. To perform an iperf3 test the user must establish both a server and a client.

For a different version of this tool, see iperf2.

Contributing author:

http://software.es.net/iperf A list of the contributors to iperf3 can be found within the documentation located at http://software.es.net/iperf/dev.html#authors.