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