xref: /iperf/README.md (revision 76bd67f6)
10f72a120SBruce A. Mahiperf3:  A TCP, UDP, and SCTP network bandwidth measurement tool
20f72a120SBruce A. Mah================================================================
30f72a120SBruce A. Mah
40f72a120SBruce A. MahSummary
50f72a120SBruce A. Mah-------
60f72a120SBruce A. Mah
70f72a120SBruce A. Mahiperf is a tool for active measurements of the maximum achievable
80f72a120SBruce A. Mahbandwidth on IP networks.  It supports tuning of various parameters
90f72a120SBruce A. Mahrelated to timing, protocols, and buffers.  For each test it reports
100f081b7bSBruce A. Mahthe measured throughput / bitrate, loss, and other parameters.
110f72a120SBruce A. Mah
120f72a120SBruce A. MahThis version, sometimes referred to as iperf3, is a redesign of an
130f72a120SBruce A. Mahoriginal version developed at NLANR/DAST.  iperf3 is a new
140f72a120SBruce A. Mahimplementation from scratch, with the goal of a smaller, simpler code
150f72a120SBruce A. Mahbase, and a library version of the functionality that can be used in
1659a11c62SBruce A. Mahother programs. iperf3 also has a number of features found in other tools
170f72a120SBruce A. Mahsuch as nuttcp and netperf, but were missing from the original iperf.
182be606a5SBruce A. MahThese include, for example, a zero-copy mode and optional JSON output.
19fbd89512SBruce A. MahNote that iperf3 is *not* backwards compatible with the original iperf.
200f72a120SBruce A. Mah
210f72a120SBruce A. MahPrimary development for iperf3 takes place on CentOS Linux, FreeBSD,
2235f1fbf5SBruce A. Mahand macOS.  At this time, these are the only officially supported
230f72a120SBruce A. Mahplatforms, however there have been some reports of success with
24e83fe5a5SBruce A. MahOpenBSD, NetBSD, Android, Solaris, and other Linux distributions.
250f72a120SBruce A. Mah
26aea943c3SBruce A. Mahiperf3 is principally developed by ESnet / Lawrence Berkeley National
272be606a5SBruce A. MahLaboratory.  It is released under a three-clause BSD license.
280f72a120SBruce A. Mah
29964f106aSBruce A. MahFor more information see: https://software.es.net/iperf
3043181633SBruce A. Mah
3143181633SBruce A. MahSource code and issue tracker: https://github.com/esnet/iperf
320f72a120SBruce A. Mah
336ff9667aSBruce A. MahDiscussion forums: https://github.com/esnet/iperf/discussions
346ff9667aSBruce A. Mah
350f72a120SBruce A. MahObtaining iperf3
360f72a120SBruce A. Mah----------------
370f72a120SBruce A. Mah
380f72a120SBruce A. MahDownloads of iperf3 are available at:
390f72a120SBruce A. Mah
40964f106aSBruce A. Mah    https://downloads.es.net/pub/iperf/
410f72a120SBruce A. Mah
42e83fe5a5SBruce A. MahTo check out the most recent code, clone the git repository at:
430f72a120SBruce A. Mah
44e83fe5a5SBruce A. Mah    https://github.com/esnet/iperf.git
450f72a120SBruce A. Mah
460f72a120SBruce A. MahBuilding iperf3
470f72a120SBruce A. Mah---------------
480f72a120SBruce A. Mah
490f72a120SBruce A. Mah### Prerequisites: ###
506b363d29SBruce A. Mah
516b363d29SBruce A. MahNone.
520f72a120SBruce A. Mah
530f72a120SBruce A. Mah### Building ###
540f72a120SBruce A. Mah
550f72a120SBruce A. Mah    ./configure; make; make install
560f72a120SBruce A. Mah
572be606a5SBruce A. Mah(Note: If configure fails, try running `./bootstrap.sh` first)
580f72a120SBruce A. Mah
590f72a120SBruce A. MahInvoking iperf3
600f72a120SBruce A. Mah---------------
610f72a120SBruce A. Mah
620f72a120SBruce A. Mahiperf3 includes a manual page listing all of the command-line options.
630f72a120SBruce A. MahThe manual page is the most up-to-date reference to the various flags and parameters.
640f72a120SBruce A. Mah
650f72a120SBruce A. MahFor sample command line usage, see:
660f72a120SBruce A. Mah
67d2dcd876SWes Garrisonhttps://fasterdata.es.net/performance-testing/network-troubleshooting-tools/iperf/
680f72a120SBruce A. Mah
690f72a120SBruce A. MahUsing the default options, iperf is meant to show typical well
7035f1fbf5SBruce A. Mahdesigned application performance.  "Typical well designed application"
710f72a120SBruce A. Mahmeans avoiding artificial enhancements that work only for testing
720f72a120SBruce A. Mah(such as splice()'ing the data to /dev/null).  iperf does also have
7335f1fbf5SBruce A. Mahflags for "extreme best case" optimizations, but they must be
740f72a120SBruce A. Mahexplicitly activated.
750f72a120SBruce A. Mah
760f72a120SBruce A. MahThese flags include:
773f5f7f75SBruce A. Mah
780f72a120SBruce A. Mah    -Z, --zerocopy            use a 'zero copy' sendfile() method of sending data
790f72a120SBruce A. Mah    -A, --affinity n/n,m      set CPU affinity
800f72a120SBruce A. Mah
810f72a120SBruce A. MahBug Reports
820f72a120SBruce A. Mah-----------
830f72a120SBruce A. Mah
84fbd89512SBruce A. MahBefore submitting a bug report, please make sure you're running the
85fbd89512SBruce A. Mahlatest version of the code, and confirm that your issue has not
86fbd89512SBruce A. Mahalready been fixed.  Then submit to the iperf3 issue tracker on
87fbd89512SBruce A. MahGitHub:
88fbd89512SBruce A. Mah
890f72a120SBruce A. Mahhttps://github.com/esnet/iperf/issues
900f72a120SBruce A. Mah
91fbd89512SBruce A. MahIn your issue submission, please indicate the version of iperf3 and
92fbd89512SBruce A. Mahwhat platform you're trying to run on (provide the platform
93fbd89512SBruce A. Mahinformation even if you're not using a supported platform, we
94fbd89512SBruce A. Mah*might* be able to help anyway).  Exact command-line arguments will
95fbd89512SBruce A. Mahhelp us recreate your problem.  If you're getting error messages,
96fbd89512SBruce A. Mahplease include them verbatim if possible, but remember to sanitize any
97fbd89512SBruce A. Mahsensitive information.
98fbd89512SBruce A. Mah
99fbd89512SBruce A. MahIf you have a question about usage or about the code, please do *not*
100fbd89512SBruce A. Mahsubmit an issue.  Please use one of the mailing lists for that.
101fbd89512SBruce A. Mah
102f95924ddSBruce A. MahRelation to iperf 2.x
103f95924ddSBruce A. Mah---------------------
1040f72a120SBruce A. Mah
105709f552cSRich BrownAlthough iperf2 and iperf3 both measure network performance,
106709f552cSRich Brownthey are not compatible with each other.
107709f552cSRich BrownThe projects (as of mid-2021) are in active, but separate, development.
108709f552cSRich BrownThe continuing iperf2 development
109f95924ddSBruce A. Mahproject can be found at https://sourceforge.net/projects/iperf2/.
1102800dfcaSBruce A. Mah
111f95924ddSBruce A. Mahiperf3 contains a number of options and functions not present in
112f95924ddSBruce A. Mahiperf2.  In addition, some flags are changed from their iperf2
113f95924ddSBruce A. Mahcounterparts:
1143f5f7f75SBruce A. Mah
1150f72a120SBruce A. Mah    -C, --linux-congestion    set congestion control algorithm (Linux only)
1163f5f7f75SBruce A. Mah                              (-Z in iperf2)
117dfcea9f6SBruce A. Mah    --bidir                   bidirectional testing mode
118dfcea9f6SBruce A. Mah                              (-d in iperf2)
1190f72a120SBruce A. Mah
120f95924ddSBruce A. MahSome iperf2 options are not available in iperf3:
1210f72a120SBruce A. Mah
1220f72a120SBruce A. Mah    -r, --tradeoff           Do a bidirectional test individually
1230f72a120SBruce A. Mah    -T, --ttl                time-to-live, for multicast (default 1)
1240f72a120SBruce A. Mah    -x, --reportexclude [CDMSV]   exclude C(connection) D(data) M(multicast)
1250f72a120SBruce A. Mah                                  S(settings) V(server) reports
1260f72a120SBruce A. Mah    -y, --reportstyle C      report as a Comma-Separated Values
1270f72a120SBruce A. Mah
128f95924ddSBruce A. MahAlso removed is the ability to set the options via environment
1290f72a120SBruce A. Mahvariables.
1300f72a120SBruce A. Mah
1310f72a120SBruce A. MahKnown Issues
1320f72a120SBruce A. Mah------------
1330f72a120SBruce A. Mah
1340dafb3b2SBruce A. MahA set of known issues is maintained on the iperf3 Web pages:
1350f72a120SBruce A. Mah
136964f106aSBruce A. Mahhttps://software.es.net/iperf/dev.html#known-issues
137ccec14ebSBruce A. Mah
138aea943c3SBruce A. MahLinks
139aea943c3SBruce A. Mah-----
140aea943c3SBruce A. Mah
141aea943c3SBruce A. MahThis section lists links to user-contributed Web pages regarding
142aea943c3SBruce A. Mahiperf3.  ESnet and Lawrence Berkeley National Laboratory bear no
143aea943c3SBruce A. Mahresponsibility for the content of these pages.
144aea943c3SBruce A. Mah
145aea943c3SBruce A. Mah* Installation instructions for Debian Linux (by Cameron Camp
146aea943c3SBruce A. Mah  <[email protected]>):
147aea943c3SBruce A. Mah
148aea943c3SBruce A. Mah  http://cheatsheet.logicalwebhost.com/iperf-network-testing/
149da9f046fSBruce A. Mah
150da9f046fSBruce A. MahCopyright
151da9f046fSBruce A. Mah---------
152da9f046fSBruce A. Mah
153*76bd67f6SSarah Larseniperf, Copyright (c) 2014-2022, The Regents of the University of
154da9f046fSBruce A. MahCalifornia, through Lawrence Berkeley National Laboratory (subject
155da9f046fSBruce A. Mahto receipt of any required approvals from the U.S. Dept. of
156da9f046fSBruce A. MahEnergy).  All rights reserved.
157da9f046fSBruce A. Mah
158da9f046fSBruce A. MahIf you have questions about your rights to use or distribute this
159da9f046fSBruce A. Mahsoftware, please contact Berkeley Lab's Technology Transfer
160da9f046fSBruce A. MahDepartment at [email protected].
161da9f046fSBruce A. Mah
162da9f046fSBruce A. MahNOTICE.  This software is owned by the U.S. Department of Energy.
163da9f046fSBruce A. MahAs such, the U.S. Government has been granted for itself and others
164da9f046fSBruce A. Mahacting on its behalf a paid-up, nonexclusive, irrevocable,
165da9f046fSBruce A. Mahworldwide license in the Software to reproduce, prepare derivative
166da9f046fSBruce A. Mahworks, and perform publicly and display publicly.  Beginning five
167da9f046fSBruce A. Mah(5) years after the date permission to assert copyright is obtained
168da9f046fSBruce A. Mahfrom the U.S. Department of Energy, and subject to any subsequent
169da9f046fSBruce A. Mahfive (5) year renewals, the U.S. Government is granted for itself
170da9f046fSBruce A. Mahand others acting on its behalf a paid-up, nonexclusive,
171da9f046fSBruce A. Mahirrevocable, worldwide license in the Software to reproduce,
172da9f046fSBruce A. Mahprepare derivative works, distribute copies to the public, perform
173da9f046fSBruce A. Mahpublicly and display publicly, and to permit others to do so.
174da9f046fSBruce A. Mah
175da9f046fSBruce A. MahThis code is distributed under a BSD style license, see the LICENSE
176da9f046fSBruce A. Mahfile for complete information.
177