/linux-6.14.4/Documentation/networking/ |
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 …]
|
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 38 Initial time period in second to disable MPTCP on active MPTCP sockets 39 when a MPTCP firewall blackhole issue happens. This time period will 41 MPTCP is re-enabled and will reset to the initial value when the 58 shutdown syscall, MPTCP sockets will maintain the status 68 Control whether MPTCP sockets can be created. 70 MPTCP sockets can be created if the value is 1. This is a 76 Set the default path manager type to use for each new MPTCP [all …]
|
D | index.rst | 78 mptcp 79 mptcp-sysctl
|
/linux-6.14.4/net/mptcp/ |
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.
|
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 …]
|
D | ctrl.c | 17 #define MPTCP_SYSCTL_PATH "net/mptcp" 318 /* The following code block is to deal with middle box issues with MPTCP, 320 * The proposed solution is to disable active MPTCP globally when SYN+MPC are 321 * dropped, while SYN without MPC aren't. In this case, active side MPTCP is 324 * The timeout is reset back to 1hr when a successful active MPTCP connection is 328 /* Disable active MPTCP and record current jiffies and active_disable_times */ 351 /* Calculate timeout for MPTCP active disable 352 * Return true if we are still in the active MPTCP disable period 353 * Return false if timeout already expired and we should use active MPTCP 387 /* Enable active MPTCP and reset active_disable_times if needed */ [all …]
|
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 TCPRST flags */ [all …]
|
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.
|
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");
|
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 \
|
D | mib.c | 5 #include <net/mptcp.h> 87 * These are allocated when the first mptcp socket is created so 88 * we do not waste percpu memory if mptcp isn't in use.
|
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() 606 /* It looks like MPTCP is blocked, while TCP is not */ in subflow_finish_connect() 840 * which may not carry the MP_CAPABLE opt even on mptcp enabled in subflow_syn_recv_sock() 869 * to reset the context to non MPTCP status. in subflow_syn_recv_sock() 1278 /* sched mptcp worker to remove the subflow if no more data is pending */ 1437 /* If ssk has an mptcp parent socket, use the mptcp rcvbuf occupancy, [all …]
|
D | mib.h | 17 MPTCP_MIB_RETRANSSEGS, /* Segments retransmitted at the MPTCP-level */ 40 MPTCP_MIB_NODSSWINDOW, /* Segments not in MPTCP windows */ 81 MPTCP_MIB_CURRESTAB, /* Current established MPTCP connections */
|
D | protocol.c | 7 #define pr_fmt(fmt) "MPTCP: " fmt 22 #include <net/mptcp.h> 30 #include <trace/events/mptcp.h> 207 * - use mptcp seqs 683 /* Under fallback skbs have no MPTCP extension and TCP could in __mptcp_move_skbs_from_subflow() 822 /* In most cases we will be able to lock the mptcp socket. If its already 974 /* can collapse only if MPTCP level sequence is in order and this in mptcp_skb_can_collapse_to() 1422 /* implement the mptcp packet scheduler; 1520 /* snd_nxt_new can be smaller than snd_nxt in case mptcp in mptcp_update_post_push() 1730 /* on flags based fastopen the mptcp is supposed to create the in mptcp_sendmsg_fastopen() [all …]
|
/linux-6.14.4/Documentation/netlink/specs/ |
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-6.14.4/include/net/ |
D | rstreason.h | 6 #include <uapi/linux/mptcp.h> 39 * The reasons of sk reset, which are used in DCCP/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
|
D | mptcp.h | 19 /* MPTCP sk_buff extension data */ 189 /* MPTCP always clears the ext when adding it to the skb, so in mptcp_ext_matches() 198 * MPTCP collapse is allowed if neither @to or @from carry an mptcp data
|
/linux-6.14.4/tools/testing/selftests/net/mptcp/ |
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 260 print_larger_title "New MPTCP socket can be blocked via sysctl" 263 if ! ip netns exec ${disabled_ns} sysctl net.mptcp >/dev/null; then 264 mptcp_lib_pr_fail "not able to list net.mptcp sysctl knobs" 265 mptcp_lib_result_fail "not able to list net.mptcp sysctl knobs" 270 # net.mptcp.enabled should be enabled by default 271 if [ "$(ip netns exec ${disabled_ns} sysctl net.mptcp.enabled | awk '{ print $3 }')" -ne 1 ]; then 272 mptcp_lib_pr_fail "net.mptcp.enabled sysctl is not 1 by default" 273 mptcp_lib_result_fail "net.mptcp.enabled sysctl is not 1 by default" [all …]
|
D | mptcp_lib.sh | 160 if ! mptcp_lib_has_file "/proc/sys/net/mptcp/enabled"; then 161 mptcp_lib_pr_skip "MPTCP support is not available" 451 if ! ss -h | grep -q MPTCP; then 452 mptcp_lib_pr_skip "ss tool does not support MPTCP" 478 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 …]
|
D | mptcp_join.sh | 102 ip netns exec $netns sysctl -q net.mptcp.pm_type=0 2>/dev/null || true 104 ip netns exec $netns sysctl -q net.mptcp.checksum_enabled=1 349 ip netns exec $ns1 sysctl -q net.mptcp.add_addr_timeout=1 369 ip netns exec $ns1 sysctl -q net.mptcp.checksum_enabled=$ns1_enable 370 ip netns exec $ns2 sysctl -q net.mptcp.checksum_enabled=$ns2_enable 382 ip netns exec $ns1 sysctl -q net.mptcp.allow_join_initial_addr_port=$ns1_enable 383 ip netns exec $ns2 sysctl -q net.mptcp.allow_join_initial_addr_port=$ns2_enable 392 # Because the MPTCP checksum, covering the TCP options and data, has not been 394 # what we want to validate here without corrupting "random" MPTCP options. 438 ip netns exec $ns1 sysctl -q net.mptcp.checksum_enabled=1 [all …]
|
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}
|
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 122 ip netns exec "$i" sysctl -q net.mptcp.pm_type=1 147 # the MPTCP client and server 181 ./mptcp_connect -s MPTCP -w 300 -p $app_port -l $listen_addr > /dev/null 2>&1 & 188 ./mptcp_connect -s MPTCP -w 300 -m sendfile -p $app_port $connect_addr\ 193 # Capture client/server attributes from MPTCP connection netlink events 207 print_test "Established IP${is_v6} MPTCP Connection ns2 => ns1"
|
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-6.14.4/tools/testing/selftests/bpf/prog_tests/ |
D | mptcp.c | 194 cgroup_fd = test__join_cgroup("/mptcp"); in test_base() 202 /* without MPTCP */ in test_base() 212 /* with MPTCP */ in test_base() 217 ASSERT_OK(run_test(cgroup_fd, server_fd, true), "run_test mptcp"); in test_base() 245 if (!ASSERT_EQ(protocol, IPPROTO_MPTCP, "protocol isn't MPTCP")) in verify_mptcpify() 256 "MPTCP fallback")) in verify_mptcpify() 280 /* without MPTCP */ in run_mptcpify() 332 if (SYS_NOFAIL("ip -net %s mptcp endpoint add %s %s", NS_TEST, ADDR_2, flags)) { in endpoint_init() 333 printf("'ip mptcp' not supported, skip this test.\n"); in endpoint_init()
|
/linux-6.14.4/include/uapi/linux/ |
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.
|