iperf3 with tls support
Go to file
Bruce A. Mah 4addea8502 Fix unfiled bug that could break TCP tests under some circumstances.
The bug and solution are very similar to Issue 126 (fixed in
d7e0c1445c0a).  Basically a setsockopt(IPV6_V6ONLY) call had a bogus
level argument, but we never checked the return value so we never
noticed this.

As with the prior issue, the fix is to unbreak the setsockopt() call,
and add some error checking to detect future breakage.

This bug was on a codepath that only got called if non-default values
were set for the socket buffer size, the MSS, or the NODELAY parameter.
It might have affected some FreeBSD tests, but really only got noticed
when debugging some other code that was (probably) cut-and-pasted
from this code.
2014-02-04 15:05:39 -08:00
config Changed bug report email to google code link. 2013-11-26 10:07:32 -08:00
examples Fix typos: s/exitting/exiting/ 2014-01-03 11:24:06 -08:00
src Fix unfiled bug that could break TCP tests under some circumstances. 2014-02-04 15:05:39 -08:00
.hgignore Add .hgignore file to quiet down "hg stat". 2014-02-03 15:09:01 -08:00
aclocal.m4 Changed bug report email to google code link. 2013-11-26 10:07:32 -08:00
AUTHORS updates for 3.0 release 2013-11-10 09:37:10 -08:00
bootstrap.sh Make libtoolize actually get called correctly. 2014-02-04 11:23:44 -08:00
configure Changed bug report email to google code link. 2013-11-26 10:07:32 -08:00
configure.ac Changed bug report email to google code link. 2013-11-26 10:07:32 -08:00
INSTALL Commented 'AX_LIB_SOCKET_NSL' out of configure.ac to fix build problem. 2012-08-20 14:35:58 -07:00
LICENSE Happy 2014. 2014-01-07 16:12:34 -08:00
make_release Minor improvements to make_release script. 2014-01-09 13:26:32 -08:00
Makefile.am Add an initial autotools setup. 2009-12-08 21:36:24 +00:00
Makefile.in Changed bug report email to google code link. 2013-11-26 10:07:32 -08:00
README Mention the need for -4 when running as a server on OpenBSD. 2014-01-21 16:12:23 -08:00
RELEASE_NOTES Add support for writing the PID to a file in server mode. 2014-01-24 16:42:10 -08:00
test_commands.sh added test for -C flag 2013-12-20 15:05:21 -08:00
TODO updates for 3.0 release 2013-11-10 09:37:10 -08:00

= Summary =

iperf3 is a tool for measuring achievable bandwidth on IP networks.

iperf3 is NOT backwards compatible with the original iperf.

Supported platforms:
  * Linux
  * FreeBSD 
  * Mac OSX

= Building iperf3 =

== Prerequisites: ==
  * libuuid: this is not installed by default for Debian/Ubuntu Systems
             to install: apt-get install uuid-dev

== Building ==

./configure; make; make install

(Note: If configure fails, try running ./bootstrap.sh first)

= Latest version =

To check out the most recent code, do:  hg clone http://code.google.com/p/iperf/


= Bug Reports =

Before submitting a bug report, try checking out the latest version of
the code, and confirm that its not already fixed. Then submit to:
https://code.google.com/p/iperf/issues/list

For more information see: http://code.google.com/p/iperf/

= Changes from iperf 2.x =

New options:

  -V, --verbose             more detailed output than before
  -J, --json                output in JSON format
  -Z, --zerocopy            use a 'zero copy' sendfile() method of sending data
  -O, --omit N              omit the first n seconds (to ignore slowstart)
  -T, --title str           prefix every output line with this string
  -F, --file name           xmit/recv the specified file
  -A, --affinity n/n,m      set CPU affinity (Linux and FreeBSD only)
  -k, --blockcount #[KMG]   number of blocks (packets) to transmit (instead 
      		   	    of -t or -n)
  -L, --flowlabel           set IPv6 flow label (Linux only)

Changed flags:
  -C, --linux-congestion    set congestion control algorithm (Linux only)
      			    (-Z in iperf2.0)


Deprecated options:

Not planning to support these iperf2 flags. If you really miss these
options, please submit a request in the issue tracker:

  -d, --dualtest           Do a bidirectional test simultaneously
  -r, --tradeoff           Do a bidirectional test individually
  -T, --ttl                time-to-live, for multicast (default 1)
  -x, --reportexclude [CDMSV]   exclude C(connection) D(data) M(multicast) 
      		      	   S(settings) V(server) reports
  -y, --reportstyle C      report as a Comma-Separated Values

Also deprecated is the ability to set the options via environment
variables.

For sample command line usage, see: 

http://fasterdata.es.net/performance-testing/network-troubleshooting-tools/iperf-and-iperf3/


Using the default options, iperf is meant to show typical well
designed application performance.  'Typical well designed application'
means avoiding artificial enhancements that work only for testing
(such as splice()'ing the data to /dev/null).  iperf does also have
flags for 'extreme best case' optimizations but they must be
explicitly activated.

These flags include:
  -Z, --zerocopy            use a 'zero copy' sendfile() method of sending data
  -A, --affinity n/n,m      set CPU affinity


= Known Issues =

* UDP performance: iperf2/iperf3 both only are only about 50% as fast
as nuttcp in UDP mode.  We are looking into this, but in the meantime,
if you want to get UDP above 5Gbps, we recommend using nuttcp instead
(http://www.nuttcp.net/)

* Interval reports on high-loss networks: The way iperf3 is currently
implemented, the sender write command will block until the entire
block has been written. This means that it might take several seconds
to send a full block if the network has high loss, and the interval
reports will have widely varying interval times. We are trying to
determine the best solution to this, but in the meantime, try using a
smaller block size if you get strange interval reports.  For example,
try "-l 4K".

* -Z flag on OSX sometimes hangs

* On OpenBSD, the server seems to require a "-4" argument, implying
that it can only be used with IPv4.