1IPERF(1)                         User Manuals                         IPERF(1)
2
3
4

NAME

6       iperf  -  perform  network traffic tests using network sockets. Metrics
7       include throughput and latency.
8

SYNOPSIS

10       iperf -s [options]
11
12       iperf -c server [options]
13
14       iperf -u -s [options]
15
16       iperf -u -c server [options]
17
18

DESCRIPTION

20       iperf 2 is a testing tool which performs network  traffic  measurements
21       using  network  sockets.  The  performance  metrics  supported  include
22       throughput and latency. Iperf can use both TCP and UDP sockets (or pro‐
23       tocols.)  It  supports  unidirectional,  full  duplex (same socket) and
24       bidirectional traffic,  and  supports  multiple,  simultaneous  traffic
25       streams. It supports multicast traffic including source specific multi‐
26       cast (SSM) joins. Its multi-threaded design  allows  for  peak  perfor‐
27       mance. Metrics displayed help to characterize host to host network per‐
28       formance. Setting the enhanced (-e) option provides all available  met‐
29       rics.  Note: the metrics are at the socket level reads and writes. They
30       do not include the overhead associated with lower level protocol  layer
31       headers.
32
33       The user must establish both a both a server (to receive traffic) and a
34       client (to generate and send traffic) for a test to occur.  The  client
35       and  server  typically are on different hosts or computers but need not
36       be.
37

GENERAL OPTIONS

39       -b, --bandwidth
40              set the target bandwidth and  optional  standard  deviation  per
41              <mean>,[<stdev>] (See NOTES for suffixes)
42
43       -e, --enhanced
44              Display  enhanced  output in reports otherwise use legacy report
45              (ver 2.0.5) formatting (see NOTES)
46
47       -f, --format [abkmgBKMG]
48              format to report: adaptive, bits, Bytes,  Kbits,  Mbits,  Gbits,
49              KBytes, MBytes, GBytes (see NOTES for more)
50
51       -h, --help
52              print a help synopsis
53
54           --hide-ips
55              obscure  ip  addresses in output (useful when wanting to publish
56              results and not display the full ip addresses. v4 only)
57
58       -i, --interval < t | f >
59              sample or display interval reports every t seconds (default)  or
60              every  frame  or burst, i.e. if f is used then the interval will
61              be each frame or burst. The frame interval reporting is  experi‐
62              mental.   Also suggest a compile with fast-sampling, i.e. ./con‐
63              figure --enable-fastsampling
64
65       -l, --len n[kmKM]
66              set read/write buffer size (TCP) or length (UDP) to n  (TCP  de‐
67              fault 128K, UDP default 1470)
68
69           --l2checks
70              perform  layer 2 length checks on received UDP packets (requires
71              systems that support packet sockets, e.g. Linux)
72
73       -m, --print_mss
74              print TCP maximum segment size
75
76           --NUM_REPORT_STRUCTS <count>
77              Override the default shared  memory  size  between  the  traffic
78              thread(s)  and  reporter  thread in order to mitigate mutex lock
79              contentions. The default value of 5000 should be sufficient  for
80              1Gb/s networks. Increase this upon seeing the Warning message of
81              reporter thread too slow. If the  Warning  message  isn't  seen,
82              then  increasing  this  won't have any significant effect (other
83              than to use some additional memory.)
84
85       -o, --output filename
86              output the report or error message to this specified file
87
88           --permit-key [=<value>]
89              Set a key value that must match for the server to accept traffic
90              on  a  connection. If the option is given without a value on the
91              server a key value will be autogenerated and  displayed  in  its
92              initial  settings  report.  The lifetime of the key is set using
93              --permit-key-timeout and defaults to twenty seconds.  The  value
94              is  required  on clients. The value will also be used as part of
95              the transfer id in reports. The option set on the client but not
96              the  server  will  also  cause the server to reject the client's
97              traffic. TCP only, no UDP support.
98
99       -p, --port m[-n]
100              set client or server port(s) to send or listen on per m (default
101              5001)  w/optional  port  range  per m-n (e.g. -p 6002-6008) (see
102              NOTES)
103
104           --sum-dstip
105              sum traffic threads based upon the destination IP  address  (de‐
106              fault is source ip address)
107
108           --sum-only
109              set  the output to sum reports only. Useful for -P at large val‐
110              ues
111
112       -t, --time n
113              time in seconds to listen for new traffic  connections,  receive
114              traffic or send traffic
115
116       -u, --udp
117              use UDP rather than TCP
118
119       -w, --window n[kmKM]
120              TCP window size (socket buffer size)
121
122       -z, --realtime
123              Request real-time scheduler, if supported.
124
125       -B, --bind host[:port][%dev]
126              bind  to host, ip address or multicast address, optional port or
127              device (see NOTES)
128
129       -C, --compatibility
130              for use with older versions does not sent extra msgs
131
132       -M, --mss n
133              set TCP maximum segment size using TCP_MAXSEG
134
135       -N, --nodelay
136              set TCP no delay, disabling Nagle's Algorithm
137
138       -v, --version
139              print version information and quit
140
141       -x, --reportexclude [CDMSV]
142              exclude C(connection) D(data) M(multicast) S(settings) V(server)
143              reports
144
145       -y, --reportstyle C|c
146              if set to C or c report results as CSV (comma separated values)
147
148       -Z, --tcp-congestion
149              Set  the default congestion-control algorithm to be used for new
150              connections. Platforms must support setsockopt's TCP_CONGESTION.
151              (Notes: See sysctl and tcp_allowed_congestion_control for avail‐
152              able options. May require root privileges.)
153

SERVER SPECIFIC OPTIONS

