xref: /aosp_15_r20/external/iperf3/README.md (revision 7ab6e6ace082586527a400463bc693a412a40341)
1*7ab6e6acSAndroid Build Coastguard Workeriperf3:  A TCP, UDP, and SCTP network bandwidth measurement tool
2*7ab6e6acSAndroid Build Coastguard Worker================================================================
3*7ab6e6acSAndroid Build Coastguard Worker
4*7ab6e6acSAndroid Build Coastguard WorkerSummary
5*7ab6e6acSAndroid Build Coastguard Worker-------
6*7ab6e6acSAndroid Build Coastguard Worker
7*7ab6e6acSAndroid Build Coastguard Workeriperf is a tool for active measurements of the maximum achievable
8*7ab6e6acSAndroid Build Coastguard Workerbandwidth on IP networks.  It supports tuning of various parameters
9*7ab6e6acSAndroid Build Coastguard Workerrelated to timing, protocols, and buffers.  For each test it reports
10*7ab6e6acSAndroid Build Coastguard Workerthe measured throughput / bitrate, loss, and other parameters.
11*7ab6e6acSAndroid Build Coastguard Worker
12*7ab6e6acSAndroid Build Coastguard WorkerThis version, sometimes referred to as iperf3, is a redesign of an
13*7ab6e6acSAndroid Build Coastguard Workeroriginal version developed at NLANR/DAST.  iperf3 is a new
14*7ab6e6acSAndroid Build Coastguard Workerimplementation from scratch, with the goal of a smaller, simpler code
15*7ab6e6acSAndroid Build Coastguard Workerbase, and a library version of the functionality that can be used in
16*7ab6e6acSAndroid Build Coastguard Workerother programs. iperf3 also has a number of features found in other tools
17*7ab6e6acSAndroid Build Coastguard Workersuch as nuttcp and netperf, but were missing from the original iperf.
18*7ab6e6acSAndroid Build Coastguard WorkerThese include, for example, a zero-copy mode and optional JSON output.
19*7ab6e6acSAndroid Build Coastguard WorkerNote that iperf3 is *not* backwards compatible with the original iperf.
20*7ab6e6acSAndroid Build Coastguard Worker
21*7ab6e6acSAndroid Build Coastguard WorkerPrimary development for iperf3 takes place on CentOS Linux, FreeBSD,
22*7ab6e6acSAndroid Build Coastguard Workerand macOS.  At this time, these are the only officially supported
23*7ab6e6acSAndroid Build Coastguard Workerplatforms, however there have been some reports of success with
24*7ab6e6acSAndroid Build Coastguard WorkerOpenBSD, NetBSD, Android, Solaris, and other Linux distributions.
25*7ab6e6acSAndroid Build Coastguard Worker
26*7ab6e6acSAndroid Build Coastguard Workeriperf3 is principally developed by ESnet / Lawrence Berkeley National
27*7ab6e6acSAndroid Build Coastguard WorkerLaboratory.  It is released under a three-clause BSD license.
28*7ab6e6acSAndroid Build Coastguard Worker
29*7ab6e6acSAndroid Build Coastguard WorkerFor more information see: https://software.es.net/iperf
30*7ab6e6acSAndroid Build Coastguard Worker
31*7ab6e6acSAndroid Build Coastguard WorkerSource code and issue tracker: https://github.com/esnet/iperf
32*7ab6e6acSAndroid Build Coastguard Worker
33*7ab6e6acSAndroid Build Coastguard WorkerObtaining iperf3
34*7ab6e6acSAndroid Build Coastguard Worker----------------
35*7ab6e6acSAndroid Build Coastguard Worker
36*7ab6e6acSAndroid Build Coastguard WorkerDownloads of iperf3 are available at:
37*7ab6e6acSAndroid Build Coastguard Worker
38*7ab6e6acSAndroid Build Coastguard Worker    https://downloads.es.net/pub/iperf/
39*7ab6e6acSAndroid Build Coastguard Worker
40*7ab6e6acSAndroid Build Coastguard WorkerTo check out the most recent code, clone the git repository at:
41*7ab6e6acSAndroid Build Coastguard Worker
42*7ab6e6acSAndroid Build Coastguard Worker    https://github.com/esnet/iperf.git
43*7ab6e6acSAndroid Build Coastguard Worker
44*7ab6e6acSAndroid Build Coastguard WorkerBuilding iperf3
45*7ab6e6acSAndroid Build Coastguard Worker---------------
46*7ab6e6acSAndroid Build Coastguard Worker
47*7ab6e6acSAndroid Build Coastguard Worker### Prerequisites: ###
48*7ab6e6acSAndroid Build Coastguard Worker
49*7ab6e6acSAndroid Build Coastguard WorkerNone.
50*7ab6e6acSAndroid Build Coastguard Worker
51*7ab6e6acSAndroid Build Coastguard Worker### Building ###
52*7ab6e6acSAndroid Build Coastguard Worker
53*7ab6e6acSAndroid Build Coastguard Worker    ./configure; make; make install
54*7ab6e6acSAndroid Build Coastguard Worker
55*7ab6e6acSAndroid Build Coastguard Worker(Note: If configure fails, try running `./bootstrap.sh` first)
56*7ab6e6acSAndroid Build Coastguard Worker
57*7ab6e6acSAndroid Build Coastguard WorkerInvoking iperf3
58*7ab6e6acSAndroid Build Coastguard Worker---------------
59*7ab6e6acSAndroid Build Coastguard Worker
60*7ab6e6acSAndroid Build Coastguard Workeriperf3 includes a manual page listing all of the command-line options.
61*7ab6e6acSAndroid Build Coastguard WorkerThe manual page is the most up-to-date reference to the various flags and parameters.
62*7ab6e6acSAndroid Build Coastguard Worker
63*7ab6e6acSAndroid Build Coastguard WorkerFor sample command line usage, see:
64*7ab6e6acSAndroid Build Coastguard Worker
65*7ab6e6acSAndroid Build Coastguard Workerhttps://fasterdata.es.net/performance-testing/network-troubleshooting-tools/iperf/
66*7ab6e6acSAndroid Build Coastguard Worker
67*7ab6e6acSAndroid Build Coastguard WorkerUsing the default options, iperf is meant to show typical well
68*7ab6e6acSAndroid Build Coastguard Workerdesigned application performance.  "Typical well designed application"
69*7ab6e6acSAndroid Build Coastguard Workermeans avoiding artificial enhancements that work only for testing
70*7ab6e6acSAndroid Build Coastguard Worker(such as splice()'ing the data to /dev/null).  iperf does also have
71*7ab6e6acSAndroid Build Coastguard Workerflags for "extreme best case" optimizations, but they must be
72*7ab6e6acSAndroid Build Coastguard Workerexplicitly activated.
73*7ab6e6acSAndroid Build Coastguard Worker
74*7ab6e6acSAndroid Build Coastguard WorkerThese flags include:
75*7ab6e6acSAndroid Build Coastguard Worker
76*7ab6e6acSAndroid Build Coastguard Worker    -Z, --zerocopy            use a 'zero copy' sendfile() method of sending data
77*7ab6e6acSAndroid Build Coastguard Worker    -A, --affinity n/n,m      set CPU affinity
78*7ab6e6acSAndroid Build Coastguard Worker
79*7ab6e6acSAndroid Build Coastguard WorkerBug Reports
80*7ab6e6acSAndroid Build Coastguard Worker-----------
81*7ab6e6acSAndroid Build Coastguard Worker
82*7ab6e6acSAndroid Build Coastguard WorkerBefore submitting a bug report, please make sure you're running the
83*7ab6e6acSAndroid Build Coastguard Workerlatest version of the code, and confirm that your issue has not
84*7ab6e6acSAndroid Build Coastguard Workeralready been fixed.  Then submit to the iperf3 issue tracker on
85*7ab6e6acSAndroid Build Coastguard WorkerGitHub:
86*7ab6e6acSAndroid Build Coastguard Worker
87*7ab6e6acSAndroid Build Coastguard Workerhttps://github.com/esnet/iperf/issues
88*7ab6e6acSAndroid Build Coastguard Worker
89*7ab6e6acSAndroid Build Coastguard WorkerIn your issue submission, please indicate the version of iperf3 and
90*7ab6e6acSAndroid Build Coastguard Workerwhat platform you're trying to run on (provide the platform
91*7ab6e6acSAndroid Build Coastguard Workerinformation even if you're not using a supported platform, we
92*7ab6e6acSAndroid Build Coastguard Worker*might* be able to help anyway).  Exact command-line arguments will
93*7ab6e6acSAndroid Build Coastguard Workerhelp us recreate your problem.  If you're getting error messages,
94*7ab6e6acSAndroid Build Coastguard Workerplease include them verbatim if possible, but remember to sanitize any
95*7ab6e6acSAndroid Build Coastguard Workersensitive information.
96*7ab6e6acSAndroid Build Coastguard Worker
97*7ab6e6acSAndroid Build Coastguard WorkerIf you have a question about usage or about the code, please do *not*
98*7ab6e6acSAndroid Build Coastguard Workersubmit an issue.  Please use one of the mailing lists for that.
99*7ab6e6acSAndroid Build Coastguard Worker
100*7ab6e6acSAndroid Build Coastguard WorkerRelation to iperf 2.x
101*7ab6e6acSAndroid Build Coastguard Worker---------------------
102*7ab6e6acSAndroid Build Coastguard Worker
103*7ab6e6acSAndroid Build Coastguard WorkerNote that iperf2 is no longer being developed by its original
104*7ab6e6acSAndroid Build Coastguard Workermaintainers.  However, beginning in 2014, another developer began
105*7ab6e6acSAndroid Build Coastguard Workerfixing bugs and enhancing functionality, and generating releases of
106*7ab6e6acSAndroid Build Coastguard Workeriperf2.  Both projects (as of late 2017) are currently being developed
107*7ab6e6acSAndroid Build Coastguard Workeractively, but independently.  The continuing iperf2 development
108*7ab6e6acSAndroid Build Coastguard Workerproject can be found at https://sourceforge.net/projects/iperf2/.
109*7ab6e6acSAndroid Build Coastguard Worker
110*7ab6e6acSAndroid Build Coastguard Workeriperf3 contains a number of options and functions not present in
111*7ab6e6acSAndroid Build Coastguard Workeriperf2.  In addition, some flags are changed from their iperf2
112*7ab6e6acSAndroid Build Coastguard Workercounterparts:
113*7ab6e6acSAndroid Build Coastguard Worker
114*7ab6e6acSAndroid Build Coastguard Worker    -C, --linux-congestion    set congestion control algorithm (Linux only)
115*7ab6e6acSAndroid Build Coastguard Worker                              (-Z in iperf2)
116*7ab6e6acSAndroid Build Coastguard Worker    --bidir                   bidirectional testing mode
117*7ab6e6acSAndroid Build Coastguard Worker                              (-d in iperf2)
118*7ab6e6acSAndroid Build Coastguard Worker
119*7ab6e6acSAndroid Build Coastguard WorkerSome iperf2 options are not available in iperf3:
120*7ab6e6acSAndroid Build Coastguard Worker
121*7ab6e6acSAndroid Build Coastguard Worker    -r, --tradeoff           Do a bidirectional test individually
122*7ab6e6acSAndroid Build Coastguard Worker    -T, --ttl                time-to-live, for multicast (default 1)
123*7ab6e6acSAndroid Build Coastguard Worker    -x, --reportexclude [CDMSV]   exclude C(connection) D(data) M(multicast)
124*7ab6e6acSAndroid Build Coastguard Worker                                  S(settings) V(server) reports
125*7ab6e6acSAndroid Build Coastguard Worker    -y, --reportstyle C      report as a Comma-Separated Values
126*7ab6e6acSAndroid Build Coastguard Worker
127*7ab6e6acSAndroid Build Coastguard WorkerAlso removed is the ability to set the options via environment
128*7ab6e6acSAndroid Build Coastguard Workervariables.
129*7ab6e6acSAndroid Build Coastguard Worker
130*7ab6e6acSAndroid Build Coastguard WorkerKnown Issues
131*7ab6e6acSAndroid Build Coastguard Worker------------
132*7ab6e6acSAndroid Build Coastguard Worker
133*7ab6e6acSAndroid Build Coastguard WorkerA set of known issues is maintained on the iperf3 Web pages:
134*7ab6e6acSAndroid Build Coastguard Worker
135*7ab6e6acSAndroid Build Coastguard Workerhttps://software.es.net/iperf/dev.html#known-issues
136*7ab6e6acSAndroid Build Coastguard Worker
137*7ab6e6acSAndroid Build Coastguard WorkerLinks
138*7ab6e6acSAndroid Build Coastguard Worker-----
139*7ab6e6acSAndroid Build Coastguard Worker
140*7ab6e6acSAndroid Build Coastguard WorkerThis section lists links to user-contributed Web pages regarding
141*7ab6e6acSAndroid Build Coastguard Workeriperf3.  ESnet and Lawrence Berkeley National Laboratory bear no
142*7ab6e6acSAndroid Build Coastguard Workerresponsibility for the content of these pages.
143*7ab6e6acSAndroid Build Coastguard Worker
144*7ab6e6acSAndroid Build Coastguard Worker* Installation instructions for Debian Linux (by Cameron Camp
145*7ab6e6acSAndroid Build Coastguard Worker  <[email protected]>):
146*7ab6e6acSAndroid Build Coastguard Worker
147*7ab6e6acSAndroid Build Coastguard Worker  http://cheatsheet.logicalwebhost.com/iperf-network-testing/
148*7ab6e6acSAndroid Build Coastguard Worker
149*7ab6e6acSAndroid Build Coastguard WorkerCopyright
150*7ab6e6acSAndroid Build Coastguard Worker---------
151*7ab6e6acSAndroid Build Coastguard Worker
152*7ab6e6acSAndroid Build Coastguard Workeriperf, Copyright (c) 2014-2020, The Regents of the University of
153*7ab6e6acSAndroid Build Coastguard WorkerCalifornia, through Lawrence Berkeley National Laboratory (subject
154*7ab6e6acSAndroid Build Coastguard Workerto receipt of any required approvals from the U.S. Dept. of
155*7ab6e6acSAndroid Build Coastguard WorkerEnergy).  All rights reserved.
156*7ab6e6acSAndroid Build Coastguard Worker
157*7ab6e6acSAndroid Build Coastguard WorkerIf you have questions about your rights to use or distribute this
158*7ab6e6acSAndroid Build Coastguard Workersoftware, please contact Berkeley Lab's Technology Transfer
159*7ab6e6acSAndroid Build Coastguard WorkerDepartment at [email protected].
160*7ab6e6acSAndroid Build Coastguard Worker
161*7ab6e6acSAndroid Build Coastguard WorkerNOTICE.  This software is owned by the U.S. Department of Energy.
162*7ab6e6acSAndroid Build Coastguard WorkerAs such, the U.S. Government has been granted for itself and others
163*7ab6e6acSAndroid Build Coastguard Workeracting on its behalf a paid-up, nonexclusive, irrevocable,
164*7ab6e6acSAndroid Build Coastguard Workerworldwide license in the Software to reproduce, prepare derivative
165*7ab6e6acSAndroid Build Coastguard Workerworks, and perform publicly and display publicly.  Beginning five
166*7ab6e6acSAndroid Build Coastguard Worker(5) years after the date permission to assert copyright is obtained
167*7ab6e6acSAndroid Build Coastguard Workerfrom the U.S. Department of Energy, and subject to any subsequent
168*7ab6e6acSAndroid Build Coastguard Workerfive (5) year renewals, the U.S. Government is granted for itself
169*7ab6e6acSAndroid Build Coastguard Workerand others acting on its behalf a paid-up, nonexclusive,
170*7ab6e6acSAndroid Build Coastguard Workerirrevocable, worldwide license in the Software to reproduce,
171*7ab6e6acSAndroid Build Coastguard Workerprepare derivative works, distribute copies to the public, perform
172*7ab6e6acSAndroid Build Coastguard Workerpublicly and display publicly, and to permit others to do so.
173*7ab6e6acSAndroid Build Coastguard Worker
174*7ab6e6acSAndroid Build Coastguard WorkerThis code is distributed under a BSD style license, see the LICENSE
175*7ab6e6acSAndroid Build Coastguard Workerfile for complete information.
176