• Stars
    star
    6,808
  • Rank 5,795 (Top 0.2 %)
  • Language
    C
  • License
    Other
  • Created over 10 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

iperf3: A TCP, UDP, and SCTP network bandwidth measurement tool

iperf3: A TCP, UDP, and SCTP network bandwidth measurement tool

Summary

iperf is a tool for active measurements of the maximum achievable bandwidth on IP networks. It supports tuning of various parameters related to timing, protocols, and buffers. For each test it reports the measured throughput / bitrate, loss, and other parameters.

This version, sometimes referred to as iperf3, is a redesign of an original version developed at NLANR/DAST. iperf3 is a new implementation from scratch, with the goal of a smaller, simpler code base, and a library version of the functionality that can be used in other programs. iperf3 also has a number of features found in other tools such as nuttcp and netperf, but were missing from the original iperf. These include, for example, a zero-copy mode and optional JSON output. Note that iperf3 is not backwards compatible with the original iperf.

Primary development for iperf3 takes place on Ubuntu Linux, FreeBSD, and macOS. At this time, these are the only officially supported platforms, however there have been some reports of success with OpenBSD, NetBSD, Android, Solaris, and other Linux distributions.

iperf3 is principally developed by ESnet / Lawrence Berkeley National Laboratory. It is released under a three-clause BSD license.

For more information see: https://software.es.net/iperf

Source code and issue tracker: https://github.com/esnet/iperf

Discussion forums: https://github.com/esnet/iperf/discussions

Obtaining iperf3

Downloads of iperf3 are available at:

https://downloads.es.net/pub/iperf/

To check out the most recent code, clone the git repository at:

https://github.com/esnet/iperf.git

Building iperf3

Prerequisites:

None.

Building

./configure; make; make install

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

Invoking iperf3

iperf3 includes a manual page listing all of the command-line options. The manual page is the most up-to-date reference to the various flags and parameters.

For sample command line usage, see:

https://fasterdata.es.net/performance-testing/network-troubleshooting-tools/iperf/

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

Bug Reports

Before submitting a bug report, please make sure you're running the latest version of the code, and confirm that your issue has not already been fixed. Then submit to the iperf3 issue tracker on GitHub:

https://github.com/esnet/iperf/issues

In your issue submission, please indicate the version of iperf3 and what platform you're trying to run on (provide the platform information even if you're not using a supported platform, we might be able to help anyway). Exact command-line arguments will help us recreate your problem. If you're getting error messages, please include them verbatim if possible, but remember to sanitize any sensitive information.

If you have a question about usage or about the code, please do not submit an issue. Please use one of the mailing lists for that.

Relation to iperf 2.x

Although iperf2 and iperf3 both measure network performance, they are not compatible with each other. The projects (as of mid-2021) are in active, but separate, development. The continuing iperf2 development project can be found at https://sourceforge.net/projects/iperf2/.

iperf3 contains a number of options and functions not present in iperf2. In addition, some flags are changed from their iperf2 counterparts:

-C, --linux-congestion    set congestion control algorithm (Linux only)
                          (-Z in iperf2)
--bidir                   bidirectional testing mode
                          (-d in iperf2)

Some iperf2 options are not available in iperf3:

-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 removed is the ability to set the options via environment variables.

Known Issues

A set of known issues is maintained on the iperf3 Web pages:

https://software.es.net/iperf/dev.html#known-issues

Links

This section lists links to user-contributed Web pages regarding iperf3. ESnet and Lawrence Berkeley National Laboratory bear no responsibility for the content of these pages.

Copyright

iperf, Copyright (c) 2014-2023, The Regents of the University of California, through Lawrence Berkeley National Laboratory (subject to receipt of any required approvals from the U.S. Dept. of Energy). All rights reserved.

If you have questions about your rights to use or distribute this software, please contact Berkeley Lab's Technology Transfer Department at [email protected].

NOTICE. This software is owned by the U.S. Department of Energy. As such, the U.S. Government has been granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable, worldwide license in the Software to reproduce, prepare derivative works, and perform publicly and display publicly. Beginning five (5) years after the date permission to assert copyright is obtained from the U.S. Department of Energy, and subject to any subsequent five (5) year renewals, the U.S. Government is granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable, worldwide license in the Software to reproduce, prepare derivative works, distribute copies to the public, perform publicly and display publicly, and to permit others to do so.

This code is distributed under a BSD style license, see the LICENSE file for complete information.

More Repositories

1

react-timeseries-charts

Declarative and modular timeseries charting components for React
JavaScript
866
star
2

gdg

Grafana Dashboard Manager
Go
336
star
3

pond

Immutable timeseries data structures built with Typescript
TypeScript
205
star
4

react-network-diagrams

Contains ESnet network mapping and circuit rendering code, as used in the ESnet portal.
JavaScript
195
star
5

esnet-smartnic-hw

ESnet SmartNIC hardware design repository.
SystemVerilog
39
star
6

react-dynamic-forms

Dynamic forms library for React
JavaScript
36
star
7

dpdk-plugin

C++
23
star
8

xilinx-tools-docker

