version 1.1, 2016/10/18 13:28:17
|
version 1.1.1.3, 2023/09/27 11:14:54
|
Line 7 Summary
|
Line 7 Summary
|
iperf is a tool for active measurements of the maximum achievable |
iperf is a tool for active measurements of the maximum achievable |
bandwidth on IP networks. It supports tuning of various parameters |
bandwidth on IP networks. It supports tuning of various parameters |
related to timing, protocols, and buffers. For each test it reports |
related to timing, protocols, and buffers. For each test it reports |
the bandwidth, loss, and other parameters. | the measured throughput / bitrate, loss, and other parameters. |
|
|
This version, sometimes referred to as iperf3, is a redesign of an |
This version, sometimes referred to as iperf3, is a redesign of an |
original version developed at NLANR/DAST. iperf3 is a new |
original version developed at NLANR/DAST. iperf3 is a new |
implementation from scratch, with the goal of a smaller, simpler code |
implementation from scratch, with the goal of a smaller, simpler code |
base, and a library version of the functionality that can be used in |
base, and a library version of the functionality that can be used in |
other programs. iperf3 also a number of features found in other tools | other programs. iperf3 also has a number of features found in other tools |
such as nuttcp and netperf, but were missing from the original iperf. |
such as nuttcp and netperf, but were missing from the original iperf. |
These include, for example, a zero-copy mode and optional JSON output. |
These include, for example, a zero-copy mode and optional JSON output. |
Note that iperf3 is *not* backwards compatible with the original iperf. |
Note that iperf3 is *not* backwards compatible with the original iperf. |
|
|
Primary development for iperf3 takes place on CentOS Linux, FreeBSD, | Primary development for iperf3 takes place on Ubuntu Linux, FreeBSD, |
and MacOS X. At this time, these are the only officially supported | and macOS. At this time, these are the only officially supported |
platforms, however there have been some reports of success with |
platforms, however there have been some reports of success with |
OpenBSD, NetBSD, Android, Solaris, and other Linux distributions. |
OpenBSD, NetBSD, Android, Solaris, and other Linux distributions. |
|
|
iperf3 is principally developed by ESnet / Lawrence Berkeley National |
iperf3 is principally developed by ESnet / Lawrence Berkeley National |
Laboratory. It is released under a three-clause BSD license. |
Laboratory. It is released under a three-clause BSD license. |
|
|
Note that at this point, ESnet plans to support iperf3 in "maintenance | For more information see: https://software.es.net/iperf |
mode". At this point, there are no definite plans for further iperf3 | |
releases, and ESnet will be providing a very limited amount of | |
resources for support and development, going forward. However, ESnet | |
could issue new iperf3 releases to deal with security issues or | |
high-impact bug fixes. | |
|
|
For more information see: http://software.es.net/iperf |
|
|
|
Source code and issue tracker: https://github.com/esnet/iperf |
Source code and issue tracker: https://github.com/esnet/iperf |
|
|
|
Discussion forums: https://github.com/esnet/iperf/discussions |
|
|
Obtaining iperf3 |
Obtaining iperf3 |
---------------- |
---------------- |
|
|
Downloads of iperf3 are available at: |
Downloads of iperf3 are available at: |
|
|
http://downloads.es.net/pub/iperf/ | https://downloads.es.net/pub/iperf/ |
|
|
To check out the most recent code, clone the git repository at: |
To check out the most recent code, clone the git repository at: |
|
|
Line 67 Invoking iperf3
|
Line 62 Invoking iperf3
|
iperf3 includes a manual page listing all of the command-line options. |
iperf3 includes a manual page listing all of the command-line options. |
The manual page is the most up-to-date reference to the various flags and parameters. |
The manual page is the most up-to-date reference to the various flags and parameters. |
|
|
For sample command line usage, see: | For sample command line usage, see: |
|
|
http://fasterdata.es.net/performance-testing/network-troubleshooting-tools/iperf-and-iperf3/ | https://fasterdata.es.net/performance-testing/network-troubleshooting-tools/iperf/ |
|
|
Using the default options, iperf is meant to show typical well |
Using the default options, iperf is meant to show typical well |
designed application performance. 'Typical well designed application' | designed application performance. "Typical well designed application" |
means avoiding artificial enhancements that work only for testing |
means avoiding artificial enhancements that work only for testing |
(such as splice()'ing the data to /dev/null). iperf does also have |
(such as splice()'ing the data to /dev/null). iperf does also have |
flags for 'extreme best case' optimizations but they must be | flags for "extreme best case" optimizations, but they must be |
explicitly activated. |
explicitly activated. |
|
|
These flags include: |
These flags include: |
Line 83 These flags include:
|
Line 78 These flags include:
|
-Z, --zerocopy use a 'zero copy' sendfile() method of sending data |
-Z, --zerocopy use a 'zero copy' sendfile() method of sending data |
-A, --affinity n/n,m set CPU affinity |
-A, --affinity n/n,m set CPU affinity |
|
|
Bug Reports | Bug and Security Reports |
----------- | ------------------------ |
|
|
Before submitting a bug report, please make sure you're running the |
Before submitting a bug report, please make sure you're running the |
latest version of the code, and confirm that your issue has not |
latest version of the code, and confirm that your issue has not |
Line 104 sensitive information.
|
Line 99 sensitive information.
|
If you have a question about usage or about the code, please do *not* |
If you have a question about usage or about the code, please do *not* |
submit an issue. Please use one of the mailing lists for that. |
submit an issue. Please use one of the mailing lists for that. |
|
|
Changes from iperf 2.x | If you suspect there is a potential security issue, please contact the |
---------------------- | developers at: |
|
|
New options: | iperf@es.net |
|
|
-V, --verbose more detailed output than before | Relation to iperf 2.x |
-J, --json output in JSON format | --------------------- |
-Z, --zerocopy use a 'zero copy' sendfile() method of sending data | |
-O, --omit N omit the first n seconds (to ignore slowstart) | |
-T, --title str prefix every output line with this string | |
-F, --file name xmit/recv the specified file | |
-A, --affinity n/n,m set CPU affinity (Linux and FreeBSD only) | |
-k, --blockcount #[KMG] number of blocks (packets) to transmit (instead | |
of -t or -n) | |
-L, --flowlabel set IPv6 flow label (Linux only) | |
|
|
Changed flags: | Although iperf2 and iperf3 both measure network performance, |
| they are not compatible with each other. |
| The projects (as of mid-2021) are in active, but separate, development. |
| The continuing iperf2 development |
| project can be found at https://sourceforge.net/projects/iperf2/. |
|
|
|
iperf3 contains a number of options and functions not present in |
|
iperf2. In addition, some flags are changed from their iperf2 |
|
counterparts: |
|
|
-C, --linux-congestion set congestion control algorithm (Linux only) |
-C, --linux-congestion set congestion control algorithm (Linux only) |
(-Z in iperf2) |
(-Z in iperf2) |
|
--bidir bidirectional testing mode |
|
(-d in iperf2) |
|
|
|
Some iperf2 options are not available in iperf3: |
|
|
Deprecated options: |
|
|
|
Not planning to support these iperf2 flags. If you really miss these |
|
options, please submit a request in the issue tracker: |
|
|
|
-d, --dualtest Do a bidirectional test simultaneously |
|
-r, --tradeoff Do a bidirectional test individually |
-r, --tradeoff Do a bidirectional test individually |
-T, --ttl time-to-live, for multicast (default 1) |
-T, --ttl time-to-live, for multicast (default 1) |
-x, --reportexclude [CDMSV] exclude C(connection) D(data) M(multicast) | -x, --reportexclude [CDMSV] exclude C(connection) D(data) M(multicast) |
S(settings) V(server) reports |
S(settings) V(server) reports |
-y, --reportstyle C report as a Comma-Separated Values |
-y, --reportstyle C report as a Comma-Separated Values |
|
|
Also deprecated is the ability to set the options via environment | Also removed is the ability to set the options via environment |
variables. |
variables. |
|
|
Known Issues |
Known Issues |
------------ |
------------ |
|
|
* UDP performance: Some problems have been noticed with iperf3 on the | A set of known issues is maintained on the iperf3 Web pages: |
ESnet 100G testbed at high UDP rates (above 10Gbps). The symptom is | |
that on any particular run of iperf3 the receiver reports a loss rate | |
of about 20%, regardless of the -b option used on the client side. | |
This problem appears not to be iperf3-specific, and may be due to the | |
placement of the iperf3 process on a CPU and its relation to the | |
inbound NIC. In some cases this problem can be mitigated by an | |
appropriate use of the CPU affinity (-A) option. (Issue #55) | |
|
|
* The -Z flag sometimes causes the iperf3 client to hang on OSX. | https://software.es.net/iperf/dev.html#known-issues |
(Issue #129) | |
|
|
* When specifying the socket buffer size using the "-w" flag on Linux, Linux |
|
doubles the value you pass in. (You can see this using iperf3's debug flag). |
|
But then the CWND does not actually ramp up to the doubled value, but only |
|
to about 75% of the doubled value. This appears to be by design. |
|
|
|
* Although the "-w" flag is documented as setting the (TCP) window |
|
size, it is also used to set the socket buffer size. This has been |
|
shown to be helpful with high-bitrate UDP tests. |
|
|
|
* On some platforms, it might be necessary to invoke "ldconfig" |
|
manually after doing a "make install" before the iperf3 executable can |
|
find its shared library. (Issue #153) |
|
|
|
* The results printed on the server side at the end of a test do not |
|
correctly reflect the client-side measurements. This is due to the |
|
ordering of computing and transferring results between the client |
|
and server. (Issue #293) |
|
|
|
* The server could have a very short measurement reporting interval at |
|
the end of a test (particularly a UDP test), containing few or no |
|
packets. This issue is due to an artifact of timing between the |
|
client and server. (Issue #278) |
|
|
|
Links |
Links |
----- |
----- |
|
|
Line 194 responsibility for the content of these pages.
|
Line 155 responsibility for the content of these pages.
|
Copyright |
Copyright |
--------- |
--------- |
|
|
iperf, Copyright (c) 2014-2016, The Regents of the University of | iperf, Copyright (c) 2014-2023, The Regents of the University of |
California, through Lawrence Berkeley National Laboratory (subject |
California, through Lawrence Berkeley National Laboratory (subject |
to receipt of any required approvals from the U.S. Dept. of |
to receipt of any required approvals from the U.S. Dept. of |
Energy). All rights reserved. |
Energy). All rights reserved. |