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 73I'm seeing quite a bit of unexpected UDP loss. Why? 74 First, confirm you are using iperf 3.1.5 or higher. There was an 75 issue with the default UDP send size that was fixed in 76 3.1.5. Second, try adding the flag ``-w2M`` to increase the socket 77 buffer sizes. That seems to make a big difference on some hosts. 78 79iperf3 UDP does not seem to work at bandwidths less than 100Kbps. Why? 80 You'll need to reduce the default packet length to get UDP rates of less that 100Kbps. Try ``-l100``. 81 82What congestion control algorithms are supported? 83 On Linux, run this command to see the available congestion control 84 algorithms (note that some algorithms are packaged as kernel 85 modules, which must be loaded before they can be used):: 86 87 /sbin/sysctl net.ipv4.tcp_available_congestion_control 88 89I’m using the ``--logfile`` option. How do I see file output in real time? 90 Use the ``--forceflush`` flag. 91 92I'm using the --fq-rate flag, but it does not seem to be working. Why? 93 You need to add 'net.core.default_qdisc = fq' to /etc/sysctl.conf for that option to work. 94 95I'm having trouble getting iperf3 to work on Windows, Android, etc. Where can I get help? 96 iperf3 only supports Linux, FreeBSD, and OSX. For other platforms we recommend using iperf2. 97 98I managed to get a Windows executable built, but why do I get a BSOD on Windows 7? 99 There seems to be a bug in Windows 7 where running iperf3 from a 100 network filesystem can cause a system crash (in other words Blue 101 Screen of Death, or BSOD). This is a Windows bug addressed in kb2839149: 102 103 https://support.microsoft.com/en-us/help/2839149/stop-error-0x00000027-in-the-rdbss-sys-process-in-windows-7-or-windows 104 105 A hotfix is available under kb2732673: 106 107 https://support.microsoft.com/en-us/help/2732673/-delayed-write-failed-error-message-when--pst-files-are-stored-on-a-ne 108 109Why can’t I run a UDP client with no server? 110 This is potentially dangerous, and an attacker could use this for a 111 denial of service attack. We don't want iperf3 to be an attack tool. 112 113I'm trying to use iperf3 to test a 40G/100G link...What do I need to know? 114 See the following pages on fasterdata.es.net: 115 116 - https://fasterdata.es.net/host-tuning/100g-tuning/ 117 - https://fasterdata.es.net/performance-testing/network-troubleshooting-tools/iperf/multi-stream-iperf3/ 118 119My receiver didn't get all the bytes that got sent but there was no loss. Huh? 120 iperf3 uses a control connection between the client and server to 121 manage the start and end of each test. Sometimes the commands on 122 the control connection can be received and acted upon before all of 123 the test data has been processed. Thus the test ends with data 124 still in flight. This effect can be significant for short (a few 125 seconds) tests, but is probably negligible for longer tests. 126 127A file sent using the ``-F`` option got corrupted...what happened? 128 The ``-F`` option to iperf3 is not a file transfer utility. It's a 129 way of testing the end-to-end performance of a file transfer, 130 including filesystem and disk overheads. So while the test will 131 mimic an actual file transfer, the data stored to disk may not be 132 the same as what was sent. In particular, the file size will be 133 rounded up to the next larger multiple of the transfer block size, 134 and for UDP tests, iperf's metadata (containing timestamps and 135 sequence numbers) will overwrite the start of every UDP packet 136 payload. 137 138I have a question regarding iperf3...what's the best way to get help? 139 Searching on the Internet is a good first step. 140 http://stackoverflow.com/ has a number of iperf3-related questions 141 and answers, but a simple query into your favorite search engine can 142 also yield some results. 143 144 There is a mailing list nominally used for iperf3 development, 145 [email protected]. 146 147 We discourage the use of the iperf3 issue tracker on GitHub for 148 support questions. Actual bug reports, enhancement requests, or 149 pull requests are encouraged, however. 150 151 152