www.LinuxHowtos.org
IP-MPTCP
Section: Linux (8)Updated: 4 Apr 2020
Index Return to Main Contents
NAME
i-mptcp - MPTCP path manager configurationSYNOPSIS
ip [ OPTIONS ] mptcp { endpoint | limits | help }
ip mptcp endpoint add
IFADDR
[ port
PORT ]
[ dev
IFNAME ]
[ id
ID
] [
FLA-LIST
]
ip mptcp endpoint delete id
ID
[
IFADDR
]
ip mptcp endpoint change
[ id
ID
] [
IFADDR
] [ port
PORT ]
CHANG-OPT
ip mptcp endpoint show
[ id
ID
]
ip mptcp endpoint flush
FLA-LIST := [ FLA-LIST ] FLAG
FLAG := [
signal
|
subflow
|
backup
|
fullmesh
]
CHANG-OPT := [
backup
|
nobackup
|
fullmesh
|
nofullmesh
]
ip mptcp limits set
[
subflow
SUBFLOW_NR ]
[
add_addr_accepted
ADD_ADDR_ACCEPTED_NR ]
ip mptcp limits show
ip mptcp monitor
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 i-mptcp su-commands allow configuring several aspects of the MPTCP path manager, which is in charge of subflows creation:
The endpoint object specifies the IP addresses that will be used and/or announced for additional subflows:
| 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 |
- IFADDR
-
An IPv4 or IPv6 address. When used with the
delete id
operation, an
IFADDR
is only included when the
ID
is 0.
- 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. This option has to be used in
combination with the
signal
flag.
- IFNAME
-
is the network interface name attached to the endpoint. It is important to
specify this device name linked to the address to make sure the system knows how
to route packets from the specified IP address to the correct network interface.
Without this, it might be required to add IP rules and routes to have the
expected behavior.
- ID
-
is a unique numeric identifier, between 0 and 255, for the given endpoint. It is
not possible to add endpoints with ID 0, because this special ID is reserved for
the initial subflow. For rules linked to the initial subflow, the pat-manager
will look at endpoints matching the same address, and port if set, ignoring the
ID.
- signal
-
The endpoint will be announced/signaled to each peer via an MPTCP ADD_ADDR
su-option. Typically, a server would be responsible for this. Upon reception of
an ADD_ADDR su-option, the other peer, typically the client side, can try to
create additional subflows, see
ADD_ADDR_ACCEPTED_NR.
- 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. A client would
typically do this.
- backup
-
If this is a
subflow
endpoint, the subflows created using this endpoint will have the backup
flag set during the connection process. This flag instructs the remote
peer to only send data on a given subflow when all no-backup subflows
are unavailable. When using the default packet scheduler with a 'backup'
endpoint, outgoing data from the local peer is also affected: packets
will only be sent from this endpoint when all no-backup subflows are
unavailable.
- fullmesh
-
If this is a
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 su-option,
this will behave the same as a plain
subflow
endpoint. When the peer does announce addresses, each received ADD_ADDR
su-option will trigger creation of an additional subflow to generate a
full mesh topology. This
fullmesh
flag should always be used in combination with the
subflow
one to be useful, except for the address used by the initial subflow,
where
subflow
is then optional.
- implicit
-
In some scenarios, an MPTCP
subflow
can use a local address mapped by a implicit endpoint created by the
i-kernel path manager. Once set, the implicit flag cannot be removed, but
other flags can be added to the endpoint. Implicit endpoints cannot be
created from use-space.
The limits object specifies the constraints for subflow creations:
| ip mptcp limits show | get current MPTCP subflow creation limits |
| ip mptcp limits set | change the MPTCP subflow creation limits |
- 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 su-option, local
subflow
endpoints, additional subflows started by the peer.
- ADD_ADDR_ACCEPTED_NR
-
specifies the maximum number of incoming ADD_ADDR su-options accepted for
each MPTCP connection. After receiving the specified number of ADD_ADDR
su-options, any other incoming one will be ignored for the MPTCP connection
lifetime. When an ADD_ADDR su-option is accepted and there are no local
fullmesh
endpoints, the MPTCP path manager will try to create a new subflow using the
address in the ADD_ADDR su-option as the destination address and a source
address determined using local routing resolution
When
fullmesh
endpoints are available, the MPTCP path manager will try to create new subflows
using each
fullmesh
endpoint as a source address and the peer's ADD_ADDR address as the destination.
In both cases the
SUBFLOW_NR
limit is enforced.
monitor displays creation and deletion of MPTCP connections as well as addition or removal of remote addresses and subflows.
AUTHOR
Original Manpage by Paolo Abeni <pabeni@redhat.com>