155       -1, --singleclient
156              set the server to process only one client at a time
157
158       -b, --bandwidth n[kmgKMG]
159              set target read rate to n bits/sec. TCP only for the server.
160
161       -s, --server
162              run in server mode
163
164           --histograms[=binwidth[u],bincount,[lowerci],[upperci]]
165              enable latency histograms for udp packets (-u), for  tcp  writes
166              (with --trip-times), or for either udp or tcp with --isochronous
167              clients. The binning can be modified. Bin widths (default 1 mil‐
168              lisecond,  append  u  for microseconds, m for milliseconds) bin‐
169              count is total bins (default 1000), ci  is  confidence  interval
170              between 0-100% (default lower 5%, upper 95%, 3 stdev 99.7%)
171
172           --permit-key [=<value>]
173              Set a key value that must match for the server to accept traffic
174              from a client (also set with --permit-key.) The server will  au‐
175              togenerate  a globally unique key when the option is given with‐
176              out a value. This value will be displayed in the  server's  ini‐
177              tial  settings  report.  The  lifetime  of  the key is set using
178              --permit-key-timeout and defaults to twenty seconds.  TCP  only,
179              no UDP support.
180
181           --permit-key-timeout <value>
182              Set  the  lifetime  of the permit key in seconds. Defaults to 20
183              seconds if not set. A value of zero will disable the timer.
184
185           --tap-dev <dev>
186              Set the receive interface to the TAP device as specified.
187
188           --tcp-rx-window-clamp n[kmKM]
189              Set the socket option of TCP_WINDOW_CLAMP, units is bytes.
190
191       -t, --time n
192              time in seconds to listen for new traffic connections and/or re‐
193              ceive traffic (defaults to infinite)
194
195           --tos-override <val>
196              set  the  socket's IP_TOS value for reverse or full duplex traf‐
197              fic. Supported in versions 2.1.5 or greater.  Previous  versions
198              won't set IP_TOS on reverse traffic. See NOTES for values.
199
200       -B, --bind ip | ip%device
201              bind src ip addr and optional src device for receiving
202
203       -D, --daemon
204              run  the server as a daemon. On Windows this will run the speci‐
205              fied command-line under the IPerfService, installing the service
206              if  necessary.  Note the service is not configured to auto-start
207              or restart - if you need a self-starting service you  will  need
208              to create an init script or use Windows "sc" commands.
209
210       -H, --ssm-host host
211              Set  the  source host (ip addr) per SSM multicast, i.e. the S of
212              the S,G
213
214       -R, --remove
215              remove the IPerfService (Windows only).
216
217       -U, --single_udp
218              run in single threaded UDP mode
219
220       -V, --ipv6_domain
221              Enable IPv6 reception  by  setting  the  domain  and  socket  to
222              AF_INET6 (Can receive on both IPv4 and IPv6)
223

CLIENT SPECIFIC OPTIONS

225       -b, --bandwidth n[kmgKMG][,n[kmgKMG]] | n[kmgKMG]pps
226              set  target  bandwidth  to  n bits/sec (default 1 Mbit/sec) or n
227              packets per sec. This may be used with TCP or  UDP.  Optionally,
228              for variable loads, use format of  mean,standard deviation
229
230           --bounceback[=n]
231              run  a TCP bounceback or rps test with optional number writes in
232              a burst per value of n. The default is ten writes  every  period
233              and  the default period is one second (Note: set size with -l or
234              --len which defaults to 100 bytes)
235
236           --bounceback-congest[=up|down|bidir][,n]
237              request a concurrent working load or TCP stream(s), defaults  to
238              full duplex (or bidir) unless the up or down option is provided.
239              The number of TCP streams defaults to 1 and can be  changed  via
240              the  n value, e.g. --bounceback-congest=down,4 will use four TCP
241              streams from server to the client as the working  load.  The  IP
242              ToS will be BE (0x0) for working load traffic.
243
244           --bounceback-hold n
245              request  the  server to insert a delay of n milliseconds between
246              its read and write (default is no delay)
247
248           --bounceback-period[=n]
249              request the client schedule its send(s) every n seconds (default
250              is  one  second, use zero value for immediate or continuous back
251              to back)
252
253           --bounceback-no-quickack
254              request the server not set the TCP_QUICKACK socket option  (dis‐
255              abling TCP ACK delays) during a bounceback test (see NOTES)
256
257           --bounceback-txdelay n
258              request  the  client to delay n seconds between the start of the
259              working load and the bounceback traffic (default is no delay)
260
261           --burst-period n
262              Set the burst period in seconds. Defaults to one second.  (Note:
263              assumed use case is low duty cycle traffic bursts)
264
265           --burst-size n
266              Set  the  burst  size  in  bytes.  Defaults to 1M if no value is
267              given.  -c, --client host | host%device run in client mode, con‐
268              necting  to  host   where the optional %dev will SO_BINDTODEVICE
269              that output interface (requires root and see NOTES)
270
271
272           --connect-only[=n]
273              only perform a TCP connect (or 3WHS) without any data  transfer,
274              useful  to  measure  TCP connect() times. Optional value of n is
275              the total number of connects to do (zero is run  forever.)  Note
276              that -i will rate limit the connects where -P will create bursts
277              and -t will end the client and hence end its connect attempts.
278
279           --connect-retries[= n]
280              number of times to retry a TCP connect at the application level.
281              See  operating  system information on the details of TCP connect
282              related settings.
283
284       -d, --dualtest
285              Do a bidirectional test simultaneous test  using  two  unidirec‐
286              tional sockets
287
288           --fq-rate n[kmgKMG]
289              Set a rate to be used with fair-queueing based socket-level pac‐
290              ing, in bytes or bits per second. Only  available  on  platforms
291              supporting the SO_MAX_PACING_RATE socket option. (Note: Here the
292              suffixes indicate bytes/sec or bits/sec per use of uppercase  or
293              lowercase, respectively)
294
295           --full-duplex
296              run  a  full  duplex test, i.e. traffic in both transmit and re‐
297              ceive directions using the same socket
298
299           --histograms[=binwidth[u],bincount,[lowerci],[upperci]]
300              enable select()/write()  histograms  with  --tcp-write-prefetch.
301              The  binning  can be modified. Bin widths (default 100 microsec‐
302              onds, append u for microseconds, m for milliseconds) bincount is
303              total  bins  (default  10000), ci is confidence interval between
304              0-100% (default lower 5%, upper 95%, 3 stdev 99.7%)
305
306           --incr-dstip
307              increment the destination ip address  when  using  the  parallel
308              (-P) or port range option
309
310           --incr-dstport
311              increment  the  destination port when using the parallel (-P) or
312              port range option
313
314           --incr-srcip
315              increment the source ip address when using the parallel (-P)  or
316              port range option
317
318           --incr-srcport
319              increment  the source ip address when using the parallel (-P) or
320              port range option, requires -B to set the src port
321
322           --ipg n
323              set the inter-packet gap to n (units of seconds) for packets  or
324              within a frame/burst when --isochronous is set
325
326           --isochronous[=fps:mean,stdev]
327              send  isochronous  traffic  with frequency frames per second and
328              load defined by mean and standard deviation using a  log  normal
329              distribution, defaults to 60:20m,0. (Note: Here the suffixes in‐
330              dicate bytes/sec or bits/sec per use of uppercase or  lowercase,
331              respectively.  Also  the  p suffix is supported to set the burst
332              size in packets, e.g. isochronous=2:25p will send two 25  packet
333              bursts every second, or one 25 packet burst every 0.5 seconds.)
334
335           --local-only[=1|0]
336              Set  1  to  limit traffic to the local network only (through the
337              use of SO_DONTROUTE) set to zero otherwise with  optional  over‐
338              ride of compile time default (see configure --default-localonly)
339
340           --near-congestion[=n]
341              Enable TCP write rate limiting per the sampled RTT. The delay is
342              applied after the -l number of bytes  have  completed.  The  op‐
343              tional  value  is the multiplier to the RTT and defines the time
344              delay. This value defaults to 0.5 if it is not set. Values  less
345              than  1  are supported but the value cannot be negative. This is
346              an experimental feature. It is not likely stable  on  live  net‐
347              works. Suggested use is over controlled test networks.
348
349           --no-connect-sync
350              By  default,  parallel  traffic  threads (per -P greater than 1)
351              will synchronize after their TCP  connects  and  prior  to  each
352              sending  traffic, i.e. all the threads first complete (or error)
353              the TCP 3WHS before any traffic thread will start sending.  This
354              option  disables  that  synchronization  such  that each traffic
355              thread will start sending immediately after completing its  suc‐
356              cessful connect.
357
358           --no-udp-fin
359              Don't  perform  the  UDP  final  server to client exchange which
360              means there won't be a final  server  report  displayed  on  the
361              client.  All packets per the test will be from the client to the
362              server and no packets should be sent  in  the  other  direction.
363              It's  highly  suggested that -t be set on the server if this op‐
364              tion is being used.  This is because  there  will  be  only  one
365              trigger  ending  packet  sent  from client to server and if it's
366              lost then the server will continue to run. (Requires ver  2.0.14
367              or better)
368
369       -n, --num n[kmKM]
370              number of bytes to transmit (instead of -t)
371
372           --permit-key [=<value>]
373              Set  a  key  value  that must match the server's value (also set
374              with --permit-key) in order for the  server  to  accept  traffic
375              from the client. TCP only, no UDP support.
376
377       -r, --tradeoff
378              Do  a  bidirectional  test individually - client-to-server, fol‐
379              lowed by a reversed test, server-to-client
380
381           --tcp-quickack
382              Set TCP_QUICKACK on the socket
383
384           --tcp-write-prefetch n[kmKM]
385              Set TCP_NOTSENT_LOWAT on the socket and use event  based  writes
386              per select() on the socket.
387
388           --tcp-write-times
389              Measure the socket write times
390
391       -t, --time n|0
392              time  in seconds to transmit traffic, use zero for infinite (de‐
393              fault is 10 secs)
394
395           --trip-times
396              enable the measurement of end to end  write  to  read  latencies
397              (client and server clocks must be synchronized)
398
399           --txdelay-time
400              time  in seconds to hold back or delay after the TCP connect and
401              prior to the socket writes. For UDP it's the delay  between  the
402              traffic thread starting and the first write.
403
404           --txstart-time n.n
405              set  the  txstart-time  to  n.n  using unix or epoch time format
406              (supports microsecond resolution, e.g 1536014418.123456) An  ex‐
407              ample to delay one second using command substitution is iperf -c
408              192.168.1.10 --txstart-time $(expr $(date +%s) + 1).$(date +%N)
409
410       -B, --bind ip | ip:port | ipv6 -V | [ipv6]:port -V
411              bind src ip addr and optional port as the source of traffic (see
412              NOTES)
413
414       -F, --fileinput name
415              input the data to be transmitted from a file
416
417       -I, --stdin
418              input the data to be transmitted from stdin
419
420       -L, --listenport n
421              port to receive bidirectional tests back on
422
423       -P, --parallel n
424              number of parallel client threads to run
425
426       -R, --reverse
427              reverse  the traffic flow (useful for testing through firewalls,
428              see NOTES)
429
430       -S, --tos <val>
431              set the socket's IP_TOS value. Versions 2.1.5  or  greater  will
432              reflect  this  tos  setting back with --reverse or --full-duplex
433              option. (Previous versions won't set tos on  the  reverse  traf‐
434              fic.)  Note:  use  server  side  --tos-override to override. See
435              NOTES for values.
436
437       -T, --ttl n
438              time-to-live, for multicast (default 1)  -V,  --ipv6_domain  Set
439              the domain to IPv6 (send packets over IPv6)
440
441       -X, --peerdetect
442              run peer version detection prior to traffic.
443
444       -Z, --linux-congestion algo
445              set TCP congestion control algorithm (Linux only)
446

