/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.pm_type`` sysctl knob -- see 64 mptcp-sysctl.rst. There are two types: the in-kernel one (type ``0``) where the [all …]
|
H A D | mptcp-sysctl.rst | 4 MPTCP Sysfs variables 7 /proc/sys/net/mptcp/* Variables 12 resent to an MPTCP peer that has not acknowledged a previous 42 Initial time period in second to disable MPTCP on active MPTCP sockets 43 when a MPTCP firewall blackhole issue happens. This time period will 45 MPTCP is re-enabled and will reset to the initial value when the 62 shutdown syscall, MPTCP sockets will maintain the status 72 Control whether MPTCP sockets can be created. 74 MPTCP sockets can be created if the value is 1. This is a 80 Set the default path manager name to use for each new MPTCP [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 and reset active_disable_times if needed */ [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() 607 /* It looks like MPTCP is blocked, while TCP is not */ in subflow_finish_connect() 834 * which may not carry the MP_CAPABLE opt even on mptcp enabled in subflow_syn_recv_sock() 863 * to reset the context to non MPTCP status. in subflow_syn_recv_sock() 1278 /* sched mptcp worker for subflow cleanup if no more data is pending */ 1447 /* If ssk has an mptcp parent socket, use the mptcp rcvbuf occupancy, [all …]
|
H A D | mib.c | 5 #include <net/mptcp.h> 88 * These are allocated when the first mptcp socket is created so 89 * we do not waste percpu memory if mptcp isn't in use.
|
H A D | protocol.c | 7 #define pr_fmt(fmt) "MPTCP: " fmt 22 #include <net/mptcp.h> 30 #include <trace/events/mptcp.h> 161 * - use mptcp seqs 602 /* Under fallback skbs have no MPTCP extension and TCP could in __mptcp_move_skbs_from_subflow() 729 /* In most cases we will be able to lock the mptcp socket. If its already 874 /* can collapse only if MPTCP level sequence is in order and this in mptcp_skb_can_collapse_to() 1322 /* implement the mptcp packet scheduler; 1420 /* snd_nxt_new can be smaller than snd_nxt in case mptcp in mptcp_update_post_push() 1630 /* on flags based fastopen the mptcp is supposed to create the in mptcp_sendmsg_fastopen() [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 106 if (!ctx || strcmp(inet_csk(sk)->icsk_ulp_ops->name, "mptcp")) in mptcp_diag_dump_listeners() 248 MODULE_DESCRIPTION("MPTCP socket monitoring via SOCK_DIAG");
|
H A D | token_test.c | 144 .name = "mptcp-token", 151 MODULE_DESCRIPTION("KUnit tests for MPTCP Token");
|
/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 | 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_join.sh | 103 ip netns exec $netns sysctl -q net.mptcp.pm_type=0 2>/dev/null || true 105 ip netns exec $netns sysctl -q net.mptcp.checksum_enabled=1 350 ip netns exec $ns1 sysctl -q net.mptcp.add_addr_timeout=1 370 ip netns exec $ns1 sysctl -q net.mptcp.checksum_enabled=$ns1_enable 371 ip netns exec $ns2 sysctl -q net.mptcp.checksum_enabled=$ns2_enable 383 ip netns exec $ns1 sysctl -q net.mptcp.allow_join_initial_addr_port=$ns1_enable 384 ip netns exec $ns2 sysctl -q net.mptcp.allow_join_initial_addr_port=$ns2_enable 393 # Because the MPTCP checksum, covering the TCP options and data, has not been 395 # what we want to validate here without corrupting "random" MPTCP options. 439 ip netns exec $ns1 sysctl -q net.mptcp.checksum_enabled=1 [all …]
|
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 83 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 | 67 /* MPTCP Reset reason codes, rfc8684 */ 122 /* MPTCP socket options */
|
/linux/Documentation/translations/zh_CN/networking/ |
H A D | index.rst | 93 * mptcp 94 * mptcp-sysctl
|