Bruce A. Mah | 396ccaf | 2014-02-28 13:44:12 -0800 | [diff] [blame] | 1 | iperf3: A TCP, UDP, and SCTP network bandwidth measurement tool |
| 2 | ================================================================ |
Jon Dugan | aa594bb | 2007-08-29 21:57:27 +0000 | [diff] [blame] | 3 | |
Bruce A. Mah | 396ccaf | 2014-02-28 13:44:12 -0800 | [diff] [blame] | 4 | Summary |
| 5 | ------- |
Jon Dugan | f9fd0fe | 2010-07-08 23:46:32 +0000 | [diff] [blame] | 6 | |
Bruce A. Mah | 396ccaf | 2014-02-28 13:44:12 -0800 | [diff] [blame] | 7 | iperf is a tool for active measurements of the maximum achievable |
| 8 | bandwidth on IP networks. It supports tuning of various parameters |
| 9 | related to timing, protocols, and buffers. For each test it reports |
Bruce A. Mah | 0f081b7 | 2017-05-24 10:50:44 -0700 | [diff] [blame] | 10 | the measured throughput / bitrate, loss, and other parameters. |
Jon Dugan | aa594bb | 2007-08-29 21:57:27 +0000 | [diff] [blame] | 11 | |
Bruce A. Mah | 396ccaf | 2014-02-28 13:44:12 -0800 | [diff] [blame] | 12 | This version, sometimes referred to as iperf3, is a redesign of an |
| 13 | original version developed at NLANR/DAST. iperf3 is a new |
| 14 | implementation from scratch, with the goal of a smaller, simpler code |
| 15 | base, and a library version of the functionality that can be used in |
Bruce A. Mah | 59a11c6 | 2017-03-14 14:58:22 -0700 | [diff] [blame] | 16 | other programs. iperf3 also has a number of features found in other tools |
Bruce A. Mah | 396ccaf | 2014-02-28 13:44:12 -0800 | [diff] [blame] | 17 | such as nuttcp and netperf, but were missing from the original iperf. |
Bruce A. Mah | 2be606a | 2014-02-28 17:52:52 -0800 | [diff] [blame] | 18 | These include, for example, a zero-copy mode and optional JSON output. |
Bruce A. Mah | fbd8951 | 2014-09-15 11:00:08 -0700 | [diff] [blame] | 19 | Note that iperf3 is *not* backwards compatible with the original iperf. |
sethdelliott | 1ac522e | 2010-07-08 22:41:22 +0000 | [diff] [blame] | 20 | |
Bruce A. Mah | 396ccaf | 2014-02-28 13:44:12 -0800 | [diff] [blame] | 21 | Primary development for iperf3 takes place on CentOS Linux, FreeBSD, |
Bruce A. Mah | 35f1fbf | 2017-06-26 10:35:00 -0700 | [diff] [blame] | 22 | and macOS. At this time, these are the only officially supported |
Bruce A. Mah | 396ccaf | 2014-02-28 13:44:12 -0800 | [diff] [blame] | 23 | platforms, however there have been some reports of success with |
Bruce A. Mah | e83fe5a | 2015-06-19 10:51:57 -0700 | [diff] [blame] | 24 | OpenBSD, NetBSD, Android, Solaris, and other Linux distributions. |
sethdelliott | 1ac522e | 2010-07-08 22:41:22 +0000 | [diff] [blame] | 25 | |
Bruce A. Mah | aea943c | 2014-08-26 14:31:23 -0700 | [diff] [blame] | 26 | iperf3 is principally developed by ESnet / Lawrence Berkeley National |
Bruce A. Mah | 2be606a | 2014-02-28 17:52:52 -0800 | [diff] [blame] | 27 | Laboratory. It is released under a three-clause BSD license. |
Jon Dugan | aa594bb | 2007-08-29 21:57:27 +0000 | [diff] [blame] | 28 | |
Bruce A. Mah | 964f106 | 2018-06-22 14:09:01 -0700 | [diff] [blame] | 29 | For more information see: https://software.es.net/iperf |
Bruce A. Mah | 4318163 | 2014-05-05 15:28:05 -0700 | [diff] [blame] | 30 | |
| 31 | Source code and issue tracker: https://github.com/esnet/iperf |
Jon Dugan | aa594bb | 2007-08-29 21:57:27 +0000 | [diff] [blame] | 32 | |
Bruce A. Mah | 396ccaf | 2014-02-28 13:44:12 -0800 | [diff] [blame] | 33 | Obtaining iperf3 |
| 34 | ---------------- |
Jon Dugan | d768f73 | 2009-12-02 02:08:47 +0000 | [diff] [blame] | 35 | |
Bruce A. Mah | 396ccaf | 2014-02-28 13:44:12 -0800 | [diff] [blame] | 36 | Downloads of iperf3 are available at: |
Jon Dugan | d768f73 | 2009-12-02 02:08:47 +0000 | [diff] [blame] | 37 | |
Bruce A. Mah | 964f106 | 2018-06-22 14:09:01 -0700 | [diff] [blame] | 38 | https://downloads.es.net/pub/iperf/ |
sethdelliott | 1ac522e | 2010-07-08 22:41:22 +0000 | [diff] [blame] | 39 | |
Bruce A. Mah | e83fe5a | 2015-06-19 10:51:57 -0700 | [diff] [blame] | 40 | To check out the most recent code, clone the git repository at: |
sethdelliott | 1ac522e | 2010-07-08 22:41:22 +0000 | [diff] [blame] | 41 | |
Bruce A. Mah | e83fe5a | 2015-06-19 10:51:57 -0700 | [diff] [blame] | 42 | https://github.com/esnet/iperf.git |
sethdelliott | 1ac522e | 2010-07-08 22:41:22 +0000 | [diff] [blame] | 43 | |
Bruce A. Mah | 396ccaf | 2014-02-28 13:44:12 -0800 | [diff] [blame] | 44 | Building iperf3 |
| 45 | --------------- |
| 46 | |
| 47 | ### Prerequisites: ### |
Bruce A. Mah | 6b363d2 | 2014-04-10 15:07:49 -0700 | [diff] [blame] | 48 | |
| 49 | None. |
Bruce A. Mah | 396ccaf | 2014-02-28 13:44:12 -0800 | [diff] [blame] | 50 | |
| 51 | ### Building ### |
| 52 | |
| 53 | ./configure; make; make install |
| 54 | |
Bruce A. Mah | 2be606a | 2014-02-28 17:52:52 -0800 | [diff] [blame] | 55 | (Note: If configure fails, try running `./bootstrap.sh` first) |
Bruce A. Mah | 396ccaf | 2014-02-28 13:44:12 -0800 | [diff] [blame] | 56 | |
| 57 | Invoking iperf3 |
| 58 | --------------- |
| 59 | |
| 60 | iperf3 includes a manual page listing all of the command-line options. |
| 61 | The manual page is the most up-to-date reference to the various flags and parameters. |
| 62 | |
| 63 | For sample command line usage, see: |
| 64 | |
Wes Garrison | d2dcd87 | 2017-06-20 11:43:13 -0500 | [diff] [blame] | 65 | https://fasterdata.es.net/performance-testing/network-troubleshooting-tools/iperf/ |
Bruce A. Mah | 396ccaf | 2014-02-28 13:44:12 -0800 | [diff] [blame] | 66 | |
| 67 | Using the default options, iperf is meant to show typical well |
Bruce A. Mah | 35f1fbf | 2017-06-26 10:35:00 -0700 | [diff] [blame] | 68 | designed application performance. "Typical well designed application" |
Bruce A. Mah | 396ccaf | 2014-02-28 13:44:12 -0800 | [diff] [blame] | 69 | means avoiding artificial enhancements that work only for testing |
| 70 | (such as splice()'ing the data to /dev/null). iperf does also have |
Bruce A. Mah | 35f1fbf | 2017-06-26 10:35:00 -0700 | [diff] [blame] | 71 | flags for "extreme best case" optimizations, but they must be |
Bruce A. Mah | 396ccaf | 2014-02-28 13:44:12 -0800 | [diff] [blame] | 72 | explicitly activated. |
| 73 | |
| 74 | These flags include: |
Bruce A. Mah | 3f5f7f7 | 2014-03-12 14:04:14 -0700 | [diff] [blame] | 75 | |
| 76 | -Z, --zerocopy use a 'zero copy' sendfile() method of sending data |
| 77 | -A, --affinity n/n,m set CPU affinity |
Bruce A. Mah | 396ccaf | 2014-02-28 13:44:12 -0800 | [diff] [blame] | 78 | |
| 79 | Bug Reports |
| 80 | ----------- |
Brian Tierney | 55ace3e | 2013-11-10 09:37:10 -0800 | [diff] [blame] | 81 | |
Bruce A. Mah | fbd8951 | 2014-09-15 11:00:08 -0700 | [diff] [blame] | 82 | Before submitting a bug report, please make sure you're running the |
| 83 | latest version of the code, and confirm that your issue has not |
| 84 | already been fixed. Then submit to the iperf3 issue tracker on |
| 85 | GitHub: |
| 86 | |
Bruce A. Mah | 70e4b71 | 2014-02-27 21:56:53 -0800 | [diff] [blame] | 87 | https://github.com/esnet/iperf/issues |
Brian Tierney | 55ace3e | 2013-11-10 09:37:10 -0800 | [diff] [blame] | 88 | |
Bruce A. Mah | fbd8951 | 2014-09-15 11:00:08 -0700 | [diff] [blame] | 89 | In your issue submission, please indicate the version of iperf3 and |
| 90 | what platform you're trying to run on (provide the platform |
| 91 | information even if you're not using a supported platform, we |
| 92 | *might* be able to help anyway). Exact command-line arguments will |
| 93 | help us recreate your problem. If you're getting error messages, |
| 94 | please include them verbatim if possible, but remember to sanitize any |
| 95 | sensitive information. |
| 96 | |
| 97 | If you have a question about usage or about the code, please do *not* |
| 98 | submit an issue. Please use one of the mailing lists for that. |
| 99 | |
Bruce A. Mah | f95924d | 2020-06-08 13:12:36 -0700 | [diff] [blame] | 100 | Relation to iperf 2.x |
| 101 | --------------------- |
Brian Tierney | 55ace3e | 2013-11-10 09:37:10 -0800 | [diff] [blame] | 102 | |
Bruce A. Mah | f95924d | 2020-06-08 13:12:36 -0700 | [diff] [blame] | 103 | Note that iperf2 is no longer being developed by its original |
Bruce A. Mah | 2800dfc | 2017-11-17 10:48:05 -0800 | [diff] [blame] | 104 | maintainers. However, beginning in 2014, another developer began |
| 105 | fixing bugs and enhancing functionality, and generating releases of |
| 106 | iperf2. Both projects (as of late 2017) are currently being developed |
| 107 | actively, but independently. The continuing iperf2 development |
Bruce A. Mah | f95924d | 2020-06-08 13:12:36 -0700 | [diff] [blame] | 108 | project can be found at https://sourceforge.net/projects/iperf2/. |
Bruce A. Mah | 2800dfc | 2017-11-17 10:48:05 -0800 | [diff] [blame] | 109 | |
Bruce A. Mah | f95924d | 2020-06-08 13:12:36 -0700 | [diff] [blame] | 110 | iperf3 contains a number of options and functions not present in |
| 111 | iperf2. In addition, some flags are changed from their iperf2 |
| 112 | counterparts: |
Bruce A. Mah | 3f5f7f7 | 2014-03-12 14:04:14 -0700 | [diff] [blame] | 113 | |
| 114 | -C, --linux-congestion set congestion control algorithm (Linux only) |
| 115 | (-Z in iperf2) |
Bruce A. Mah | dfcea9f | 2019-06-20 18:12:47 -0700 | [diff] [blame] | 116 | --bidir bidirectional testing mode |
| 117 | (-d in iperf2) |
Brian Tierney | 55ace3e | 2013-11-10 09:37:10 -0800 | [diff] [blame] | 118 | |
Bruce A. Mah | f95924d | 2020-06-08 13:12:36 -0700 | [diff] [blame] | 119 | Some iperf2 options are not available in iperf3: |
Bruce A. Mah | 5f69341 | 2014-01-08 09:28:49 -0800 | [diff] [blame] | 120 | |
Bruce A. Mah | 3f5f7f7 | 2014-03-12 14:04:14 -0700 | [diff] [blame] | 121 | -r, --tradeoff Do a bidirectional test individually |
| 122 | -T, --ttl time-to-live, for multicast (default 1) |
| 123 | -x, --reportexclude [CDMSV] exclude C(connection) D(data) M(multicast) |
| 124 | S(settings) V(server) reports |
| 125 | -y, --reportstyle C report as a Comma-Separated Values |
Brian Tierney | 55ace3e | 2013-11-10 09:37:10 -0800 | [diff] [blame] | 126 | |
Bruce A. Mah | f95924d | 2020-06-08 13:12:36 -0700 | [diff] [blame] | 127 | Also removed is the ability to set the options via environment |
Bruce A. Mah | 5f69341 | 2014-01-08 09:28:49 -0800 | [diff] [blame] | 128 | variables. |
Brian Tierney | 55ace3e | 2013-11-10 09:37:10 -0800 | [diff] [blame] | 129 | |
Bruce A. Mah | 396ccaf | 2014-02-28 13:44:12 -0800 | [diff] [blame] | 130 | Known Issues |
| 131 | ------------ |
Brian Tierney | 849fc85 | 2013-12-18 15:23:16 -0800 | [diff] [blame] | 132 | |
Bruce A. Mah | 0dafb3b | 2017-02-24 15:55:45 -0800 | [diff] [blame] | 133 | A set of known issues is maintained on the iperf3 Web pages: |
Brian Tierney | 849fc85 | 2013-12-18 15:23:16 -0800 | [diff] [blame] | 134 | |
Bruce A. Mah | 964f106 | 2018-06-22 14:09:01 -0700 | [diff] [blame] | 135 | https://software.es.net/iperf/dev.html#known-issues |
Bruce A. Mah | ccec14e | 2015-11-18 10:26:05 -0800 | [diff] [blame] | 136 | |
Bruce A. Mah | aea943c | 2014-08-26 14:31:23 -0700 | [diff] [blame] | 137 | Links |
| 138 | ----- |
| 139 | |
| 140 | This section lists links to user-contributed Web pages regarding |
| 141 | iperf3. ESnet and Lawrence Berkeley National Laboratory bear no |
| 142 | responsibility for the content of these pages. |
| 143 | |
| 144 | * Installation instructions for Debian Linux (by Cameron Camp |
| 145 | <cameron@ivdatacenter.com>): |
| 146 | |
| 147 | http://cheatsheet.logicalwebhost.com/iperf-network-testing/ |
Bruce A. Mah | da9f046 | 2014-09-29 14:00:46 -0700 | [diff] [blame] | 148 | |
| 149 | Copyright |
| 150 | --------- |
| 151 | |
Joe Karlsson | 2782d2a | 2020-02-21 17:08:23 -0500 | [diff] [blame] | 152 | iperf, Copyright (c) 2014-2020, The Regents of the University of |
Bruce A. Mah | da9f046 | 2014-09-29 14:00:46 -0700 | [diff] [blame] | 153 | California, through Lawrence Berkeley National Laboratory (subject |
| 154 | to receipt of any required approvals from the U.S. Dept. of |
| 155 | Energy). All rights reserved. |
| 156 | |
| 157 | If you have questions about your rights to use or distribute this |
| 158 | software, please contact Berkeley Lab's Technology Transfer |
| 159 | Department at TTD@lbl.gov. |
| 160 | |
| 161 | NOTICE. This software is owned by the U.S. Department of Energy. |
| 162 | As such, the U.S. Government has been granted for itself and others |
| 163 | acting on its behalf a paid-up, nonexclusive, irrevocable, |
| 164 | worldwide license in the Software to reproduce, prepare derivative |
| 165 | works, and perform publicly and display publicly. Beginning five |
| 166 | (5) years after the date permission to assert copyright is obtained |
| 167 | from the U.S. Department of Energy, and subject to any subsequent |
| 168 | five (5) year renewals, the U.S. Government is granted for itself |
| 169 | and others acting on its behalf a paid-up, nonexclusive, |
| 170 | irrevocable, worldwide license in the Software to reproduce, |
| 171 | prepare derivative works, distribute copies to the public, perform |
| 172 | publicly and display publicly, and to permit others to do so. |
| 173 | |
| 174 | This code is distributed under a BSD style license, see the LICENSE |
| 175 | file for complete information. |