Invoking iperf3
===============

iperf3 includes a manual page listing all of the command-line options.
The manual page is the most up-to-date reference to the various flags and parameters.

For sample command line usage, see: 

http://fasterdata.es.net/performance-testing/network-troubleshooting-tools/iperf-and-iperf3/

Using the default options, iperf3 is meant to show typical well
designed application performance.  "Typical well designed application"
means avoiding artificial enhancements that work only for testing
(such as ``splice()``-ing the data to ``/dev/null``).  iperf3 does
also have flags for "extreme best case" optimizations but they must be
explicitly activated.  These flags include the ``-Z`` (``--zerocopy``)
and ``-A`` (``--affinity``) options.

iperf3 Manual Page
------------------

This section contains a plaintext rendering of the iperf3 manual page.
It is presented here only for convenience; the authoritative iperf3
manual page is included in the source tree and installed along with
the executable.

::

   IPERF(1)                         User Manuals                         IPERF(1)



   NAME
   iperf3 − perform network throughput tests

   SYNOPSIS
   iperf3 ‐s [ options ]
   iperf3 ‐c server [ options ]


   DESCRIPTION
   iperf3  is  a  tool for performing network throughput measurements.  It
   can test either TCP or UDP throughput.  To perform an iperf3  test  the
   user must establish both a server and a client.


   GENERAL OPTIONS
   ‐p, ‐‐port n
   set server port to listen on/connect to to n (default 5201)

   ‐f, ‐‐format
   [kmKM]   format to report: Kbits, Mbits, KBytes, MBytes

   ‐i, ‐‐interval n
   pause  n  seconds between periodic bandwidth reports; default is
   1, use 0 to disable

   ‐F, ‐‐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

   ‐A, ‐‐affinity n/n,m
   Set the CPU affinity, if possible (Linux and FreeBSD only).   On
   both  the  client  and  server you can set the local affinity by
   using the n form of this argument (where n is a CPU number).  In
   addition,  on  the  client  side  you  can override the server’s
   affinity for just that one test, using the n,m form of argument.
   Note  that when using this feature, a process will only be bound
   to a single CPU (as opposed to a set containing potentialy  mul‐
   tiple CPUs).

   ‐B, ‐‐bind host
   bind to a specific interface

   ‐V, ‐‐verbose
   give more detailed output

   ‐J, ‐‐json
   output in JSON format

   ‐‐logfile file
   send output to a log file.

   --forceflush
   force flushing output at every interval. Used to avoid buffering when sending
   output to pipe.

   ‐d, ‐‐debug
   emit  debugging  output.  Primarily (perhaps exclusively) of use
   to developers.

   ‐v, ‐‐version
   show version information and quit

   ‐h, ‐‐help
   show a help synopsis


   SERVER SPECIFIC OPTIONS
   ‐s, ‐‐server
   run in server mode

   ‐D, ‐‐daemon
   run the server in background as a daemon

   ‐I, ‐‐pidfile file
   write a file with the process ID, most useful when running as  a
   daemon.


   CLIENT SPECIFIC OPTIONS
   ‐c, ‐‐client host
   run in client mode, connecting to the specified server

   ‐‐sctp use SCTP rather than TCP (FreeBSD and Linux)

   ‐u, ‐‐udp
   use UDP rather than TCP

   ‐b, ‐‐bandwidth n[KM]
   set  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 will send the given number of
   packets without pausing, even if that  temporarily  exceeds  the
   specified bandwidth limit.

   ‐t, ‐‐time n
   time in seconds to transmit for (default 10 secs)

   ‐n, ‐‐bytes n[KM]
   number of bytes to transmit (instead of ‐t)

   ‐k, ‐‐blockcount n[KM]
   number of blocks (packets) to transmit (instead of ‐t or ‐n)

   ‐l, ‐‐length n[KM]
   length  of  buffer to read or write (default 128 KB for TCP, 8KB
   for UDP)

   ‐P, ‐‐parallel n
   number of parallel client streams to run

   ‐R, ‐‐reverse
   run in reverse mode (server sends, client receives)

   ‐w, ‐‐window n[KM]
   TCP window size / socket buffer size  (this  gets  sent  to  the
   server and used on that side too)

   ‐M, ‐‐set‐mss n
   set TCP maximum segment size (MTU ‐ 40 bytes)

   ‐N, ‐‐no‐delay
   set TCP no delay, disabling Nagle’s Algorithm

   ‐4, ‐‐version4
   only use IPv4

   ‐6, ‐‐version6
   only use IPv6

   ‐S, ‐‐tos n
   set the IP ’type of service’

   ‐L, ‐‐flowlabel n
   set the IPv6 flow label (currently only supported on Linux)

   ‐Z, ‐‐zerocopy
   Use  a  "zero copy" method of sending data, such as sendfile(2),
   instead of the usual write(2).

   ‐O, ‐‐omit n
   Omit the first n seconds of the test, to skip past the TCP slow‐
   start period.

   ‐T, ‐‐title str
   Prefix every output line with this string.

   ‐C, ‐‐linux‐congestion algo
   Set the congestion control algorithm (linux only).


   AUTHORS
   Iperf  was  originally  written by Mark Gates and Alex Warshavsky.  Man
   page and maintence by Jon Dugan <jdugan at x1024 dot net>.  Other  con‐
   tributions  from  Ajay  Tirumala,  Jim Ferguson, Feng Qin, Kevin Gibbs,
   John Estabrook <jestabro at ncsa.uiuc.edu>, Andrew  Gallatin  <gallatin
   at gmail.com>, Stephen Hemminger <shemminger at linux‐foundation.org>


   SEE ALSO
   libiperf(3), https://github.com/esnet/iperf



   ESnet                            February 2014                        IPERF(1)

The iperf3 manual page will typically be installed in manual
section 1.

