• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1.. _faq:
2
3iperf3 FAQ
4==========
5
6What is the history of iperf3, and what is the difference between iperf2 and iperf3?
7  iperf2 was orphaned in the late 2000s at version 2.0.5, despite some
8  known bugs and issues. After spending some time trying to fix
9  iperf2's problems, ESnet decided by 2010 that a new, simpler tool
10  was needed, and began development of iperf3. The goal was make the
11  tool as simple as possible, so others could contribute to the code
12  base. For this reason, it was decided to make the tool single
13  threaded, and not worry about backwards compatibility with
14  iperf2. Many of the feature requests for iperf3 came from the
15  perfSONAR project (http://www.perfsonar.net).
16
17  Then in 2014, Bob (Robert) McMahon from Broadcom restarted
18  development of iperf2 (See
19  https://sourceforge.net/projects/iperf2/). He fixed many of the
20  problems with iperf2, and added a number of new features similar to
21  iperf3. iperf2.0.8, released in 2015, made iperf2 a useful tool. iperf2's
22  current development is focused is on using UDP for latency testing, as well
23  as broad platform support.
24
25  As of this writing (2017), both iperf2 and iperf3 are being actively
26  (although independently) developed.  We recommend being familiar with
27  both tools, and use whichever tool’s features best match your needs.
28
29  A feature comparison of iperf2, iperf3, and nuttcp is available at:
30  https://fasterdata.es.net/performance-testing/network-troubleshooting-tools/throughput-tool-comparision/
31
32iperf3 parallel stream performance is much less than iperf2. Why?
33  iperf3 is single threaded, and iperf2 is multi-threaded. We
34  recommend using iperf2 for parallel streams.
35  If you want to use multiple iperf3 streams use the method described `here <https://fasterdata.es.net/performance-testing/network-troubleshooting-tools/iperf/multi-stream-iperf3/>`_.
36
37I’m trying to use iperf3 on Windows, but having trouble. What should I do?
38  iperf3 is not officially supported on Windows, but iperf2 is. We
39  recommend you use iperf2.
40
41  Some people are using Cygwin to run iperf3 in Windows, but not all
42  options will work.  Some community-provided binaries of iperf3 for
43  Windows exist.
44
45How can I build a statically-linked executable of iperf3?
46  There are a number of reasons for building an iperf3 executable with
47  no dependencies on any shared libraries.  Unfortunately this isn't
48  quite a straight-forward process.
49
50  The steps below have nominally been tested on CentOS 7.4, but
51  can probably be adapted for use with other Linux distributions:
52
53  #.  If necessary, install the static C libraries; for CentOS this is
54      the ``glibc-static`` package.
55
56  #.  If OpenSSL is installed, be sure that its static libraries are
57      also installed, from the ``openssl-static`` package.
58
59  #.  Be sure that ``lksctp-*`` packages are not installed, because
60      as of this writing, there do not appear to be any static
61      libraries available for SCTP.
62
63  #.  Configure iperf3 thusly: ``configure "LDFLAGS=--static"
64      --disable-shared`` These options are necessary to disable the
65      generation of shared libraries and link the executable
66      statically.
67
68  #.  Compile as normal.
69
70  It appears that for FreeBSD (tested on FreeBSD 11.1-RELEASE), only
71  the last two steps are needed to produce a static executable.
72
73How can I build on a system that doesn't support profiled executables?
74  This problem has been noted by users attempting to build iperf3 for
75  Android systems.  There are several workarounds. In order from least
76  effort to most effort:
77
78  #. Beginning with iperf-3.6, the ``--disable-profiling`` flag can be
79     passed to ``configure`` to disable the building of profiled
80     object files and the profiled executable.
81
82  #. At the time the linking of the iperf3 profiled executable fails,
83     the "normal" iperf3 executable is probably already created. So if
84     you are willing to accept the error exit from the make process
85     (and a little bit of wasted work on the build host), you might
86     not need to do anything.
87
88  #. After the configure step, there will be a definition in
89     ``src/Makefile`` that looks like this::
90
91       noinst_PROGRAMS = t_timer$(EXEEXT) t_units$(EXEEXT) t_uuid$(EXEEXT) \
92         iperf3_profile$(EXEEXT)
93
94     If you edit it to look like this, it will disable the build of the profiled iperf3::
95
96       noinst_PROGRAMS = t_timer$(EXEEXT) t_units$(EXEEXT) t_uuid$(EXEEXT)
97
98  #. Similar to item 2 above, but more permanent...if you edit
99     ``src/Makefile.am`` and change the line reading like this::
100
101       noinst_PROGRAMS         = t_timer t_units t_uuid iperf3_profile
102
103     To look like this::
104
105       noinst_PROGRAMS         = t_timer t_units t_uuid
106
107     And then run ``./bootstrap.sh``, that will regenerate the project
108     Makefiles to make the exclusion of the profiled iperf3 executable
109     permanant (within that source tree).
110
111I'm seeing quite a bit of unexpected UDP loss. Why?
112  First, confirm you are using iperf 3.1.5 or higher. There was an
113  issue with the default UDP send size that was fixed in
114  3.1.5. Second, try adding the flag ``-w2M`` to increase the socket
115  buffer sizes. That seems to make a big difference on some hosts.
116
117iperf3 UDP does not seem to work at bandwidths less than 100Kbps. Why?
118  You'll need to reduce the default packet length to get UDP rates of less that 100Kbps. Try ``-l100``.
119
120What congestion control algorithms are supported?
121  On Linux, run this command to see the available congestion control
122  algorithms (note that some algorithms are packaged as kernel
123  modules, which must be loaded before they can be used)::
124
125    /sbin/sysctl net.ipv4.tcp_available_congestion_control
126
127  On FreeBSD, the equivalent command is::
128
129    /sbin/sysctl net.inet.tcp.cc.available
130
131I’m using the ``--logfile`` option. How do I see file output in real time?
132  Use the ``--forceflush`` flag.
133
134I'm using the --fq-rate flag, but it does not seem to be working. Why?
135  You need to add 'net.core.default_qdisc = fq' to /etc/sysctl.conf for that option to work.
136
137I'm having trouble getting iperf3 to work on Windows, Android, etc. Where can I get help?
138  iperf3 only supports Linux, FreeBSD, and OSX. For other platforms we recommend using iperf2.
139
140I managed to get a Windows executable built, but why do I get a BSOD on Windows 7?
141  There seems to be a bug in Windows 7 where running iperf3 from a
142  network filesystem can cause a system crash (in other words Blue
143  Screen of Death, or BSOD).  This is a Windows bug addressed in kb2839149:
144
145  https://support.microsoft.com/en-us/help/2839149/stop-error-0x00000027-in-the-rdbss-sys-process-in-windows-7-or-windows
146
147  A hotfix is available under kb2732673:
148
149  https://support.microsoft.com/en-us/help/2732673/-delayed-write-failed-error-message-when--pst-files-are-stored-on-a-ne
150
151Why can’t I run a UDP client with no server?
152  This is potentially dangerous, and an attacker could use this for a
153  denial of service attack.  We don't want iperf3 to be an attack tool.
154
155I'm trying to use iperf3 to test a 40G/100G link...What do I need to know?
156  See the following pages on fasterdata.es.net:
157
158  - https://fasterdata.es.net/host-tuning/100g-tuning/
159  - https://fasterdata.es.net/performance-testing/network-troubleshooting-tools/iperf/multi-stream-iperf3/
160
161My receiver didn't get all the bytes that got sent but there was no loss.  Huh?
162  iperf3 uses a control connection between the client and server to
163  manage the start and end of each test.  Sometimes the commands on
164  the control connection can be received and acted upon before all of
165  the test data has been processed.  Thus the test ends with data
166  still in flight.  This effect can be significant for short (a few
167  seconds) tests, but is probably negligible for longer tests.
168
169A file sent using the ``-F`` option got corrupted...what happened?
170  The ``-F`` option to iperf3 is not a file transfer utility.  It's a
171  way of testing the end-to-end performance of a file transfer,
172  including filesystem and disk overheads.  So while the test will
173  mimic an actual file transfer, the data stored to disk may not be
174  the same as what was sent.  In particular, the file size will be
175  rounded up to the next larger multiple of the transfer block size,
176  and for UDP tests, iperf's metadata (containing timestamps and
177  sequence numbers) will overwrite the start of every UDP packet
178  payload.
179
180I have a question regarding iperf3...what's the best way to get help?
181  Searching on the Internet is a good first step.
182  http://stackoverflow.com/ has a number of iperf3-related questions
183  and answers, but a simple query into your favorite search engine can
184  also yield some results.
185
186  There is a mailing list nominally used for iperf3 development,
187  iperf-dev@googlegroups.com.
188
189  We discourage the use of the iperf3 issue tracker on GitHub for
190  support questions.  Actual bug reports, enhancement requests, or
191  pull requests are encouraged, however.
192
193
194