Provided by: iperf_2.1.9+dfsg-1_amd64 bug

NAME

       iperf  -  perform  network traffic tests using network sockets. Metrics include throughput and latency or
       link capacity and responsiveness.

SYNOPSIS

       iperf -s [options]

       iperf -c server [options]

       iperf -u -s [options]

       iperf -u -c server [options]

DESCRIPTION

       iperf 2 is a testing tool  which  performs  network  traffic  measurements  using  network  sockets.  The
       performance  metrics  supported  include  throughput  and  latency (or link capacity and responsiveness.)
       Latency measurements include both one way delay (OWD) and round trip times (RTTs.) Iperf can use both TCP
       and UDP sockets (or protocols.) It supports unidirectional, full duplex (same socket)  and  bidirectional
       traffic,  and  supports  multiple,  simultaneous traffic streams. It supports multicast traffic including
       source specific multicast (SSM) joins. Its multi-threaded design allows  for  peak  performance.  Metrics
       displayed  help  to  characterize  host  to  host  network  performance. Setting the enhanced (-e) option
       provides all available metrics. Note: the metrics are at the socket level reads and writes. They  do  not
       include the overhead associated with lower level protocol layer headers.

       The  user  must  establish both a server (to receive traffic) and a client (to generate and send traffic)
       for a test to occur.  The client and server typically are on different hosts or computers  but  need  not
       be.

GENERAL OPTIONS

       -b, --bandwidth
              set  the  target  bandwidth  and  optional  standard deviation per <mean>,[<stdev>] (See NOTES for
              suffixes)

       -e, --enhanced
              Display enhanced output in reports otherwise use legacy report (ver 2.0.5) formatting (see NOTES)

       -f, --format [abkmgBKMG]
              format to report: adaptive, bits, Bytes, Kbits, Mbits, Gbits, KBytes, MBytes,  GBytes  (see  NOTES
              for more)

       -h, --help
              print a help synopsis

           --hide-ips
              obscure ip addresses in output (useful when wanting to publish results and not display the full ip
              addresses. v4 only)

       -i, --interval < t | f >
              sample or display interval reports every t seconds (default) or every frame or burst, i.e. if f is
              used  then the interval will be each frame or burst. The frame interval reporting is experimental.
              Also suggest a compile with fast-sampling, i.e. ./configure --enable-fastsampling

       -l, --len n[kmKM]
              set read/write buffer size (TCP) or length (UDP) to n (TCP default 128K, UDP default 1470)

           --l2checks
              perform layer 2 length checks on received  UDP  packets  (requires  systems  that  support  packet
              sockets, e.g. Linux)

       -m, --print_mss
              print TCP maximum segment size

           --NUM_REPORT_STRUCTS <count>
              Override the default shared memory size between the traffic thread(s) and reporter thread in order
              to  mitigate  mutex  lock  contentions.  The  default value of 5000 should be sufficient for 1Gb/s
              networks. Increase this upon seeing the Warning message  of  reporter  thread  too  slow.  If  the
              Warning  message isn't seen, then increasing this won't have any significant effect (other than to
              use some additional memory.)

       -o, --output filename
              output the report or error message to this specified file

           --permit-key [=<value>]
              Set a key value that must match for the server to accept traffic on a connection. If the option is
              given without a value on the server a key value will be autogenerated and displayed in its initial
              settings report. The lifetime of the key is set using --permit-key-timeout and defaults to  twenty
              seconds.  The value is required on clients. The value will also be used as part of the transfer id
              in reports. The option set on the client but not the server will also cause the server  to  reject
              the client's traffic. TCP only, no UDP support.

       -p, --port m[-n]
              set  client  or server port(s) to send or listen on per m (default 5001) w/optional port range per
              m-n (e.g. -p 6002-6008) (see NOTES)

           --sum-dstip
              sum traffic threads based upon the destination IP address (default is source ip address)

           --sum-only
              set the output to sum reports only. Useful for -P at large values

       -t, --time n
              time in seconds to listen for new traffic connections, receive traffic or send traffic

       -u, --udp
              use UDP rather than TCP

           --utc
              use coordinated universal time (UTC) when outputting time (otherwise use local time)

       -w, --window n[kmKM]
              TCP window size (socket buffer size)

       -z, --realtime
              Request real-time scheduler, if supported.

       -B, --bind host[:port][%dev]
              bind to host, ip address or multicast address, optional port or device (see NOTES)

       -C, --compatibility
              for use with older versions does not sent extra msgs

       -M, --mss n
              set TCP maximum segment size using TCP_MAXSEG

       -N, --nodelay
              set TCP no delay, disabling Nagle's Algorithm

       -v, --version
              print version information and quit

       -x, --reportexclude [CDMSV]
              exclude C(connection) D(data) M(multicast) S(settings) V(server) reports

       -y, --reportstyle C|c
              if set to C or c report results as CSV (comma separated values)

       -Z, --tcp-congestion
              Set the default congestion-control algorithm to  be  used  for  new  connections.  Platforms  must
              support  setsockopt's  TCP_CONGESTION.  (Notes:  See sysctl and tcp_allowed_congestion_control for
              available options. May require root privileges.)

SERVER SPECIFIC OPTIONS

       -1, --singleclient
              set the server to process only one client at a time

       -b, --bandwidth n[kmgKMG]
              set target read rate to n bits/sec. TCP only for the server.

       -s, --server
              run in server mode

           --histograms[=binwidth[u],bincount,[lowerci],[upperci]]
              enable latency histograms for udp packets (-u), for tcp writes (with --trip-times), or for  either
              udp  or  tcp  with  --isochronous  clients,  or for --bounceback. The binning can be modified. Bin
              widths (default 1 millisecond, append u for microseconds, m for milliseconds)  bincount  is  total
              bins  (default  1000),  ci  is  confidence interval between 0-100% (default lower 5%, upper 95%, 3
              stdev 99.7%)

           --jitter-histograms[=<binwidth>]
              enable jitter histograms for udp packets (-u). Optional value is the bin  width  where  units  are
              microseconds and defaults to 100 usecs

           --permit-key [=<value>]
              Set  a  key  value  that  must match for the server to accept traffic from a client (also set with
              --permit-key.) The server will auto-generate a globally  unique  key  when  the  option  is  given
              without  a  value.  This  value  will  be  displayed  in the server's initial settings report. The
              lifetime of the key is set using --permit-key-timeout and defaults to twenty seconds. TCP only, no
              UDP support.

           --permit-key-timeout <value>
              Set the lifetime of the permit key in seconds. Defaults to 20 seconds if not set. A value of  zero
              will disable the timer.

           --tap-dev <dev>
              Set the receive interface to the TAP device as specified.

           --tcp-rx-window-clamp n[kmKM]
              Set the socket option of TCP_WINDOW_CLAMP, units is bytes.

       -t, --time n
              time  in  seconds  to  listen  for  new  traffic  connections  and/or receive traffic (defaults to
              infinite)

           --tos-override <val>
              set the socket's IP_TOS value for reverse or full duplex traffic. Supported in versions  2.1.5  or
              greater. Previous versions won't set IP_TOS on reverse traffic. See NOTES for values.

       -B, --bind ip | ip%device
              bind src ip addr and optional src device for receiving

       -D, --daemon
              run  the  server  as  a  daemon.  On  Windows  this  will run the specified command-line under the
              IPerfService, installing the  service  if  necessary.  Note  the  service  is  not  configured  to
              auto-start or restart - if you need a self-starting service you will need to create an init script
              or use Windows "sc" commands.

       -H, --ssm-host host
              Set the source host (ip addr) per SSM multicast, i.e. the S of the S,G

       -R, --remove
              remove the IPerfService (Windows only).

       -U, --single_udp
              run in single threaded UDP mode

       -V, --ipv6_domain
              Enable  IPv6  reception by setting the domain and socket to AF_INET6 (Can receive on both IPv4 and
              IPv6)

