Multipath TCP is an extension of TCP that allows a device to make use of multiple interfaces at once to send and receive TCP packets over a single MPTCP connection. More details here: https://www.mptcp.dev/
MPTCP is currenly supported on Linux by Apache, NGINX, Lighthttpd, and is supported and enabled by default by Caddy and Traefik.
It would be good for ferron to also have support for MPTCP, possibly with an opt-in multipath option.
In order to implement support for MPTCP the changes needed are:
- when creating a socket pass
IPPROTO_MPTCP instead of IPPROTO_TCP as the protocol
- if the
socket call returns an error, which means that either MPTCP is not supported by the kernel or disabled, fallback to creating a standard IPPROTO_TCP socket
There already exists a Rust crate that implements this logic for both std::net and tokio::net sockets: https://github.com/gdetal/mptcp-rs
Multipath TCP is an extension of TCP that allows a device to make use of multiple interfaces at once to send and receive TCP packets over a single MPTCP connection. More details here: https://www.mptcp.dev/
MPTCP is currenly supported on Linux by Apache, NGINX, Lighthttpd, and is supported and enabled by default by Caddy and Traefik.
It would be good for ferron to also have support for MPTCP, possibly with an opt-in
multipathoption.In order to implement support for MPTCP the changes needed are:
IPPROTO_MPTCPinstead ofIPPROTO_TCPas the protocolsocketcall returns an error, which means that either MPTCP is not supported by the kernel or disabled, fallback to creating a standardIPPROTO_TCPsocketThere already exists a Rust crate that implements this logic for both
std::netandtokio::netsockets: https://github.com/gdetal/mptcp-rs