/linux/Documentation/networking/ |
H A D | mptcp.rst | 4 Multipath TCP (MPTCP) 10 Multipath TCP or MPTCP is an extension to the standard TCP and is described in 13 packets over a single MPTCP connection. MPTCP can aggregate the bandwidth of 19 official website: `mptcp.dev <https://www.mptcp.dev>`_. 25 Thanks to MPTCP, being able to use multiple paths in parallel or simultaneously 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 48 it, the returned ``SYN+ACK`` packet will not contain MPTCP options in the TCP 63 Path managers are controlled by the ``net.mptcp.path_manager`` sysctl knob -- 64 see mptcp-sysctl.rst. There are two types: the in-kernel one (``kernel``) where [all …]
|
/linux/Documentation/netlink/specs/ |
H A D | mptcp_pm.yaml | 7 c-family-name: mptcp-pm-name 8 c-version-name: mptcp-pm-ver 11 cmd-cnt-name: --mptcp-pm-cmd-after-last 17 enum-name: mptcp-event-type 18 name-prefix: mptcp-event- 26 A new MPTCP connection has been created. It is the good time to 35 A MPTCP connection is established (can start new subflows). 41 A MPTCP connection has stopped. 90 name-prefix: mptcp-pm-addr-attr- 122 name-prefix: mptcp-subflow-attr- [all …]
|
/linux/net/mptcp/ |
H A D | Kconfig | 2 config MPTCP config 3 bool "MPTCP: Multipath TCP" 9 Multipath TCP (MPTCP) connections send and receive data over multiple 12 MPTCP. 14 if MPTCP 21 bool "MPTCP: IPv6 support for Multipath TCP" 26 tristate "This builds the MPTCP KUnit tests" if !KUNIT_ALL_TESTS 30 Currently covers the MPTCP crypto and token helpers.
|
H A D | token.c | 23 #define pr_fmt(fmt) "MPTCP: " fmt 33 #include <net/mptcp.h> 88 * hash of some information available in the MPTCP socket. Use in mptcp_crypto_key_gen_sha() 101 * This function is called when a new mptcp connection is coming in. 103 * It creates a unique token to identify the new mptcp connection, 139 * This function is called when a new outgoing mptcp connection is 142 * It creates a unique token to identify the new mptcp connection, 145 * On success, the mptcp connection can be found again using 237 * mptcp_token_get_sock - retrieve mptcp connection sock using its token 239 * @token: token of the mptcp connection to retrieve [all …]
|
H A D | ctrl.c | 17 #define MPTCP_SYSCTL_PATH "net/mptcp" 429 /* The following code block is to deal with middle box issues with MPTCP, 431 * The proposed solution is to disable active MPTCP globally when SYN+MPC are 432 * dropped, while SYN without MPC aren't. In this case, active side MPTCP is 435 * The timeout is reset back to 1hr when a successful active MPTCP connection is 439 /* Disable active MPTCP and record current jiffies and active_disable_times */ 462 /* Calculate timeout for MPTCP active disable 463 * Return true if we are still in the active MPTCP disable period 464 * Return false if timeout already expired and we should use active MPTCP 498 /* Enable active MPTCP an [all...] |
H A D | protocol.h | 13 #include <uapi/linux/mptcp.h> 19 /* MPTCP option bits */ 41 /* MPTCP option subtypes */ 52 /* MPTCP suboption lengths */ 85 /* MPTCP MP_JOIN flags */ 89 /* MPTCP MP_CAPABLE flags */ 97 /* MPTCP DSS flags */ 105 /* MPTCP ADD_ADDR flags */ 108 /* MPTCP MP_PRIO flags */ 111 /* MPTCP TCPRS [all...] |
H A D | syncookies.c | 8 * Unlike MP_CAPABLE, where the ACK cookie contains the needed MPTCP 10 * the token to obtain the mptcp socket nor the server-generated nonce 17 * token matches a known mptcp connection that can still accept more subflows. 90 * present in the cookie ACK mptcp option space will be checked later.
|
H A D | crypto_test.c | 42 /* mptcp hmap will convert to be before computing the hmac */ in mptcp_crypto_test_basic() 66 .name = "mptcp-crypto", 73 MODULE_DESCRIPTION("KUnit tests for MPTCP Crypto");
|
H A D | Makefile | 2 obj-$(CONFIG_MPTCP) += mptcp.o 4 mptcp-y := protocol.o subflow.o options.o token.o crypto.o ctrl.o pm.o diag.o \
|
H A D | subflow.c | 7 #define pr_fmt(fmt) "MPTCP: " fmt 22 #include <net/mptcp.h> 27 #include <trace/events/mptcp.h> 142 /* Init mptcp request socket. 159 /* no MPTCP if MD5SIG is enabled on this socket or we may run out of in subflow_check_req() 610 /* It looks like MPTCP is blocked, while TCP is not */ in subflow_finish_connect() 837 * which may not carry the MP_CAPABLE opt even on mptcp enabled in subflow_syn_recv_sock() 866 * to reset the context to non MPTCP status. in subflow_syn_recv_sock() 1285 /* sched mptcp worker for subflow cleanup if no more data is pending */ 1461 /* If ssk has an mptcp parent socket, use the mptcp rcvbuf occupancy, [all …]
|
H A D | mib.c | 5 #include <net/mptcp.h> 92 * These are allocated when the first mptcp socket is created so 93 * we do not waste percpu memory if mptcp isn't in use.
|
H A D | protocol.c | 7 #define pr_fmt(fmt) "MPTCP: " fmt 24 #include <net/mptcp.h> 32 #include <trace/events/mptcp.h> 194 * - mptcp does not maintain a msk-level window clamp 223 * - use mptcp seqs 678 /* Under fallback skbs have no MPTCP extension and TCP could in __mptcp_move_skbs_from_subflow() 807 /* In most cases we will be able to lock the mptcp socket. If its already 947 /* can collapse only if MPTCP level sequence is in order and this in mptcp_skb_can_collapse_to() 1398 /* implement the mptcp packet scheduler; 1496 /* snd_nxt_new can be smaller than snd_nxt in case mptcp in mptcp_update_post_push() [all …]
|
H A D | fastopen.c | 2 /* MPTCP Fast Open Mechanism 37 /* We copy the fastopen data, but that don't belong to the mptcp sequence in mptcp_fastopen_subflow_synack_set_params()
|
H A D | mib.h | 17 MPTCP_MIB_RETRANSSEGS, /* Segments retransmitted at the MPTCP-level */ 41 MPTCP_MIB_NODSSWINDOW, /* Segments not in MPTCP windows */ 82 MPTCP_MIB_CURRESTAB, /* Current established MPTCP connections */
|
H A D | mptcp_diag.c | 2 /* MPTCP socket monitoring support 104 if (!ctx || strcmp(inet_csk(sk)->icsk_ulp_ops->name, "mptcp")) in mptcp_diag_dump_listeners() 241 MODULE_DESCRIPTION("MPTCP socket monitoring via SOCK_DIAG"); in mptcp_diag_exit()
|
/linux/include/net/ |
H A D | rstreason.h | 6 #include <uapi/linux/mptcp.h> 39 * The reasons of sk reset, which are used in TCP/MPTCP protocols. 44 * 3) reset reasons in MPTCP: only for MPTCP use 127 /* Copy from include/uapi/linux/mptcp.h. 136 * RST was generated by an MPTCP-aware device. 140 * @SK_RST_REASON_MPTCP_RST_EMPTCP: MPTCP-specific error. 141 * An error has been detected in the processing of MPTCP options. 178 * making MPTCP signaling invalid. For example, this may be sent
|
H A D | mptcp.h | 20 /* MPTCP sk_buff extension data */ 195 /* MPTCP always clears the ext when adding it to the skb, so in mptcp_skb_ext_copy() 204 * MPTCP collapse is allowed if neither @to or @from carry an mptcp data in mptcp_ext_matches()
|
/linux/tools/testing/selftests/net/mptcp/ |
H A D | mptcp_connect.sh | 61 echo -e "\t-C: enable the MPTCP data checksum" 210 ip netns exec $i sysctl -q net.mptcp.checksum_enabled=1 265 print_larger_title "New MPTCP socket can be blocked via sysctl" 268 if ! ip netns exec ${disabled_ns} sysctl net.mptcp >/dev/null; then 269 mptcp_lib_pr_fail "not able to list net.mptcp sysctl knobs" 270 mptcp_lib_result_fail "not able to list net.mptcp sysctl knobs" 275 # net.mptcp.enabled should be enabled by default 276 if [ "$(ip netns exec ${disabled_ns} sysctl net.mptcp.enabled | awk '{ print $3 }')" -ne 1 ]; then 277 mptcp_lib_pr_fail "net.mptcp.enabled sysctl is not 1 by default" 278 mptcp_lib_result_fail "net.mptcp.enabled sysctl is not 1 by default" [all …]
|
H A D | userspace_pm.sh | 16 if ! mptcp_lib_has_file '/proc/sys/net/mptcp/pm_type'; then 102 # Terminate the MPTCP connection and related processes 124 if [ -f /proc/sys/net/mptcp/path_manager ]; then 125 ip netns exec "$ns1" sysctl -q net.mptcp.path_manager=userspace 126 pm_type="$(ip netns exec "$ns1" sysctl -n net.mptcp.pm_type)" 133 ip netns exec "$ns1" sysctl -q net.mptcp.path_manager=error 2>/dev/null 134 pm_type="$(ip netns exec "$ns1" sysctl -n net.mptcp.pm_type)" 141 ip netns exec "$ns1" sysctl -q net.mptcp.pm_type=0 142 pm_name="$(ip netns exec "$ns1" sysctl -n net.mptcp.path_manager)" 151 ip netns exec "$i" sysctl -q net.mptcp.pm_type=1 [all …]
|
H A D | mptcp_lib.sh | 159 if ! mptcp_lib_has_file "/proc/sys/net/mptcp/enabled"; then 160 mptcp_lib_pr_skip "MPTCP support is not available" 453 if ! ss -h | grep -q MPTCP; then 454 mptcp_lib_pr_skip "ss tool does not support MPTCP" 480 ip netns exec "${!netns}" sysctl -q net.mptcp.enabled=1 606 ip -n "${ns}" mptcp endpoint show id "${id}" 618 ip -n "${ns}" mptcp limits set add_addr_accepted "${addrs}" subflows "${subflows}" 643 ip -n "${ns}" mptcp endpoint add "${addr}" ${flags//","/" "} \ 658 ip -n "${ns}" mptcp endpoint delete id "${id}" ${addr:+"${addr}"} 668 ip -n "${ns}" mptcp endpoint flush [all …]
|
H A D | mptcp_join.sh | 114 ip netns exec $netns sysctl -q net.mptcp.pm_type=0 2>/dev/null || true 116 ip netns exec $netns sysctl -q net.mptcp.checksum_enabled=1 362 ip netns exec $ns1 sysctl -q net.mptcp.add_addr_timeout=1 382 ip netns exec $ns1 sysctl -q net.mptcp.checksum_enabled=$ns1_enable 383 ip netns exec $ns2 sysctl -q net.mptcp.checksum_enabled=$ns2_enable 395 ip netns exec $ns1 sysctl -q net.mptcp.allow_join_initial_addr_port=$ns1_enable 396 ip netns exec $ns2 sysctl -q net.mptcp.allow_join_initial_addr_port=$ns2_enable 405 # Because the MPTCP checksum, covering the TCP options and data, has not been 407 # what we want to validate here without corrupting "random" MPTCP options. 451 ip netns exec $ns1 sysctl -q net.mptcp.checksum_enabled=1 [all …]
|
H A D | mptcp_sockopt.sh | 27 echo -e "\t-i: use 'ip mptcp' instead of 'pm_nl_ctl'" 256 mptcp_lib_pr_skip "MPTCP sockopt not supported" 295 do_transfer ${listener_ns} ${connector_ns} MPTCP MPTCP ${connect_addr}
|
H A D | pm_netlink.sh | 10 echo -e "\t-i: use 'ip mptcp' instead of 'pm_nl_ctl'" 63 ip -n "${ns1}" mptcp limits 84 ip -n "${ns1}" mptcp endpoint change "${addr}" "${flags}"
|
/linux/include/uapi/linux/ |
H A D | mptcp_pm.h | 15 * @MPTCP_EVENT_CREATED: A new MPTCP connection has been created. It is the 20 * @MPTCP_EVENT_ESTABLISHED: A MPTCP connection is established (can start new 23 * @MPTCP_EVENT_CLOSED: A MPTCP connection has stopped. Attribute: token.
|
H A D | mptcp.h | 79 /* MPTCP Reset reason codes, rfc8684 */ 134 /* MPTCP socket options */
|