1IPERF(1) User Manuals IPERF(1)
2
3
4
6 iperf - perform network traffic tests using network sockets. Metrics
7 include throughput and latency.
8
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
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
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
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
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
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
843 Note: The environment variable option settings haven't been maintained
844 well. See the source code if these are of interest.
845
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
1014 Use ./configure --enable-thread-debug and then compile from source to
1015 enable both asserts and advanced debugging of the tool itself.
1016
1018 See https://sourceforge.net/p/iperf2/tickets/
1019
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
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)