Downloads of v


Last Update:

25 Mar 2019

Package Maintainer(s):

Software Author(s):

  • Mark Gates
  • Alex Warshavsky
  • Ajay Tirumala
  • Jim Ferguson
  • Jon Dugan
  • Feng Qin
  • Kevin Gibbs
  • John Estabrook
  • Andrew Gallatin
  • Stephen Hemminger
  • Nathan Jones
  • Gerrit Renker
  • Robert J. McMahon
  • Tim Auckland



iPerf2 | Updated: 25 Mar 2019



Downloads of v



Software Author(s):

  • Mark Gates
  • Alex Warshavsky
  • Ajay Tirumala
  • Jim Ferguson
  • Jon Dugan
  • Feng Qin
  • Kevin Gibbs
  • John Estabrook
  • Andrew Gallatin
  • Stephen Hemminger
  • Nathan Jones
  • Gerrit Renker
  • Robert J. McMahon
  • Tim Auckland




All Checks are Passing

2 Passing Test

Validation Testing Passed

Verification Testing Passed


To install iPerf2, run the following command from the command line or from PowerShell:


To upgrade iPerf2, run the following command from the command line or from PowerShell:


To uninstall iPerf2, run the following command from the command line or from PowerShell:


NOTE: This applies to both open source and commercial editions of Chocolatey.

1. Ensure you are set for organizational deployment

Please see the organizational deployment guide

  • Open Source or Commercial:
    • Proxy Repository - Create a proxy nuget repository on Nexus, Artifactory Pro, or a proxy Chocolatey repository on ProGet. Point your upstream to Packages cache on first access automatically. Make sure your choco clients are using your proxy repository as a source and NOT the default community repository. See source command for more information.
    • You can also just download the package and push it to a repository Download

3. Enter your internal repository url