CLIENT SPECIFIC OPTIONS

       -b, --bandwidth n[kmgKMG][,n[kmgKMG]] | n[kmgKMG]pps
              set target bandwidth to n bits/sec (default 1 Mbit/sec) or n packets per sec.  This  may  be  used
              with TCP or UDP. Optionally, for variable loads, use format of  mean,standard deviation

           --bounceback[=n]
              run  a  TCP  bounceback  or  rps  test  with optional number writes in a burst per value of n. The
              default is ten writes every period and the default period is one second (Note: set size with -l or
              --len which defaults to 100 bytes)

           --bounceback-hold n
              request the server to insert a delay of n milliseconds between its read and write (default  is  no
              delay)

           --bounceback-period[=n]
              request the client schedule its send(s) every n seconds (default is one second, use zero value for
              immediate or continuous back to back)

           --bounceback-no-quickack
              request  the  server  not  set  the TCP_QUICKACK socket option (disabling TCP ACK delays) during a
              bounceback test (see NOTES)

           --bounceback-txdelay n
              request the client to delay n seconds between the start of the working  load  and  the  bounceback
              traffic (default is no delay)

           --burst-period n
              Set the burst period in seconds. Defaults to one second. (Note: assumed use case is low duty cycle
              traffic bursts)

           --burst-size n
              Set the burst size in bytes. Defaults to 1M if no value is given.  -c, --client host | host%device
              run  in  client mode, connecting to host  where the optional %dev will SO_BINDTODEVICE that output
              interface (requires root and see NOTES)

           --connect-only[=n]
              only perform a TCP connect (or 3WHS) without any data transfer, useful to  measure  TCP  connect()
              times.  Optional value of n is the total number of connects to do (zero is run forever.) Note that
              -i will rate limit the connects where -P will create bursts and -t will end the client  and  hence
              end its connect attempts.

           --connect-retries[= n]
              number of times to retry a TCP connect at the application level.  See operating system information
              on the details of TCP connect related settings.

       -d, --dualtest
              Do a bidirectional test simultaneous test using two unidirectional sockets

           --fq-rate n[kmgKMG]
              Set  a  rate  to be used with fair-queuing based socket-level pacing, in bytes or bits per second.
              Only available on platforms supporting the  SO_MAX_PACING_RATE  socket  option.  (Note:  Here  the
              suffixes indicate bytes/sec or bits/sec per use of uppercase or lowercase, respectively)

           --full-duplex
              run a full duplex test, i.e. traffic in both transmit and receive directions using the same socket

           --histograms[=binwidth[u],bincount,[lowerci],[upperci]]
              enable  select()/write()  histograms  with  --tcp-write-times  or  --bounceback (these options are
              mutually exclusive.) The binning can be modified. Bin widths (default 100 microseconds,  append  u
              for  microseconds,  m  for  milliseconds) bincount is total bins (default 10000), ci is confidence
              interval between 0-100% (default lower 5%, upper 95%, 3 stdev 99.7%)

           --incr-dstip
              increment the destination ip address when using the parallel (-P) or port range option

           --incr-dstport
              increment the destination port when using the parallel (-P) or port range option

           --incr-srcip
              increment the source ip address when using the parallel (-P) or port range option

           --incr-srcport
              increment the source ip address when using the parallel (-P) or port range option, requires -B  to
              set the src port

           --ipg n
              set  the  inter-packet  gap  to  n  (units  of  seconds)  for packets or within a frame/burst when
              --isochronous is set

           --isochronous[=fps:mean,stdev]
              send isochronous traffic with frequency frames per second and load defined by  mean  and  standard
              deviation using a log normal distribution, defaults to 60:20m,0. (Note: Here the suffixes indicate
              bytes/sec  or  bits/sec  per  use  of  uppercase  or lowercase, respectively. Also the p suffix is
              supported to set the burst size in packets, e.g. isochronous=2:25p will send two 25 packet  bursts
              every second, or one 25 packet burst every 0.5 seconds.)

           --local-only[=1|0]
              Set  1  to  limit  traffic to the local network only (through the use of SO_DONTROUTE) set to zero
              otherwise with optional override of compile time default (see configure --default-localonly)

           --near-congestion[=n]
              Enable TCP write rate limiting per the sampled RTT. The delay is applied after the  -l  number  of
              bytes  have completed. The optional value is the multiplier to the RTT and defines the time delay.
              This value defaults to 0.5 if it is not set. Values less than 1 are supported but the value cannot
              be negative. This is an experimental feature. It is not likely stable on live networks.  Suggested
              use is over controlled test networks.

           --no-connect-sync
              By  default,  parallel  traffic  threads  (per -P greater than 1) will synchronize after their TCP
              connects and prior to each sending traffic, i.e. all the threads first complete (or error) the TCP
              3WHS before any traffic thread will start sending. This option disables that synchronization  such
              that each traffic thread will start sending immediately after completing its successful connect.

           --no-udp-fin
              Don't  perform  the  UDP final server to client exchange which means there won't be a final server
              report displayed on the client. All packets per the test will be from the client to the server and
              no packets should be sent in the other direction.  It's highly suggested that -t  be  set  on  the
              server if this option is being used.  This is because there will be only one trigger ending packet
              sent  from  client  to server and if it's lost then the server will continue to run. (Requires ver
              2.0.14 or better)

       -n, --num n[kmKM]
              number of bytes to transmit (instead of -t)

           --permit-key [=<value>]
              Set a key value that must match the server's value (also set with --permit-key) in order  for  the
              server to accept traffic from the client. TCP only, no UDP support.

       -r, --tradeoff
              Do   a   bidirectional  test  individually  -  client-to-server,  followed  by  a  reversed  test,
              server-to-client

           --tcp-quickack
              Set TCP_QUICKACK on the socket

           --tcp-write-prefetch n[kmKM]
              Set TCP_NOTSENT_LOWAT on the socket and use event based writes per select() on the socket.

           --tcp-write-times
              Measure the socket write times

       -t, --time n|0
              time in seconds to transmit traffic, use zero for infinite (default is 10 secs)

           --trip-times
              enable the measurement of end to end write to read latencies (client and  server  clocks  must  be
              synchronized.) See notes about tcp-write-prefetch being enabled.

           --txdelay-time
              time  in  seconds  to hold back or delay after the TCP connect and prior to the socket writes. For
              UDP it's the delay between the traffic thread starting and the first write.

           --txstart-time n.n
              set the txstart-time to n.n using unix or epoch time format (supports microsecond resolution,  e.g
              1536014418.123456)  An  example  to  delay  one  second  using  command  substitution  is iperf -c
              192.168.1.10 --txstart-time $(expr $(date +%s) + 1).$(date +%N)

       -B, --bind ip | ip:port | ipv6 -V | [ipv6]:port -V
              bind src ip addr and optional port as the source of traffic (see NOTES)

       -F, --fileinput name
              input the data to be transmitted from a file

       -I, --stdin
              input the data to be transmitted from stdin

       -L, --listenport n
              port to receive bidirectional tests back on

       -P, --parallel n
              number of parallel client threads to run

       -R, --reverse
              reverse the traffic flow (useful for testing through firewalls, see NOTES)

       -S, --tos <val>
              set the socket's IP_TOS value. Versions 2.1.5 or greater will reflect this tos setting  back  with
              --reverse or --full-duplex option. (Previous versions won't set tos on the reverse traffic.) Note:
              use server side --tos-override to override. See NOTES for values.

       -T, --ttl n
              time-to-live, for multicast (default 1)

           --working-load[=up|down|bidir][,n]
              request  a  concurrent  working  load, currently TCP stream(s), defaults to full duplex (or bidir)
              unless the up or down option is provided. The number of TCP streams  defaults  to  1  and  can  be
              changed  via  the n value, e.g. --working-load=down,4 will use four TCP streams from server to the
              client as the working load. The IP ToS will be BE (0x0) for working load traffic.

       -V, --ipv6_domain
              Set the domain to IPv6 (send packets over IPv6)

       -X, --peerdetect
              run peer version detection prior to traffic.

       -Z, --linux-congestion algo
              set TCP congestion control algorithm (Linux only)

EXAMPLES

       TCP tests (client)

       iperf -c <host> -e -i 1
       ------------------------------------------------------------
       Client connecting to <host>, TCP port 5001 with pid 5149
       Write buffer size:  128 KByte
       TCP window size:  340 KByte (default)
       ------------------------------------------------------------
       [  3] local 45.56.85.133 port 49960 connected with 45.33.58.123 port 5001 (ct=3.23 ms)
       [ ID] Interval        Transfer    Bandwidth       Write/Err  Rtry     Cwnd/RTT        NetPwr
       [  3] 0.00-1.00 sec   126 MBytes  1.05 Gbits/sec  1006/0          0       56K/626 us  210636.47
       [  3] 1.00-2.00 sec   138 MBytes  1.15 Gbits/sec  1100/0        299      483K/3884 us  37121.32
       [  3] 2.00-3.00 sec   137 MBytes  1.15 Gbits/sec  1093/0         24      657K/5087 us  28162.31
       [  3] 3.00-4.00 sec   126 MBytes  1.06 Gbits/sec  1010/0        284      294K/2528 us  52366.58
       [  3] 4.00-5.00 sec   117 MBytes   980 Mbits/sec  935/0        373      487K/2025 us  60519.66
       [  3] 5.00-6.00 sec   144 MBytes  1.20 Gbits/sec  1149/0          2      644K/3570 us  42185.36
       [  3] 6.00-7.00 sec   126 MBytes  1.06 Gbits/sec  1011/0        112      582K/5281 us  25092.56
       [  3] 7.00-8.00 sec   110 MBytes   922 Mbits/sec  879/0         56      279K/1957 us  58871.89
       [  3] 8.00-9.00 sec   127 MBytes  1.06 Gbits/sec  1014/0         46      483K/3372 us  39414.89
       [  3] 9.00-10.00 sec   132 MBytes  1.11 Gbits/sec  1054/0          0      654K/3380 us  40872.75
       [  3] 0.00-10.00 sec  1.25 GBytes  1.07 Gbits/sec  10251/0       1196       -1K/3170 us  42382.03

       where (per -e,)
              ct= TCP connect time (or three way handshake time 3WHS)
              Write/Err Total number of successful socket writes. Total number of non-fatal socket write errors
              Rtry Total number of TCP retries
              Cwnd/RTT (*nix only) TCP congestion window and round trip time  (sampled  where  NA  indicates  no
              value)
              NetPwr (*nix only) Network power defined as (throughput / RTT)

       iperf -c host.doamin.com -i 1 --bounceback --permit-key=mytest --hide-ips
       ------------------------------------------------------------
       Client connecting to (**hidden**), TCP port 5001
       Bursting:  100 Byte writes 10 times every 1.00 second(s)
       Bounce-back test (size= 100 Byte) (server hold req=0 usecs)
       TCP window size: 16.0 KByte (default)
       ------------------------------------------------------------
       [mytest(1)]   local   *.*.*.96  port  38044  connected  with  *.*.*.123  port  5001  (bb  len/hold=100/0)
       (icwnd/mss/irtt=14/1448/10605)
       [ ID] Interval         Transfer     Bandwidth          BB  cnt=avg/min/max/stdev          Rtry   Cwnd/RTT
       RPS
       [mytest(1)]   0.00-1.00   sec   1.95  KBytes   16.0  Kbits/sec     10=11.949/9.662/19.597/3.127  ms     0
       14K/10930 us    83 rps
       [mytest(1)]  1.00-2.00  sec   1.95  KBytes   16.0  Kbits/sec     10=10.004/9.651/10.322/0.232   ms      0
       14K/10244 us    99 rps
       [mytest(1)]   2.00-3.00   sec   1.95  KBytes   16.0  Kbits/sec     10=10.582/9.720/14.831/1.573  ms     0
       14K/10352 us    94 rps
       [mytest(1)]  3.00-4.00  sec   1.95  KBytes   16.0  Kbits/sec     10=11.303/9.940/15.114/2.026   ms      0
       14K/10832 us    88 rps
       [mytest(1)]   4.00-5.00   sec   1.95  KBytes   16.0  Kbits/sec     10=11.148/9.671/14.803/1.837  ms     0
       14K/10858 us    89 rps
       [mytest(1)]  5.00-6.00  sec   1.95  KBytes   16.0  Kbits/sec     10=10.207/9.695/10.729/0.356   ms      0
       14K/10390 us    97 rps
       [mytest(1)]   6.00-7.00   sec   1.95  KBytes   16.0  Kbits/sec     10=10.871/9.770/14.387/1.547  ms     0
       14K/10660 us    91 rps
       [mytest(1)]  7.00-8.00  sec   1.95  KBytes   16.0  Kbits/sec     10=11.224/9.760/14.993/1.837   ms      0
       14K/11027 us    89 rps
       [mytest(1)]   8.00-9.00   sec   1.95  KBytes   16.0  Kbits/sec     10=10.719/9.887/14.553/1.455  ms     0
       14K/10620 us    93 rps
       [mytest(1)]  9.00-10.00  sec   1.95  KBytes   16.0  Kbits/sec     10=10.775/9.689/14.746/1.562  ms      0
       14K/10596 us    92 rps
       [mytest(1)]  0.00-10.02  sec   19.5  KBytes   16.0  Kbits/sec     100=10.878/9.651/19.597/1.743  ms     0
       14K/11676 us    91 rps
       [  1] 0.00-10.02 sec BB8(f)-PDF: bin(w=100us): cnt(100)=97: 5,98: 8,99: 10,100:  8,101:  12,102:  10,103:
       6,104:  7,105: 2,106: 2,107: 3,108: 3,109: 2,110: 1,114: 1,115: 1,118: 1,120: 2,121: 1,124: 1,125: 1,128:
       1,140:    1,143:    1,144:    1,146:    2,148:    1,149:    2,150:     1,151:     1,152:     1,196:     1
       (5.00/95.00/99.7%=97/149/196,Outliers=0,obl/obu=0/0)

       where  BB  cnt=avg/min/max/stdev Count of bouncebacks, average time, minimum time, maximum time, standard
              deviation units of ms
              Rtry Total number of TCP retries
              Cwnd/RTT (*nix only) TCP congestion window and round trip time  (sampled  where  NA  indicates  no
              value)
              RPS Responses per second

       TCP tests (server)

       iperf -s -e -i 1 -l 8K
       ------------------------------------------------------------
       Server listening on TCP port 5001 with pid 13430
       Read buffer size: 8.00 KByte
       TCP window size: 85.3 KByte (default)
       ------------------------------------------------------------
       [  4] local 45.33.58.123 port 5001 connected with 45.56.85.133 port 49960
       [ ID] Interval        Transfer    Bandwidth       Reads   Dist(bin=1.0K)
       [  4] 0.00-1.00 sec   124 MBytes  1.04 Gbits/sec  22249    798:2637:2061:767:2165:1563:589:11669
       [  4] 1.00-2.00 sec   136 MBytes  1.14 Gbits/sec  24780    946:3227:2227:790:2427:1888:641:12634
       [  4] 2.00-3.00 sec   137 MBytes  1.15 Gbits/sec  24484    1047:2686:2218:810:2195:1819:728:12981
       [  4] 3.00-4.00 sec   126 MBytes  1.06 Gbits/sec  20812    863:1353:1546:614:1712:1298:547:12879
       [  4] 4.00-5.00 sec   117 MBytes   984 Mbits/sec  20266    769:1886:1828:589:1866:1350:476:11502
       [  4] 5.00-6.00 sec   143 MBytes  1.20 Gbits/sec  24603    1066:1925:2139:822:2237:1827:744:13843
       [  4] 6.00-7.00 sec   126 MBytes  1.06 Gbits/sec  22635    834:2464:2249:724:2269:1646:608:11841
       [  4] 7.00-8.00 sec   110 MBytes   921 Mbits/sec  21107    842:2437:2747:592:2871:1903:496:9219
       [  4] 8.00-9.00 sec   126 MBytes  1.06 Gbits/sec  22804    1038:1784:2639:656:2738:1927:573:11449
       [  4] 9.00-10.00 sec   133 MBytes  1.11 Gbits/sec  23091    1088:1654:2105:710:2333:1928:723:12550
       [        4]       0.00-10.02       sec        1.25       GBytes        1.07       Gbits/sec        227306
       9316:22088:21792:7096:22893:17193:6138:120790

       where (per -e,)
              Reads Total number of socket reads
              Dist(bin=size) Eight bin histogram of the socket reads returned byte count. Bin width is  set  per
              size. Bins are separated by a colon. In the example, the bins are 0-1K, 1K-2K, .., 7K-8K.

       TCP tests (server with --trip-times on client) iperf -s -i 1 -w 4M
       ------------------------------------------------------------
       Server listening on TCP port 5001
       TCP window size: 8.00 MByte (WARNING: requested 4.00 MByte)
       ------------------------------------------------------------
       [   4]  local  192.168.1.4%eth0  port  5001 connected with 192.168.1.7 port 44798 (trip-times) (MSS=1448)
       (peer 2.0.14-alpha)
       [ ID] Interval        Transfer    Bandwidth    Burst  Latency  avg/min/max/stdev  (cnt/size)  inP  NetPwr
       Reads=Dist
       [  4] 0.00-1.00 sec  19.0 MBytes   159 Mbits/sec  52.314/10.238/117.155/19.779 ms (151/131717) 1.05 MByte
       380.19  781=306:253:129:48:18:15:8:4
       [   4] 1.00-2.00 sec  20.0 MBytes   168 Mbits/sec  53.863/21.264/79.252/12.277 ms (160/131080) 1.08 MByte
       389.38  771=294:236:126:60:18:24:10:3
       [  4] 2.00-3.00 sec  18.2 MBytes   153 Mbits/sec  58.718/22.000/137.944/20.397 ms (146/130964) 1.06 MByte
       325.64  732=299:231:98:52:18:19:10:5
       [  4] 3.00-4.00 sec  19.7 MBytes   165 Mbits/sec  50.448/ 8.921/82.728/14.627 ms (158/130588)  997  KByte
       409.00  780=300:255:121:58:15:18:7:6
       [  4] 4.00-5.00 sec  18.8 MBytes   158 Mbits/sec  53.826/11.169/115.316/15.541 ms (150/131420) 1.02 MByte
       366.24  761=302:226:134:52:22:17:7:1
       [   4] 5.00-6.00 sec  19.5 MBytes   164 Mbits/sec  50.943/11.922/76.134/14.053 ms (156/131276) 1.03 MByte
       402.00  759=273:246:149:45:16:18:4:8
       [  4] 6.00-7.00 sec  18.5 MBytes   155 Mbits/sec  57.643/10.039/127.850/18.950 ms (148/130926) 1.05 MByte
       336.16  710=262:228:133:37:16:20:8:6
       [  4] 7.00-8.00 sec  19.6 MBytes   165 Mbits/sec  52.498/12.900/77.045/12.979 ms (157/131003) 1.00  MByte
       391.78  742=288:200:135:68:16:23:4:8
       [  4] 8.00-9.00 sec  18.0 MBytes   151 Mbits/sec  58.370/ 8.026/150.243/21.445 ms (144/131255) 1.06 MByte
       323.81  716=268:241:108:51:20:17:8:3
       [  4] 9.00-10.00 sec  18.4 MBytes   154 Mbits/sec  56.112/12.419/79.790/13.668 ms (147/131194) 1.05 MByte
       343.70  822=330:303:120:26:16:14:9:4
       [   4] 10.00-10.06 sec  1.03 MBytes   146 Mbits/sec  69.880/45.175/78.754/10.823 ms (9/119632) 1.74 MByte
       260.40  62=26:30:5:1:0:0:0:0
       [  4] 0.00-10.06 sec   191 MBytes   159 Mbits/sec  54.183/  8.026/150.243/16.781  ms  (1526/131072)  1.03
       MByte 366.98  7636=2948:2449:1258:498:175:185:75:48

       where (per -e,)
              Burst  Latency  One  way  TCP write() to read() latency in mean/minimum/maximum/standard deviation
              format (Note: requires the client's and server's system clocks to  be  synchronized  to  a  common
              reference,  e.g.  using  precision  time  protocol  PTP.  A  GPS disciplined OCXO is a recommended
              reference.)
              cnt Number of completed bursts received and used for the burst latency calculations
              size Average burst size in bytes (computed average and estimate only)
              inP inP, short for in progress, is the average number of bytes in progress or in flight.  This  is
              taken  from  the  application  level  write  to  read  perspective. Note this is a mean value. The
              parenthesis value is the standard deviation from the mean.  (Requires --trip-times on client.  See
              Little's law in NOTES.)
              NetPwr Network power defined as (throughput / one way latency)

       TCP tests (with one way delay sync check -X and --trip-times on the client)

       iperf -c 192.168.1.4 -X -e --trip-times -i 1 -t 2
       ------------------------------------------------------------
       Client connecting to 192.168.1.4, TCP port 5001 with pid 16762 (1 flows)
       Write buffer size: 131072 Byte
       TCP window size: 85.0 KByte (default)
       ------------------------------------------------------------
       [ 1] Clock sync check (ms): RTT/Half=(3.361/1.680) OWD-send/ack/asym=(2.246/1.115/1.131)
       [   1]  local  192.168.1.1%ap0  port  47466  connected with 192.168.1.4 port 5001 (MSS=1448) (trip-times)
       (sock=3) (peer 2.1.4-master)
       [ ID] Interval        Transfer    Bandwidth       Write/Err  Rtry     Cwnd/RTT        NetPwr
       [  1] 0.00-1.00 sec  9.50 MBytes  79.7 Mbits/sec  77/0          0     2309K/113914 us  87
       [  1] 1.00-2.00 sec  7.12 MBytes  59.8 Mbits/sec  57/0          0     2492K/126113 us  59
       [  1] 2.00-2.42 sec   128 KBytes  2.47 Mbits/sec  2/0          0     2492K/126113 us  2
       [  1] 0.00-2.42 sec  16.8 MBytes  58.0 Mbits/sec  136/0          0     2492K/126113 us  57

       UDP tests (client)

       iperf -c <host> -e -i 1 -u -b 10m
       ------------------------------------------------------------
       Client connecting to <host>, UDP port 5001 with pid 5169
       Sending 1470 byte datagrams, IPG target: 1176.00 us (kalman adjust)
       UDP buffer size:  208 KByte (default)
       ------------------------------------------------------------
       [  3] local 45.56.85.133 port 32943 connected with 45.33.58.123 port 5001
       [ ID] Interval        Transfer     Bandwidth      Write/Err  PPS
       [  3] 0.00-1.00 sec  1.19 MBytes  10.0 Mbits/sec  852/0      851 pps
       [  3] 1.00-2.00 sec  1.19 MBytes  10.0 Mbits/sec  850/0      850 pps
       [  3] 2.00-3.00 sec  1.19 MBytes  10.0 Mbits/sec  850/0      850 pps
       [  3] 3.00-4.00 sec  1.19 MBytes  10.0 Mbits/sec  851/0      850 pps
       [  3] 4.00-5.00 sec  1.19 MBytes  10.0 Mbits/sec  850/0      850 pps
       [  3] 5.00-6.00 sec  1.19 MBytes  10.0 Mbits/sec  850/0      850 pps
       [  3] 6.00-7.00 sec  1.19 MBytes  10.0 Mbits/sec  851/0      850 pps
       [  3] 7.00-8.00 sec  1.19 MBytes  10.0 Mbits/sec  850/0      850 pps
       [  3] 8.00-9.00 sec  1.19 MBytes  10.0 Mbits/sec  851/0      850 pps
       [  3] 0.00-10.00 sec  11.9 MBytes  10.0 Mbits/sec  8504/0      850 pps
       [  3] Sent 8504 datagrams
       [  3] Server Report:
       [  3] 0.00-10.00 sec  11.9 MBytes  10.0 Mbits/sec   0.047 ms    0/ 8504 (0%)  0.537/ 0.392/23.657/  0.497
       ms  850 pps  2329.37

       where (per -e,)
              Write/Err Total number of successful socket writes. Total number of non-fatal socket write errors
              PPS Transmit packet rate in packets per second

       UDP tests (server) iperf -s -i 1 -w 4M -u
       ------------------------------------------------------------
       Server listening on UDP port 5001
       Receiving 1470 byte datagrams
       UDP buffer size: 8.00 MByte (WARNING: requested 4.00 MByte)
       ------------------------------------------------------------
       [   3]  local  192.168.1.4  port  5001  connected  with  192.168.1.1 port 60027 (WARN: winsize=8.00 MByte
       req=4.00 MByte) (trip-times) (0.0) (peer 2.0.14-alpha)
       [ ID] Interval        Transfer     Bandwidth        Jitter   Lost/Total   Latency  avg/min/max/stdev  PPS
       inP NetPwr
       [  3] 0.00-1.00 sec  44.5 MBytes   373 Mbits/sec   0.071 ms 52198/83938 (62%) 75.185/ 2.367/85.189/14.430
       ms 31854 pps 3.64 MByte 620.58
       [   3]  1.00-2.00  sec   44.8  MBytes   376 Mbits/sec   0.015 ms 59549/143701 (41%) 79.609/75.603/85.757/
       1.454 ms 31954 pps 3.56 MByte 590.04
       [  3] 2.00-3.00 sec  44.5 MBytes   373 Mbits/sec    0.017  ms  59494/202975  (29%)  80.006/75.951/88.198/
       1.638 ms 31733 pps 3.56 MByte 583.07
       [   3]  3.00-4.00  sec   44.5  MBytes   373 Mbits/sec   0.019 ms 59586/262562 (23%) 79.939/75.667/83.857/
       1.145 ms 31767 pps 3.56 MByte 583.57
       [  3] 4.00-5.00 sec  44.5 MBytes   373 Mbits/sec    0.081  ms  59612/322196  (19%)  79.882/75.400/86.618/
       1.666 ms 31755 pps 3.55 MByte 584.40
       [   3]  5.00-6.00  sec   44.7  MBytes   375 Mbits/sec   0.064 ms 59571/381918 (16%) 79.767/75.571/85.339/
       1.556 ms 31879 pps 3.56 MByte 588.02
       [  3] 6.00-7.00 sec  44.6 MBytes   374 Mbits/sec    0.041  ms  58990/440820  (13%)  79.722/75.662/85.938/
       1.087 ms 31820 pps 3.58 MByte 586.73
       [   3]  7.00-8.00  sec   44.7  MBytes   375 Mbits/sec   0.027 ms 59679/500548 (12%) 79.745/75.704/84.731/
       1.094 ms 31869 pps 3.55 MByte 587.46
       [  3] 8.00-9.00 sec  44.3 MBytes   371 Mbits/sec    0.078  ms  59230/559499  (11%)  80.346/75.514/94.293/
       2.858 ms 31590 pps 3.58 MByte 577.97
       [   3]  9.00-10.00  sec  44.4 MBytes   373 Mbits/sec   0.073 ms 58782/618394 (9.5%) 79.125/75.511/93.638/
       1.643 ms 31702 pps 3.55 MByte 588.99
       [  3] 10.00-10.08 sec  3.53 MBytes   367 Mbits/sec    0.129  ms  6026/595236  (1%)  94.967/80.709/99.685/
       3.560 ms 31107 pps 3.58 MByte 483.12
       [   3]  0.00-10.08  sec   449 MBytes   374 Mbits/sec   0.129 ms 592717/913046 (65%) 79.453/ 2.367/99.685/
       5.200 ms 31776 pps (null) 587.91

       where (per -e,)
              Latency End to end latency in mean/minimum/maximum/standard deviation format (Note:  requires  the
              client's and server's system clocks to be synchronized to a common reference, e.g. using precision
              time protocol PTP. A GPS disciplined OCXO is a recommended reference.)
              PPS Received packet rate in packets per second
              inP  inP,  short for in progress, is the average number of bytes in progress or in flight. This is
              taken from an application write  to  read  perspective.  (Requires  --trip-times  on  client.  See
              Little's law in NOTES.)
              NetPwr Network power defined as (throughput / latency)

       Isochronous UDP tests (client)

       iperf -c 192.168.100.33 -u -e -i 1 --isochronous=60:100m,10m --realtime
       ------------------------------------------------------------
       Client connecting to 192.168.100.33, UDP port 5001 with pid 14971
       UDP isochronous: 60 frames/sec mean= 100 Mbit/s, stddev=10.0 Mbit/s, Period/IPG=16.67/0.005 ms
       UDP buffer size:  208 KByte (default)
       ------------------------------------------------------------
       [  3] local 192.168.100.76 port 42928 connected with 192.168.100.33 port 5001
       [ ID] Interval        Transfer     Bandwidth      Write/Err  PPS  frames:tx/missed/slips
       [  3] 0.00-1.00 sec  12.0 MBytes   101 Mbits/sec  8615/0     8493 pps   62/0/0
       [  3] 1.00-2.00 sec  12.0 MBytes   100 Mbits/sec  8556/0     8557 pps   60/0/0
       [  3] 2.00-3.00 sec  12.0 MBytes   101 Mbits/sec  8586/0     8586 pps   60/0/0
       [  3] 3.00-4.00 sec  12.1 MBytes   102 Mbits/sec  8687/0     8687 pps   60/0/0
       [  3] 4.00-5.00 sec  11.8 MBytes  99.2 Mbits/sec  8468/0     8468 pps   60/0/0
       [  3] 5.00-6.00 sec  11.9 MBytes  99.8 Mbits/sec  8519/0     8520 pps   60/0/0
       [  3] 6.00-7.00 sec  12.1 MBytes   102 Mbits/sec  8694/0     8694 pps   60/0/0
       [  3] 7.00-8.00 sec  12.1 MBytes   102 Mbits/sec  8692/0     8692 pps   60/0/0
       [  3] 8.00-9.00 sec  11.9 MBytes   100 Mbits/sec  8537/0     8537 pps   60/0/0
       [  3] 9.00-10.00 sec  11.8 MBytes  99.0 Mbits/sec  8450/0     8450 pps   60/0/0
       [  3] 0.00-10.01 sec   120 MBytes   100 Mbits/sec  85867/0     8574 pps  602/0/0
       [  3] Sent 85867 datagrams
       [  3] Server Report:
       [   3]  0.00-9.98  sec    120  MBytes   101 Mbits/sec   0.009 ms  196/85867 (0.23%)  0.665/ 0.083/ 1.318/
       0.174 ms 8605 pps  18903.85

       where (per -e,)
              frames:tx/missed/slips Total number of isochronous frames or bursts. Total number of frame ids not
              sent. Total number of frame slips

       Isochronous UDP tests (server)

       iperf -s -e -u --udp-histogram=100u,2000 --realtime
       ------------------------------------------------------------
       Server listening on UDP port 5001 with pid 5175
       Receiving 1470 byte datagrams
       UDP buffer size:  208 KByte (default)
       ------------------------------------------------------------
       [  3] local 192.168.100.33 port 5001 connected with 192.168.100.76 port 42928 isoch (peer 2.0.13-alpha)
       [ ID] Interval        Transfer     Bandwidth        Jitter   Lost/Total   Latency  avg/min/max/stdev  PPS
       NetPwr  Frames/Lost
       [   3]  0.00-9.98  sec    120  MBytes   101 Mbits/sec   0.010 ms  196/85867 (0.23%)  0.665/ 0.083/ 1.318/
       0.284 ms 8585 pps  18903.85  601/1
       [  3] 0.00-9.98 sec T8(f)-PDF: bin(w=100us): cnt(85671)= 1:2,2:844,3: 10034,4:  8493,5:  8967,6:  8733,7:
       8823,8: 9023,9: 8901,10: 8816,11: 7730,12: 4563,13: 741,14:1 (5.00/95.00%=3/12,Outliers=0,obl/obu=0/0)
       [   3]  0.00-9.98  sec  F8(f)-PDF:  bin(w=100us):  cnt(598)=  15:2,16:1,17: 27,18: 68,19: 125,20: 136,21:
       103,22: 83,23: 22,24: 23,25: 5,26: 3 (5.00/95.00%=17/24,Outliers=0,obl/obu=0/0)

       where, Frames/lost Total number of frames (or bursts) received. Total number of bursts lost or error-ed
              T8-PDF(f) Latency histogram for packets
              F8-PDF(f) Latency histogram for frames

ENVIRONMENT

       Note:  The environment variable option settings haven't been maintained well.  See  the  source  code  if
              these are of interest.

NOTES

       Numeric  options:  Some  numeric  options support format characters per '<value>c' (e.g. 10M) where the c
       format characters are k,m,g,K,M,G.  Lowercase format characters are 10^3  based  and  uppercase  are  2^n
       based, e.g. 1k = 1000, 1K = 1024, 1m = 1,000,000 and 1M = 1,048,576

       Rate  limiting:  The  -b  option  supports read and write rate limiting at the application level.  The -b
       option on the client also supports variable offered loads through the <mean>,<standard deviation> format,
       e.g.  -b 100m,10m. The distribution used is log normal. Similar for the isochronous option. The -b on the
       server rate limits the reads. Socket based pacing is also supported using the --fq-rate long option. This
       will work with the --reverse and --full-duplex options as well.

       IP tos: Specifies the type-of-service or DSCP class for connections.  Accepted  values  are  af11,  af12,
       af13,  af21,  af22, af23, af31, af32, af33, af41, af42, af43, cs0, cs1, cs2, cs3, cs4, cs5, cs6, cs7, ef,
       le, nqb, nqb2, ac_be, ac_bk, ac_vi, ac_vo, lowdelay, throughput, reliability, a numeric value, or none to
       use the operating system default.  The ac_xx values are the four access categories  defined  in  WMM  for
       Wi-Fi,  and  they  are  aliases  for  DSCP  values that will be mapped to the corresponding ACs under the
       assumption that the device uses the DSCP-to-UP mapping table specified in IETF RFC 8325.

       --trip-times The --trip-times option enables many one way delay  (OWD)  metrics.  Also  note  that  using
       --trip-times  on  a  TCP  client  will  cause  --tcp-write-prefetch  to  be  set  to  a  small  value  if
       tcp-write-prefetch hasn't hasn't also been set. This is done to reduce send side bloat latency (which  is
       unrelated  to  network  induced  latency.)  Set  --tcp-write-prefetch to zero to disable this (which will
       disable TCP_NOTSENT_LOWAT) and will allow for send side bloat.

       Synchronized clocks: The --trip-times  option  indicates  that  the  client's  and  server's  clocks  are
       synchronized  to  a  common  reference.  Network Time Protocol (NTP) or Precision Time Protocol (PTP) are
       commonly used for this. The reference clock(s) error and the synchronization protocols  will  affect  the
       accuracy of any end to end latency measurements.

       Histograms  and non-parametric statistics: The --histograms option provides the raw data where nothing is
       averaged. This is useful for non-parametric distributions, e.g. latency. The standard output does use the
       central limit theorem to produce average, minimum, maximum and variation. This loses information when the
       underlining distribution is  not  Gaussian.   Histograms  are  supported  so  this  information  is  made
       available.

       Histogram output interpretation: Below is an example bounceback histogram and how to interpret it

       [  1] 0.00-5.10 sec BB8-PDF:
       bin(w=100us):  cnt(50)=35:  1,37: 1,39: 1,40: 3,41: 4,42: 1,43: 1,52: 1,57: 1,65: 1,68: 1,69: 1,70: 1,72:
       2,74: 1,75: 5,78: 1,79: 2,80: 4,81: 3,82: 1,83: 1,88: 2,90: 2,92:  1,94:  1,117:  1,126:  1,369:  1,1000:
       1,1922: 1,3710: 1 (5.00/95.00/99.7%=39/1000/3710,Outliers=4,obl/obu=0/0)

       where, [ 1] The traffic thread number
              0.00-5.10 sec The time interval of the histogram
              BB8-PDF BB8 is the histogram name and the PDF indicates a histogram raw output
              bin(w=100us) provides the bin width. The bin width of this histogram is 100 microseconds
              cnt(50)  provides  the  total  number  of  samples  in the histogram. There are 50 samples in this
              histogram
              35:1 provides the bin no then the number of samples in that bin. Bin 35 with bin  width  100us  is
              3.4 ms - 3.5 ms and there was one sample that landed there
              5.00/95.00/99.7%=39/1000/3710 provides the bin confidence intervals (per the integrated cumulative
              distribution function.) 5% landed in 3.9 ms or better (recall bin number multiplies by bin width.)
              95% landed in 10 ms or better. 99.7% or 3 standards of deviation landed in 37.1 ms or better
              Outliers=4 provides the outlier count, similar to 3IQR (3 times the inter quartile range) but uses
              10% and 90% for inner & outer fence post, then 3 times that for outlier detection.
              obl/obu=0/0  out of bounds lower and out of bands upper, provides the number of samples that could
              not be binned because the value landed outside of all possible bins

       Binding is done at the logical level of port and ip address (or layer 3) using the -B option and a  colon
       as  the  separator  between  port  and the ip addr. Binding at the device (or layer 2) level requires the
       percent (%) as the delimiter (for both the client and the server.)   An  example  for  src  port  and  ip
       address  is -B 192.168.1.1:6001. To bind the src port only and let the operating system choose the source
       ip address use 0.0.0.0, e.g.  -B 0.0.0.0:6001. On the client, the -B option affects  the  bind(2)  system
       call, and will set the source ip address and the source port, e.g. iperf -c <host> -B 192.168.100.2:6002.
       This  controls  the  packet's  source  values but not routing.  These can be confusing in that a route or
       device lookup may not be that of the device with the configured source IP.  So, for example,  if  the  IP
       address  of  eth0 is used for -B and the routing table for the destination IP address resolves the output
       interface to be eth1, then the host will send the packet out  device  eth1  while  using  the  source  IP
       address  of eth0 in the packet.  To affect the physical output interface (e.g. dual homed systems) either
       use -c <host>%<dev> (requires root) which bypasses this host route  table  lookup,  or  configure  policy
       routing  per  each  -B source address and set the output interface appropriately in the policy routes. On
       the server or receive, only packets destined to -B IP address will be  received.  It's  also  useful  for
       multicast.  For  example,  iperf  -s -B 224.0.0.1%eth0 will only accept ip multicast packets with dest ip
       224.0.0.1 that are received on the eth0 interface, while iperf -s -B 224.0.0.1 will receive those packets
       on any interface, Finally, the device specifier is required for v6 link-local, e.g. -c [v6addr]%<dev> -V,
       to select the output interface.

       Reverse, full-duplex, dualtest (-d) and tradeoff (-r): The --reverse (-R) and --full-duplex  options  can
       be confusing when compared to the older options of --dualtest (-d) and --tradeoff (-r). The newer options
       of  --reverse  and  --full-duplex  only open one socket and read and write to the same socket descriptor,
       i.e. use the socket in full duplex mode.  The older -d  and  -r  open  second  sockets  in  the  opposite
       direction  and  do  not use a socket in full duplex mode. Note that full duplex applies to the socket and
       not to the network devices and that full duplex sockets are supported by the operating systems regardless
       if an underlying network supports  full  duplex  transmission  and  reception.   It's  suggested  to  use
       --reverse  if  you  want to test through a NAT firewall (or -R on non-windows systems). This applies role
       reversal of the test after opening the full duplex socket.  (Note: Firewall piercing may be  required  to
       use -d and -r if a NAT gateway is in the path.)

       Also, the --reverse -b <rate> setting behaves differently for TCP and UDP. For TCP it will rate limit the
       read  side, i.e. the iperf client (role reversed to act as a server) reading from the full duplex socket.
       This will in turn flow control the reverse traffic per standard TCP congestion control. The --reverse  -b
       <rate> will be applied on transmit (i.e. the server role reversed to act as a client) for UDP since there
       is  no  flow control with UDP. There is no option to directly rate limit the writes with TCP testing when
       using --reverse.

       Bounceback The bounceback test allows one to measure network responsiveness (which, in this test,  is  an
       inverse  of  latency.)   The  units  are responses per second or rps. Latency is merely delay in units of
       time. Latency metrics require one to know the delay of what's  being  measured.  For  bounceback  it's  a
       client  write to a server read followed by a server write and then the client read. The original write is
       bounce backed. Iperf 2 sets up the socket with TCP_NODELAY and possibly TCP_QUICKACK  (unless  disabled).
       The  client  sends a small write (which defaults to 100 bytes unless -l is set) and issues a read waiting
       for the "bounceback" from the server. The server waits for a  read  and  then  optionally  delays  before
       sending the payload back. This repeats until the traffic ends. Results are shown in units of rps and time
       delays.

       The TCP_QUICKACK socket option will be enabled during bounceback tests when the bounceback-hold is set to
       a non-zero value. The socket option is applied after every read() on the server and before the hold delay
       call.  It's  also applied on the client. Use --bounceback-no-quickack to have TCP run in default mode per
       the socket (which is most likely TCP_QUICKACK being off.)

       TCP Connect times: The TCP connect time (or three way handshake) can be seen on the iperf client when the
       -e (--enhanced) option is set. Look for the ct=<value> in the  connected  message,  e.g.in  '[  3]  local
       192.168.1.4  port  48736  connected  with  192.168.1.1  port  5001 (ct=1.84 ms)' shows the 3WHS took 1.84
       milliseconds.

       Port-range Port ranges are supported using the hyphen notation, e.g. 6001-6009. This will cause  multiple
       threads,  one per port, on either the listener/server or the client. The user needs to take care that the
       ports in the port range are available and not already  in  use  per  the  operating  system.  The  -P  is
       supported on the client and will apply to each destination port within the port range.  Finally, this can
       be  used  for  a  workaround  for  Windows  UDP and -P > 1 as Windows doesn't dispatch UDP per a server's
       connect and the quintuple.

       Packet per second (pps) calculation The packets per second calculation is  done  as  a  derivative,  i.e.
       number  of  packets  divided by time. The time is taken from the previous last packet to the current last
       packet. It is not the sample interval time. The last  packet  can  land  at  different  times  within  an
       interval.   This  means  that  pps does not have to match rx bytes divided by the sample interval.  Also,
       with --trip-times set, the packet time on receive is set by the sender's write time so pps indicates  the
       end  to  end  pps  with  --trip-times.  The  RX  pps  calculation is receive side only when -e is set and
       --trip-times is not set.

       Little's Law in queuing theory is a theorem that  determines  the  average  number  of  items  (L)  in  a
       stationary  queuing  system  based  on  the  average  waiting time (W) of an item within a system and the
       average number of items arriving at the system per unit of time (lambda). Mathematically, it's L = lambda
       * W. As used here, the units are bytes. The arrival rate is taken from the writes.

       Network power: The network power (NetPwr) metric is experimental. It's a convenience function defined  as
       throughput/delay.  For TCP transmits, the delay is the sampled RTT times.  For TCP receives, the delay is
       the  write  to  read  latency.   For  UDP  the delay is the end/end latency.  Don't confuse this with the
       physics definition of power (delta energy/delta time) but more of  a  measure  of  a  desirable  property
       divided  by  an  undesirable property. Also note, one must use -i interval with TCP to get this as that's
       what sets the RTT sampling rate. The metric is scaled to assist with human readability.

       Multicast: Iperf 2 supports multicast with a couple of caveats.  First,  multicast  streams  cannot  take
       advantage  of the -P option. The server will serialize multicast streams. Also, it's highly encouraged to
       use a -t on a server that will be used for multicast clients. That is because the single end  of  traffic
       packet  sent  from  client  to  server  may  get  lost and there are no redundant end of traffic packets.
       Setting -t on the server will kill the server thread in the event this packet is indeed lost.

       TCP_QUICKACK: The TCP_QUICKACK socket option will be applied after every read() on the server  such  that
       TCP acks are sent immediately, rather than possibly delayed.

       Fast  Sampling:  Use  ./configure --enable-fastsampling and then compile from source to enable four digit
       (e.g. 1.0000) precision in reports' timestamps. Useful for sub-millisecond sampling.

DIAGNOSTICS

       Use ./configure --enable-thread-debug and then compile from source to enable both  asserts  and  advanced
       debugging of the tool itself.

BUGS

       See https://sourceforge.net/p/iperf2/tickets/

AUTHORS

       Iperf2,  based  from  iperf  (originally  written  by  Mark  Gates  and  Alex  Warshavsky), has a goal of
       maintenance with some feature enhancement.  Other contributions from Ajay  Tirumala,  Jim  Ferguson,  Jon
       Dugan  <jdugan  at  x1024  dot  net>,  Feng Qin, Kevin Gibbs, John Estabrook <jestabro at ncsa.uiuc.edu>,
       Andrew Gallatin <gallatin at gmail.com>, Stephen  Hemminger  <shemminger  at  linux-foundation.org>,  Tim
       Auckland <tim.auckland at gmail.com>, Robert J. McMahon <rjmcmahon at rjmcmahon.com>

SEE ALSO

       accept(2),bind(2),close(2),connect(2),fcntl(2),getpeername(2),getsockname(2),getsockopt(2),listen(2),read(2),recv(2),select(2),send(2),setsockopt(2),shutdown(2),write(2),ip(7),socket(7),tcp(7),udp(7)

       Source code at http://sourceforge.net/projects/iperf2/

       "Unix  Network Programming, Volume 1: The Sockets Networking API (3rd Edition) 3rd Edition" by W. Richard
       Stevens (Author), Bill Fenner (Author), Andrew M. Rudoff (Author)

NLANR/DAST                                        February 2023                                         IPERF(1)