summaryrefslogtreecommitdiffstats
path: root/RELNOTES.md
diff options
context:
space:
mode:
Diffstat (limited to 'RELNOTES.md')
-rw-r--r--RELNOTES.md1112
1 files changed, 1112 insertions, 0 deletions
diff --git a/RELNOTES.md b/RELNOTES.md
new file mode 100644
index 0000000..79743a3
--- /dev/null
+++ b/RELNOTES.md
@@ -0,0 +1,1112 @@
+iperf3 Release Notes
+====================
+
+iperf-3.16 2023-11-30
+---------------------
+
+* Notable user-visible changes
+
+ * Multiple test streams started with -P/--parallel will now be
+ serviced by different threads. This allows iperf3 to take
+ advantage of multiple CPU cores on modern processors, and will
+ generally result in significant throughput increases (PR #1591).
+
+ * OpenSSL 3 is now detected at build time. If OpenSSL 3 is found,
+ various older, deprecated, APIs will not be used. iperf3 will
+ continue to work with OpenSSL 1.1.1. OpenSSL is used as a part
+ of the iperf3 authentication functionality (Issue #1300, PR
+ #1589).
+
+ * The authorized users file used by the authentication functionality
+ is now checked for accessibility much earlier during the program
+ startup, as opposed to being checked near the start of a
+ test (Issue #1583, PR #1585).
+
+* Developer-visible changes
+
+ * BREAKING CHANGE: iperf3 now requires pthreads and C atomic
+ variables to compile and run.
+
+iperf-3.15 2023-09-14
+---------------------
+
+* Notable user-visible changes
+
+ * Several bugs that could allow the iperf3 server to hang waiting
+ for input on the control connection has been fixed. ESnet thanks
+ Jorge Sancho Larraz from Canonical for reporting this issue. For
+ more information, see:
+ https://downloads.es.net/pub/iperf/esnet-secadv-2023-0002.txt.asc
+
+ * A bug that caused garbled output with UDP tests on 32-bit hosts
+ has been fixed (PR #1554, PR #1556). This bug was introduced in
+ iperf-3.14.
+
+ * A bug in counting UDP messages has been fixed (PR #1367, PR
+ #1380).
+
+iperf-3.14 2023-07-07
+---------------------
+
+* Notable user-visible changes
+
+ * A memory allocation hazard was fixed (Issue #1542/PR #1543). For
+ more information see:
+ https://downloads.es.net/pub/iperf/esnet-secadv-2023-0001.txt.asc
+
+ * JSON output was improved, such as print JSON numbers as signed (PR
+ #1539, Issue #1435), the exit code when doing JSON output was
+ fixed (PR #1523), and client_api was fixed so that it still
+ returns an error code when JSON is enabled (Issue #1405). Also,
+ duplicate fields when using multiple streams was removed from the
+ JSON output (#1492).
+
+ * Prevent UDP packet count and operations overflow (PR #1536/Issue
+ #1534).
+
+ * Statistics are fixed when --omit is used (Issue #1489/PR #1498).
+
+* Developer-visible changes
+
+ * CI builds and tests using GitHub actions have been added (PR
+ #1519).
+
+ * A fix for Android "unable to create a new stream error" was added
+ (PR #1506).
+
+ * Support for Voice Admit DSCP code point from RFC 5865 was added
+ (PR #1490).
+
+ * A fix for preventing a crash when RSA public key path doesn't
+ exist was fixed (PR #1488/Issue #1471).
+
+iperf-3.13 2023-02-16
+---------------------
+
+* Notable user-visible changes
+
+ * fq-rate (PR #1461, Issue #1366), and bidirectional flag (Issue #1428,
+ PR #1429) were added to the JSON output.
+
+ * Added support for OpenBSD including cleaning up endian handling (PR #1396)
+ and support for TCP_INFO on systems where it was implemented (PR #1397).
+
+ * Fixed bug in how TOS is set in mapped v4 (PR #1427).
+
+ * Corrected documentation, such as updating binary download links and text
+ (Issue #1459), updating version on iperf3 websites, and fixing an
+ incorrect error message (Issue #1441).
+
+ * Fixed crash on rcv-timeout with JSON logfile (#1463, #1460, issue #1360,
+ PR #1369).
+
+ * Fixed a bug that prevented TOS/DSCP from getting set correctly for reverse
+ tests (PR #1427, Issue #638).
+
+* Developer-visible changes
+
+ * Getter and setter are now available for bind_dev (PR #1419).
+
+ * Added missing getter for bidirectional tests (PR #1453).
+
+ * Added minor changes to clean up .gitignore and error messages (#1408).
+
+ * Made sure configure scripts are runnable with /bin/sh (PR #1398).
+
+ * Cleaned up RPM spec, such as adding missing RPM build dependencies, dropping
+ EL5 and removing outdated %changelog (PR #1401) to make.
+
+ * Added a fix for a resource leak bug in function iperf_create_pidfile(#1443).
+
+
+iperf-3.12 2022-09-30
+---------------------
+
+* Notable user-visible changes
+
+ * cJSON has been updated to version 1.7.15 (#1383).
+
+ * The --bind <host>%<dev> option syntax now works properly (#1360 /
+ #1371).
+
+ * A server-side file descriptor leak with the --logfile option has
+ been fixed (#1369 / #1360 / #1369 / #1389 / #1393).
+
+ * A bug that caused some large values from TCP_INFO to be misprinted
+ as negative numbers has been fixed (#1372).
+
+ * Using the -k or -n flags with --reverse no longer leak into future
+ tests (#1363 / #1364).
+
+ * There are now various debug level options available with the
+ --debug option. These can be used to adjust the amount of
+ debugging output (#1327).
+
+ * A new --snd-timeout option has been added to set a termination
+ timeout for idle TCP connections (#1215 / #1282).
+
+ * iperf3 is slightly more robust to out-of-order packets during UDP
+ connection setup in --reverse mode (#914 / #1123 / #1182 / #1212 /
+ #1260).
+
+ * iperf3 will now use different ports for each direction when the
+ --cport and --bdir options are set (#1249 / #1259).
+
+ * The iperf3 server will now exit if it can't open its log file
+ (#1225 / #1251).
+
+ * Various help message and output fixes have been made (#1299 /
+ #1330 / #1345 / #1350).
+
+ * Various compiler warnings have been fixed (#1211 / #1316).
+
+* Developer-visible changes
+
+ * Operation of bootstrap.sh has been fixed and simplified (#1335 /
+ #1325).
+
+ * Flow label support / compatibility under Linux has been improved
+ (#1310).
+
+ * Various minor memory leaks have been fixed (#1332 / #1333).
+
+ * A getter/setter has been added for the bind_port parameter
+ (--cport option). (#1303, #1305)
+
+ * Various internal documentation improvements (#1265 / #1285 / #1304).
+
+iperf-3.11 2022-01-31
+---------------------
+
+* Notable user-visible changes
+
+ * Update links to Discussions in documentation
+
+ * Fix DSCP so that TOS = DSCP * 4 (#1162)
+
+ * Fix --bind-dev for TCP streams (#1153)
+
+ * Fix interface specification so doesn't overlap with IPv6 link-local addresses for -c and -B (#1157, #1180)
+
+ * Add get/set test_unit_format function declaration to iperf_api.h
+
+ * 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
+
+ * Exit if idle time expires waiting for a connection in one-off mode (#1187, #1197)
+
+ * Support zerocopy by reverse mode (#1204)
+
+ * Update help and manpage text for #1157, support bind device
+
+ * Consistently print target_bandwidth in JSON start section (#1177)
+
+ * Test bitrate added to JSON output (#1168)
+
+ * Remove fsync call after every write to receiving --file (#1176, #1159)
+
+ * Update documentation for -w (#1175)
+
+ * Fix for #952, different JSON object names for bidir reverse channel
+
+iperf-3.10.1 2021-06-03
+-----------------------
+
+* Notable user-visible changes
+
+ * Fixed a problem with autoconf scripts that made builds fail in
+ some environments (#1154 / #1155).
+
+* Developer-visible changes
+
+ * GNU autoconf 2.71 or newer is now required to regenerate iperf3's
+ configure scripts.
+
+iperf 3.10 2021-05-26
+---------------------
+
+* Notable user-visible changes
+
+ * Fix a bug where some --reverse tests didn't terminate (#982 /
+ #1054).
+
+ * Responsiveness of control connections is slightly improved (#1045
+ / #1046 / #1063).
+
+ * The allowable clock skew when doing authentication between client
+ and server is now configurable with the new --time-skew-threshold
+ (#1065 / #1070).
+
+ * Bitrate throttling using the -b option now works when a burst size
+ is specified (#1090).
+
+ * A bug with calculating CPU utilization has been fixed (#1076 /
+ #1077).
+
+ * A --bind-dev option to support binding sockets to a given network
+ interface has been added to make iperf3 work better with
+ multi-homed machines and/or VRFs (#817 / #1089 / #1097).
+
+ * --pidfile now works with --client mode (#1110).
+
+ * The server is now less likely to get stuck due to network errors
+ (#1101, #1125), controlled by the new --rcv-timeout option.
+
+ * Fixed a few bugs in termination conditions for byte or
+ block-limited tests (#1113, #1114, #1115).
+
+ * Added tcp_info.snd_wnd to JSON output (#1148).
+
+ * Some bugs with garbled JSON output have been fixed (#1086, #1118,
+ #1143 / #1146).
+
+ * Support for setting the IPv4 don't-fragment (DF) bit has been
+ added with the new --dont-fragment option (#1119).
+
+ * A failure with not being able to read the congestion control
+ algorithm under WSL1 has been fixed (#1061 / #1126).
+
+ * Error handling and error messages now make more sense in cases
+ where sockets were not successfully opened (#1129 / #1132 /
+ #1136, #1135 / #1138, #1128 / #1139).
+
+ * Some buffer overflow hazards were fixed (#1134).
+
+* Notable developer-visible changes
+
+ * It is now possible to use the API to set/get the congestion
+ control algorithm (#1036 / #1112).
+
+
+iperf 3.9 2020-08-17
+--------------------
+
+* Notable user-visible changes
+
+ * A --timestamps flag has been added, which prepends a timestamp to
+ each output line. An optional argument to this flag, which is a
+ format specification to strftime(3), allows for custom timestamp
+ formats (#909, #1028).
+
+ * A --server-bitrate-limit flag has been added as a server-side
+ command-line argument. It allows a server to enforce a maximum
+ throughput rate; client connections that specify a higher bitrate
+ or exceed this bitrate during a test will be terminated. The
+ bitrate is expressed in bits per second, with an optional trailing
+ slash and integer count that specifies an averaging interval over
+ which to enforce the limit (#999).
+
+ * A bug that caused increased CPU usage with the --bidir option has
+ been fixed (#1011).
+
+* Notable developer-visible changes
+
+ * Fixed various minor memory leaks (#1023).
+
+iperf 3.8.1 2020-06-10
+----------------------
+
+* Notable user-visible changes
+
+ * A regression with "make install", where the libiperf shared
+ library files were not getting installed, has been fixed (#1013 /
+ #1014).
+
+iperf 3.8 2020-06-08
+--------------------
+
+* Notable user-visible changes
+
+ * Profiled libraries and binaries are no longer built by default
+ (#950).
+
+ * A minimal Dockerfile has been added (#824).
+
+ * A bug with burst mode and unlimited rate has been fixed (#898).
+
+ * Configuring with the --enable-static-bin flag will now cause
+ a statically-linked iperf3 binary to be built (#989).
+
+ * Configuring with the --without-sctp flag will now prevent SCTP
+ from being auto-detected (#1008). This flag allows building a
+ static binary (see above item) on a CentOS system with SCTP
+ installed, because no static SCTP libraries are available.
+
+ * Clock skew between the iperf3 client and server will no longer
+ skew the computation of jitter during UDP tests (#842 / #990).
+
+ * A possible buffer overflow in the authentication feature has been
+ fixed. This was only relevant when configuration authentication
+ using the libiperf3 API, and did not affect command-line usage.
+ Various other improvements and fixes in this area were also made
+ (#996).
+
+* Notable developer-visible changes
+
+ * The embedded version of cJSON has been updated to 1.7.13 (#978).
+
+ * Some server authentication functions have been added to the API
+ (#911).
+
+ * API access has been added to the connection timeout parameter
+ (#1001).
+
+ * Tests for some authentication functions have been added.
+
+ * Various compiler errors and warnings have been fixed.
+
+iperf 3.7 2019-06-21
+--------------------
+
+* Notable user-visible changes
+
+ * Support for simultaneous bidirectional tests with the --bidir flag
+ (#201/#780).
+
+ * Use POSIX standard clock_gettime(3) interface for timekeeping where
+ available (#253/#738).
+
+ * Passwords for authentication can be provided via environment
+ variable (#815).
+
+ * Specifying --repeating-payload and --reverse now works (#867).
+
+ * Failed authentication doesn't count for --one-off (#864/#877).
+
+ * Several memory leaks related to authenticated use were fixed
+ (#881/#888).
+
+ * The delay for tearing down the control connection for the default
+ timed tests has been increased, to more gracefully handle
+ high-delay paths (#751/#859).
+
+* Notable developer-visible changes
+
+ * Various improvements to the libiperf APIs (#767, #775, #869, #870,
+ #871)
+
+ * Fixed build behavior when OpenSSL is absent (#854).
+
+ * Portability fixes (#821/#874).
+
+iperf 3.6 2018-06-25
+--------------------
+
+* Notable user-visible changes
+
+ * A new --extra-data option can be used to fill in a user-defined
+ string field that appears in JSON output. (#600 / #729)
+
+ * A new --repeating-payload option makes iperf3 use a payload pattern
+ similar to that used by iperf2, which could help in recreating
+ results that might be affected by payload entropy (for example,
+ compression). (#726)
+
+ * -B now works properly with SCTP tests. (#678 / #715)
+
+ * A compile fix for Solaris 10 was added. (#711)
+
+ * Some minor bug fixes for JSON output. In particular, warnings for
+ debug and/or verbose modes with --json output (#737) and a fix for
+ JSON output on CentOS 6 (#727 / #744).
+
+ * software.es.net and downloads.es.net now support HTTPS, so URLs in
+ documentation that refer to those two hosts now use https://
+ instead of http:// URLs. (#759)
+
+* Notable developer-visible changes
+
+ * Functions related to authenticated iperf3 connections have been
+ exposed via libiperf. (#712 / #713)
+
+ * The ToS byte is now exposed in the libiperf API. (#719)
+
+iperf 3.5 2018-03-02
+--------------------
+
+* Notable user-visible changes
+
+ * iperf3 no longer counts data received after the end of a test in
+ the bytecounts. This fixes a bug that could, under some
+ conditions, artificially inflate the transfer size and measured
+ bitrate. This bug was most noticeable on reverse direction
+ transfers on short tests over high-latency or buffer-bloated
+ paths. Many thanks to @FuzzyStatic for providing access to a test
+ environment for diagnosing this issue (#692).
+
+iperf 3.4 2018-02-14
+--------------------
+
+* Notable user-visible changes
+
+ * The -A (set processor affinity) command-line flag is now supported
+ on Windows (#665).
+
+ * iperf3 now builds on systems lacking a daemon(3) library call
+ (#369).
+
+ * A bug in time skew checking under authentication was fixed (#674).
+
+ * IPv6 flow labels now work correctly with multiple parallel streams
+ (#694).
+
+ * The client no longer closes its control connection before sending
+ end-of-test statistics to the server (#677). This fixes a
+ regression introduced in iperf-3.2.
+
+ * Sending output to stdout now makes errors go to stderr, as per
+ UNIX convention (#695).
+
+ * A server side crash in verbose output with a client running
+ multiple parallel connections has been fixed (#686).
+
+ * The --cport option can now be specified without the --bind option.
+ Using the --cport option on Linux can eliminate a problem with
+ ephemeral port number allocation that can make multi-stream iperf3
+ tests perform very poorly on LAGG links. Also, the --cport option
+ now works on SCTP tests (#697).
+
+* Notable developer-visible changes
+
+ * iperf3 now builds on (some) macOS systems older than 10.7 (#607).
+
+ * Some unused code and header inclusions were eliminated (#667,
+ #668). Also some code was cleaned up to eliminate (or at least
+ reduce) compiler warnings (#664, #671).
+
+iperf 3.3 2017-10-31
+--------------------
+
+* Notable user-visible changes
+
+ * iperf3 can now be built --without-openssl on systems where OpenSSL
+ is present (#624, #633).
+
+ * A bug with printing very large numbers has been fixed (#642).
+
+ * A bug where the server would, under certain circumstances, halt a
+ test after exactly fifteen seconds has been fixed (#645).
+
+ * The --tos parameter is no longer "sticky" between tests when doing
+ --reverse tests (#639).
+
+ * The authentication token on the server is properly reset between
+ tests (#650).
+
+ * A bug that could cause iperf3 to overwrite the PID file of an
+ already-existing iperf3 process has been fixed (#623).
+
+ * iperf3 will now ignore nonsensical TCP MSS values (from the TCP
+ control connection) when trying to determine a reasonable block
+ size for UDP tests. This condition primarily affected users on
+ Windows, but potentially improves robustness for all
+ platforms. (#659)
+
+* Notable developer-visible changes
+
+iperf 3.2 2017-06-26
+--------------------
+
+* User-visible changes
+
+ * Authentication via a username/password mechanism, coupled with a
+ public-key pair, is now an optional way of limiting access to an
+ iperf3 server (#517).
+
+ * Ending statistics are less ambiguous for UDP and also now use
+ correct test durations for all protocols (#560, #238). Many fixes
+ have been made in statistics printing code, generally for
+ human-readable output (#562, #575, #252, #443, #236).
+
+ * Several problems with the -F/--file options have been fixed.
+ Documentation has been improved to note some ways in which this
+ feature might not behave as expected (#588).
+
+ * iperf3 now uses the correct "bitrate" phraseology rather than
+ "bandwidth" when describing measurement results. The --bandwidth
+ option has been renamed --bitrate, although --bandwidth is still
+ accepted for backwards compatibility (#583).
+
+ * Application-level bandwidth pacing (--bitrate option) is now
+ checked every millisecond by default, instead of of every tenth of
+ a second, to provide smoother traffic behavior when using
+ application pacing (#460). The pacing can be tuned via the use of
+ the --pacing-timer option (#563).
+
+ * A new --dscp option allows specifying the DSCP value to be used
+ for outgoing packets (#508). The TOS byte value is now printed in
+ the JSON output (#226).
+
+ * Congestion window data on FreeBSD is now computed correctly (#465,
+ #475, #338).
+
+ * The T/t suffixes for terabytes/terabits are now accepted for
+ quantities where suffixes are supported, such as --bandwidth
+ (#402).
+
+ * Sanity checks for UDP send sizes have been added (#390), and
+ existing checks on the --window option have been improved (#557).
+
+ * The TCP rttvar value is now available in the JSON output (#534), as are
+ the socket buffer sizes (#558).
+
+ * Error handling and documentation have been improved for the
+ -f/--format options (#568).
+
+ * A new --connect-timeout option on the client allows specifying a
+ length of time that the client will attempt to connect to the
+ server, in milliseconds (#216).
+
+ * The hostname and current timestamp are no longer used in the
+ cookie used to associate the client and server. Instead, random
+ data is used. Note that iperf3 now requires the /dev/urandom
+ device (#582).
+
+ * Prior versions of iperf3 doing UDP tests used to overcount packet
+ losses in the presence of packet reordering. This has been
+ (partially) fixed by try to not count the sequence number gaps
+ resulting from out-of-order packets as actual losses (#457).
+
+ * iperf3 no longer prints results from very small intervals (10% of
+ the statistics reporting interval) at the end of the test run if
+ they contain no data. This can happen due to timing difference or
+ network queueing on the path between the client and server. This
+ is primarily a cosmetic change to prevent these fairly meaningless
+ intervals from showing up in the output (#278).
+
+ * Compatibility note: Users running iperf3 3.2 or newer from the
+ bwctl utility will need to obtain version 1.6.3 or newer of bwctl.
+ Note that bwctl, a component of the perfSONAR toolkit, has been
+ deprecated in favor of pScheduler since the release of perfSONAR
+ 4.0.
+
+* Developer-visible changes
+
+ * Various warnings and build fixes (#551, #564, #518, #597).
+
+ * Some improvements have been made for increased compatibility on
+ IRIX (#368) and with C++ (#587).
+
+ * cJSON has been updated to 1.5.2 (#573), bringing in a number of
+ bugfixes.
+
+ * Some dead code has been removed.
+
+iperf 3.1.7 2017-03-06
+----------------------
+
+iperf 3.1.7 is functionally identical to iperf 3.1.6. Its only
+changes consist of updated documentation files and text in the RPM
+spec file.
+
+iperf 3.1.6 2017-02-02
+----------------------
+
+The release notes for iperf 3.1.6 describe changes, including bug
+fixes and new functionality, made since iperf 3.1.5.
+
+* User-visible changes
+
+ * Specifying --fq-rate or --no-fq-socket-pacing on a system where
+ these options are not supported now generate an error instead of a
+ warning. This change makes diagnosing issues related to pacing
+ more apparent.
+
+ * Fixed a bug where two recently-added diagnostic messages spammed
+ the JSON output on UDP tests.
+
+iperf 3.1.5 2017-01-12
+----------------------
+
+The release notes for iperf 3.1.5 describe changes, including bug
+fixes and new functionality, made since iperf 3.1.4.
+
+Compatibility note: Fair-queueing is now specified differently in
+iperf 3.1.5 than in prior versions (which include 3.1.3 and 3.1.4).
+
+Compatibility note: UDP tests may yield different results from all
+prior versions of iperf3 (through 3.1.4) due to the new default UDP
+sending size.
+
+* User-visible changes
+
+ * The fair-queueing per-socket based pacing available on recent
+ Linux systems has been reimplemented with a different user
+ interface (#325, #467, #488). The --bandwidth command-line flag
+ now controls only the application-level pacing, as was the case in
+ iperf 3.1.2 and all earlier versions. Fair-queueing per-socket
+ based pacing is now controlled via a new --fq-rate command-line
+ flag. Note that TCP and UDP tests may use --bandwidth, --fq-rate,
+ both flags, or neither flag. SCTP tests currently support
+ --bandwidth only. The --no-fq-socket-pacing flag, which was
+ introduced in iperf 3.1.3, has now been deprecated, and is
+ equivalent to --fq-rate=0. iperf3 now reacts more gracefully if
+ --no-fq-socket-pacing or --fq-rate are specified on platforms that
+ don't support these options.
+
+ For UDP tests, note that the default --bandwidth is 1 Mbps. Using
+ the fair-queueing-based pacing will probably require explicitly
+ setting both --bandwidth and --fq-rate, preferably to the same
+ value. (While setting different values for --bandwidth and
+ --fq-rate can certainly be done, the results can range from
+ entertaining to perplexing.)
+
+ * iperf3 now chooses a more sane default UDP send size (#496, #498).
+ The former default (8KB) caused IP packet fragmentation on paths
+ having smaller MTUs (including any Ethernet network not configured
+ for jumbo frames). This could have effects ranging from increased
+ burstiness, to packet loss, to complete failure of the test.
+ iperf3 now attempts to use the MSS of the control connection to
+ determine a default UDP send size if no sending length was
+ explicitly specified with --length.
+
+ * Several checks are now made when setting the socket buffer sizes
+ with the -w option, to verify that the settings have been applied
+ correctly. The results of these checks can been seen when the
+ --debug flag is specified. (#356)
+
+ * A --forceflush flag has been added to flush the output stream
+ after every statistics reporting interval.
+
+* Developer-visible changes
+
+ * A systemd service file has been added (#340, #430).
+
+iperf 3.1.4 2016-10-31
+----------------------
+
+The release notes for iperf 3.1.4 describe changes, including bug
+fixes and new functionality, made since iperf 3.1.3.
+
+* User-visible changes
+
+ * On systems that support setting the congestion control algorithm,
+ iperf3 now keeps track of the congestion control algorithm and
+ print it in the JSON output in the members sender_tcp_congestion
+ and receiver_tcp_congestion (issue #461). A few bugs (probably
+ not user-visible) with setting the congestion control algorithm
+ were also fixed.
+
+* Developer-visible changes
+
+ * Fixed a buffer overflow in the cJSON library (issue #466). It is
+ not believed that this bug created any security vulnerabilities in
+ the context of iperf3.
+
+ * Travis CI builds are now enabled on this codeline (pull request #424).
+
+ * Various bug fixes (issue #459, pull request #429, issue #388).
+
+iperf 3.1.3 2016-06-08
+----------------------
+
+The release notes for iperf 3.1.3 describe changes, including bug
+fixes and new functionality, made since iperf 3.1.2.
+
+* Security
+
+ * Fixed a buffer overflow / heap corruption issue that could occur
+ if a malformed JSON string was passed on the control channel. In
+ theory, this vulnerability could be leveraged to create a heap
+ exploit. This issue, present in the cJSON library, was already
+ fixed upstream, so was addressed in iperf3 by importing a newer
+ version of cJSON (plus local ESnet modifications). Discovered and
+ reported by Dave McDaniel, Cisco Talos. Cross-references:
+ TALOS-CAN-0164, ESNET-SECADV-2016-0001, CVE-2016-4303.
+
+* User-visible changes
+
+ * On supported platforms (recent Linux), iperf3 can use
+ fair-queueing-based per-socket pacing instead of its own
+ application-level pacing for the --bandwidth option.
+ Application-level pacing can be forced with the
+ -no-fq-socket-pacing flag.
+
+ * A bug that could show negative loss counters with --udp and --omit
+ has been fixed (issue #412, pull request #414).
+
+ * Error handling has been made slightly more robust. Also, the
+ iperf3 server will no longer exit after five consecutive errors,
+ but will only exit for certain types of errors that prevent it
+ from participating in any tests at all.
+
+* Developer-visible changes
+
+ * Fixed the build on FreeBSD 11-CURRENT (issue #413).
+
+ * Fixed various coding errors (issue #423, issue #425).
+
+iperf 3.1.2 2016-02-01
+----------------------
+
+The release notes for iperf 3.1.2 describe changes, including bug
+fixes and new functionality, made since iperf 3.1.1.
+
+* User-visible changes
+
+ * Fixed a bug that caused nan values to be emitted (incorrectly)
+ into JSON, particularly at the end of UDP tests (issue #278).
+
+ * Fixed a bug that caused the wrong value to be printed for
+ out-of-order UDP packets (issue #329).
+
+ * Added a contrib/ directory containing a few submitted graphing
+ scripts.
+
+* Developer-visible changes
+
+iperf 3.1.1 2015-11-19
+----------------------
+
+The release notes for iperf 3.1.1 describe changes and new
+functionality in iperf 3.1.1, but not present in 3.1.
+
+* User-visible changes
+
+ * Some markup fixes have been made in the manpages for Debian
+ compatibility (issue #291).
+
+ * A bug where the -T title option was not being output correctly
+ in JSON output has been fixed (issue #292).
+
+ * Argument handling for some command-line options has been improved
+ (issue #316).
+
+* Developer-visible changes
+
+ * A regression with C++ compatibility in one of the iperf header
+ files has been fixed (issue #323).
+
+iperf 3.1 2015-10-16
+--------------------
+
+The release notes for iperf 3.1 describe changes and new
+functionality in iperf 3.1, but not present in 3.0.11 or any earlier
+3.0.x release.
+
+* Selected user-visible changes
+
+ * SCTP support has been added (with the --sctp flag), on Linux,
+ FreeBSD, and Solaris (issue #131).
+
+ * Setting CPU affinity now works on FreeBSD.
+
+ * Selection of TCP congestion now works on FreeBSD, and is now
+ called --congestion (the old --linux-congestion option works
+ but is now deprecated).
+
+ * A new -I option for the server causes it to write a PID file,
+ mostly useful for daemon mode (issue #120).
+
+ * A --logfile argument can now force all output to go to a file,
+ rather than to a file. This is especially useful when running an
+ iperf3 server in daemon mode (issue #119).
+
+ * Various compatibility fixes for Android (issue #184, issue #185),
+ iOS (issue #288), NetBSD (issue #248), Solaris (issue #175, issue
+ #178, issue #180, issue #211), vxWorks (issue #268).
+
+ * A --udp-counters-64bit flag has been added to support very
+ long-running UDP tests, which could cause a counter to overflow
+ (issue #191).
+
+ * A --cport option to specify the client-side port has been added
+ (issue #207, issue #209, issue #239).
+
+ * Some calculation errors with the -O feature have been fixed (issue
+ #236).
+
+ * A potential crash in the iperf3 server has been fixed (issue #257,
+ issue #258).
+
+ * Many miscellaneous bug fixes.
+
+* Selected developer-visible changes
+
+ * Consumers of libiperf can now get the JSON output for a
+ just-completed test (issue #147).
+
+ * Detection of various optional features has been improved to check
+ for the presence or absence of platform functionality, not the name
+ of platforms.
+
+ * Out-of-tree builds now work (issue #265).
+
+iperf 3.0.11 2015-01-09
+-----------------------
+
+* User-visible changes
+
+ * Added -1 / --one-off flag, which causes the iperf3 server to
+ process one client connection and then exit. Intended primarily
+ for bwctl integration (issue #230).
+
+ * Added various minor bug fixes (issues #231, #232, #233).
+
+ * Added 30-second timeout for UDP tests if unable to establish UDP
+ connectivity between sender and receiver (issue #222).
+
+iperf 3.0.10 2014-12-16
+-----------------------
+
+* User-visible changes
+
+ * Fixed the build on MacOS X Yosemite (issue #213).
+
+ * UDP tests now honor the -w option for setting the socket buffer
+ sizes (issue #219).
+
+* Developer-visible changes
+
+ * Added an RPM spec file plus functionality to fill in the version
+ number.
+
+ * Fixed potential filename collision with a system header (issue
+ #203).
+
+iperf 3.0.9 2014-10-14
+----------------------
+
+* User-visible changes
+
+ * Fixed a series of problems that came from attempting a UDP test
+ with a pathologically large block size. This put the server into
+ an odd state where it could not accept new client connections.
+ This in turn caused subsequent client connections to crash when
+ interrupted (issue #212).
+
+* Developer-visible changes
+
+ * None.
+
+iperf 3.0.8 2014-09-30
+----------------------
+
+* User-visible changes
+
+ * Updated license and copyright verbage to confirm to LBNL Tech
+ Transfer requirements. No substantive changes; license remains
+ the 3-clause BSD license.
+
+* Developer-visible changes
+
+ * None.
+
+iperf 3.0.7 2014-08-28
+----------------------
+
+* User-visible changes
+
+ * A server bug where new connections from clients could disrupt
+ running tests has been fixed (issue #202).
+
+ * Rates now consistently use 1000-based prefixes (K, M, G), where
+ sizes of objects now consistently use 1024-based prefixes (issue #173).
+
+ * UDP tests with unlimited bandwidth are now supported (issue #170).
+
+ * An interaction between the -w and -B options, which kept them from
+ working when used together, has been fixed (issue #193).
+
+* Developer-visible changes
+
+iperf 3.0.6 2014-07-28
+----------------------
+
+* User-visible changes
+
+ * Several bugs that kept the -B option from working in various
+ circumstances have been fixed (issue #193).
+
+ * Various compatibility fixes for OpenBSD (issue #196) and
+ Solaris (issue #177).
+
+* Developer-visible changes
+
+ * The {get,set}_test_bind_address API calls have been added to
+ expose the -B functionality to API consumers (issue #197).
+
+iperf 3.0.5 2014-06-16
+----------------------
+
+* User-visible changes
+
+ * Erroneous output when doing --json output has been fixed (this
+ problem was caused by an attempt to fix issue #158).
+
+ * The maximum test running time has been increased from one hour to
+ one day (issue #166).
+
+ * Project documentation has been moved to GitHub Pages at this URL:
+ http://software.es.net/iperf/.
+
+ * A bug that caused CPU time to be computed incorrectly on FreeBSD
+ has been fixed.
+
+ * A timing issue which caused measurement intervals to be wrong
+ with TCP tests on lossy networks has been fixed (issue #125).
+
+ * Newer versions of autoconf / automake / libtool are now used by
+ default (issue #161).
+
+ * JSON output now indicates whether the test was run in --reverse
+ mode (issue #167).
+
+ * It is now possible to get (most of) the server-side output at
+ the client by using the --get-server-output flag (issue #160).
+
+* Developer-visible changes
+
+ * automake/autoconf/libtool have been updated to more recent
+ versions. AM_MAINTAINER_MODE is now used to avoid requiring these
+ tools at build-time.
+
+iperf 3.0.4 was not released
+----------------------------
+
+iperf 3.0.3 2014-03-26
+----------------------
+
+* User-visible changes
+
+ * Due to several oversights, the source code archive for iperf 3.0.2
+ was distributed as an uncompressed tarball, despite having an
+ extension (".tar.gz") that indicated it was compressed. The
+ release generation procedure has been changed to avoid this
+ problem going forward.
+
+ * Summary structures in the JSON output are now included, even if
+ there is only one stream. This change makes consuming the JSON
+ output easier and more consistent (issue #151).
+
+ * A possible buffer overflow in iperf_error.c has been fixed (issue
+ #155).
+
+* Developer-visible changes
+
+ * Example programs now build correctly, after having been broken in
+ the 3.0.2 release (issue #152).
+
+iperf 3.0.2 2014-03-10
+----------------------
+
+* User-visible changes
+
+ * The iperf3 project has been moved to GitHub, and various URLs in
+ documentation files have been changed to point there.
+
+ * iperf3 now builds on Linux systems that do not support
+ TCP_CONGESTION. Most notably this allows iperf3 to work on CentOS
+ 5.
+
+ * An abort on MacOS 10.9 has been fixed (issue #135).
+
+ * Added -I flag for the server to write a PID file, mostly useful for
+ daemon mode (issue #120).
+
+ * A bug that could break some TCP tests on FreeBSD has been fixed.
+
+ * TCP snd_cwnd output is now printed by default on Linux (issue #99).
+
+ * In JSON output, the --title string no longer has a colon and two
+ spaces appended (issue #139).
+
+ * A buffer for holding formatted numeric values is now
+ properly-sized so that output is not truncated (issue #142).
+
+* Developer-visible changes
+
+ * Some memory leaks have been fixed.
+
+ * A -d flag enables debugging output.
+
+ * A .gitignore file has been added.
+
+ * libtoolize is now invoked correctly from the bootstrap.sh script.
+
+ * The test unit format can now be set from the API (issue #144).
+
+ * libiperf is now built as both shared and static libraries.
+
+ * In the JSON output, the "connection" structures are now stored as
+ an array in the "start" block, instead of overwriting each other.
+ While technically an incompatible API change, the former behavior
+ generated unusable JSON.
+
+iperf 3.0.1 2014-01-10
+----------------------
+
+ * Added the following new flags
+ -D, --daemon run server as a daemon
+ -L, --flowlabel set IPv6 flow label (Linux only)
+ -C, --linux-congestion set congestion control algorithm (Linux only)
+ -k, --blockcount #[KMG] number of blocks (packets) to transmit
+ (instead of -t or -n)
+ * Bug fixes
+
+iperf 3.0-RC5 2013-11-15
+------------------------
+
+ * Added the following new flags
+ -F, --file name xmit/recv the specified file
+ -A, --affinity n/n,m set CPU affinity (Linux only)
+ -J, --json output in JSON format
+ -Z, --zerocopy use a 'zero copy' method of sending data
+ -O, --omit N omit the first n seconds
+ -T, --title str prefix every output line with this string
+ * more useful information in 'verbose' mode
+ * Many bug fixes
+
+
+iperf 3.0b4 2010-08-02
+----------------------
+
+ * Added support for binding to a specific interface (-B)
+ * Added support for IPv6 mode (-6)
+ * Setting TCP window size (-w) is now supported
+ * Updates to iperf_error
+ * Added new errors
+ * Should generate more relevant messages
+ * Stream list now managed by queue.h macros
+ * Test structures are now kept intact after a test is run (for API users)
+ * Improved interval timer granularity
+ * Support for decimal values
+ * Many bug fixes
+
+iperf 3.0b3 2010-07-23
+----------------------
+
+ * Better error handling
+ * All errors now handled with iperf_error()
+ * All functions that can return errors return NULL or -1 on error and set i_errno appropriately
+ * Iperf API introduced
+ * Support for adding new protocols
+ * Added support for callback functions
+ * on_connect - executes after a connection is made to the server
+ * on_new_stream - executes after a new stream is created
+ * on_test_start - executes right before the test begins
+ * on_test_finish - executes after the test is finished
+ * Added early support for verbose mode (-V)
+
+iperf 3.0b2 2010-07-15
+----------------------
+
+ * UDP mode now supported
+ * Support for setting bandwidth (-b)
+ * Parallel UDP stream support
+ * Reverse mode UDP support
+ * Support for setting TCP_NODELAY (-N), disabling Nagle's Algorithm
+ * Support for setting TCP MSS (-M)
+ * Note: This feature is still in development. It is still very buggy.
+
+iperf 3.0b1 2010-07-08
+----------------------
+
+ * TCP control socket now manages messages between client and server
+ * Dynamic server (gets test parameters from client)
+ * Server can now set test options dynamically without having to restart.
+ * Currently supported options: -l, -t, -n, -P, -R
+ * Future options: -u, -b, -w, -M, -N, -I, -T, -Z, -6
+ * Results exchange
+ * Client can now see server results (and vice versa)
+ * Reverse mode (-R)
+ * Server sends, client receives