xref: /iperf/RELNOTES.md (revision 3dfdffd9)
1iperf3 Release Notes
2====================
3
4iperf 3.8.1 2020-06-10
5----------------------
6
7* Notable user-visible changes
8
9  * A regression with "make install", where the libiperf shared
10    library files were not getting installed, has been fixed (#1013 /
11    #1014).
12
13iperf 3.8 2020-06-08
14--------------------
15
16* Notable user-visible changes
17
18  * Profiled libraries and binaries are no longer built by default
19    (#950).
20
21  * A minimal Dockerfile has been added (#824).
22
23  * A bug with burst mode and unlimited rate has been fixed (#898).
24
25  * Configuring with the --enable-static-bin flag will now cause
26    a statically-linked iperf3 binary to be built (#989).
27
28  * Configuring with the --without-sctp flag will now prevent SCTP
29    from being auto-detected (#1008).  This flag allows building a
30    static binary (see above item) on a CentOS system with SCTP
31    installed, because no static SCTP libraries are available.
32
33  * Clock skew between the iperf3 client and server will no longer
34    skew the computation of jitter during UDP tests (#842 / #990).
35
36  * A possible buffer overflow in the authentication feature has been
37    fixed.  This was only relevant when configuration authentication
38    using the libiperf3 API, and did not affect command-line usage.
39    Various other improvements and fixes in this area were also made
40    (#996).
41
42* Notable developer-visible changes
43
44  * The embedded version of cJSON has been updated to 1.3.17 (#978).
45
46  * Some server authentication functions have been added to the API
47    (#911).
48
49  * API access has been added to the connection timeout parameter
50    (#1001).
51
52  * Tests for some authentication functions have been added.
53
54  * Various compiler errors and warnings have been fixed.
55
56iperf 3.7 2019-06-21
57--------------------
58
59* Notable user-visible changes
60
61  * Support for simultaneous bidirectional tests with the --bidir flag
62    (#201/#780).
63
64  * Use POSIX standard clock_gettime(3) interface for timekeeping where
65    available (#253/#738).
66
67  * Passwords for authentication can be provided via environment
68    variable (#815).
69
70  * Specifying --repeating-payload and --reverse now works (#867).
71
72  * Failed authentication doesn't count for --one-off (#864/#877).
73
74  * Several memory leaks related to authenticated use were fixed
75    (#881/#888).
76
77  * The delay for tearing down the control connection for the default
78    timed tests has been increased, to more gracefully handle
79    high-delay paths (#751/#859).
80
81* Notable developer-visible changes
82
83  * Various improvements to the libiperf APIs (#767, #775, #869, #870,
84    #871)
85
86  * Fixed build behavior when OpenSSL is absent (#854).
87
88  * Portability fixes (#821/#874).
89
90iperf 3.6 2018-06-25
91--------------------
92
93* Notable user-visible changes
94
95  * A new --extra-data option can be used to fill in a user-defined
96    string field that appears in JSON output.  (#600 / #729)
97
98  * A new --repeating-payload option makes iperf3 use a payload pattern
99    similar to that used by iperf2, which could help in recreating
100    results that might be affected by payload entropy (for example,
101    compression).  (#726)
102
103  * -B now works properly with SCTP tests.  (#678 / #715)
104
105  * A compile fix for Solaris 10 was added.  (#711)
106
107  * Some minor bug fixes for JSON output.  In particular, warnings for
108    debug and/or verbose modes with --json output (#737) and a fix for
109    JSON output on CentOS 6 (#727 / #744).
110
111  * software.es.net and downloads.es.net now support HTTPS, so URLs in
112    documentation that refer to those two hosts now use https://
113    instead of http:// URLs. (#759)
114
115* Notable developer-visible changes
116
117  * Functions related to authenticated iperf3 connections have been
118    exposed via libiperf.  (#712 / #713)
119
120  * The ToS byte is now exposed in the libiperf API. (#719)
121
122iperf 3.5 2018-03-02
123--------------------
124
125* Notable user-visible changes
126
127  * iperf3 no longer counts data received after the end of a test in
128    the bytecounts.  This fixes a bug that could, under some
129    conditions, artificially inflate the transfer size and measured
130    bitrate.  This bug was most noticeable on reverse direction
131    transfers on short tests over high-latency or buffer-bloated
132    paths.  Many thanks to @FuzzyStatic for providing access to a test
133    environment for diagnosing this issue (#692).
134
135iperf 3.4 2018-02-14
136--------------------
137
138* Notable user-visible changes
139
140  * The -A (set processor affinity) command-line flag is now supported
141    on Windows (#665).
142
143  * iperf3 now builds on systems lacking a daemon(3) library call
144    (#369).
145
146  * A bug in time skew checking under authentication was fixed (#674).
147
148  * IPv6 flow labels now work correctly with multiple parallel streams
149    (#694).
150
151  * The client no longer closes its control connection before sending
152    end-of-test statistics to the server (#677). This fixes a
153    regression introduced in iperf-3.2.
154
155  * Sending output to stdout now makes errors go to stderr, as per
156    UNIX convention (#695).
157
158  * A server side crash in verbose output with a client running
159    multiple parallel connections has been fixed (#686).
160
161  * The --cport option can now be specified without the --bind option.
162    Using the --cport option on Linux can eliminate a problem with
163    ephemeral port number allocation that can make multi-stream iperf3
164    tests perform very poorly on LAGG links.  Also, the --cport option
165    now works on SCTP tests (#697).
166
167* Notable developer-visible changes
168
169  * iperf3 now builds on (some) macOS systems older than 10.7 (#607).
170
171  * Some unused code and header inclusions were eliminated (#667,
172    #668).  Also some code was cleaned up to eliminate (or at least
173    reduce) compiler warnings (#664, #671).
174
175iperf 3.3 2017-10-31
176--------------------
177
178* Notable user-visible changes
179
180  * iperf3 can now be built --without-openssl on systems where OpenSSL
181    is present (#624, #633).
182
183  * A bug with printing very large numbers has been fixed (#642).
184
185  * A bug where the server would, under certain circumstances, halt a
186    test after exactly fifteen seconds has been fixed (#645).
187
188  * The --tos parameter is no longer "sticky" between tests when doing
189    --reverse tests (#639).
190
191  * The authentication token on the server is properly reset between
192    tests (#650).
193
194  * A bug that could cause iperf3 to overwrite the PID file of an
195    already-existing iperf3 process has been fixed (#623).
196
197  * iperf3 will now ignore nonsensical TCP MSS values (from the TCP
198    control connection) when trying to determine a reasonable block
199    size for UDP tests.  This condition primarily affected users on
200    Windows, but potentially improves robustness for all
201    platforms. (#659)
202
203* Notable developer-visible changes
204
205iperf 3.2 2017-06-26
206--------------------
207
208* User-visible changes
209
210  * Authentication via a username/password mechanism, coupled with a
211    public-key pair, is now an optional way of limiting access to an
212    iperf3 server (#517).
213
214  * Ending statistics are less ambiguous for UDP and also now use
215    correct test durations for all protocols (#560, #238).  Many fixes
216    have been made in statistics printing code, generally for
217    human-readable output (#562, #575, #252, #443, #236).
218
219  * Several problems with the -F/--file options have been fixed.
220    Documentation has been improved to note some ways in which this
221    feature might not behave as expected (#588).
222
223  * iperf3 now uses the correct "bitrate" phraseology rather than
224    "bandwidth" when describing measurement results.  The --bandwidth
225    option has been renamed --bitrate, although --bandwidth is still
226    accepted for backwards compatibility (#583).
227
228  * Application-level bandwidth pacing (--bitrate option) is now
229    checked every millisecond by default, instead of of every tenth of
230    a second, to provide smoother traffic behavior when using
231    application pacing (#460).  The pacing can be tuned via the use of
232    the --pacing-timer option (#563).
233
234  * A new --dscp option allows specifying the DSCP value to be used
235    for outgoing packets (#508).  The TOS byte value is now printed in
236    the JSON output (#226).
237
238  * Congestion window data on FreeBSD is now computed correctly (#465,
239    #475, #338).
240
241  * The T/t suffixes for terabytes/terabits are now accepted for
242    quantities where suffixes are supported, such as --bandwidth
243    (#402).
244
245  * Sanity checks for UDP send sizes have been added (#390), and
246    existing checks on the --window option have been improved (#557).
247
248  * The TCP rttvar value is now available in the JSON output (#534), as are
249    the socket buffer sizes (#558).
250
251  * Error handling and documentation have been improved for the
252    -f/--format options (#568).
253
254  * A new --connect-timeout option on the client allows specifying a
255    length of time that the client will attempt to connect to the
256    server, in milliseconds (#216).
257
258  * The hostname and current timestamp are no longer used in the
259    cookie used to associate the client and server.  Instead, random
260    data is used.  Note that iperf3 now requires the /dev/urandom
261    device (#582).
262
263  * Prior versions of iperf3 doing UDP tests used to overcount packet
264    losses in the presence of packet reordering.  This has been
265    (partially) fixed by try to not count the sequence number gaps
266    resulting from out-of-order packets as actual losses (#457).
267
268  * iperf3 no longer prints results from very small intervals (10% of
269    the statistics reporting interval) at the end of the test run if
270    they contain no data.  This can happen due to timing difference or
271    network queueing on the path between the client and server.  This
272    is primarily a cosmetic change to prevent these fairly meaningless
273    intervals from showing up in the output (#278).
274
275  * Compatiblity note: Users running iperf3 3.2 or newer from the
276    bwctl utility will need to obtain version 1.6.3 or newer of bwctl.
277    Note that bwctl, a component of the perfSONAR toolkit, has been
278    deprecated in favor of pScheduler since the release of perfSONAR
279    4.0.
280
281* Developer-visible changes
282
283  * Various warnings and build fixes (#551, #564, #518, #597).
284
285  * Some improvements have been made for increased compatibility on
286    IRIX (#368) and with C++ (#587).
287
288  * cJSON has been updated to 1.5.2 (#573), bringing in a number of
289    bugfixes.
290
291  * Some dead code has been removed.
292
293iperf 3.1.7 2017-03-06
294----------------------
295
296iperf 3.1.7 is functionally identical to iperf 3.1.6.  Its only
297changes consist of updated documentation files and text in the RPM
298spec file.
299
300iperf 3.1.6 2017-02-02
301----------------------
302
303The release notes for iperf 3.1.6 describe changes, including bug
304fixes and new functionality, made since iperf 3.1.5.
305
306* User-visible changes
307
308  * Specifying --fq-rate or --no-fq-socket-pacing on a system where
309    these options are not supported now generate an error instead of a
310    warning.  This change makes diagnosing issues related to pacing
311    more apparent.
312
313  * Fixed a bug where two recently-added diagnostic messages spammed
314    the JSON output on UDP tests.
315
316iperf 3.1.5 2017-01-12
317----------------------
318
319The release notes for iperf 3.1.5 describe changes, including bug
320fixes and new functionality, made since iperf 3.1.4.
321
322Compatibility note: Fair-queueing is now specified differently in
323iperf 3.1.5 than in prior versions (which include 3.1.3 and 3.1.4).
324
325Compatibility note: UDP tests may yield different results from all
326prior versions of iperf3 (through 3.1.4) due to the new default UDP
327sending size.
328
329* User-visible changes
330
331  * The fair-queueing per-socket based pacing available on recent
332    Linux systems has been reimplemented with a different user
333    interface (#325, #467, #488).  The --bandwidth command-line flag
334    now controls only the application-level pacing, as was the case in
335    iperf 3.1.2 and all earlier versions.  Fair-queueing per-socket
336    based pacing is now controlled via a new --fq-rate command-line
337    flag.  Note that TCP and UDP tests may use --bandwidth, --fq-rate,
338    both flags, or neither flag.  SCTP tests currently support
339    --bandwidth only.  The --no-fq-socket-pacing flag, which was
340    introduced in iperf 3.1.3, has now been deprecated, and is
341    equivalent to --fq-rate=0.  iperf3 now reacts more gracefully if
342    --no-fq-socket-pacing or --fq-rate are specified on platforms that
343    don't support these options.
344
345    For UDP tests, note that the default --bandwidth is 1 Mbps.  Using
346    the fair-queueing-based pacing will probably require explicitly
347    setting both --bandwidth and --fq-rate, preferably to the same
348    value.  (While setting different values for --bandwidth and
349    --fq-rate can certainly be done, the results can range from
350    entertaining to perplexing.)
351
352  * iperf3 now chooses a more sane default UDP send size (#496, #498).
353    The former default (8KB) caused IP packet fragmentation on paths
354    having smaller MTUs (including any Ethernet network not configured
355    for jumbo frames).  This could have effects ranging from increased
356    burstiness, to packet loss, to complete failure of the test.
357    iperf3 now attempts to use the MSS of the control connection to
358    determine a default UDP send size if no sending length was
359    explicitly specified with --length.
360
361  * Several checks are now made when setting the socket buffer sizes
362    with the -w option, to verify that the settings have been applied
363    correctly.  The results of these checks can been seen when the
364    --debug flag is specified.  (#356)
365
366  * A --forceflush flag has been added to flush the output stream
367    after every statistics reporting interval.
368
369* Developer-visible changes
370
371  * A systemd service file has been added (#340, #430).
372
373iperf 3.1.4 2016-10-31
374----------------------
375
376The release notes for iperf 3.1.4 describe changes, including bug
377fixes and new functionality, made since iperf 3.1.3.
378
379* User-visible changes
380
381  * On systems that support setting the congestion control algorithm,
382    iperf3 now keeps track of the congestion control algorithm and
383    print it in the JSON output in the members sender_tcp_congestion
384    and receiver_tcp_congestion (issue #461).  A few bugs (probably
385    not user-visible) with setting the congestion control algorithm
386    were also fixed.
387
388* Developer-visible changes
389
390  * Fixed a buffer overflow in the cJSON library (issue #466).  It is
391    not believed that this bug created any security vulnerabilities in
392    the context of iperf3.
393
394  * Travis CI builds are now enabled on this codeline (pull request #424).
395
396  * Various bug fixes (issue #459, pull request #429, issue #388).
397
398iperf 3.1.3 2016-06-08
399----------------------
400
401The release notes for iperf 3.1.3 describe changes, including bug
402fixes and new functionality, made since iperf 3.1.2.
403
404* Security
405
406  * Fixed a buffer overflow / heap corruption issue that could occur
407    if a malformed JSON string was passed on the control channel.  In
408    theory, this vulnerability could be leveraged to create a heap
409    exploit.  This issue, present in the cJSON library, was already
410    fixed upstream, so was addressed in iperf3 by importing a newer
411    version of cJSON (plus local ESnet modifications).  Discovered and
412    reported by Dave McDaniel, Cisco Talos.  Cross-references:
413    TALOS-CAN-0164, ESNET-SECADV-2016-0001, CVE-2016-4303.
414
415* User-visible changes
416
417  * On supported platforms (recent Linux), iperf3 can use
418    fair-queueing-based per-socket pacing instead of its own
419    application-level pacing for the --bandwidth option.
420    Application-level pacing can be forced with the
421    -no-fq-socket-pacing flag.
422
423  * A bug that could show negative loss counters with --udp and --omit
424    has been fixed (issue #412, pull request #414).
425
426  * Error handling has been made slightly more robust.  Also, the
427    iperf3 server will no longer exit after five consecutive errors,
428    but will only exit for certain types of errors that prevent it
429    from participating in any tests at all.
430
431* Developer-visible changes
432
433  * Fixed the build on FreeBSD 11-CURRENT (issue #413).
434
435  * Fixed various coding errors (issue #423, issue #425).
436
437iperf 3.1.2 2016-02-01
438----------------------
439
440The release notes for iperf 3.1.2 describe changes, including bug
441fixes and new functionality, made since iperf 3.1.1.
442
443* User-visible changes
444
445  * Fixed a bug that caused nan values to be emitted (incorrectly)
446    into JSON, particularly at the end of UDP tests (issue #278).
447
448  * Fixed a bug that caused the wrong value to be printed for
449    out-of-order UDP packets (issue #329).
450
451  * Added a contrib/ directory containing a few submitted graphing
452    scripts.
453
454* Developer-visible changes
455
456iperf 3.1.1 2015-11-19
457----------------------
458
459The release notes for iperf 3.1.1 describe changes and new
460functionality in iperf 3.1.1, but not present in 3.1.
461
462* User-visible changes
463
464  * Some markup fixes have been made in the manpages for Debian
465    compatibility (issue #291).
466
467  * A bug where the -T title option was not being output correctly
468    in JSON output has been fixed (issue #292).
469
470  * Argument handling for some command-line options has been improved
471    (issue #316).
472
473* Developer-visible changes
474
475  * A regression with C++ compatibility in one of the iperf header
476    files has been fixed (issue #323).
477
478iperf 3.1 2015-10-16
479--------------------
480
481The release notes for iperf 3.1 describe changes and new
482functionality in iperf 3.1, but not present in 3.0.11 or any earlier
4833.0.x release.
484
485* Selected user-visible changes
486
487  * SCTP support has been added (with the --sctp flag), on Linux,
488    FreeBSD, and Solaris (issue #131).
489
490  * Setting CPU affinity now works on FreeBSD.
491
492  * Selection of TCP congestion now works on FreeBSD, and is now
493    called --congestion (the old --linux-congestion option works
494    but is now deprecated).
495
496  * A new -I option for the server causes it to write a PID file,
497    mostly useful for daemon mode (issue #120).
498
499  * A --logfile argument can now force all output to go to a file,
500    rather than to a file.  This is especially useful when running an
501    iperf3 server in daemon mode (issue #119).
502
503  * Various compatibility fixes for Android (issue #184, issue #185),
504    iOS (issue #288), NetBSD (issue #248), Solaris (issue #175, issue
505    #178, issue #180, issue #211), vxWorks (issue #268).
506
507  * A --udp-counters-64bit flag has been added to support very
508    long-running UDP tests, which could cause a counter to overflow
509    (issue #191).
510
511  * A --cport option to specify the client-side port has been added
512    (issue #207, issue #209, issue #239).
513
514  * Some calculation errors with the -O feature have been fixed (issue
515    #236).
516
517  * A potential crash in the iperf3 server has been fixed (issue #257,
518    issue #258).
519
520  * Many miscellaneous bug fixes.
521
522* Selected developer-visible changes
523
524  * Consumers of libiperf can now get the JSON output for a
525    just-completed test (issue #147).
526
527  * Detection of various optional features has been improved to check
528    for the presence or absence of platform functionality, not the name
529    of platforms.
530
531  * Out-of-tree builds now work (issue #265).
532
533iperf 3.0.11 2015-01-09
534-----------------------
535
536* User-visible changes
537
538  * Added -1 / --one-off flag, which causes the iperf3 server to
539    process one client connection and then exit.  Intended primarily
540    for bwctl integration (issue #230).
541
542  * Added various minor bug fixes (issues #231, #232, #233).
543
544  * Added 30-second timeout for UDP tests if unable to establish UDP
545    connectivity between sender and receiver (issue #222).
546
547iperf 3.0.10 2014-12-16
548-----------------------
549
550* User-visible changes
551
552  * Fixed the build on MacOS X Yosemite (issue #213).
553
554  * UDP tests now honor the -w option for setting the socket buffer
555    sizes (issue #219).
556
557* Developer-visible changes
558
559  * Added an RPM spec file plus functionality to fill in the version
560    number.
561
562  * Fixed potential filename collision with a system header (issue
563    #203).
564
565iperf 3.0.9 2014-10-14
566----------------------
567
568* User-visible changes
569
570  * Fixed a series of problems that came from attempting a UDP test
571    with a pathologically large block size.  This put the server into
572    an odd state where it could not accept new client connections.
573    This in turn caused subsequent client connections to crash when
574    interrupted (issue #212).
575
576* Developer-visible changes
577
578  * None.
579
580iperf 3.0.8 2014-09-30
581----------------------
582
583* User-visible changes
584
585  * Updated license and copyright verbage to confirm to LBNL Tech
586    Transfer requirements.  No substantive changes; license remains
587    the 3-clause BSD license.
588
589* Developer-visible changes
590
591  * None.
592
593iperf 3.0.7 2014-08-28
594----------------------
595
596* User-visible changes
597
598  * A server bug where new connections from clients could disrupt
599    running tests has been fixed (issue #202).
600
601  * Rates now consistently use 1000-based prefixes (K, M, G), where
602    sizes of objects now consistently use 1024-based prefixes (issue #173).
603
604  * UDP tests with unlimited bandwidth are now supported (issue #170).
605
606  * An interaction between the -w and -B options, which kept them from
607    working when used together, has been fixed (issue #193).
608
609* Developer-visible changes
610
611iperf 3.0.6 2014-07-28
612----------------------
613
614* User-visible changes
615
616  * Several bugs that kept the -B option from working in various
617    circumstances have been fixed (issue #193).
618
619  * Various compatibility fixes for OpenBSD (issue #196) and
620    Solaris (issue #177).
621
622* Developer-visible changes
623
624  * The {get,set}_test_bind_address API calls have been added to
625    expose the -B functionality to API consumers (issue #197).
626
627iperf 3.0.5 2014-06-16
628----------------------
629
630* User-visible changes
631
632  * Erroneous output when doing --json output has been fixed (this
633    problem was caused by an attempt to fix issue #158).
634
635  * The maximum test running time has been increased from one hour to
636    one day (issue #166).
637
638  * Project documentation has been moved to GitHub Pages at this URL:
639    http://software.es.net/iperf/.
640
641  * A bug that caused CPU time to be computed incorrectly on FreeBSD
642    has been fixed.
643
644  * A timing issue which caused measurement intervals to be wrong
645    with TCP tests on lossy networks has been fixed (issue #125).
646
647  * Newer versions of autoconf / automake / libtool are now used by
648    default (issue #161).
649
650  * JSON output now indicates whether the test was run in --reverse
651    mode (issue #167).
652
653  * It is now possible to get (most of) the server-side output at
654    the client by using the --get-server-output flag (issue #160).
655
656* Developer-visible changes
657
658  * automake/autoconf/libtool have been updated to more recent
659    versions.  AM_MAINTAINER_MODE is now used to avoid requiring these
660    tools at build-time.
661
662iperf 3.0.4 was not released
663----------------------------
664
665iperf 3.0.3 2014-03-26
666----------------------
667
668* User-visible changes
669
670  * Due to several oversights, the source code archive for iperf 3.0.2
671    was distributed as an uncompressed tarball, despite having an
672    extension (".tar.gz") that indicated it was compressed.  The
673    release generation procedure has been changed to avoid this
674    problem going forward.
675
676  * Summary structures in the JSON output are now included, even if
677    there is only one stream.  This change makes consuming the JSON
678    output easier and more consistent (issue #151).
679
680  * A possible buffer overflow in iperf_error.c has been fixed (issue
681    #155).
682
683* Developer-visible changes
684
685  * Example programs now build correctly, after having been broken in
686    the 3.0.2 release (issue #152).
687
688iperf 3.0.2 2014-03-10
689----------------------
690
691* User-visible changes
692
693  * The iperf3 project has been moved to GitHub, and various URLs in
694    documentation files have been changed to point there.
695
696  * iperf3 now builds on Linux systems that do not support
697    TCP_CONGESTION.  Most notably this allows iperf3 to work on CentOS
698    5.
699
700  * An abort on MacOS 10.9 has been fixed (issue #135).
701
702  * Added -I flag for the server to write a PID file, mostly useful for
703    daemon mode (issue #120).
704
705  * A bug that could break some TCP tests on FreeBSD has been fixed.
706
707  * TCP snd_cwnd output is now printed by default on Linux (issue #99).
708
709  * In JSON output, the --title string no longer has a colon and two
710    spaces appended (issue #139).
711
712  * A buffer for holding formatted numeric values is now
713    properly-sized so that output is not truncated (issue #142).
714
715* Developer-visible changes
716
717  * Some memory leaks have been fixed.
718
719  * A -d flag enables debugging output.
720
721  * A .gitignore file has been added.
722
723  * libtoolize is now invoked correctly from the bootstrap.sh script.
724
725  * The test unit format can now be set from the API (issue #144).
726
727  * libiperf is now built as both shared and static libraries.
728
729  * In the JSON output, the "connection" structures are now stored as
730    an array in the "start" block, instead of overwriting each other.
731    While technically an incompatible API change, the former behavior
732    generated unusable JSON.
733
734iperf 3.0.1 2014-01-10
735----------------------
736
737  * Added the following new flags
738     -D, --daemon	       run server as a daemon
739     -L, --flowlabel           set IPv6 flow label (Linux only)
740     -C, --linux-congestion    set congestion control algorithm (Linux only)
741     -k, --blockcount #[KMG]   number of blocks (packets) to transmit
742     	 	      	       (instead of -t or -n)
743  * Bug fixes
744
745iperf 3.0-RC5 2013-11-15
746------------------------
747
748  * Added the following new flags
749     -F, --file name           xmit/recv the specified file
750     -A, --affinity n/n,m      set CPU affinity (Linux only)
751     -J, --json                output in JSON format
752     -Z, --zerocopy            use a 'zero copy' method of sending data
753     -O, --omit N              omit the first n seconds
754     -T, --title str           prefix every output line with this string
755  * more useful information in 'verbose' mode
756  * Many bug fixes
757
758
759iperf 3.0b4 2010-08-02
760----------------------
761
762  * Added support for binding to a specific interface (-B)
763  * Added support for IPv6 mode (-6)
764  * Setting TCP window size (-w) is now supported
765  * Updates to iperf_error
766      * Added new errors
767      * Should generate more relavent messages
768  * Stream list now managed by queue.h macros
769  * Test structures are now kept intact after a test is run (for API users)
770  * Improved interval timer granularity
771      * Support for decimal values
772  * Many bug fixes
773
774iperf 3.0b3 2010-07-23
775----------------------
776
777  * Better error handling
778      * All errors now handled with iperf_error()
779      * All functions that can return errors return NULL or -1 on error and set i_errno appropriately
780  * Iperf API intruduced
781      * Support for adding new protocols
782      * Added support for callback functions
783          * on_connect - executes after a connection is made to the server
784          * on_new_stream - executes after a new stream is created
785          * on_test_start - executes right before the test begins
786          * on_test_finish - executes after the test is finished
787  * Added early support for verbose mode (-V)
788
789iperf 3.0b2 2010-07-15
790----------------------
791
792  * UDP mode now supported
793      * Support for setting bandwidth (-b)
794      * Parallel UDP stream support
795      * Reverse mode UDP support
796  * Support for setting TCP_NODELAY (-N), disabling Nagle's Algorithm
797  * Support for setting TCP MSS (-M)
798      * Note: This feature is still in development. It is still very buggy.
799
800iperf 3.0b1 2010-07-08
801----------------------
802
803  * TCP control socket now manages messages between client and server
804  * Dynamic server (gets test parameters from client)
805      * Server can now set test options dynamically without having to restart.
806          * Currently supported options: -l, -t, -n, -P, -R
807          * Future options: -u, -b, -w, -M, -N, -I, -T, -Z, -6
808  * Results exchange
809      * Client can now see server results (and vice versa)
810  * Reverse mode (-R)
811      * Server sends, client receives
812