xref: /linux/Documentation/networking/mptcp-sysctl.rst (revision bba2c3615bd6cfee7456d1130f2e6b01b3f4e9ba)
1.. SPDX-License-Identifier: GPL-2.0
2
3=====================
4MPTCP Sysfs variables
5=====================
6
7/proc/sys/net/mptcp/* Variables
8===============================
9
10add_addr_timeout - INTEGER (seconds)
11	Set the maximum value of timeout after which an ADD_ADDR control message
12	will be resent to an MPTCP peer that has not acknowledged a previous
13	ADD_ADDR message. A dynamically estimated retransmission timeout based
14	on the estimated connection round-trip-time is used if this value is
15	lower than the maximum one.
16
17	Do not retransmit if set to 0.
18
19	The default value matches TCP_RTO_MAX. This is a per-namespace
20	sysctl.
21
22	Default: 120
23
24add_addr_v6_port_drop_ts - BOOLEAN
25	Control whether preparing an ADD_ADDR with an IPv6 address and a port
26	should drop the TCP timestamps option to have enough option space to
27	send the signal.
28
29	If there is not enough option space, and the TCP timestamps option
30	cannot be dropped, the signal cannot be sent. Note that dropping the TCP
31	timestamps option for one packet of the connection could disrupt some
32	middleboxes: even if it should be unlikely, they could drop the packet
33	or block the connection. This is a per-namespace sysctl.
34
35	Default: 1 (enabled)
36
37allow_join_initial_addr_port - BOOLEAN
38	Allow peers to send join requests to the IP address and port number used
39	by the initial subflow if the value is 1. This controls a flag that is
40	sent to the peer at connection time, and whether such join requests are
41	accepted or denied.
42
43	Joins to addresses advertised with ADD_ADDR are not affected by this
44	value.
45
46	This is a per-namespace sysctl.
47
48	Default: 1
49
50available_path_managers - STRING
51	Shows the available path managers choices that are registered. More
52	path managers may be available, but not loaded.
53
54available_schedulers - STRING
55	Shows the available schedulers choices that are registered. More packet
56	schedulers may be available, but not loaded.
57
58blackhole_timeout - INTEGER (seconds)
59	Initial time period in second to disable MPTCP on active MPTCP sockets
60	when a MPTCP firewall blackhole issue happens. This time period will
61	grow exponentially when more blackhole issues get detected right after
62	MPTCP is re-enabled and will reset to the initial value when the
63	blackhole issue goes away.
64
65	0 to disable the blackhole detection. This is a per-namespace sysctl.
66
67	Default: 3600
68
69checksum_enabled - BOOLEAN
70	Control whether DSS checksum can be enabled.
71
72	DSS checksum can be enabled if the value is nonzero. This is a
73	per-namespace sysctl.
74
75	Default: 0
76
77close_timeout - INTEGER (seconds)
78	Set the make-after-break timeout: in absence of any close or
79	shutdown syscall, MPTCP sockets will maintain the status
80	unchanged for such time, after the last subflow removal, before
81	moving to TCP_CLOSE.
82
83	The default value matches TCP_TIMEWAIT_LEN. This is a per-namespace
84	sysctl.
85
86	Default: 60
87
88enabled - BOOLEAN
89	Control whether MPTCP sockets can be created.
90
91	MPTCP sockets can be created if the value is 1. This is a
92	per-namespace sysctl.
93
94	Default: 1 (enabled)
95
96path_manager - STRING
97	Set the default path manager name to use for each new MPTCP
98	socket. In-kernel path management will control subflow
99	connections and address advertisements according to
100	per-namespace values configured over the MPTCP netlink
101	API. Userspace path management puts per-MPTCP-connection subflow
102	connection decisions and address advertisements under control of
103	a privileged userspace program, at the cost of more netlink
104	traffic to propagate all of the related events and commands.
105
106	This is a per-namespace sysctl.
107
108	* "kernel"          - In-kernel path manager
109	* "userspace"       - Userspace path manager
110
111	Default: "kernel"
112
113pm_type - INTEGER
114	Set the default path manager type to use for each new MPTCP
115	socket. In-kernel path management will control subflow
116	connections and address advertisements according to
117	per-namespace values configured over the MPTCP netlink
118	API. Userspace path management puts per-MPTCP-connection subflow
119	connection decisions and address advertisements under control of
120	a privileged userspace program, at the cost of more netlink
121	traffic to propagate all of the related events and commands.
122
123	This is a per-namespace sysctl.
124
125	Deprecated since v6.15, use path_manager instead.
126
127	* 0 - In-kernel path manager
128	* 1 - Userspace path manager
129
130	Default: 0
131
132scheduler - STRING
133	Select the scheduler of your choice.
134
135	Support for selection of different schedulers. This is a per-namespace
136	sysctl.
137
138	Default: "default"
139
140stale_loss_cnt - INTEGER
141	The number of MPTCP-level retransmission intervals with no traffic and
142	pending outstanding data on a given subflow required to declare it stale.
143	The packet scheduler ignores stale subflows.
144	A low stale_loss_cnt  value allows for fast active-backup switch-over,
145	an high value maximize links utilization on edge scenarios e.g. lossy
146	link with high BER or peer pausing the data processing.
147
148	This is a per-namespace sysctl.
149
150	Default: 4
151
152syn_retrans_before_tcp_fallback - INTEGER
153	The number of SYN + MP_CAPABLE retransmissions before falling back to
154	TCP, i.e. dropping the MPTCP options. In other words, if all the packets
155	are dropped on the way, there will be:
156
157	* The initial SYN with MPTCP support
158	* This number of SYN retransmitted with MPTCP support
159	* The next SYN retransmissions will be without MPTCP support
160
161	0 means the first retransmission will be done without MPTCP options.
162	>= 128 means that all SYN retransmissions will keep the MPTCP options. A
163	lower number might increase false-positive MPTCP blackholes detections.
164	This is a per-namespace sysctl.
165
166	Default: 2
167