summaryrefslogtreecommitdiffstats
path: root/man/man8/ip-mptcp.8
blob: 72762f49432ef4a4a8bff20c02932cae2831d17b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
.TH IP\-MPTCP 8 "4 Apr 2020" "iproute2" "Linux"
.SH "NAME"
ip-mptcp \- MPTCP path manager configuration
.SH "SYNOPSIS"
.ad l
.in +8
.ti -8
.B ip
.RI "[ " OPTIONS " ]"
.B mptcp
.RB "{ "
.B endpoint
.RB " | "
.B limits
.RB " | "
.B help
.RB " }"
.sp

.ti -8
.BR "ip mptcp endpoint add "
.IR IFADDR
.RB "[ " port
.IR PORT " ]"
.RB "[ " dev
.IR IFNAME " ]"
.RB "[ " id
.I ID
.RB "] [ "
.I FLAG-LIST
.RB "] "

.ti -8
.BR "ip mptcp endpoint delete id "
.I ID
.RB "[ "
.I IFADDR
.RB "] "

.ti -8
.BR "ip mptcp endpoint change "
.RB "[ " id
.I ID
.RB "] [ "
.IR IFADDR
.RB "] [ " port
.IR PORT " ]"
.RB "CHANGE-OPT"

.ti -8
.BR "ip mptcp endpoint show "
.RB "[ " id
.I ID
.RB "]"

.ti -8
.BR "ip mptcp endpoint flush"

.ti -8
.IR FLAG-LIST " := [ "  FLAG-LIST " ] " FLAG

.ti -8
.IR FLAG " := ["
.B signal
.RB "|"
.B subflow
.RB "|"
.B backup
.RB "|"
.B fullmesh
.RB  "]"

.ti -8
.IR CHANGE-OPT " := ["
.B backup
.RB "|"
.B nobackup
.RB "|"
.B fullmesh
.RB "|"
.B nofullmesh
.RB  "]"

.ti -8
.BR "ip mptcp limits set "
.RB "[ "
.B subflow
.IR SUBFLOW_NR " ]"
.RB "[ "
.B add_addr_accepted
.IR  ADD_ADDR_ACCEPTED_NR " ]"

.ti -8
.BR "ip mptcp limits show"

.ti -8
.BR "ip mptcp monitor"

.SH DESCRIPTION

MPTCP is a transport protocol built on top of TCP that allows TCP
connections to use multiple paths to maximize resource usage and increase
redundancy. The ip-mptcp sub-commands allow configuring several aspects of the
MPTCP path manager, which is in charge of subflows creation:

.P
The
.B endpoint
object specifies the IP addresses that will be used and/or announced for
additional subflows:

.TS
l l.
ip mptcp endpoint add	add new MPTCP endpoint
ip mptcp endpoint delete	delete existing MPTCP endpoint
ip mptcp endpoint show	get existing MPTCP endpoint
ip mptcp endpoint flush	flush all existing MPTCP endpoints
.TE

.TP
.IR IFADDR
An IPv4 or IPv6 address. When used with the
.B delete id
operation, an
.B IFADDR
is only included when the
.B ID
is 0.

.TP
.IR PORT
When a port number is specified, incoming MPTCP subflows for already
established MPTCP sockets will be accepted on the specified port, regardless
the original listener port accepting the first MPTCP subflow and/or
this peer being actually on the client side.

.TP
.IR ID
is a unique numeric identifier for the given endpoint

.TP
.BR signal
The endpoint will be announced/signaled to each peer via an MPTCP ADD_ADDR
sub-option. Upon reception of an ADD_ADDR sub-option, the peer can try to
create additional subflows, see
.BR ADD_ADDR_ACCEPTED_NR.

.TP
.BR subflow
If additional subflow creation is allowed by the MPTCP limits, the MPTCP
path manager will try to create an additional subflow using this endpoint
as the source address after the MPTCP connection is established.

.TP
.BR backup
If this is a
.BR subflow
endpoint, the subflows created using this endpoint will have the backup
flag set during the connection process. This flag instructs the peer to
only send data on a given subflow when all non-backup subflows are
unavailable. This does not affect outgoing data, where subflow priority
is determined by the backup/non-backup flag received from the peer

.TP
.BR fullmesh
If this is a
.BR subflow
endpoint and additional subflow creation is allowed by the MPTCP limits,
the MPTCP path manager will try to create an additional subflow for each
known peer address, using this endpoint as the source address. This will
occur after the MPTCP connection is established. If the peer did not
announce any additional addresses using the MPTCP ADD_ADDR sub-option,
this will behave the same as a plain
.BR subflow
endpoint. When the peer does announce addresses, each received ADD_ADDR
sub-option will trigger creation of an additional subflow to generate a
full mesh topology.

.sp
.PP
The
.B limits
object specifies the constraints for subflow creations:

.TS
l l.
ip mptcp limits show	get current MPTCP subflow creation limits
ip mptcp limits set	change the MPTCP subflow creation limits
.TE

.TP
.IR SUBFLOW_NR
specifies the maximum number of additional subflows allowed for each MPTCP
connection. Additional subflows can be created due to: incoming accepted
ADD_ADDR sub-option, local
.BR subflow
endpoints, additional subflows started by the peer.

.TP
.IR ADD_ADDR_ACCEPTED_NR
specifies the maximum number of incoming ADD_ADDR sub-options accepted for
each MPTCP connection. After receiving the specified number of ADD_ADDR
sub-options, any other incoming one will be ignored for the MPTCP connection
lifetime. When an ADD_ADDR sub-option is accepted and there are no local
.IR fullmesh
endpoints, the MPTCP path manager will try to create a new subflow using the
address in the ADD_ADDR sub-option as the destination address and a source
address determined using local routing resolution
When
.IR fullmesh
endpoints are available, the MPTCP path manager will try to create new subflows
using each
.IR fullmesh
endpoint as a source address and the peer's ADD_ADDR address as the destination.
In both cases the
.IR SUBFLOW_NR
limit is enforced.

.sp
.PP
.B monitor
displays creation and deletion of MPTCP connections as well as addition or removal of remote addresses and subflows.

.SH AUTHOR
Original Manpage by Paolo Abeni <pabeni@redhat.com>