[multipathtcp] thoughts on compatibility mode

William Herrin <bill@herrin.us> Mon, 09 November 2009 15:29 UTC

Return-Path: <wherrin@gmail.com>
X-Original-To: multipathtcp@core3.amsl.com
Delivered-To: multipathtcp@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id A89EA3A69A1 for <multipathtcp@core3.amsl.com>; Mon, 9 Nov 2009 07:29:15 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.977
X-Spam-Level:
X-Spam-Status: No, score=-1.977 tagged_above=-999 required=5 tests=[AWL=0.000, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 7bifZt5aHuMv for <multipathtcp@core3.amsl.com>; Mon, 9 Nov 2009 07:29:14 -0800 (PST)
Received: from mail-ew0-f207.google.com (mail-ew0-f207.google.com [209.85.219.207]) by core3.amsl.com (Postfix) with ESMTP id 7E94F3A692E for <multipathtcp@ietf.org>; Mon, 9 Nov 2009 07:29:14 -0800 (PST)
Received: by ewy3 with SMTP id 3so3215703ewy.37 for <multipathtcp@ietf.org>; Mon, 09 Nov 2009 07:29:36 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:received:date :x-google-sender-auth:message-id:subject:from:to:content-type; bh=l75p4hwDEXIOyr/sO9v7q+VZBHTJgpFR7RY8/20xktc=; b=pdj5k1zIfofri903PUfhJwtnTzQxqiMroTXeLncP9oj5JkutNKkNWam7sdaVH7C8zH EWSFLHZMf8BYBWtVdYrvgf+8NUNrfo9w0FLCHgoMaiSx4gzvcorQtAF6tleU6K0ItOPL 8R3Yte9dA62Cd4z+LBEy7ptVO7jB5upOEGPAw=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:date:x-google-sender-auth:message-id:subject :from:to:content-type; b=HpoWP86d0t+ZHKgIa+ziFWHx/Rdf4HKgccsm4evRk0OUMpP1hfskfCPjgDYwsYhZtB ytinVW+mB0CKI2Mxe8SK9S88G2V/GQSLilUTN8FHKDTzxuHF63ECfV3+BEyRLqGqzxZ0 FYWXJbjh6sWiAwspUqOv/lD7CEGtIYxOE5exM=
MIME-Version: 1.0
Sender: wherrin@gmail.com
Received: by 10.216.89.8 with SMTP id b8mr996393wef.180.1257780575864; Mon, 09 Nov 2009 07:29:35 -0800 (PST)
Date: Mon, 09 Nov 2009 10:29:35 -0500
X-Google-Sender-Auth: 1d554b8fbb8617a8
Message-ID: <3c3e3fca0911090729x6cc32fcds4e656bc677a4856c@mail.gmail.com>
From: William Herrin <bill@herrin.us>
To: multipathtcp@ietf.org
Content-Type: text/plain; charset="ISO-8859-1"
Subject: [multipathtcp] thoughts on compatibility mode
X-BeenThere: multipathtcp@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Multi-path extensions for TCP <multipathtcp.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/multipathtcp>, <mailto:multipathtcp-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/multipathtcp>
List-Post: <mailto:multipathtcp@ietf.org>
List-Help: <mailto:multipathtcp-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/multipathtcp>, <mailto:multipathtcp-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 09 Nov 2009 15:29:15 -0000

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 ................ herrin@dirtside.com  bill@herrin.us
3005 Crane Dr. ...................... Web: <http://bill.herrin.us/>
Falls Church, VA 22042-3004