Docker image containing Xilinx build tools
Dockerfile
20
star
9

EScp

EScp is a high performance transfer tool that uses a command line interface similar to scp.
Rust
17
star
10

zeek-exporter

Prometheus Exporter for Zeek
C++
17
star
11

enos

ESnet Network Operating System (NOT ACTIVELY MAINTAINED)
Python
15
star
12

zeek-dpdk

11
star
13

grafana-esnet-networkmap-panel

A geographic bidirectional network map based on d3 and leaflet
JavaScript
11
star
14

oscars

Java
11
star
15

esnet-fpga-library

ESnet general-purpose FPGA design library.
SystemVerilog
10
star
16

esnet-perfsonar-mesh

Shell
9
star
17

react-axis

Axis components built for React
JavaScript
9
star
18

TCP-monitor

Simple Python Program to monitor TCP sockets
Python
8
star
19

esnet-smartnic-fw

ESnet SmartNIC firmware design repository.
C
7
star
20

react-timeseries-barchart

A horizontal barchart that summarizes a list of TimeSeries objects
JavaScript
7
star
21

simple-lookup-service

sLS code
Java
7
star
22

docker

Files for various Science DMZ use cases. This repository is no longer being maintained and serves as an example only.
7
star
23

netshell

Kernel and companion software that support ENOS applications (NOT ACTIVELY MAINTAINED)
Java
6
star
24

react-timeseries-table

Got a TimeSeries? Build a Table.
JavaScript
6
star
25

mini-portal

Demonstration of toolkits used to build the MyESnet portal.
JavaScript
5
star
26

sense-rtmon

Custom Scripts for Dynamic End-To-End Flow-Specific Grafana Dashboards
Python
5
star
27

sans-holiday-hack-2018

ESnet Security Team's SANS Holiday Hack 2018 Report
HTML
5
star
28

pypond

A python library to manipulate and transmit time-series data.
Python
5
star
29

nml-mrml

MRML: Multi-Resource Markup Language - Modeling Schemas and Tools
Java
5
star
30

cookiecutter-zeekpackage

Cookiecutter template for Zeek packages
Python
5
star
31

arborq

Python library for querying Arbor PeakFlow devices.
Python
4
star
32

netgraf

Real-time network monitoring tool that uses machine learning
Jupyter Notebook
4
star
33

xilinx-qdma-for-opennic

Variant of Xilinx QDMA IP Drivers for DPDK that is compatible with Xilinx opennic-shell.
C
4
star
34

smartnic-dpdk-docker

Docker container with dpdk + xilinx qdma + pktgen-dpdk for use in high speed test setups
Dockerfile
4
star
35

ansible_network_capture

Jinja
3
star
36

eZeeKonfigurator

Web-based configuration for your Zeek clusters
Python
3
star
37

sense-rm

SENSE Resource Manager
Java
3
star
38

shibboleth_session_auth

Simplistic Shibboleth integration with Django sessions
Python
3
star
39

esnet-arcdiagram-panel

An arch diagram panel plugin for Grafana
TypeScript
2
star
40

indira_networkIntent

Python
2
star
41

calibers

Exploring shaping traffic at the edge of the network
Jupyter Notebook
2
star
42

oscars-frontend

JavaScript
2
star
43

hylia_networkprediction

Jupyter Notebook
2
star
44

oscars-topology-json

Publishes the OSCARS NMWG topology and list of circuits in a JSON format
Python
2
star
45

regio

Tools for working with FPGA register maps (including code generators for C and SystemVerilog interfaces).
Python
2
star
46

workflow-databooks

Repository of sample data related to distributed data workflows for scientific research. Data is explained and exercise through a set of Jupyter notebooks. Anyone is invited to share relevant date, including all aspects of workflows, including but not limited, WAN, LAN, I/O, CPU, memory.
Jupyter Notebook
2
star
47

hps-rl

Hyperparameter tuning for deep RL applications
Python
1
star
48

xilinx-labtools-docker

Docker image to provide Xilinx LabTools
Dockerfile
1
star
49

testing-harness

A harness for executing jobs across multiple hosts and collecting output.
Jupyter Notebook
1
star
50

netpredict

Real-time network traffic prediction with deep learning
Jupyter Notebook
1
star
51

esviz

DEPRECATED. ESnet charts visualizations can be found at react-timeseries-charts.
JavaScript
1
star
52

docker-tooling

Misc tools that can be in your $PATH to make life easier
Shell
1
star
53

esnet-matrix-panel

TypeScript
1
star
54

zeek_perfsonar_owamp

OWAMP protocol analyzer plugin for Bro/Zeek
JavaScript
1
star
55

arista-tapagg-ansible

HTML
1
star
56

hhc19

SANS Holiday Hack 2019
HTML
1
star
57

sense-nrm-oscars

Python
1
star
58

stardust-snmp-pipeline

The data processing pipeline the ESnet Stardust project uses to enrich data collected from SNMP.
Ruby
1
star
59

janus-client

Python
1
star
60

simpleML4Networks

examples for trying out multiple machine learning on network data sets
Jupyter Notebook
1
star