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