File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / iperf / README.md
Revision 1.1: download - view: text, annotated - select for diffs - revision graph
Tue Oct 18 13:28:17 2016 UTC (7 years, 8 months ago) by misho
CVS tags: MAIN, HEAD
Initial revision

    1: iperf3:  A TCP, UDP, and SCTP network bandwidth measurement tool
    2: ================================================================
    3: 
    4: Summary
    5: -------
    6: 
    7: iperf is a tool for active measurements of the maximum achievable
    8: bandwidth on IP networks.  It supports tuning of various parameters
    9: related to timing, protocols, and buffers.  For each test it reports
   10: the bandwidth, loss, and other parameters.
   11: 
   12: This version, sometimes referred to as iperf3, is a redesign of an
   13: original version developed at NLANR/DAST.  iperf3 is a new
   14: implementation from scratch, with the goal of a smaller, simpler code
   15: base, and a library version of the functionality that can be used in
   16: other programs. iperf3 also a number of features found in other tools
   17: such as nuttcp and netperf, but were missing from the original iperf.
   18: These include, for example, a zero-copy mode and optional JSON output.
   19: Note that iperf3 is *not* backwards compatible with the original iperf.
   20: 
   21: Primary development for iperf3 takes place on CentOS Linux, FreeBSD,
   22: and MacOS X.  At this time, these are the only officially supported
   23: platforms, however there have been some reports of success with
   24: OpenBSD, NetBSD, Android, Solaris, and other Linux distributions.
   25: 
   26: iperf3 is principally developed by ESnet / Lawrence Berkeley National
   27: Laboratory.  It is released under a three-clause BSD license.
   28: 
   29: Note that at this point, ESnet plans to support iperf3 in "maintenance
   30: mode".  At this point, there are no definite plans for further iperf3
   31: releases, and ESnet will be providing a very limited amount of
   32: resources for support and development, going forward.  However, ESnet
   33: could issue new iperf3 releases to deal with security issues or
   34: high-impact bug fixes.
   35: 
   36: For more information see: http://software.es.net/iperf
   37: 
   38: Source code and issue tracker: https://github.com/esnet/iperf
   39: 
   40: Obtaining iperf3
   41: ----------------
   42: 
   43: Downloads of iperf3 are available at:
   44: 
   45:     http://downloads.es.net/pub/iperf/
   46: 
   47: To check out the most recent code, clone the git repository at:
   48: 
   49:     https://github.com/esnet/iperf.git
   50: 
   51: Building iperf3
   52: ---------------
   53: 
   54: ### Prerequisites: ###
   55: 
   56: None.
   57: 
   58: ### Building ###
   59: 
   60:     ./configure; make; make install
   61: 
   62: (Note: If configure fails, try running `./bootstrap.sh` first)
   63: 
   64: Invoking iperf3
   65: ---------------
   66: 
   67: iperf3 includes a manual page listing all of the command-line options.
   68: The manual page is the most up-to-date reference to the various flags and parameters.
   69: 
   70: For sample command line usage, see: 
   71: 
   72: http://fasterdata.es.net/performance-testing/network-troubleshooting-tools/iperf-and-iperf3/
   73: 
   74: Using the default options, iperf is meant to show typical well
   75: designed application performance.  'Typical well designed application'
   76: means avoiding artificial enhancements that work only for testing
   77: (such as splice()'ing the data to /dev/null).  iperf does also have
   78: flags for 'extreme best case' optimizations but they must be
   79: explicitly activated.
   80: 
   81: These flags include:
   82: 
   83:     -Z, --zerocopy            use a 'zero copy' sendfile() method of sending data
   84:     -A, --affinity n/n,m      set CPU affinity
   85: 
   86: Bug Reports
   87: -----------
   88: 
   89: Before submitting a bug report, please make sure you're running the
   90: latest version of the code, and confirm that your issue has not
   91: already been fixed.  Then submit to the iperf3 issue tracker on
   92: GitHub:
   93: 
   94: https://github.com/esnet/iperf/issues
   95: 
   96: In your issue submission, please indicate the version of iperf3 and
   97: what platform you're trying to run on (provide the platform
   98: information even if you're not using a supported platform, we
   99: *might* be able to help anyway).  Exact command-line arguments will
  100: help us recreate your problem.  If you're getting error messages,
  101: please include them verbatim if possible, but remember to sanitize any
  102: sensitive information.
  103: 
  104: If you have a question about usage or about the code, please do *not*
  105: submit an issue.  Please use one of the mailing lists for that.
  106: 
  107: Changes from iperf 2.x
  108: ----------------------
  109: 
  110: New options:
  111: 
  112:     -V, --verbose             more detailed output than before
  113:     -J, --json                output in JSON format
  114:     -Z, --zerocopy            use a 'zero copy' sendfile() method of sending data
  115:     -O, --omit N              omit the first n seconds (to ignore slowstart)
  116:     -T, --title str           prefix every output line with this string
  117:     -F, --file name           xmit/recv the specified file
  118:     -A, --affinity n/n,m      set CPU affinity (Linux and FreeBSD only)
  119:     -k, --blockcount #[KMG]   number of blocks (packets) to transmit (instead 
  120:                               of -t or -n)
  121:     -L, --flowlabel           set IPv6 flow label (Linux only)
  122: 
  123: Changed flags:
  124: 
  125:     -C, --linux-congestion    set congestion control algorithm (Linux only)
  126:                               (-Z in iperf2)
  127: 
  128: 
  129: Deprecated options:
  130: 
  131: Not planning to support these iperf2 flags. If you really miss these
  132: options, please submit a request in the issue tracker:
  133: 
  134:     -d, --dualtest           Do a bidirectional test simultaneously
  135:     -r, --tradeoff           Do a bidirectional test individually
  136:     -T, --ttl                time-to-live, for multicast (default 1)
  137:     -x, --reportexclude [CDMSV]   exclude C(connection) D(data) M(multicast) 
  138:                                   S(settings) V(server) reports
  139:     -y, --reportstyle C      report as a Comma-Separated Values
  140: 
  141: Also deprecated is the ability to set the options via environment
  142: variables.
  143: 
  144: Known Issues
  145: ------------
  146: 
  147: * UDP performance: Some problems have been noticed with iperf3 on the
  148: ESnet 100G testbed at high UDP rates (above 10Gbps).  The symptom is
  149: that on any particular run of iperf3 the receiver reports a loss rate
  150: of about 20%, regardless of the -b option used on the client side.
  151: This problem appears not to be iperf3-specific, and may be due to the
  152: placement of the iperf3 process on a CPU and its relation to the
  153: inbound NIC.  In some cases this problem can be mitigated by an
  154: appropriate use of the CPU affinity (-A) option.  (Issue #55)
  155: 
  156: * The -Z flag sometimes causes the iperf3 client to hang on OSX.
  157: (Issue #129)
  158: 
  159: * When specifying the socket buffer size using the "-w" flag on Linux, Linux 
  160: doubles the value you pass in. (You can see this using iperf3's debug flag). 
  161: But then the CWND does not actually ramp up to the doubled value, but only
  162: to about 75% of the doubled value. This appears to be by design.
  163: 
  164: * Although the "-w" flag is documented as setting the (TCP) window
  165: size, it is also used to set the socket buffer size.  This has been
  166: shown to be helpful with high-bitrate UDP tests.
  167: 
  168: * On some platforms, it might be necessary to invoke "ldconfig" 
  169: manually after doing a "make install" before the iperf3 executable can 
  170: find its shared library.  (Issue #153)
  171: 
  172: * The results printed on the server side at the end of a test do not
  173: correctly reflect the client-side measurements.  This is due to the
  174: ordering of computing and transferring results between the client
  175: and server.  (Issue #293)
  176: 
  177: * The server could have a very short measurement reporting interval at
  178: the end of a test (particularly a UDP test), containing few or no
  179: packets.  This issue is due to an artifact of timing between the
  180: client and server.  (Issue #278)
  181: 
  182: Links
  183: -----
  184: 
  185: This section lists links to user-contributed Web pages regarding
  186: iperf3.  ESnet and Lawrence Berkeley National Laboratory bear no
  187: responsibility for the content of these pages.
  188: 
  189: * Installation instructions for Debian Linux (by Cameron Camp
  190:   <cameron@ivdatacenter.com>):
  191: 
  192:   http://cheatsheet.logicalwebhost.com/iperf-network-testing/
  193: 
  194: Copyright
  195: ---------
  196: 
  197: iperf, Copyright (c) 2014-2016, The Regents of the University of
  198: California, through Lawrence Berkeley National Laboratory (subject
  199: to receipt of any required approvals from the U.S. Dept. of
  200: Energy).  All rights reserved.
  201: 
  202: If you have questions about your rights to use or distribute this
  203: software, please contact Berkeley Lab's Technology Transfer
  204: Department at TTD@lbl.gov.
  205: 
  206: NOTICE.  This software is owned by the U.S. Department of Energy.
  207: As such, the U.S. Government has been granted for itself and others
  208: acting on its behalf a paid-up, nonexclusive, irrevocable,
  209: worldwide license in the Software to reproduce, prepare derivative
  210: works, and perform publicly and display publicly.  Beginning five
  211: (5) years after the date permission to assert copyright is obtained
  212: from the U.S. Department of Energy, and subject to any subsequent
  213: five (5) year renewals, the U.S. Government is granted for itself
  214: and others acting on its behalf a paid-up, nonexclusive,
  215: irrevocable, worldwide license in the Software to reproduce,
  216: prepare derivative works, distribute copies to the public, perform
  217: publicly and display publicly, and to permit others to do so.
  218: 
  219: This code is distributed under a BSD style license, see the LICENSE
  220: file for complete information.

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>