EXAMPLES

448       TCP tests (client)
449
450       iperf -c <host> -e -i 1
451       ------------------------------------------------------------
452       Client connecting to <host>, TCP port 5001 with pid 5149
453       Write buffer size:  128 KByte
454       TCP window size:  340 KByte (default)
455       ------------------------------------------------------------
456       [   3]  local  45.56.85.133 port 49960 connected with 45.33.58.123 port
457       5001 (ct=3.23 ms)
458       [  ID]  Interval         Transfer     Bandwidth        Write/Err   Rtry
459       Cwnd/RTT        NetPwr
460       [   3]  0.00-1.00  sec    126 MBytes  1.05 Gbits/sec  1006/0          0
461       56K/626 us  210636.47
462       [  3] 1.00-2.00 sec   138 MBytes   1.15  Gbits/sec   1100/0         299
463       483K/3884 us  37121.32
464       [   3]  2.00-3.00  sec    137 MBytes  1.15 Gbits/sec  1093/0         24
465       657K/5087 us  28162.31
466       [  3] 3.00-4.00 sec   126 MBytes   1.06  Gbits/sec   1010/0         284
467       294K/2528 us  52366.58
468       [   3]  4.00-5.00  sec    117  MBytes   980 Mbits/sec  935/0        373
469       487K/2025 us  60519.66
470       [  3] 5.00-6.00 sec   144 MBytes   1.20  Gbits/sec   1149/0           2
471       644K/3570 us  42185.36
472       [   3]  6.00-7.00  sec    126 MBytes  1.06 Gbits/sec  1011/0        112
473       582K/5281 us  25092.56
474       [  3] 7.00-8.00 sec   110  MBytes    922  Mbits/sec   879/0          56
475       279K/1957 us  58871.89
476       [   3]  8.00-9.00  sec    127 MBytes  1.06 Gbits/sec  1014/0         46
477       483K/3372 us  39414.89
478       [  3] 9.00-10.00 sec   132 MBytes  1.11  Gbits/sec   1054/0           0
479       654K/3380 us  40872.75
480       [   3]  0.00-10.00 sec  1.25 GBytes  1.07 Gbits/sec  10251/0       1196
481       -1K/3170 us  42382.03
482
483
484       where (per -e,)
485              ct= TCP connect time (or three way handshake time 3WHS)
486              Write/Err Total number of successful socket writes. Total number
487              of non-fatal socket write errors
488              Rtry Total number of TCP retries
489              Cwnd/RTT  (*nix  only) TCP congestion window and round trip time
490              (sampled where NA indicates no value)
491              NetPwr (*nix only) Network power defined as (throughput / RTT)
492
493
494       iperf -c host.doamin.com -i 1 --bounceback --permit-key=mytest  --hide-
495       ips
496       ------------------------------------------------------------
497       Client connecting to (**hidden**), TCP port 5001
498       Bursting:  100 Byte writes 10 times every 1.00 second(s)
499       Bounce-back test (size= 100 Byte) (server hold req=0 usecs)
500       TCP window size: 16.0 KByte (default)
501       ------------------------------------------------------------
502       [mytest(1)]  local  *.*.*.96  port  38044 connected with *.*.*.123 port
503       5001 (bb len/hold=100/0) (icwnd/mss/irtt=14/1448/10605)
504       [    ID]    Interval           Transfer        Bandwidth             BB
505       cnt=avg/min/max/stdev         Rtry  Cwnd/RTT    RPS
506       [mytest(1)]    0.00-1.00    sec     1.95    KBytes     16.0   Kbits/sec
507       10=11.949/9.662/19.597/3.127 ms    0   14K/10930 us    83 rps
508       [mytest(1)]   1.00-2.00    sec     1.95    KBytes     16.0    Kbits/sec
509       10=10.004/9.651/10.322/0.232 ms    0   14K/10244 us    99 rps
510       [mytest(1)]    2.00-3.00    sec     1.95    KBytes     16.0   Kbits/sec
511       10=10.582/9.720/14.831/1.573 ms    0   14K/10352 us    94 rps
512       [mytest(1)]   3.00-4.00    sec     1.95    KBytes     16.0    Kbits/sec
513       10=11.303/9.940/15.114/2.026 ms    0   14K/10832 us    88 rps
514       [mytest(1)]    4.00-5.00    sec     1.95    KBytes     16.0   Kbits/sec
515       10=11.148/9.671/14.803/1.837 ms    0   14K/10858 us    89 rps
516       [mytest(1)]   5.00-6.00    sec     1.95    KBytes     16.0    Kbits/sec
517       10=10.207/9.695/10.729/0.356 ms    0   14K/10390 us    97 rps
518       [mytest(1)]    6.00-7.00    sec     1.95    KBytes     16.0   Kbits/sec
519       10=10.871/9.770/14.387/1.547 ms    0   14K/10660 us    91 rps
520       [mytest(1)]   7.00-8.00    sec     1.95    KBytes     16.0    Kbits/sec
521       10=11.224/9.760/14.993/1.837 ms    0   14K/11027 us    89 rps
522       [mytest(1)]    8.00-9.00    sec     1.95    KBytes     16.0   Kbits/sec
523       10=10.719/9.887/14.553/1.455 ms    0   14K/10620 us    93 rps
524       [mytest(1)]   9.00-10.00   sec     1.95    KBytes     16.0    Kbits/sec
525       10=10.775/9.689/14.746/1.562 ms    0   14K/10596 us    92 rps
526       [mytest(1)]    0.00-10.02    sec     19.5    KBytes    16.0   Kbits/sec
527       100=10.878/9.651/19.597/1.743 ms    0   14K/11676 us    91 rps
528       [           1]           0.00-10.02           sec           BB8(f)-PDF:
529       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
530       (5.00/95.00/99.7%=97/149/196,Outliers=0,obl/obu=0/0)
531
532
533       where  BB cnt=avg/min/max/stdev Count  of  bouncebacks,  average  time,
534              minimum time, maximum time, standard deviation units of ms
535              Rtry Total number of TCP retries
536              Cwnd/RTT  (*nix  only) TCP congestion window and round trip time
537              (sampled where NA indicates no value)
538              RPS Responses per second
539
540
541       TCP tests (server)
542
543       iperf -s -e -i 1 -l 8K
544       ------------------------------------------------------------
545       Server listening on TCP port 5001 with pid 13430
546       Read buffer size: 8.00 KByte
547       TCP window size: 85.3 KByte (default)
548       ------------------------------------------------------------
549       [  4] local 45.33.58.123 port 5001  connected  with  45.56.85.133  port
550       49960
551       [     ID]    Interval           Transfer       Bandwidth          Reads
552       Dist(bin=1.0K)
553       [    4]   0.00-1.00   sec     124   MBytes    1.04   Gbits/sec    22249
554       798:2637:2061:767:2165:1563:589:11669
555       [    4]   1.00-2.00   sec     136   MBytes    1.14   Gbits/sec    24780
556       946:3227:2227:790:2427:1888:641:12634
557       [    4]   2.00-3.00   sec     137   MBytes    1.15   Gbits/sec    24484
558       1047:2686:2218:810:2195:1819:728:12981
559       [    4]   3.00-4.00   sec     126   MBytes    1.06   Gbits/sec    20812
560       863:1353:1546:614:1712:1298:547:12879
561       [    4]   4.00-5.00   sec     117   MBytes     984   Mbits/sec    20266
562       769:1886:1828:589:1866:1350:476:11502
563       [    4]   5.00-6.00   sec     143   MBytes    1.20   Gbits/sec    24603
564       1066:1925:2139:822:2237:1827:744:13843
565       [    4]   6.00-7.00   sec     126   MBytes    1.06   Gbits/sec    22635
566       834:2464:2249:724:2269:1646:608:11841
567       [    4]   7.00-8.00   sec     110   MBytes     921   Mbits/sec    21107
568       842:2437:2747:592:2871:1903:496:9219
569       [    4]   8.00-9.00   sec     126   MBytes    1.06   Gbits/sec    22804
570       1038:1784:2639:656:2738:1927:573:11449
571       [    4]   9.00-10.00   sec     133   MBytes    1.11   Gbits/sec   23091
572       1088:1654:2105:710:2333:1928:723:12550
573       [   4]  0.00-10.02   sec    1.25   GBytes    1.07   Gbits/sec    227306
574       9316:22088:21792:7096:22893:17193:6138:120790
575
576       where (per -e,)
577              Reads Total number of socket reads
578              Dist(bin=size)  Eight bin histogram of the socket reads returned
579              byte count. Bin width is set per size. Bins are separated  by  a
580              colon. In the example, the bins are 0-1K, 1K-2K, .., 7K-8K.
581
582
583       TCP tests (server with --trip-times on client) iperf -s -i 1 -w 4M
584       ------------------------------------------------------------
585       Server listening on TCP port 5001
586       TCP window size: 8.00 MByte (WARNING: requested 4.00 MByte)
587       ------------------------------------------------------------
588       [   4] local 192.168.1.4%eth0 port 5001 connected with 192.168.1.7 port
589       44798 (trip-times) (MSS=1448) (peer 2.0.14-alpha)
590       [  ID]   Interval          Transfer      Bandwidth      Burst   Latency
591       avg/min/max/stdev (cnt/size) inP NetPwr  Reads=Dist
592       [      4]     0.00-1.00    sec     19.0    MBytes      159    Mbits/sec
593       52.314/10.238/117.155/19.779  ms   (151/131717)   1.05   MByte   380.19
594       781=306:253:129:48:18:15:8:4
595       [      4]     1.00-2.00    sec     20.0    MBytes      168    Mbits/sec
596       53.863/21.264/79.252/12.277   ms   (160/131080)   1.08   MByte   389.38
597       771=294:236:126:60:18:24:10:3
598       [      4]     2.00-3.00    sec     18.2    MBytes      153    Mbits/sec
599       58.718/22.000/137.944/20.397  ms   (146/130964)   1.06   MByte   325.64
600       732=299:231:98:52:18:19:10:5
601       [    4]   3.00-4.00   sec    19.7   MBytes     165  Mbits/sec   50.448/
602       8.921/82.728/14.627    ms    (158/130588)      997     KByte     409.00
603       780=300:255:121:58:15:18:7:6
604       [      4]     4.00-5.00    sec     18.8    MBytes      158    Mbits/sec
605       53.826/11.169/115.316/15.541  ms   (150/131420)   1.02   MByte   366.24
606       761=302:226:134:52:22:17:7:1
607       [      4]     5.00-6.00    sec     19.5    MBytes      164    Mbits/sec
608       50.943/11.922/76.134/14.053   ms   (156/131276)   1.03   MByte   402.00
609       759=273:246:149:45:16:18:4:8
610       [      4]     6.00-7.00    sec     18.5    MBytes      155    Mbits/sec
611       57.643/10.039/127.850/18.950  ms   (148/130926)   1.05   MByte   336.16
612       710=262:228:133:37:16:20:8:6
613       [      4]     7.00-8.00    sec     19.6    MBytes      165    Mbits/sec
614       52.498/12.900/77.045/12.979   ms   (157/131003)   1.00   MByte   391.78
615       742=288:200:135:68:16:23:4:8
616       [    4]   8.00-9.00   sec    18.0   MBytes     151  Mbits/sec   58.370/
617       8.026/150.243/21.445    ms    (144/131255)    1.06     MByte     323.81
618       716=268:241:108:51:20:17:8:3
619       [      4]    9.00-10.00    sec     18.4    MBytes      154    Mbits/sec
620       56.112/12.419/79.790/13.668   ms   (147/131194)   1.05   MByte   343.70
621       822=330:303:120:26:16:14:9:4
622       [     4]    10.00-10.06    sec     1.03    MBytes      146    Mbits/sec
623       69.880/45.175/78.754/10.823   ms   (9/119632)   1.74    MByte    260.40
624       62=26:30:5:1:0:0:0:0
625       [    4]   0.00-10.06   sec     191   MBytes    159  Mbits/sec   54.183/
626       8.026/150.243/16.781    ms    (1526/131072)    1.03    MByte     366.98
627       7636=2948:2449:1258:498:175:185:75:48
628
629       where (per -e,)
630              Burst Latency One way TCP write() to read() latency in mean/min‐
631              imum/maximum/standard  deviation  format  (Note:  requires   the
632              client's and server's system clocks to be synchronized to a com‐
633              mon reference, e.g. using precision time  protocol  PTP.  A  GPS
634              disciplined OCXO is a recommended reference.)
635              cnt  Number  of completed bursts received and used for the burst
636              latency calculations
637              size Average burst size in bytes (computed average and  estimate
638              only)
639              inP  inP,  short for in progress, is the average number of bytes
640              in progress or in flight. This is  taken  from  the  application
641              level  write to read perspective. Note this is a mean value. The
642              parenthesis value is the standard deviation from the mean.  (Re‐
643              quires --trip-times on client. See Little's law in NOTES.)
644              NetPwr Network power defined as (throughput / one way latency)
645
646
647       TCP  tests  (with  one  way delay sync check -X and --trip-times on the
648       client)
649
650       iperf -c 192.168.1.4 -X -e --trip-times -i 1 -t 2
651       ------------------------------------------------------------
652       Client connecting to 192.168.1.4, TCP  port  5001  with  pid  16762  (1
653       flows)
654       Write buffer size: 131072 Byte
655       TCP window size: 85.0 KByte (default)
656       ------------------------------------------------------------
657       [    1]    Clock   sync   check   (ms):   RTT/Half=(3.361/1.680)   OWD-
658       send/ack/asym=(2.246/1.115/1.131)
659       [  1] local 192.168.1.1%ap0 port 47466 connected with 192.168.1.4  port
660       5001 (MSS=1448) (trip-times) (sock=3) (peer 2.1.4-master)
661       [  ID]  Interval         Transfer     Bandwidth        Write/Err   Rtry
662       Cwnd/RTT        NetPwr
663       [  1] 0.00-1.00 sec   9.50  MBytes   79.7  Mbits/sec   77/0           0
664       2309K/113914 us  87
665       [   1]  1.00-2.00  sec   7.12  MBytes   59.8 Mbits/sec  57/0          0
666       2492K/126113 us  59
667       [  1] 2.00-2.42  sec    128  KBytes   2.47  Mbits/sec   2/0           0
668       2492K/126113 us  2
669       [   1]  0.00-2.42  sec   16.8  MBytes  58.0 Mbits/sec  136/0          0
670       2492K/126113 us  57
671
672
673       UDP tests (client)
674
675       iperf -c <host> -e -i 1 -u -b 10m
676       ------------------------------------------------------------
677       Client connecting to <host>, UDP port 5001 with pid 5169
678       Sending 1470 byte datagrams, IPG target: 1176.00 us (kalman adjust)
679       UDP buffer size:  208 KByte (default)
680       ------------------------------------------------------------
681       [  3] local 45.56.85.133 port 32943 connected  with  45.33.58.123  port
682       5001
683       [ ID] Interval        Transfer     Bandwidth      Write/Err  PPS
684       [  3] 0.00-1.00 sec  1.19 MBytes  10.0 Mbits/sec  852/0      851 pps
685       [  3] 1.00-2.00 sec  1.19 MBytes  10.0 Mbits/sec  850/0      850 pps
686       [  3] 2.00-3.00 sec  1.19 MBytes  10.0 Mbits/sec  850/0      850 pps
687       [  3] 3.00-4.00 sec  1.19 MBytes  10.0 Mbits/sec  851/0      850 pps
688       [  3] 4.00-5.00 sec  1.19 MBytes  10.0 Mbits/sec  850/0      850 pps
689       [  3] 5.00-6.00 sec  1.19 MBytes  10.0 Mbits/sec  850/0      850 pps
690       [  3] 6.00-7.00 sec  1.19 MBytes  10.0 Mbits/sec  851/0      850 pps
691       [  3] 7.00-8.00 sec  1.19 MBytes  10.0 Mbits/sec  850/0      850 pps
692       [  3] 8.00-9.00 sec  1.19 MBytes  10.0 Mbits/sec  851/0      850 pps
693       [  3] 0.00-10.00 sec  11.9 MBytes  10.0 Mbits/sec  8504/0      850 pps
694       [  3] Sent 8504 datagrams
695       [  3] Server Report:
696       [  3] 0.00-10.00 sec  11.9 MBytes  10.0 Mbits/sec   0.047 ms    0/ 8504
697       (0%)  0.537/ 0.392/23.657/ 0.497 ms  850 pps  2329.37
698
699       where (per -e,)
700              Write/Err Total number of successful socket writes. Total number
701              of non-fatal socket write errors
702              PPS Transmit packet rate in packets per second
703
704
705       UDP tests (server) iperf -s -i 1 -w 4M -u
706       ------------------------------------------------------------
707       Server listening on UDP port 5001
708       Receiving 1470 byte datagrams
709       UDP buffer size: 8.00 MByte (WARNING: requested 4.00 MByte)
710       ------------------------------------------------------------
711       [  3] local 192.168.1.4 port 5001 connected with 192.168.1.1 port 60027
712       (WARN: winsize=8.00 MByte  req=4.00  MByte)  (trip-times)  (0.0)  (peer
713       2.0.14-alpha)
714       [ ID] Interval        Transfer     Bandwidth        Jitter   Lost/Total
715       Latency avg/min/max/stdev PPS  inP NetPwr
716       [  3] 0.00-1.00 sec  44.5 MBytes   373 Mbits/sec   0.071 ms 52198/83938
717       (62%) 75.185/ 2.367/85.189/14.430 ms 31854 pps 3.64 MByte 620.58
718       [    3]   1.00-2.00   sec   44.8  MBytes    376  Mbits/sec    0.015  ms
719       59549/143701 (41%) 79.609/75.603/85.757/ 1.454 ms 31954 pps 3.56  MByte
720       590.04
721       [    3]   2.00-3.00   sec   44.5  MBytes    373  Mbits/sec    0.017  ms
722       59494/202975 (29%) 80.006/75.951/88.198/ 1.638 ms 31733 pps 3.56  MByte
723       583.07
724       [    3]   3.00-4.00   sec   44.5  MBytes    373  Mbits/sec    0.019  ms
725       59586/262562 (23%) 79.939/75.667/83.857/ 1.145 ms 31767 pps 3.56  MByte
726       583.57
727       [    3]   4.00-5.00   sec   44.5  MBytes    373  Mbits/sec    0.081  ms
728       59612/322196 (19%) 79.882/75.400/86.618/ 1.666 ms 31755 pps 3.55  MByte
729       584.40
730       [    3]   5.00-6.00   sec   44.7  MBytes    375  Mbits/sec    0.064  ms
731       59571/381918 (16%) 79.767/75.571/85.339/ 1.556 ms 31879 pps 3.56  MByte
732       588.02
733       [    3]   6.00-7.00   sec   44.6  MBytes    374  Mbits/sec    0.041  ms
734       58990/440820 (13%) 79.722/75.662/85.938/ 1.087 ms 31820 pps 3.58  MByte
735       586.73
736       [    3]   7.00-8.00   sec   44.7  MBytes    375  Mbits/sec    0.027  ms
737       59679/500548 (12%) 79.745/75.704/84.731/ 1.094 ms 31869 pps 3.55  MByte
738       587.46
739       [    3]   8.00-9.00   sec   44.3  MBytes    371  Mbits/sec    0.078  ms
740       59230/559499 (11%) 80.346/75.514/94.293/ 2.858 ms 31590 pps 3.58  MByte
741       577.97
742       [    3]   9.00-10.00  sec   44.4  MBytes    373  Mbits/sec    0.073  ms
743       58782/618394 (9.5%) 79.125/75.511/93.638/ 1.643 ms 31702 pps 3.55 MByte
744       588.99
745       [    3]  10.00-10.08  sec   3.53  MBytes    367  Mbits/sec    0.129  ms
746       6026/595236 (1%) 94.967/80.709/99.685/ 3.560 ms 31107  pps  3.58  MByte
747       483.12
748       [    3]   0.00-10.08  sec    449  MBytes    374  Mbits/sec    0.129  ms
749       592717/913046 (65%) 79.453/ 2.367/99.685/ 5.200  ms  31776  pps  (null)
750       587.91
751
752
753       where (per -e,)
754              Latency  End to end latency in mean/minimum/maximum/standard de‐
755              viation format (Note: requires the client's and server's  system
756              clocks to be synchronized to a common reference, e.g. using pre‐
757              cision time protocol PTP. A GPS disciplined  OCXO  is  a  recom‐
758              mended reference.)
759              PPS Received packet rate in packets per second
760              inP  inP,  short for in progress, is the average number of bytes
761              in progress or in flight. This  is  taken  from  an  application
762              write to read perspective. (Requires --trip-times on client. See
763              Little's law in NOTES.)
764              NetPwr Network power defined as (throughput / latency)
765
766
767       Isochronous UDP tests (client)
768
769       iperf -c 192.168.100.33 -u -e -i 1 --isochronous=60:100m,10m --realtime
770       ------------------------------------------------------------
771       Client connecting to 192.168.100.33, UDP port 5001 with pid 14971
772       UDP isochronous: 60 frames/sec mean= 100  Mbit/s,  stddev=10.0  Mbit/s,
773       Period/IPG=16.67/0.005 ms
774       UDP buffer size:  208 KByte (default)
775       ------------------------------------------------------------
776       [   3]  local  192.168.100.76  port 42928 connected with 192.168.100.33
777       port 5001
778       [  ID]  Interval         Transfer      Bandwidth       Write/Err    PPS
779       frames:tx/missed/slips
780       [   3]  0.00-1.00 sec  12.0 MBytes   101 Mbits/sec  8615/0     8493 pps
781       62/0/0
782       [  3] 1.00-2.00 sec  12.0 MBytes   100 Mbits/sec  8556/0      8557  pps
783       60/0/0
784       [   3]  2.00-3.00 sec  12.0 MBytes   101 Mbits/sec  8586/0     8586 pps
785       60/0/0
786       [  3] 3.00-4.00 sec  12.1 MBytes   102 Mbits/sec  8687/0      8687  pps
787       60/0/0
788       [   3]  4.00-5.00 sec  11.8 MBytes  99.2 Mbits/sec  8468/0     8468 pps
789       60/0/0
790       [  3] 5.00-6.00 sec  11.9 MBytes  99.8 Mbits/sec  8519/0      8520  pps
791       60/0/0
792       [   3]  6.00-7.00 sec  12.1 MBytes   102 Mbits/sec  8694/0     8694 pps
793       60/0/0
794       [  3] 7.00-8.00 sec  12.1 MBytes   102 Mbits/sec  8692/0      8692  pps
795       60/0/0
796       [   3]  8.00-9.00 sec  11.9 MBytes   100 Mbits/sec  8537/0     8537 pps
797       60/0/0
798       [  3] 9.00-10.00 sec  11.8 MBytes  99.0 Mbits/sec  8450/0     8450  pps
799       60/0/0
800       [  3] 0.00-10.01 sec   120 MBytes   100 Mbits/sec  85867/0     8574 pps
801       602/0/0
802       [  3] Sent 85867 datagrams
803       [  3] Server Report:
804       [  3] 0.00-9.98 sec   120 MBytes   101 Mbits/sec   0.009 ms   196/85867
805       (0.23%)  0.665/ 0.083/ 1.318/ 0.174 ms 8605 pps  18903.85
806
807       where (per -e,)
808              frames:tx/missed/slips  Total  number  of  isochronous frames or
809              bursts. Total number of frame ids  not  sent.  Total  number  of
810              frame slips
811
812
813       Isochronous UDP tests (server)
814
815       iperf -s -e -u --udp-histogram=100u,2000 --realtime
816       ------------------------------------------------------------
817       Server listening on UDP port 5001 with pid 5175
818       Receiving 1470 byte datagrams
819       UDP buffer size:  208 KByte (default)
820       ------------------------------------------------------------
821       [  3] local 192.168.100.33 port 5001 connected with 192.168.100.76 port
822       42928 isoch (peer 2.0.13-alpha)
823       [ ID] Interval        Transfer     Bandwidth        Jitter   Lost/Total
824       Latency avg/min/max/stdev PPS  NetPwr  Frames/Lost
825       [   3] 0.00-9.98 sec   120 MBytes   101 Mbits/sec   0.010 ms  196/85867
826       (0.23%)  0.665/ 0.083/ 1.318/ 0.284 ms 8585 pps  18903.85  601/1
827       [            3]           0.00-9.98           sec            T8(f)-PDF:
828       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
829       (5.00/95.00%=3/12,Outliers=0,obl/obu=0/0)
830       [            3]           0.00-9.98           sec            F8(f)-PDF:
831       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
832       (5.00/95.00%=17/24,Outliers=0,obl/obu=0/0)
833
834
835       where, Frames/lost Total number of frames (or bursts)  received.  Total
836              number of bursts lost or error-ed
837              T8-PDF(f) Latency histogram for packets
838              F8-PDF(f) Latency histogram for frames
839
840
841

ENVIRONMENT

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

NOTES

847       Numeric options: Some numeric options  support  format  characters  per
848       '<value>c'  (e.g.  10M)  where the c format characters are k,m,g,K,M,G.
849       Lowercase format characters are 10^3 based and uppercase are 2^n based,
850       e.g. 1k = 1000, 1K = 1024, 1m = 1,000,000 and 1M = 1,048,576
851
852       Rate  limiting:  The -b option supports read and write rate limiting at
853       the application level.  The -b option on the client also supports vari‐
854       able offered loads through the <mean>,<standard deviation> format, e.g.
855       -b 100m,10m. The distribution used  is  log  normal.  Similar  for  the
856       isochronous  option. The -b on the server rate limits the reads. Socket
857       based pacing is also supported using the --fq-rate  long  option.  This
858       will work with the --reverse and --full-duplex options as well.
859
860       IP  tos:  Specifies  the type-of-service or DSCP class for connections.
861       Accepted values are af11, af12, af13, af21,  af22,  af23,  af31,  af32,
862       af33, af41, af42, af43, cs0, cs1, cs2, cs3, cs4, cs5, cs6, cs7, ef, le,
863       nqb, nqb2, ac_be, ac_bk, ac_vi, ac_vo, lowdelay, throughput,  reliabil‐
864       ity, a numeric value, or none to use the operating system default.  The
865       ac_xx values are the four access categories defined in WMM  for  Wi-Fi,
866       and  they are aliases for DSCP values that will be mapped to the corre‐
867       sponding ACs under the assumption that the device uses  the  DSCP-to-UP
868       mapping table specified in IETF RFC 8325.
869
870       Synchronized   clocks:  The  --trip-times  option  indicates  that  the
871       client's and server's clocks are synchronized to  a  common  reference.
872       Network  Time  Protocol (NTP) or Precision Time Protocol (PTP) are com‐
873       monly used for this. The reference clock(s) error and the  synchroniza‐
874       tion  protocols will affect the accuracy of any end to end latency mea‐
875       surements.
876
877       Histograms and non-parametric statisitics: The --histograms option pro‐
878       vides  the  raw data where nothing is averaged. This is useful for non-
879       parametric distribtions, e.g. latency. The standard output does use the
880       central limit theorem to produce average, mininimum, maximum and varia‐
881       tion. This loses information when the underlining distribution  is  not
882       gaussian.   Histograms are supported so this information is made avail‐
883       able.
884
885       Binding is done at the logical level of port and ip address  (or  layer
886       3)  using  the  -B option and a colon as the separator between port and
887       the ip addr. Binding at the device (or layer 2) level requires the per‐
888       cent (%) as the delimeter (for both the client and the server.)  An ex‐
889       ample for src port and ip address is -B 192.168.1.1:6001. To  bind  the
890       src port only and let the operating system choose the source ip address
891       use 0.0.0.0, e.g.  -B 0.0.0.0:6001. On the client, the  -B  option  af‐
892       fects  the  bind(2) system call, and will set the source ip address and
893       the source port, e.g. iperf -c <host> -B 192.168.100.2:6002. This  con‐
894       trols the packet's source values but not routing.  These can be confus‐
895       ing in that a route or device lookup may not be that of the device with
896       the  configured  source IP.  So, for example, if the IP address of eth0
897       is used for -B and the routing table for the destination IP address re‐
898       solves  the  output  interface  to be eth1, then the host will send the
899       packet out device eth1 while using the source IP address of eth0 in the
900       packet.   To affect the physical output interface (e.g. dual homed sys‐
901       tems) either use -c <host>%<dev> (requires root)  which  bypasses  this
902       host route table lookup, or configure policy routing per each -B source
903       address and set  the  output  interface  appropriately  in  the  policy
904       routes.  On  the  server or receive, only packets destined to -B IP ad‐
905       dress will be received. It's also useful for  multicast.  For  example,
906       iperf  -s  -B 224.0.0.1%eth0 will only accept ip multicast packets with
907       dest ip 224.0.0.1 that are received on the eth0 interface, while  iperf
908       -s  -B  224.0.0.1 will receive those packets on any interface, Finally,
909       the  device  specifier  is  required  for  v6   link-local,   e.g.   -c
910       [v6addr]%<dev> -V, to select the output interface.
911
912       Reverse,  full-duplex,  dualtest  (-d) and tradeoff (-r): The --reverse
913       (-R) and --full-duplex options can be confusing when  compared  to  the
914       older options of --dualtest (-d) and --tradeoff (-r). The newer options
915       of --reverse and --full-duplex only open one socket and read and  write
916       to the same socket descriptor, i.e. use the socket in full duplex mode.
917       The older -d and -r open second sockets in the opposite  direction  and
918       do  not use a socket in full duplex mode. Note that full duplex applies
919       to the socket and not to the network devices and that full duplex sock‐
920       ets  are supported by the operating systems regardless if an underlying
921       network supports full duplex transmission  and  reception.   It's  sug‐
922       gested  to use --reverse if you want to test through a NAT firewall (or
923       -R on non-windows systems). This applies role reversal of the test  af‐
924       ter  opening  the  full duplex socket.  (Note: Firewall piercing may be
925       required to use -d and -r if a NAT gateway is in the path.)
926
927       Also, the --reverse -b <rate> setting behaves differently for  TCP  and
928       UDP.  For  TCP  it will rate limit the read side, i.e. the iperf client
929       (role reversed to act as a server) reading from the full duplex socket.
930       This  will  in  turn  flow control the reverse traffic per standard TCP
931       congestion control. The --reverse -b <rate> will be applied on transmit
932       (i.e.  the server role reversed to act as a client) for UDP since there
933       is no flow control with UDP. There is no option to directly rate  limit
934       the writes with TCP testing when using --reverse.
935
936       Bounceback  The  bounceback  test allows one to measure network respon‐
937       siveness (which, in this test, is an inverse of  latency.)   The  units
938       are  responses  per  second or rps. Latency is merely delay in units of
939       time. Latency metrics require one to know the  delay  of  what's  being
940       measured.  For bounceback it's a client write to a server read followed
941       by a server write and then the  client  read.  The  original  write  is
942       bounce backed. Iperf 2 sets up the socket with TCP_NODELAY and possibly
943       TCP_QUICKACK (unless disabled). The client sends a small  write  (which
944       defaults  to  100 bytes unless -l is set) and issues a read waiting for
945       the "bounceback" from the server. The server waits for a read and  then
946       optionally  delays  before sending the payload back. This repeats until
947       the traffic ends. Results are shown in units of rps and time delays.
948
949       The TCP_QUICKACK socket option will be enabled during bounceback  tests
950       when  the bounceback-hold is set to a non-zero value. The socket option
951       is applied after every read() on the server and before the  hold  delay
952       call.  It's also applied on the client. Use --bounceback-no-quickack to
953       disable TCP ack delays per the socket.
954
955       TCP Connect times: The TCP connect time (or three way handshake) can be
956       seen  on  the iperf client when the -e (--enhanced) option is set. Look
957       for the ct=<value>  in  the  connected  message,  e.g.in  '[  3]  local
958       192.168.1.4  port  48736  connected with 192.168.1.1 port 5001 (ct=1.84
959       ms)' shows the 3WHS took 1.84 milliseconds.
960
961       Port-range Port ranges are supported using the  hyphen  notation,  e.g.
962       6001-6009.  This  will  cause multiple threads, one per port, on either
963       the listener/server or the client. The user needs to take care that the
964       ports  in  the  port range are available and not already in use per the
965       operating system. The -P is supported on the client and will  apply  to
966       each  destination port within the port range. Finally, this can be used
967       for a workaround for Windows UDP and -P > 1 as Windows doesn't dispatch
968       UDP per a server's connect and the quintuple.
969
970       Packet  per second (pps) calculation The packets per second calculation
971       is done as a derivative, i.e. number of packets divided  by  time.  The
972       time is taken from the previous last packet to the current last packet.
973       It is not the sample interval time. The last packet can land at differ‐
974       ent  times  within  an  interval.  This means that pps does not have to
975       match rx bytes divided by the sample interval.  Also, with --trip-times
976       set,  the  packet  time on receive is set by the sender's write time so
977       pps indicates the end to end pps with --trip-times. The RX pps calcula‐
978       tion is receive side only when -e is set and --trip-times is not set.
979
980       Little's Law in queuing theory is a theorem that determines the average
981       number of items (L) in a stationary queuing system based on the average
982       waiting  time  (W) of an item within a system and the average number of
983       items arriving at the system per unit of time (lambda). Mathematically,
984       it's  L  =  lambda  * W. As used here, the units are bytes. The arrival
985       rate is taken from the writes.
986
987       Network power: The network power (NetPwr) metric is experimental.  It's
988       a convenience function defined as throughput/delay.  For TCP transmits,
989       the delay is the sampled RTT times.  For TCP receives, the delay is the
990       write  to  read  latency.   For  UDP  the delay is the end/end latency.
991       Don't confuse this with the physics  definition  of  power  (delta  en‐
992       ergy/delta  time) but more of a measure of a desirable property divided
993       by an undesirable property. Also note, one must use  -i  interval  with
994       TCP  to  get this as that's what sets the RTT sampling rate. The metric
995       is scaled to assist with human readability.
996
997       Multicast: Iperf 2 supports multicast with a couple of caveats.  First,
998       multicast  streams  cannot  take advantage of the -P option. The server
999       will serialize multicast streams. Also, it's highly encouraged to use a
1000       -t on a server that will be used for multicast clients. That is because
1001       the single end of traffic packet sent from client  to  server  may  get
1002       lost  and there are no redundant end of traffic packets.  Setting -t on
1003       the server will kill the server thread in the event this packet is  in‐
1004       deed lost.
1005
1006       TCP_QUICACK:  The TCP_QUICKACK socket applied after every read() on the
1007       server
1008
1009       Fast Sampling: Use ./configure --enable-fastsampling and  then  compile
1010       from  source  to  enable four digit (e.g. 1.0000) precision in reports'
1011       timestamps. Useful for sub-millisecond sampling.
1012

DIAGNOSTICS

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

BUGS

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

AUTHORS

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

SEE ALSO

1030       accept(2),bind(2),close(2),connect(2),fcntl(2),getpeername(2),getsock‐
1031       name(2),getsockopt(2),listen(2),read(2),recv(2),select(2),send(2),set‐
1032       sockopt(2),shutdown(2),write(2),ip(7),socket(7),tcp(7),udp(7)
1033
1034       Source code at http://sourceforge.net/projects/iperf2/
1035
1036       "Unix  Network  Programming,  Volume 1: The Sockets Networking API (3rd
1037       Edition) 3rd Edition" by W. Richard Stevens (Author), Bill Fenner  (Au‐
1038       thor), Andrew M. Rudoff (Author)
1039
1040
1041
1042NLANR/DAST                         June 2022                          IPERF(1)
Impressum