base on 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
Reporting security vulnerabilities:
[email protected]
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 and Security 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.
If you suspect there is a potential security issue, please contact the
developers at:
[email protected]
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/.
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.
* Installation instructions for Debian Linux (by Cameron Camp
<
[email protected]>):
http://cheatsheet.logicalwebhost.com/iperf-network-testing/
Copyright
---------
iperf, Copyright (c) 2014-2024, 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.
", Assign "at most 3 tags" to the expected json: {"id":"4999","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"