iperf icon indicating copy to clipboard operation
iperf copied to clipboard

add MPTCPv1 support

Open geliangtang opened this issue 11 months ago • 2 comments

The Multipath TCP (MPTCP) protocol (v1 / RFC 8684) has been added in the upstream Linux kernel since v5.6.

MPTCP is strongly tied to TCP, and the kernel APIs are almost the same. The only required dependency is the 'IPPROTO_MPTCP' protocol number definition, which should be provided by the netinet/in.h header if it is recent enough.

This patch adds a new flag '-m' or '--mptcp' to support MPTCPv1. It can be used like this:

iperf3 -m -s iperf3 -m -c 127.0.0.1

There is no need to check for IPPROTO_MPTCP support in configure.ac at build time, it is at runtime we will see if the kernel being use supports or not MPTCP.

If IPPROTO_MPTCP is not supported by the kernel being tested, it is normal to fail because the feature is not available and the user explicitly asked to use MPTCP.

Closes: https://github.com/esnet/iperf/pull/1659 Co-developed-by: Paolo Abeni [email protected]

PLEASE NOTE the following text from the iperf3 license. Submitting a pull request to the iperf3 repository constitutes "[making] Enhancements available...publicly":

You are under no obligation whatsoever to provide any bug fixes, patches, or
upgrades to the features, functionality or performance of the source code
("Enhancements") to anyone; however, if you choose to make your Enhancements
available either publicly, or directly to Lawrence Berkeley National
Laboratory, without imposing a separate written license agreement for such
Enhancements, then you hereby grant the following license: a non-exclusive,
royalty-free perpetual license to install, use, modify, prepare derivative
works, incorporate into other computer software, distribute, and sublicense
such enhancements or derivative works thereof, in binary and source code form.

The complete iperf3 license is available in the LICENSE file in the top directory of the iperf3 source tree.

  • Version of iperf3 (or development branch, such as master or 3.1-STABLE) to which this pull request applies:

  • Issues fixed (if any):

  • Brief description of code changes (suitable for use as a commit message):

geliangtang avatar Mar 12 '24 08:03 geliangtang

Any news about adding the support?

Currently I am trying to launch my MPTCP research, and not having to run iperf3 with the mptcpize wrapper script would be a clean way of going forward.

sskras avatar May 08 '24 16:05 sskras

@bmah888: sorry for the ping. Do you think such "smallish" modification could be accepted in IPerf3? No hurry, but it is just to know which direction we take regarding tests in the Linux kernel :)

matttbe avatar Jun 19 '24 08:06 matttbe