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