curl/docs
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
..
cmdline-opts curl: (on linux) add MPTCP support 2024-06-07 10:54:19 +02:00
examples examples/threaded-ssl: remove locking callback code 2024-06-04 13:00:21 -04:00
libcurl CURLOPT_INTERFACE.md: quote the less-than and larger-than 2024-06-05 08:44:58 +02:00
.gitignore docs: introduce "curldown" for libcurl man page format 2024-01-23 00:29:02 +01:00
ALTSVC.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
BINDINGS.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
BUFQ.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
BUFREF.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
BUG-BOUNTY.md BUG-BOUNTY.md: clarify the third party situation 2024-05-14 16:23:42 +02:00
BUGS.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
CHECKSRC.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
CIPHERS.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
CLIENT-READERS.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
CLIENT-WRITERS.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
CMakeLists.txt cmake: whitespace, formatting/tidy-up in comments 2024-05-27 18:07:10 +02:00
CODE_OF_CONDUCT.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
CODE_REVIEW.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
CODE_STYLE.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
CONNECTION-FILTERS.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
CONTRIBUTE.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
curl-config.md curldown: Fix email address in Copyright 2024-02-28 11:28:10 +01:00
CURL-DISABLE.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
CURLDOWN.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
DEPRECATE.md noproxy: patterns need to be comma separated 2024-06-01 12:25:13 +02:00
DISTROS.md DISTROS: add a link to the list archive 2024-06-01 00:24:06 +02:00
DYNBUF.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
EARLY-RELEASE.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
ECH.md docs/ECH: typo/clarification 2024-05-21 15:09:24 +02:00
EXPERIMENTAL.md EXPERIMENTAL: add graduation requirements for each feature 2024-05-06 17:05:04 +02:00
FAQ misc: fix typos 2024-04-11 15:44:22 +02:00
FEATURES.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
GOVERNANCE.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
HELP-US.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
HISTORY.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
HSTS.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
HTTP2.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
HTTP3.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
HTTP-COOKIES.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
HYPER.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
INSTALL
INSTALL-CMAKE.md INSTALL-CMAKE.md: explain cmake -G <generator-name> 2024-04-01 18:51:06 -04:00
INSTALL.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
INTERNALS.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
IPFS.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
KNOWN_BUGS KNOWN_BUGS: quiche: QUIC connection is draining 2024-06-03 10:46:10 +02:00
MAIL-ETIQUETTE.md docs/MAIL-ETIQUETTE: convert to markdown 2024-03-31 15:32:27 +02:00
Makefile.am docs/Makefile.am: make curl-config.1 install 2024-05-22 09:26:55 +02:00
MANUAL.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
mk-ca-bundle.md curldown: Fix email address in Copyright 2024-02-28 11:28:10 +01:00
MQTT.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
NEW-PROTOCOL.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
options-in-versions curl: (on linux) add MPTCP support 2024-06-07 10:54:19 +02:00
PARALLEL-TRANSFERS.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
README.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
RELEASE-PROCEDURE.md dmaketgz: release tarball generation using docker 2024-04-16 23:38:55 +02:00
ROADMAP.md ROADMAP: remove completed entries, mention websocket 2024-04-17 10:35:12 +02:00
RUSTLS.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
SECURITY-ADVISORY.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
SPONSORS.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
SSL-PROBLEMS.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
SSLCERTS.md tidy-up: use consistent casing for Windows directories 2024-05-30 14:40:12 +02:00
THANKS THANKS: add contributors from 8.8.0 2024-05-22 07:54:25 +02:00
THANKS-filter THANKS-filter: name fixes 2024-04-17 09:48:45 +02:00
TheArtOfHttpScripting.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
TODO TODO: remove some old, clarify, add something 2024-05-27 10:58:28 +02:00
URL-SYNTAX.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
VERSIONS.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
VULN-DISCLOSURE-POLICY.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
WEBSOCKET.md docs: use present tense 2024-02-27 09:47:21 +01:00

curl logo

Documentation

You find a mix of various documentation in this directory and subdirectories, using several different formats. Some of them are not ideal for reading directly in your browser.

If you would rather see the rendered version of the documentation, check out the curl website's documentation section for general curl stuff or the libcurl section for libcurl related documentation.