(this should look similar to

4. Choose your deployment method:

choco upgrade iperf2 -y --source="'STEP 3 URL'" [other options]

See options you can pass to upgrade.

See best practices for scripting.

Add this to a PowerShell script or use a Batch script with tools and in places where you are calling directly to Chocolatey. If you are integrating, keep in mind enhanced exit codes.

If you do use a PowerShell script, use the following to ensure bad exit codes are shown as failures:

choco upgrade iperf2 -y --source="'STEP 3 URL'"

Write-Verbose "Exit code was $exitCode"
$validExitCodes = @(0, 1605, 1614, 1641, 3010)
if ($validExitCodes -contains $exitCode) {
  Exit 0

Exit $exitCode

- name: Ensure iperf2 installed
    name: iperf2
    state: present
    source: STEP 3 URL

See docs at

Coming early 2020! Central Managment Reporting available now! More information...

chocolatey_package 'iperf2' do
  action    :install
  version  ''
  source   'STEP 3 URL'

See docs at

    Name: iperf2,
    Source: STEP 3 URL

Requires Otter Chocolatey Extension. See docs at

cChocoPackageInstaller iperf2
   Name     = 'iperf2'
   Ensure   = 'Present'
   Version  = ''
   Source   = 'STEP 3 URL'

Requires cChoco DSC Resource. See docs at

package { 'iperf2':
  provider => 'chocolatey',
  ensure   => '',
  source   => 'STEP 3 URL',

Requires Puppet Chocolatey Provider module. See docs at

salt '*' chocolatey.install iperf2 version="" source="STEP 3 URL"

See docs at

5. If applicable - Chocolatey configuration/installation

See infrastructure management matrix for Chocolatey configuration elements and examples.

This package was approved by moderator gep13 on 28 Mar 2019.


A network traffic tool for measuring TCP and UDP performance. The goals include maintaining an active iperf 2 code base (code originated from iperf 2.0.5), preserving interoperability with iperf 2.0.5 clients and servers, preserving the output for scripts (new enhanced output requires -e), adopt known 2.0.x bug fixes, maintain broad platform support, as well as add some essential feature enhancements mostly driven by WiFi testing needs. Also added python code to centralize test control.

Iperf 2 vs iperf 3 major differences: Iperf 2 here has timing related stats including end/end packet latency w/histograms (clocks assumed to be synced); supports multicast including SSM; supports threaded operation; supports L2 length checks. Iperf3 is a "cleaner" code base per a rewrite; supports json output; uses a test connection; is single threaded.

Iperf2 and iperf3 do not interoperate.

md5: 43355059836CE11FEC1458A978293F00 | sha1: 196CA63B404B5091F0035C415D6A24426917733D | sha256: FC0C508DC46B885B502DC1623BAA55EF9D6AF440A7BAC227A41156695F2E61F4 | sha512: 4030963EF74B9F3F203EAAED36F6B8E54EBDACCE4526A30E1663B0D8968FD8B7646F4A93E622B1AD766BF3DE2E202045C949CEDEF092B2102934E42675257692


<TITLE>Iperf Copyright</TITLE>
<!-- $Id: ui_license.html,v 2004/05/18 01:50:44 kgibbs Exp $ -->

<BODY BGCOLOR="#FFFFFF" LINK="#006633" VLINK="#669900" ALINK="#669966">

<P><IMG SRC="dast.gif"
        ALT="Distributed Applications Support Team"></P>

<H1 ALIGN=CENTER>Iperf Copyright</H1>

<HR><!-- ----- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- -->

Copyright (c) 1999,2000,2001,2002,2003,2004,2005  The Board of Trustees of the University of Illinois<br>
All Rights Reserved.

<a href="">Iperf performance test</a><BR>
Mark Gates<BR>
Ajay Tirumala<br>
Jim Ferguson<br>
Jon Dugan<br>
Feng Qin<br>
Kevin Gibbs<br>
John Estabrook<BR>
National Laboratory for Applied Network Research <BR>
National Center for Supercomputing Applications <BR>
University of Illinois at Urbana-Champaign <BR>
<a href=""></a>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software (Iperf)
and associated documentation files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
<li>Redistributions of source code must retain the above copyright notice, this list of
    conditions and the following disclaimers.

<li>Redistributions in binary form must reproduce the above copyright notice, this list
    of conditions and the following disclaimers in the documentation and/or other
    materials provided with the distribution.

<li>Neither the names of the University of Illinois, NCSA, nor the names of its
    contributors may be used to endorse or promote products derived from this
    Software without specific prior written permission.



<HR><!-- ----- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- -->

<P><FONT FACE="helvetica,arial" SIZE="2">

<A HREF="mailto:[email protected]">[email protected]</A>

Last modified: Jan 5, 2004<br>

<A HREF="">NLANR</a> ||
<A HREF="">applications support</a> ||
<A HREF="">engineering support</a> ||
<A HREF="">measurement and operations</a>


Verification is intended to assist the Chocolatey moderators and community
in verifying that this package's contents are trustworthy.
1. Download the following .exe-

2. Use checksum utility of your choice to get checksum of the .exe

3. Check that the checksum matches-
	MD5: 43355059836ce11fec1458a978293f00
	SHA-1: 196ca63b404b5091f0035c415d6a24426917733d
	SHA-256: fc0c508dc46b885b502dc1623baa55ef9d6af440a7bac227a41156695f2e61f4
	SHA-512: 4030963ef74b9f3f203eaaed36f6b8e54ebdacce4526a30e1663b0d8968fd8b7646f4a93e622b1ad766bf3de2e202045c949cedef092b2102934e42675257692

Log in or click on link to see number of positives.

In cases where actual malware is found, the packages are subject to removal. Software sometimes has false positives. Moderators do not necessarily validate the safety of the underlying software, only that a package retrieves software from the official distribution point and/or validate embedded software against official distribution point (where distribution rights allow redistribution).

Chocolatey Pro provides runtime protection from possible malware.

Version Downloads Last Updated Status

2.0.6 change set ([email protected]) March 2014
o Increase the shared memory for report headers reducing mutex contention. Needed to increase performance. Minor code change that should be platform/os independent

2.0.7 change set ([email protected]) August 2014
o Linux only version which supports end/end latency (assumes clocks synched)
o Support for smaller report interval (5 milliseconds or greater)
o End/end latency with UDP (mean/min/max), display in milliseconds with resolution of microseconds
o Socket read timeouts (server only) so iperf reports occur regardless of no received packets
o Report timestamps now display millisecond resolution
o Local bind supports port value using colon as delimeter (-B
o Use linux realtime scheduler and packet level timestamps for improved latency accuracy
o Suggest PTP on client and server to synch clocks to microsecond
o Suggest a quality reference for the PTP grandmaster such as a GPS disciplined oscillator from companies like Spectracom

2.0.8 change set (as of 1/12/2015)

o Fix portability, compile and test with Linux, Win10, Win7, WinXP, MacOS and Android
o Client now requires -u for UDP (no longer defaults to UDP with -b)
o Maintain legacy report formats
o Support for -e to get enhanced reports
o Support TCP rate limited streams (via the -b) using token bucket
o Support packets per second (UDP) via pps as units, (e.g. -b 1000pps)
o Display PPS in both client and server reports (UDP)
o Support realtime scheduler as a command line option (--realtime or -z)
o Improve client tx code path so actual tx offerred rate will converge to the -b value
o Improve accuracy of microsecond delay calls (in platform independent manner)
o (Use of Kalman filter to predict delay errors and adjust delays per predicted error)
o Display target loop time in initial client header (UDP)
o Fix final latency report sent from server to client (UDP)
o Include standard deviation in latency output
o Suppress unrealistic latency output (-/-/-/-)
o Support SO_SNDTIMEO on send so socket write won't block beyond -t (TCP)
o Use clock_gettime if available (preferred over gettimeofday())
o TCP write and error counts (TCP retries and CWND for linux)
o TCP read count, TCP read histogram (8 bins)
o Server will close the socket after -t seconds of no traffic

2.0.9 change set (as of June 2016)
o Apply SO_SNDTIMEO for both UDP and TCP per both -t and -i
o Server (and listener) threads won't block forever when -t set (uses select() with non-blocking accept())
o Remove need for cmath to improve portability
o Fix report interval bug so single threaded mode no works
o Skeleton code for Python based flows which will be use Pythnon 3's asyncio module
o configure script check for struct tcp_info code fix and uses netinet/tcp.h

2.0.10 change set (as of August 11, 2017)
o clean up help and man page for -V option
o UDP IPv6 : Default the mBuf size to 1450 for the client, default the Listener/server to 1470
o Display read/write buffer size in the report header (only when -e enhanced)
o Add -S and --tos to man page and help, and format options to same
o Reject --ipv6_domain (-V) option if HAVE_IPV6 is not defined, rather than silently ignoring it.
o Clean up settings/command line parsing code including removing oder dependencies
o Use strtok (instead of strtok_r) for better portability
o Fix 'format string is not a string literal' warnings on Mac OS X
o Use SOCKET type on Windows instead of int to clean up signed/unsigned warnings
o Fix WIN32 timeout paste errors
o man page updates to describe format characters, improve BUGS sections
o Fix autoconf IPV6 check for case where configure is not called from srcdir
o Add support for v6 link local, e.g. 'iperf -V -c fe80::428d:5cff:fef7:5a73%eno1'
o Fix ClientHdrXchange when gettimeofday() is used
o Fix for -l, -W and -n to support format characters, also fix -n for -d and -r
o Fixes -for -d (dual) honoring -b on remote
o Fix for -t and -r
o Support for 64 bit sequence numbers (--udp-counters-64bit)
o Update config to support new platforms, eg --host=aarch64-linux
o Fixes to header xchange, length messages, and packing
o Server thread mbuf length checks
o remove trailing whitespace across all files in the git repository
o Support peer version detection and exchange with -X option
o Add UDP buffer size minimum checks and warnings prior to peer test exchange
o 2.0.5 interop testing and fixes (assume lots of 2.0.5 servers in the field)
o Fix thread settings per hdr xhcange fixes
o Fix for -P and -d used together
o Error on client and -D
o Fix local port binding on client to support both v4 and v6
o Fix more on use clock_gettime() over gettimeofday() when available
o Treat ENOBUFS as transient, i.e. don't exit on this error
o Python: add flows directory and skeleton flows code using asyncio
o Python: Support flows stats in dictionary for pandas

2.0.11 change set (as of May 24th, 2018)
o support for -b on server (read rate limiting)
o honor -T (ttl) for unicast. (Note: the default value is 1 so this will impact unicast tests that require routing)
o support for --isochronous traffic with optional frames per second, mean and variance uses a log normal distribution (requires configure w/-enable-isochronous and compile)
o support for --udp triggers (requires configure w/ --enable-udptriggers, early code with very limited support)
o support for --udp-histogram with optional bin width and number of bins (default is 1 millisecond bin width and 1000 bins)
o support for frame (burst) latency histograms when --isochronous is set
o support for --tx-sync with -P for synchonrized writes. Initial use is for WiFi OFDMA latency testing.
o support for --incr-dstip with -P for simultaneous flows to multiple destinations (use case is for OFDMA)
o support for --vary-load with optional weight, uses log normal distribution (requires -b to set the mean)
o support for --l2checks to detect L2 length errors not detected by v4 or v6 payload length errors (requires linux, berkeley packet filters BPFs and AF_PACKET socket support)
o support for server joining mulitcast source specific multicast (S,G) and (*,G) for both v4 and v6 on platforms that support it
o improved write counters (requires -e)
o accounting bug fix on client when write fails, this bug was introduced in 2.0.10
o slight restructure client/server traffic thread code for maintainability
o python: flow example script updates
o python: ssh node object using asyncio
o python: histograms in flows with plotting (assumed gnuplot available)
o python: hierarchical clustering of latency histograms (early code)
o man pages updates
o Note: latency histograms require client and server system clock synchronization. A GPS disciplined oscillator using Precision Time Protocol works well for this.

2.0.12 change set (as of June 25th 2018)
o Change the unicast TTL default value from 1 to the system default (to be compatable with previous versions.) Mulitcast still defaults to 1.
o adpative formatting bug fix: crash occurs when values exceed 1 Tera. Add support for Tera and Peta and eliminate the potential crash condition
o configure default compile to include isochronous support (use configure --disable-isochronous to remove support)
o replace 2.0.11's --vary-load option with a more general -b option to include mean,stdev, e.g. -b 100m,40m, which will pull from a log normal distribution every 0.1 seconds
o fixes for windows cross compile (using mingw32)
o compile flags of -fPIE for android
o configure --enable-checkprograms to compile ancillary binaries used to test things such as delay, isoch, pdf generation
o compile tests when trying to use 64b seq numbers on a 32b platform
o Fix GCC ver 8 warnings

2.0.13 change set (as of January 22, 2019)
o Set the listening socket backlog to a large value, let os control the max, better operations with FreeBSD
o Fix breakage to -r and -d options
o Fix so ctrl-c works with -r and -d
o Fix ctrl-c on server to have a graceful exit including print report
o Fix kfreebsd compile breakage per multicast support
o The UDP final server report may be larger than the client's -l length, fix the client to read maximum packet length for that instead of using -l as the read size
o Minor code clean up around write errors
o Added netpower to TCP client enhanced output (throughput/RTT)
o Display TCP client connect time in the connected to message
o use IPV6_TCLASS for ipv6 (-V) dscp/tos (-S) if available
o Add suport for --txstart-time value where value is epoch/unix format, e.g. iperf -c --txstart-time 1536090358.515
o Add support for socket option SO_MAX_PACING_RATE using --fq-rate
o Add configure support for --enable-fastsampling, allowing 100 microsecond report intervals
o Add support for --trip-time on the client. Measures client's 3WHS done to client's fin+fin-ack, reported on the server requires -e and synchronized clocks
o Support for 64 bit sequence numbers on by default, no longer requires --udp-counters-64bit, interoperates with 2.0.5 32 bit sequence numbers
o Integer fixes for 64 bit, int max, printf, etc.
o Obsolete the need for include/slim_headers.h
o Update man page to have some example usages

2.0.14a change set (as of January 30th, 2019)
o Fix the case when -P value is set on the server such that Summing output is displayed. While -P isn't really needed on the server, some existing systems use it.
A latent defect to this seemed to have been introduced around the 2.0.8 release.

This package has no dependencies.

Discussion for the iPerf2 Package

Ground Rules:

  • This discussion is only about iPerf2 and the iPerf2 package. If you have feedback for Chocolatey, please contact the Google Group.
  • This discussion will carry over multiple versions. If you have a comment about a particular version, please note that in your comments.
  • The maintainers of this Chocolatey Package will be notified about new comments that are posted to this Disqus thread, however, it is NOT a guarantee that you will get a response. If you do not hear back from the maintainers after posting a message below, please follow up by using the link on the left side of this page or follow this link to contact maintainers. If you still hear nothing back, please follow the package triage process.
  • Tell us what you love about the package or iPerf2, or tell us what needs improvement.
  • Share your experiences with the package, or extra configuration or gotchas that you've found.
  • If you use a url, the comment will be flagged for moderation until you've been whitelisted. Disqus moderated comments are approved on a weekly schedule if not sooner. It could take between 1-5 days for your comment to show up.
comments powered by Disqus