Re: [multipathtcp] Initial ideas for API requirements

Olivier Bonaventure <Olivier.Bonaventure@uclouvain.be> Thu, 12 November 2009 08:10 UTC

Return-Path: <olivier.bonaventure@uclouvain.be>
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 69D0A3A6A40 for <multipathtcp@core3.amsl.com>; Thu, 12 Nov 2009 00:10:21 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level:
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599]
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 uKFa67wJDgae for <multipathtcp@core3.amsl.com>; Thu, 12 Nov 2009 00:10:19 -0800 (PST)
Received: from smtp1.sgsi.ucl.ac.be (smtp.sgsi.ucl.ac.be [130.104.5.67]) by core3.amsl.com (Postfix) with ESMTP id 4961C3A6A24 for <multipathtcp@ietf.org>; Thu, 12 Nov 2009 00:10:19 -0800 (PST)
Received: from mbpobo.local (ip-80-236-231-212.dsl.scarlet.be [80.236.231.212]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: obonaventure@smtp1.sgsi.ucl.ac.be) by smtp1.sgsi.ucl.ac.be (Postfix) with ESMTPSA id 1C7B4E9244; Thu, 12 Nov 2009 09:10:45 +0100 (CET)
X-DKIM: Sendmail DKIM Filter v2.8.2 smtp1.sgsi.ucl.ac.be 1C7B4E9244
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=uclouvain.be; s=selucl; t=1258013445; bh=ClRxeR2aDiaVh8kbdFt+w3CNxTyMqrhoWPTkfV8WhUw=; h=Message-ID:Date:From:Reply-To:MIME-Version:To:CC:Subject: References:In-Reply-To:Content-Type:Content-Transfer-Encoding; b=Iif5SEBfvlGBB6FTAHbKMIgrFj+pjxkp3HydZkfkLB2wKZvoygqgyFBZEZjkB6DW7 +m4dJ2FCQcfItCLATW3wpyXg7WIYXKUgXmQSHOCsw+o2WdxmgXgHEzj6UWVu+XmeoJ DLLRmH2LInyLnz3eKe5+sexPVdHDewsgY/bBGB0Y=
Message-ID: <4AFBC301.5090000@uclouvain.be>
Date: Thu, 12 Nov 2009 09:10:41 +0100
From: Olivier Bonaventure <Olivier.Bonaventure@uclouvain.be>
User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812)
MIME-Version: 1.0
To: "SCHARF, Michael" <Michael.Scharf@alcatel-lucent.com>
References: <133D9897FB9C5E4E9DF2779DC91E947C01B6AD23@SLFSNX.rcs.alcatel-research.de>
In-Reply-To: <133D9897FB9C5E4E9DF2779DC91E947C01B6AD23@SLFSNX.rcs.alcatel-research.de>
X-Enigmail-Version: 0.96.0
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: clamav-milter 0.95.2 at smtp-1.sipr-dc.ucl.ac.be
X-Virus-Status: Clean
X-Sgsi-Spamcheck: SASL authenticated,
X-SGSI-MailScanner-ID: 1C7B4E9244.00000
X-SGSI-MailScanner: Found to be clean
X-SGSI-From: olivier.bonaventure@uclouvain.be
X-SGSI-Spam-Status: No
Cc: multipathtcp@ietf.org
Subject: Re: [multipathtcp] Initial ideas for API requirements
X-BeenThere: multipathtcp@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: Olivier.Bonaventure@uclouvain.be
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: Thu, 12 Nov 2009 08:10:21 -0000

Michael,
> 
> draft-scharf-mptcp-api-00 contains a list of potential requirements on
> the MPTCP API towards application. This list is of course just a
> starting point. Currently, it is certainly not complete and may also
> include requirements that will be removed in later stage, once the MPTCP
> architecture spec evolves.


I am frightened by the long list of requirements and I fear that this
would make the API far too complex. The layering principle tells us that
we need to hide some of the details of the underlying layer to the upper
layer and experience should that this works well in practice.

To take an analogy, let's look at how the socket API evolved with
changes in TCP such as the introduction of congestion control, the fats
retransmit, the selective acks, timers computations, ... All of these
mechanisms have changed the behaviour of the TCP stack and its reaction
against losses but we never had to update the API to reflect this.

>    REQ1:   Turn on/off MPTCP: An application should be able to request
>            to turn on or turn off the usage of MPTCP.  This means that
>            an application should be able to explicitly request the use
>            of MPTCP if this is possible.  Applications should also be
>            able to request not to enable MPTCP and to use regular TCP
>            transport instead.  (This can be implicit in many cases,
>            e.g., by the use of binding to a specific address versus all
>            addresses).

I would love to have a higher layer API where the application indicates
that it needs a reliable delivery and the stack chooses the most
appropriate transport protocol (tcp, sctp, mtcp, ...) automatically.
This would allow the application and the transport to evolve independently.


>    REQ2:   An application will want to be able to restrict MPTCP to
>            binding to a given set of addresses or interfaces.

why ?

>    REQ3:   An application should be able to know if multiple subflows
>            are in use.

why ? today's application do not ask whether there have been retransmissions

>    REQ4:   An application should be able to extract a unique identifier
>            for the connection (per endpoint), analogous to a port, i.e.
>            it should be able to retrieve MPTCP's connection identifier.

this looks reasonable

>    REQ5:   An application should be able to enumerate all subflows in
>            use, obtain information on the addresses used by a subflow,
>            and obtain a subflow's usage (e.g., ratio of traffic sent via
>            this subflow).

why ? today's application do not ask whether there have been retransmissions

>    REQ6:   Set/get application profile, as discussed in the previous
>            section.

remember that for intserv we almost never managed to have application
developers define their QoS requirements

>    REQ7:   Constrain the maximum number of subflows to be used by an
>            MPTCP connection.  (Or just infer from application profile?)

the stack should do this automatically

>    REQ8:   Request a change in scheduling between subflows? (i.e. a more
>            granular version of application profile?)

why ? today's applications do not set for example the MSS to be used

>    REQ9:   Request a change in the number of subflows in use, thus
>            triggering removal or addition of subflows.  (A finer control
>            granularity would be: Request the establishment of a new
>            subflow to a provided destination, and request the
>            termination of a specified, existing subflow.)

this is the job of the tcp implementation, not the application

>    REQ10:  Control automatic establishment/termination of subflows?
>            There could be different configurations of the path manager,
>            e.g., 'try ASAP', 'wait until there is a bunch of data, etc.
>            (Tied to application profile?)

i don't see why an application should want to do this

>    REQ11:  Set/get preferred subflows or subflow usage policies?  There
>            could be different configurations of the multipath scheduler,
>            e.g., 'all-or-nothing', 'overflow', etc.  (Again, tied to
>            application profile).
> 
>    REQ12:  Set/get sporadic sending of segments on unused paths
>            ("keepalives").

no

>    REQ13:  An application should be able to modify the MPTCP
>            configuration while communication is ongoing, i.e., after
>            establishment of the MPTCP connection.

we should have as few mptcp configuration as possible, otherwise pmtcp
will be too complex for the application developers



Olivier

-- 
http://inl.info.ucl.ac.be , UCLouvain, Belgium