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