Linux – How configurable is MPTCP

embeddedlinuxmodemnetworking

I work on embedded Linux devices that usually have hard wired Ethernet as well as cell modem connections. If I were to use MPTCP would it be possible to easily configure the system to use eth0 all the time if it's available, then fall back to ppp0 if eth0 is down?

Also would such a handoff be transparent to the network application using the socket?

Best Answer

The plain protocol is specifically designed to do what you request. With MPTCP you can

  • establish a connection to your peer
  • tell the peer your available endpoints (like IP address of ppp0 and eth0)
  • from this point all negotiated paths can be used, but you also can define one link as active and the others as fallback

If one of your paths fails, MPTCP will enable you to transparently fail-over to another known path (your peer needs to be aware of this path, of course). If your prior failed path becomes available again, you can switch back. If you addresses change in between, you can tell your peer it happened, as long as one usable path stays available (since you'll need a channel to communicate the change).

But you'll have to keep in mind that this only works if not only your client but also

  • your remote peer needs to support MPTCP
  • all intermediate routers/gateways on your path need to keep their hands off your MPTCP TCP-options (at least many plastic routers like "customer-class" ADSL routers etc. are known to strip TCP options they don't understand).

In a perfect world, we'd all be using SCTP, *sigh*.

Related Question