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?


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*.

  • Thanks for the comment. I don't like the sound of the middleboxes messing with MPTCP. Can SCTP also have a primary interface and a failover interface defined and switch automatically? – fred basset May 26 '14 at 21:41
  • Yes, it can (not with the base specification but through a protocol extensions most [all?] implementations known to me support). Problem is, this is no perfect world. SCTP faces the same problems regarding uncomprehending middle-boxes and SCTP support is even worse since SCTP is a whole new transport-layer protocol, whereas MPTCP just falls back to plain TCP if its options are stripped. I held a talk about this in the course of my studies, perhaps this helps you. – Andreas Wiese May 26 '14 at 21:53
  • Thanks that is a good article. So if I can configure both endpoints to use MPTCP, will that failover mechanism still work if the middle boxes support TCP and UDP only? – fred basset May 26 '14 at 22:08
  • No, if some middle-box strips the MPTCP options, all you have left is a plain-old (single path) TCP connection. But this is at least something you've left. ;) – Andreas Wiese May 26 '14 at 22:14
  • Thanks for all the answers. Have you tried using MPTCP or SCTP over the public Internet? – fred basset May 26 '14 at 22:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.