Re: [multipathtcp] FW: New Version Notification for draft-ford-mptcp-multiaddressed-02

John Leslie <john@jlc.net> Fri, 06 November 2009 14:04 UTC

Return-Path: <john@jlc.net>
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 CEB313A698C for <multipathtcp@core3.amsl.com>; Fri, 6 Nov 2009 06:04:10 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.486
X-Spam-Level:
X-Spam-Status: No, score=-6.486 tagged_above=-999 required=5 tests=[AWL=0.113, BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4]
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 TWuk2VKbPJiO for <multipathtcp@core3.amsl.com>; Fri, 6 Nov 2009 06:04:09 -0800 (PST)
Received: from mailhost.jlc.net (mailhost.jlc.net [199.201.159.9]) by core3.amsl.com (Postfix) with ESMTP id B37823A6863 for <multipathtcp@ietf.org>; Fri, 6 Nov 2009 06:04:09 -0800 (PST)
Received: by mailhost.jlc.net (Postfix, from userid 104) id 3A4F333C8E; Fri, 6 Nov 2009 09:04:28 -0500 (EST)
Date: Fri, 06 Nov 2009 09:04:28 -0500
From: John Leslie <john@jlc.net>
To: Scott Brim <scott.brim@gmail.com>
Message-ID: <20091106140428.GH53843@verdi>
References: <2181C5F19DD0254692452BFF3EAF1D6808B826E2@rsys005a.comm.ad.roke.co.uk> <4AF38B0F.4070106@gmail.com>
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <4AF38B0F.4070106@gmail.com>
User-Agent: Mutt/1.4.1i
Cc: multipathtcp@ietf.org
Subject: Re: [multipathtcp] FW: New Version Notification for draft-ford-mptcp-multiaddressed-02
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: Fri, 06 Nov 2009 14:04:10 -0000

Scott Brim <scott.brim@gmail.com> wrote:
> 
> I'm a control plane kind of person, not a congestion management person,
> so most of these comments are about the protocol itself.

   Good to have someone thinking that far ahead!

>> Questions and discussion very much welcome beforehand too!
> 
>>    o  Do we want a connection identifier in every packet?  E.g. would
>>       make implementation of IDS much easier?
> 
> I think so.  What are the arguments against it?  It deterministically
> avoids the kind of cases that Joe was concerned about.

   'Twould seem to me to complicate the analysis of MPTCP packets that
"look like TCP packets" to existing middleboxes.

   I have no objection to it -- it just feels like something which
deserves to be enabled/disabled with a negotiated option.

> > 4.1 Session Initiation
> 
> Why is there a "multipath capable" option exchange at all?  The question
> is implicit in a "join" option.  If the receiver does not understand the
> "join", it is not multipath-capable, and you fall back.

   From the history of TCP options, it's considered "safe" to use new
option in a SYN, but unsafe to introduce them later without having
negotiated that both ends know what they are (during the SYN exchange).

   Note that although JOIN is on a SYN (and thus "safe"), it's intended
to signal a subflow which may "create" a combination of subflows which
look like a single TCP session to the application. The new subflow
could fail for quite a few different reasons: I'd prefer to disambiguate
the case where the other end doesn't talk MPCTP.

   (There's no actual reason we _need_ two different option numbers,
of course...)

>>    TBD: Instead of an Address ID, are there any cases where a Subflow ID
>>    (i.e. unique to the subflow) would be useful instead?  For example,
>>    two addresses which become NATted to the same address?
> 
> "Remove" is important but there are corner cases under all options I can
> think of.  I'm in favor of just documenting possible rare unintended
> disruptions, and then just specifying "remove".  For example, I could
> see a scenario where A and B are communicating, and A is using address
> 1.1.1.1 which is NATted to 3.3.3.3 by the time a packet reaches B.  A
> loses 1.1.1.1 and switches to 2.2.2.2, but an upstream network helpfully
> NATs to the the same external address, 3.3.3.3, to be helpful to A.  So
> if A loses 1.1.1.1 and sends a "remove" for its ID, unintended
> disruption will occur.

   It may be caffeine deficiency, but I don't follow why the "Address ID"
isn't sufficient to disambiguate this case.

> > 4.3.1.  Adding Addresses
> 
> re "Add Address", I wouldn't bother.  A source cannot know what its
> addresses will look like to a destination, and NATs are here to stay.  A
> NAT on a particular path cannot know what a NAT on a different path will
> do.  Under no conditions should an address for one path be carried as
> payload on another path.  It's important to get layer violations out of
> the control plane.  Instead of promoting a mechanism that _might_ work
> occasionally (and might open security holes??), let's focus on making
> the data plane mechanisms work really well.

   I'm a bit nervous about "Add Address", in that a middlebox might
"helpfully" transform the IPvN address. This feels like a special case
of JOIN where we don't actually want to establish a subflow (perhaps
out of a desire to avoid extra state information or a suspicion that
the MPTCP flow won't last long enough.

   We do have a "chicken/egg" problem though: a pair of JOINs to
introduce new addresses might both fail, whereas a JOIN between the
pair of new addresses would succeed.

   Conversely, it looks too easy to forge source-IP on an "Add Address"
and introduce a security risk.

   I do believe we need a mechanism to announce a new address; I'm not
sure we wouldn't be better off doing it as a special-case of JOIN...

--
John Leslie <john@jlc.net>