curl/.github/scripts
Dorian Craps ab6d5442e8
curl: (on linux) add MPTCP support
Multipath TCP (MPTCP), standardized in RFC8684 [1], is a TCP extension
that enables a TCP connection to use different paths.

Multipath TCP has been used for several use cases. On smartphones, MPTCP
enables seamless handovers between cellular and Wi-Fi networks while
preserving established connections. This use-case is what pushed Apple
to use MPTCP since 2013 in multiple applications [2]. On dual-stack
hosts, Multipath TCP enables the TCP connection to automatically use the
best performing path, either IPv4 or IPv6. If one path fails, MPTCP
automatically uses the other path.

To benefit from MPTCP, both the client and the server have to support
it. Multipath TCP is a backward-compatible TCP extension that is enabled
by default on recent Linux distributions (Debian, Ubuntu, Redhat, ...).
Multipath TCP is included in the Linux kernel since version 5.6 [3]. To
use it on Linux, an application must explicitly enable it when creating
the socket. No need to change anything else in the application.

This attached patch adds an --mptcp option which allows the creation of
an MPTCP socket instead of TCP on Linux. If Multipath TCP is not
supported on the system, an error will be reported. It is important to
note that if the end server doesn't support MPTCP, the connection will
continue after a seamless fallback to TCP.

Link: https://www.rfc-editor.org/rfc/rfc8684.html [1]
Link: https://www.tessares.net/apples-mptcp-story-so-far/ [2]
Link: https://www.mptcp.dev [3]
Co-developed-by: Dorian Craps (@CrapsDorian) <doriancraps@gmail.com>
Co-developed-by: Olivier Bonaventure (@obonaventure) <Olivier.Bonaventure@uclouvain.be>
Co-developed-by: Matthieu Baerts (@matttbe) <matttbe@kernel.org>
Signed-off-by: Dorian Craps <dorian.craps@student.vinci.be>

Closes #13278
2024-06-07 10:54:19 +02:00
..
badwords.pl GHA: add a job scanning for "bad words" in markdown 2024-01-24 08:44:34 +01:00
badwords.txt docs: more language cleanups 2024-02-27 16:19:43 +01:00
cleancmd.pl spellcheck.yml: remove .1/.3 handling, clean all man page .md files 2024-02-19 11:41:12 +01:00
cleanspell.pl spellcheck.yml: remove .1/.3 handling, clean all man page .md files 2024-02-19 11:41:12 +01:00
codespell-ignore.txt mbedTLS: implement CURLOPT_SSL_CIPHER_LIST option 2024-04-24 14:30:37 +02:00
shellcheck.sh OS400: fix shellcheck warnings in scripts 2024-04-11 07:48:51 +00:00
spellcheck.words curl: (on linux) add MPTCP support 2024-06-07 10:54:19 +02:00
spellcheck.yaml DISTROS: add document with distro pointers 2024-03-26 00:26:55 +01:00
verify-examples.pl docs: introduce "curldown" for libcurl man page format 2024-01-23 00:29:02 +01:00
verify-synopsis.pl tidy-up: whitespace 2023-12-08 03:28:50 +00:00
VERSIONS CI: renovate updates 2024-05-15 11:38:28 +02:00