xref: /aosp_15_r20/external/iperf3/docs/faq.rst (revision 7ab6e6ace082586527a400463bc693a412a40341)
1*7ab6e6acSAndroid Build Coastguard Worker.. _faq:
2*7ab6e6acSAndroid Build Coastguard Worker
3*7ab6e6acSAndroid Build Coastguard Workeriperf3 FAQ
4*7ab6e6acSAndroid Build Coastguard Worker==========
5*7ab6e6acSAndroid Build Coastguard Worker
6*7ab6e6acSAndroid Build Coastguard WorkerWhat is the history of iperf3, and what is the difference between iperf2 and iperf3?
7*7ab6e6acSAndroid Build Coastguard Worker  iperf2 was orphaned in the late 2000s at version 2.0.5, despite some
8*7ab6e6acSAndroid Build Coastguard Worker  known bugs and issues. After spending some time trying to fix
9*7ab6e6acSAndroid Build Coastguard Worker  iperf2's problems, ESnet decided by 2010 that a new, simpler tool
10*7ab6e6acSAndroid Build Coastguard Worker  was needed, and began development of iperf3. The goal was make the
11*7ab6e6acSAndroid Build Coastguard Worker  tool as simple as possible, so others could contribute to the code
12*7ab6e6acSAndroid Build Coastguard Worker  base. For this reason, it was decided to make the tool single
13*7ab6e6acSAndroid Build Coastguard Worker  threaded, and not worry about backwards compatibility with
14*7ab6e6acSAndroid Build Coastguard Worker  iperf2. Many of the feature requests for iperf3 came from the
15*7ab6e6acSAndroid Build Coastguard Worker  perfSONAR project (http://www.perfsonar.net).
16*7ab6e6acSAndroid Build Coastguard Worker
17*7ab6e6acSAndroid Build Coastguard Worker  Then in 2014, Bob (Robert) McMahon from Broadcom restarted
18*7ab6e6acSAndroid Build Coastguard Worker  development of iperf2 (See
19*7ab6e6acSAndroid Build Coastguard Worker  https://sourceforge.net/projects/iperf2/). He fixed many of the
20*7ab6e6acSAndroid Build Coastguard Worker  problems with iperf2, and added a number of new features similar to
21*7ab6e6acSAndroid Build Coastguard Worker  iperf3. iperf2.0.8, released in 2015, made iperf2 a useful tool. iperf2's
22*7ab6e6acSAndroid Build Coastguard Worker  current development is focused is on using UDP for latency testing, as well
23*7ab6e6acSAndroid Build Coastguard Worker  as broad platform support.
24*7ab6e6acSAndroid Build Coastguard Worker
25*7ab6e6acSAndroid Build Coastguard Worker  As of this writing (2017), both iperf2 and iperf3 are being actively
26*7ab6e6acSAndroid Build Coastguard Worker  (although independently) developed.  We recommend being familiar with
27*7ab6e6acSAndroid Build Coastguard Worker  both tools, and use whichever tool’s features best match your needs.
28*7ab6e6acSAndroid Build Coastguard Worker
29*7ab6e6acSAndroid Build Coastguard Worker  A feature comparison of iperf2, iperf3, and nuttcp is available at:
30*7ab6e6acSAndroid Build Coastguard Worker  https://fasterdata.es.net/performance-testing/network-troubleshooting-tools/throughput-tool-comparision/
31*7ab6e6acSAndroid Build Coastguard Worker
32*7ab6e6acSAndroid Build Coastguard Workeriperf3 parallel stream performance is much less than iperf2. Why?
33*7ab6e6acSAndroid Build Coastguard Worker  iperf3 is single threaded, and iperf2 is multi-threaded. We
34*7ab6e6acSAndroid Build Coastguard Worker  recommend using iperf2 for parallel streams.
35*7ab6e6acSAndroid Build Coastguard Worker  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*7ab6e6acSAndroid Build Coastguard Worker
37*7ab6e6acSAndroid Build Coastguard WorkerI’m trying to use iperf3 on Windows, but having trouble. What should I do?
38*7ab6e6acSAndroid Build Coastguard Worker  iperf3 is not officially supported on Windows, but iperf2 is. We
39*7ab6e6acSAndroid Build Coastguard Worker  recommend you use iperf2.
40*7ab6e6acSAndroid Build Coastguard Worker
41*7ab6e6acSAndroid Build Coastguard Worker  Some people are using Cygwin to run iperf3 in Windows, but not all
42*7ab6e6acSAndroid Build Coastguard Worker  options will work.  Some community-provided binaries of iperf3 for
43*7ab6e6acSAndroid Build Coastguard Worker  Windows exist.
44*7ab6e6acSAndroid Build Coastguard Worker
45*7ab6e6acSAndroid Build Coastguard WorkerHow can I build a statically-linked executable of iperf3?
46*7ab6e6acSAndroid Build Coastguard Worker  There are a number of reasons for building an iperf3 executable with
47*7ab6e6acSAndroid Build Coastguard Worker  no dependencies on any shared libraries.  Unfortunately this isn't
48*7ab6e6acSAndroid Build Coastguard Worker  quite a straight-forward process.
49*7ab6e6acSAndroid Build Coastguard Worker
50*7ab6e6acSAndroid Build Coastguard Worker  The steps below have nominally been tested on CentOS 7.4, but
51*7ab6e6acSAndroid Build Coastguard Worker  can probably be adapted for use with other Linux distributions:
52*7ab6e6acSAndroid Build Coastguard Worker
53*7ab6e6acSAndroid Build Coastguard Worker  #.  If necessary, install the static C libraries; for CentOS this is
54*7ab6e6acSAndroid Build Coastguard Worker      the ``glibc-static`` package.
55*7ab6e6acSAndroid Build Coastguard Worker
56*7ab6e6acSAndroid Build Coastguard Worker  #.  If OpenSSL is installed, be sure that its static libraries are
57*7ab6e6acSAndroid Build Coastguard Worker      also installed, from the ``openssl-static`` package.
58*7ab6e6acSAndroid Build Coastguard Worker
59*7ab6e6acSAndroid Build Coastguard Worker  #.  Be sure that ``lksctp-*`` packages are not installed, because
60*7ab6e6acSAndroid Build Coastguard Worker      as of this writing, there do not appear to be any static
61*7ab6e6acSAndroid Build Coastguard Worker      libraries available for SCTP.
62*7ab6e6acSAndroid Build Coastguard Worker
63*7ab6e6acSAndroid Build Coastguard Worker  #.  Configure iperf3 thusly: ``configure "LDFLAGS=--static"
64*7ab6e6acSAndroid Build Coastguard Worker      --disable-shared`` These options are necessary to disable the
65*7ab6e6acSAndroid Build Coastguard Worker      generation of shared libraries and link the executable
66*7ab6e6acSAndroid Build Coastguard Worker      statically.  For iperf-3.8 or later, configuring as ``configure
67*7ab6e6acSAndroid Build Coastguard Worker      --enable-static-bin`` is another, shorter way to accomplish
68*7ab6e6acSAndroid Build Coastguard Worker      this.  If SCTP is installed on the system it might also be
69*7ab6e6acSAndroid Build Coastguard Worker      necessary to pass the ``--without-sctp`` flag at configure
70*7ab6e6acSAndroid Build Coastguard Worker      time.
71*7ab6e6acSAndroid Build Coastguard Worker
72*7ab6e6acSAndroid Build Coastguard Worker  #.  Compile as normal.
73*7ab6e6acSAndroid Build Coastguard Worker
74*7ab6e6acSAndroid Build Coastguard Worker  It appears that for FreeBSD (tested on FreeBSD 11.1-RELEASE), only
75*7ab6e6acSAndroid Build Coastguard Worker  the last two steps are needed to produce a static executable.
76*7ab6e6acSAndroid Build Coastguard Worker
77*7ab6e6acSAndroid Build Coastguard WorkerHow can I build on a system that doesn't support profiled executables?
78*7ab6e6acSAndroid Build Coastguard Worker  This problem has been noted by users attempting to build iperf3 for
79*7ab6e6acSAndroid Build Coastguard Worker  Android systems, as well as some recent versions of macOS.
80*7ab6e6acSAndroid Build Coastguard Worker  There are several workarounds. In order from least
81*7ab6e6acSAndroid Build Coastguard Worker  effort to most effort:
82*7ab6e6acSAndroid Build Coastguard Worker
83*7ab6e6acSAndroid Build Coastguard Worker  #. Beginning with iperf-3.8, profiled executables are actually not
84*7ab6e6acSAndroid Build Coastguard Worker     built by default, so this question becomes somewhat moot.  Pass
85*7ab6e6acSAndroid Build Coastguard Worker     the ``--enable-profiling`` flag to ``configure`` to build
86*7ab6e6acSAndroid Build Coastguard Worker     profiled executables.
87*7ab6e6acSAndroid Build Coastguard Worker
88*7ab6e6acSAndroid Build Coastguard Worker  #. In iperf-3.6 and iperf-3.7, the ``--disable-profiling`` flag can be
89*7ab6e6acSAndroid Build Coastguard Worker     passed to ``configure`` to disable the building of profiled
90*7ab6e6acSAndroid Build Coastguard Worker     object files and the profiled executable.
91*7ab6e6acSAndroid Build Coastguard Worker
92*7ab6e6acSAndroid Build Coastguard Worker  #. At the time the linking of the iperf3 profiled executable fails,
93*7ab6e6acSAndroid Build Coastguard Worker     the "normal" iperf3 executable is probably already created. So if
94*7ab6e6acSAndroid Build Coastguard Worker     you are willing to accept the error exit from the make process
95*7ab6e6acSAndroid Build Coastguard Worker     (and a little bit of wasted work on the build host), you might
96*7ab6e6acSAndroid Build Coastguard Worker     not need to do anything.
97*7ab6e6acSAndroid Build Coastguard Worker
98*7ab6e6acSAndroid Build Coastguard Worker  #. After the configure step, there will be a definition in
99*7ab6e6acSAndroid Build Coastguard Worker     ``src/Makefile`` that looks like this::
100*7ab6e6acSAndroid Build Coastguard Worker
101*7ab6e6acSAndroid Build Coastguard Worker       noinst_PROGRAMS = t_timer$(EXEEXT) t_units$(EXEEXT) t_uuid$(EXEEXT) \
102*7ab6e6acSAndroid Build Coastguard Worker         iperf3_profile$(EXEEXT)
103*7ab6e6acSAndroid Build Coastguard Worker
104*7ab6e6acSAndroid Build Coastguard Worker     If you edit it to look like this, it will disable the build of the profiled iperf3::
105*7ab6e6acSAndroid Build Coastguard Worker
106*7ab6e6acSAndroid Build Coastguard Worker       noinst_PROGRAMS = t_timer$(EXEEXT) t_units$(EXEEXT) t_uuid$(EXEEXT)
107*7ab6e6acSAndroid Build Coastguard Worker
108*7ab6e6acSAndroid Build Coastguard Worker  #. Similar to item 2 above, but more permanent...if you edit
109*7ab6e6acSAndroid Build Coastguard Worker     ``src/Makefile.am`` and change the line reading like this::
110*7ab6e6acSAndroid Build Coastguard Worker
111*7ab6e6acSAndroid Build Coastguard Worker       noinst_PROGRAMS         = t_timer t_units t_uuid iperf3_profile
112*7ab6e6acSAndroid Build Coastguard Worker
113*7ab6e6acSAndroid Build Coastguard Worker     To look like this::
114*7ab6e6acSAndroid Build Coastguard Worker
115*7ab6e6acSAndroid Build Coastguard Worker       noinst_PROGRAMS         = t_timer t_units t_uuid
116*7ab6e6acSAndroid Build Coastguard Worker
117*7ab6e6acSAndroid Build Coastguard Worker     And then run ``./bootstrap.sh``, that will regenerate the project
118*7ab6e6acSAndroid Build Coastguard Worker     Makefiles to make the exclusion of the profiled iperf3 executable
119*7ab6e6acSAndroid Build Coastguard Worker     permanant (within that source tree).
120*7ab6e6acSAndroid Build Coastguard Worker
121*7ab6e6acSAndroid Build Coastguard WorkerI'm seeing quite a bit of unexpected UDP loss. Why?
122*7ab6e6acSAndroid Build Coastguard Worker  First, confirm you are using iperf 3.1.5 or higher. There was an
123*7ab6e6acSAndroid Build Coastguard Worker  issue with the default UDP send size that was fixed in
124*7ab6e6acSAndroid Build Coastguard Worker  3.1.5. Second, try adding the flag ``-w2M`` to increase the socket
125*7ab6e6acSAndroid Build Coastguard Worker  buffer sizes. That seems to make a big difference on some hosts.
126*7ab6e6acSAndroid Build Coastguard Worker
127*7ab6e6acSAndroid Build Coastguard Workeriperf3 UDP does not seem to work at bandwidths less than 100Kbps. Why?
128*7ab6e6acSAndroid Build Coastguard Worker  You'll need to reduce the default packet length to get UDP rates of less that 100Kbps. Try ``-l100``.
129*7ab6e6acSAndroid Build Coastguard Worker
130*7ab6e6acSAndroid Build Coastguard WorkerTCP throughput drops to (almost) zero during a test, what's going on?
131*7ab6e6acSAndroid Build Coastguard Worker  A drop in throughput to almost zero, except maybe for the first
132*7ab6e6acSAndroid Build Coastguard Worker  reported interval(s), may be related to problems in NIC TCP Offload,
133*7ab6e6acSAndroid Build Coastguard Worker  which is used to offload TCP functionality to the NIC (see
134*7ab6e6acSAndroid Build Coastguard Worker  https://en.wikipedia.org/wiki/TCP_offload_engine). The goal of TCP
135*7ab6e6acSAndroid Build Coastguard Worker  Offload is to save main CPU performance, mainly in the areas of
136*7ab6e6acSAndroid Build Coastguard Worker  segmentation and reassembly of large packets and checksum
137*7ab6e6acSAndroid Build Coastguard Worker  computation.
138*7ab6e6acSAndroid Build Coastguard Worker
139*7ab6e6acSAndroid Build Coastguard Worker  When TCP packets are sent with the "Don't Fragment" flag set, which
140*7ab6e6acSAndroid Build Coastguard Worker  is the recommended setting, segmentation is done by the TCP stack
141*7ab6e6acSAndroid Build Coastguard Worker  based on the reported next hop MSS in the ICMP Fragmentation Needed
142*7ab6e6acSAndroid Build Coastguard Worker  message. With TCP Offload, active segmentation is done by the NIC on
143*7ab6e6acSAndroid Build Coastguard Worker  the sending side, which is known as TCP Segmentation offload (TSO)
144*7ab6e6acSAndroid Build Coastguard Worker  or in Windows as Large Send Offload (LSO). It seems that there are
145*7ab6e6acSAndroid Build Coastguard Worker  TSO/LSO implementations which for some reason ignore the reported
146*7ab6e6acSAndroid Build Coastguard Worker  MSS and therefore don’t perform segmentation. In these cases, when
147*7ab6e6acSAndroid Build Coastguard Worker  large packets are sent, e.g. the default iperf3 128KB (131,072
148*7ab6e6acSAndroid Build Coastguard Worker  bytes), iperf3 will show that data was sent in the first interval,
149*7ab6e6acSAndroid Build Coastguard Worker  but since the packets don’t get to the server, no ack is received
150*7ab6e6acSAndroid Build Coastguard Worker  and therefore no data is sent in the following intervals. It may
151*7ab6e6acSAndroid Build Coastguard Worker  happen that after certain timeout the main CPU will re-send the
152*7ab6e6acSAndroid Build Coastguard Worker  packet by re-segmenting it, and in these cases data will get to the
153*7ab6e6acSAndroid Build Coastguard Worker  server after a while. However, it seems that segmentation is not
154*7ab6e6acSAndroid Build Coastguard Worker  automatically continued with the next packet, so the data transfer
155*7ab6e6acSAndroid Build Coastguard Worker  rate be very low.
156*7ab6e6acSAndroid Build Coastguard Worker
157*7ab6e6acSAndroid Build Coastguard Worker  The recommended solution in such a case is to disable TSO/LSO, at
158*7ab6e6acSAndroid Build Coastguard Worker  least on the relevant port. See for example:
159*7ab6e6acSAndroid Build Coastguard Worker  https://atomicit.ca/kb/articles/slow-network-speed-windows-10/. If
160*7ab6e6acSAndroid Build Coastguard Worker  that doesn’t help then "Don't Fragment" TCP flag may be
161*7ab6e6acSAndroid Build Coastguard Worker  disabled. See for example:
162*7ab6e6acSAndroid Build Coastguard Worker  https://support.microsoft.com/en-us/help/900926/recommended-tcp-ip-settings-for-wan-links-with-a-mtu-size-of-less-than. However,
163*7ab6e6acSAndroid Build Coastguard Worker  note that disabling the “Don’t Fragment” flag may cause other
164*7ab6e6acSAndroid Build Coastguard Worker  issues.
165*7ab6e6acSAndroid Build Coastguard Worker
166*7ab6e6acSAndroid Build Coastguard Worker  To test whether TSO/LSO may be the problem, do the following:
167*7ab6e6acSAndroid Build Coastguard Worker
168*7ab6e6acSAndroid Build Coastguard Worker  * If different machine configurations are used for the client and
169*7ab6e6acSAndroid Build Coastguard Worker    server, try the iperf3 reverse mode (``-R``). If TSO/LSO is only
170*7ab6e6acSAndroid Build Coastguard Worker    enabled on the client machine, this test should succeed.
171*7ab6e6acSAndroid Build Coastguard Worker  * Reduce the sending length to a small value that should not require
172*7ab6e6acSAndroid Build Coastguard Worker    segmentation, using the iperf3 ``-l`` option, e.g. ``-l 512``. It
173*7ab6e6acSAndroid Build Coastguard Worker    may also help to reduce the MTU by using the iperf3 ``-M`` option,
174*7ab6e6acSAndroid Build Coastguard Worker    e.g. ``-M 1460``.
175*7ab6e6acSAndroid Build Coastguard Worker  * Using tools like Wireshark, identify the required MSS in the ICMP
176*7ab6e6acSAndroid Build Coastguard Worker    Fragmentation Needed messages (if reported). Run tests with the
177*7ab6e6acSAndroid Build Coastguard Worker    ``-l`` value set to 2 times the MSS and then 4 times, 6 times,
178*7ab6e6acSAndroid Build Coastguard Worker    etc. With TSO/LSO issue in each test the throughput should be
179*7ab6e6acSAndroid Build Coastguard Worker    reduced more. It may help to increase the testing time beyond the
180*7ab6e6acSAndroid Build Coastguard Worker    default 10 seconds to better see the behavior (iperf3 ``-t``
181*7ab6e6acSAndroid Build Coastguard Worker    option).
182*7ab6e6acSAndroid Build Coastguard Worker
183*7ab6e6acSAndroid Build Coastguard WorkerWhat congestion control algorithms are supported?
184*7ab6e6acSAndroid Build Coastguard Worker  On Linux, run this command to see the available congestion control
185*7ab6e6acSAndroid Build Coastguard Worker  algorithms (note that some algorithms are packaged as kernel
186*7ab6e6acSAndroid Build Coastguard Worker  modules, which must be loaded before they can be used)::
187*7ab6e6acSAndroid Build Coastguard Worker
188*7ab6e6acSAndroid Build Coastguard Worker    /sbin/sysctl net.ipv4.tcp_available_congestion_control
189*7ab6e6acSAndroid Build Coastguard Worker
190*7ab6e6acSAndroid Build Coastguard Worker  On FreeBSD, the equivalent command is::
191*7ab6e6acSAndroid Build Coastguard Worker
192*7ab6e6acSAndroid Build Coastguard Worker    /sbin/sysctl net.inet.tcp.cc.available
193*7ab6e6acSAndroid Build Coastguard Worker
194*7ab6e6acSAndroid Build Coastguard WorkerI’m using the ``--logfile`` option. How do I see file output in real time?
195*7ab6e6acSAndroid Build Coastguard Worker  Use the ``--forceflush`` flag.
196*7ab6e6acSAndroid Build Coastguard Worker
197*7ab6e6acSAndroid Build Coastguard WorkerI'm using the --fq-rate flag, but it does not seem to be working. Why?
198*7ab6e6acSAndroid Build Coastguard Worker  You need to add 'net.core.default_qdisc = fq' to /etc/sysctl.conf for that option to work.
199*7ab6e6acSAndroid Build Coastguard Worker
200*7ab6e6acSAndroid Build Coastguard WorkerI'm having trouble getting iperf3 to work on Windows, Android, etc. Where can I get help?
201*7ab6e6acSAndroid Build Coastguard Worker  iperf3 only supports Linux, FreeBSD, and OSX. For other platforms we recommend using iperf2.
202*7ab6e6acSAndroid Build Coastguard Worker
203*7ab6e6acSAndroid Build Coastguard WorkerI managed to get a Windows executable built, but why do I get a BSOD on Windows 7?
204*7ab6e6acSAndroid Build Coastguard Worker  There seems to be a bug in Windows 7 where running iperf3 from a
205*7ab6e6acSAndroid Build Coastguard Worker  network filesystem can cause a system crash (in other words Blue
206*7ab6e6acSAndroid Build Coastguard Worker  Screen of Death, or BSOD).  This is a Windows bug addressed in kb2839149:
207*7ab6e6acSAndroid Build Coastguard Worker
208*7ab6e6acSAndroid Build Coastguard Worker  https://support.microsoft.com/en-us/help/2839149/stop-error-0x00000027-in-the-rdbss-sys-process-in-windows-7-or-windows
209*7ab6e6acSAndroid Build Coastguard Worker
210*7ab6e6acSAndroid Build Coastguard Worker  A hotfix is available under kb2732673:
211*7ab6e6acSAndroid Build Coastguard Worker
212*7ab6e6acSAndroid Build Coastguard Worker  https://support.microsoft.com/en-us/help/2732673/-delayed-write-failed-error-message-when--pst-files-are-stored-on-a-ne
213*7ab6e6acSAndroid Build Coastguard Worker
214*7ab6e6acSAndroid Build Coastguard WorkerWhy can’t I run a UDP client with no server?
215*7ab6e6acSAndroid Build Coastguard Worker  This is potentially dangerous, and an attacker could use this for a
216*7ab6e6acSAndroid Build Coastguard Worker  denial of service attack.  We don't want iperf3 to be an attack tool.
217*7ab6e6acSAndroid Build Coastguard Worker
218*7ab6e6acSAndroid Build Coastguard WorkerI'm trying to use iperf3 to test a 40G/100G link...What do I need to know?
219*7ab6e6acSAndroid Build Coastguard Worker  See the following pages on fasterdata.es.net:
220*7ab6e6acSAndroid Build Coastguard Worker
221*7ab6e6acSAndroid Build Coastguard Worker  - https://fasterdata.es.net/host-tuning/100g-tuning/
222*7ab6e6acSAndroid Build Coastguard Worker  - https://fasterdata.es.net/performance-testing/network-troubleshooting-tools/iperf/multi-stream-iperf3/
223*7ab6e6acSAndroid Build Coastguard Worker
224*7ab6e6acSAndroid Build Coastguard WorkerMy receiver didn't get all the bytes that got sent but there was no loss.  Huh?
225*7ab6e6acSAndroid Build Coastguard Worker  iperf3 uses a control connection between the client and server to
226*7ab6e6acSAndroid Build Coastguard Worker  manage the start and end of each test.  Sometimes the commands on
227*7ab6e6acSAndroid Build Coastguard Worker  the control connection can be received and acted upon before all of
228*7ab6e6acSAndroid Build Coastguard Worker  the test data has been processed.  Thus the test ends with data
229*7ab6e6acSAndroid Build Coastguard Worker  still in flight.  This effect can be significant for short (a few
230*7ab6e6acSAndroid Build Coastguard Worker  seconds) tests, but is probably negligible for longer tests.
231*7ab6e6acSAndroid Build Coastguard Worker
232*7ab6e6acSAndroid Build Coastguard WorkerA file sent using the ``-F`` option got corrupted...what happened?
233*7ab6e6acSAndroid Build Coastguard Worker  The ``-F`` option to iperf3 is not a file transfer utility.  It's a
234*7ab6e6acSAndroid Build Coastguard Worker  way of testing the end-to-end performance of a file transfer,
235*7ab6e6acSAndroid Build Coastguard Worker  including filesystem and disk overheads.  So while the test will
236*7ab6e6acSAndroid Build Coastguard Worker  mimic an actual file transfer, the data stored to disk may not be
237*7ab6e6acSAndroid Build Coastguard Worker  the same as what was sent.  In particular, the file size will be
238*7ab6e6acSAndroid Build Coastguard Worker  rounded up to the next larger multiple of the transfer block size,
239*7ab6e6acSAndroid Build Coastguard Worker  and for UDP tests, iperf's metadata (containing timestamps and
240*7ab6e6acSAndroid Build Coastguard Worker  sequence numbers) will overwrite the start of every UDP packet
241*7ab6e6acSAndroid Build Coastguard Worker  payload.
242*7ab6e6acSAndroid Build Coastguard Worker
243*7ab6e6acSAndroid Build Coastguard WorkerI have a question regarding iperf3...what's the best way to get help?
244*7ab6e6acSAndroid Build Coastguard Worker  Searching on the Internet is a good first step.
245*7ab6e6acSAndroid Build Coastguard Worker  http://stackoverflow.com/ has a number of iperf3-related questions
246*7ab6e6acSAndroid Build Coastguard Worker  and answers, but a simple query into your favorite search engine can
247*7ab6e6acSAndroid Build Coastguard Worker  also yield some results.
248*7ab6e6acSAndroid Build Coastguard Worker
249*7ab6e6acSAndroid Build Coastguard Worker  There is a mailing list nominally used for iperf3 development,
250*7ab6e6acSAndroid Build Coastguard Worker  [email protected].
251*7ab6e6acSAndroid Build Coastguard Worker
252*7ab6e6acSAndroid Build Coastguard Worker  We discourage the use of the iperf3 issue tracker on GitHub for
253*7ab6e6acSAndroid Build Coastguard Worker  support questions.  Actual bug reports, enhancement requests, or
254*7ab6e6acSAndroid Build Coastguard Worker  pull requests are encouraged, however.
255*7ab6e6acSAndroid Build Coastguard Worker
256*7ab6e6acSAndroid Build Coastguard Worker
257