Skip to content

Add support for Multipath TCP (MPTCP) #619

@dariost

Description

@dariost

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions