Lines Matching +full:a +full:- +full:facing
1 .. SPDX-License-Identifier: GPL-2.0
11 `RFC 8684 (MPTCPv1) <https://www.rfc-editor.org/rfc/rfc8684.html>`_. It allows a
13 packets over a single MPTCP connection. MPTCP can aggregate the bandwidth of
14 multiple interfaces or prefer the one with the lowest latency. It also allows a
15 fail-over if one path is down, and the traffic is seamlessly reinjected on other
26 brings new use-cases, compared to TCP:
28 - Seamless handovers: switching from one path to another while preserving
29 established connections, e.g. to be used in mobility use-cases, like on
31 - Best network selection: using the "best" available path depending on some
33 - Network aggregation: using multiple paths at the same time to have a higher
40 Technically, when a new socket is created with the ``IPPROTO_MPTCP`` protocol
41 (Linux-specific), a *subflow* (or *path*) is created. This *subflow* consists of
42 a regular TCP connection that is used to transmit data through one interface.
44 host to be able to detect the use of MPTCP, a new field is added to the TCP
46 other things, a ``MP_CAPABLE`` option that tells the other host to use MPTCP if
50 and it will continue with a single path.
56 ------------
63 Path managers are controlled by the ``net.mptcp.pm_type`` sysctl knob -- see
64 mptcp-sysctl.rst. There are two types: the in-kernel one (type ``0``) where the
66 userspace one (type ``1``), controlled by a userspace daemon (i.e. `mptcpd
68 connection. The path managers can be controlled via a Netlink API; see
71 To be able to use multiple IP addresses on a host to create multiple *subflows*
72 (paths), the default in-kernel MPTCP path-manager needs to know which IP
77 ----------------
84 Packet schedulers are controlled by the ``net.mptcp.scheduler`` sysctl knob --
85 see mptcp-sysctl.rst.
92 ----------------------
97 .. code-block:: C
105 - ``EINVAL``: (*Invalid argument*): MPTCP is not available, on kernels < 5.6.
106 - ``EPROTONOSUPPORT`` (*Protocol not supported*): MPTCP has not been compiled,
108 - ``ENOPROTOOPT`` (*Protocol not available*): MPTCP has been disabled using
109 ``net.mptcp.enabled`` sysctl knob; see mptcp-sysctl.rst.
111 MPTCP is then opt-in: applications need to explicitly request it. Note that
120 --------------
133 - ``MPTCP_INFO``: Uses ``struct mptcp_info``.
134 - ``MPTCP_TCPINFO``: Uses ``struct mptcp_subflow_data``, followed by an array of
136 - ``MPTCP_SUBFLOW_ADDRS``: Uses ``struct mptcp_subflow_data``, followed by an
138 - ``MPTCP_FULL_INFO``: Uses ``struct mptcp_full_info``, with one pointer to an
150 A new socket type has been added for MPTCP for the userspace-facing socket. The
152 behavior is modified using TCP-ULP.