Subject: [multipathtcp] thoughts on compatibility mode

From: William Herrin <[email-masked]>
Date: Mon, 9 Nov 2009 10:29:35 -0500

Hi folks,

Some thoughts on compatibility mode and the API for legacy apps that
aren't aware of multipath TCP:

Should probably pick a default behavior but punt the final decision to
the operator. He's the one in a position to know for sure whether
multipath will work OK for a particular system or application.

Should probably have a system default and allow it to be overridden by
an environment variable that the API checks during a socket() call.

MULTIPATHTCP=DISABLED
MULTIPATHTCP=ENABLED
MULTIPATHTCP=COMPATIBILE
MULTIPATHTCP=COMPATIBILETRY
MULTIPATHTCP=COMPATIBILELIE

DISABLED - multipath TCP will not be used, even by applications which
are built to the new API.

ENABLED - multipath TCP will be used by the apps which are built to
the new API. Legacy apps will not attempt multipath TCP.

COMPATIBLE - all PF_INET and PF_INET6 TCP sockets (legacy apps) are
also eligible to use multipath TCP, although binding a specific local
address will implicitly disable it. The API uses the multipath
semantics, so getsockname() and getpeername() return EMULTIPATH and
accept() does not return an IP address in the sockaddr structure.

COMPATIBILETRY - all PF_INET and PF_INET6 TCP sockets are eligible.
accept(), getsockname() and getpeername() will return the address of
the oldest active subflow whose semantics are compatible with the
socket's declared address domain. If there are no such subflows,
COMPATIBILETRY will act like COMPATIBILELIE.

COMPATIBILELIE - all PF_INET and PF_INET6 TCP sockets are eligible.
accept(), getsockname() and getpeername() will return a non-routeable
IANA-assigned address whose meaning is defined as "you asked a
question multipath TCP can't reliably answer."  Then when folks query
google for why "255.255.255.1" shows up in their logs, they'll get a
bunch of documents about multipath TCP and legacy servers.

Regardless of the environment variable setting, apps built to the new
API will use the new API semantics.

Comments? Criticisms?

Regards,
Bill Herrin

-- 
William D. Herrin ................ [email-masked]  [email-masked]
3005 Crane Dr. ...................... Web: <http://bill.herrin.us/>
Falls Church, VA 22042-3004