Re: [multipathtcp] Multipath deployment and fate sharing

Iljitsch van Beijnum <iljitsch@muada.com> Mon, 14 December 2009 20:11 UTC

Return-Path: <iljitsch@muada.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 54E473A6919 for <multipathtcp@core3.amsl.com>; Mon, 14 Dec 2009 12:11:05 -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 qk2nV1+dmyqc for <multipathtcp@core3.amsl.com>; Mon, 14 Dec 2009 12:11:02 -0800 (PST)
Received: from sequoia.muada.com (unknown [IPv6:2001:1af8:2:5::2]) by core3.amsl.com (Postfix) with ESMTP id 3A6A43A68C4 for <multipathtcp@ietf.org>; Mon, 14 Dec 2009 12:11:02 -0800 (PST)
Received: from [192.168.2.11] (static-167-138-7-89.ipcom.comunitel.net [89.7.138.167] (may be forged)) (authenticated bits=0) by sequoia.muada.com (8.13.3/8.13.3) with ESMTP id nBEKAC6B041340 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Mon, 14 Dec 2009 21:10:13 +0100 (CET) (envelope-from iljitsch@muada.com)
Mime-Version: 1.0 (Apple Message framework v1077)
Content-Type: text/plain; charset="us-ascii"
From: Iljitsch van Beijnum <iljitsch@muada.com>
In-Reply-To: <4B26782D.9080907@isi.edu>
Date: Mon, 14 Dec 2009 21:10:40 +0100
Content-Transfer-Encoding: quoted-printable
Message-Id: <24F138C7-6176-479F-957A-D0CF13FAC15D@muada.com>
References: <E9EE0C1A-C9D3-4EBC-97FD-E1B1628CD2E7@iki.fi> <E03D46E1-51EA-4273-A8A7-4F37F88B2E92@iki.fi> <20091123.092214.140617438.nishida@sfc.wide.ad.jp> <48DA092B-F3BC-432E-A199-B265DDED39DA@iki.fi> <3c3e3fca0911240434p4d95ec7an34615ae218faa4f@mail.gmail.com> <C622F375-EE67-46AE-AC28-6617CFEF6D12@lurchi.franken.de> <BF345F63074F8040B58C00A186FCA57F1C65FB29B9@NALASEXMB04.na.qualcomm.com> <4B0C607A.6060503@isi.edu> <BF345F63074F8040B58C00A186FCA57F1C65FB29C0@NALASEXMB04.na.qualcomm.com> <4B0C6590.9010000@isi.edu> <BF345F63074F8040B58C00A186FCA57F1C65FB29C6@NALASEXMB04.na.qualcomm.com> <4B0C6C13.2060103@isi.edu> <BF345F63074F8040B58C00A186FCA57F1C65FB29CB@NALASEXMB04.na.qualcomm.com> <4B0C6FBE.40003@isi.edu> <alpine.DEB.2.00.0911250211520.23603@ayourtch-lnx.stdio.be> <alpine.DEB.2.00.0911250428590.23603@ayourtch-lnx.stdio.be> <BE063B0C-BB34-4C75-A57E-1BAB0BE6780A@cs.ucl.ac.uk> <4B0D52D5.9090403@isi.edu> <58B2A4B2-F276-4E96-87FB-F8273FD78ED0@muada.com> <4B26782D.9080907@isi.ed! u>
To: Joe Touch <touch@ISI.EDU>
X-Mailer: Apple Mail (2.1077)
Cc: "multipathtcp@ietf.org List" <multipathtcp@ietf.org>
Subject: Re: [multipathtcp] Multipath deployment and fate sharing
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, 14 Dec 2009 20:11:05 -0000

On 14 dec 2009, at 18:38, Joe Touch wrote:

> DHCP assignments shouldn't override explicit interface actions.

If you (as a TCP session) want to go down when the interface the address that you're bound to belongs to goes down, that is your choice. However, that is not current reality. First of all, there is no unambiguous up/down dichotomy for interfaces, and second, on many systems (FreeBSD, MacOS) TCP sessions will happily stick around when an interface is really, truly down, even to the degree that the address has been removed. (This is really nice because then the session is still there when the interface comes back up again.)

The point is the authority to use an address. If a DHCP server gives me a valid lifetime of 7200 seconds I get to use the address for two hours. Interface state has nothing to do with that. (How would the DHCP server know my interface is down? Or how would a router know the interface I configured from its RA is down?)

> IMO, you need to make the assumption that causes the least amount of
> chnage to existing apps. I understand why you want to call this TCP and
> use TCP's protocol number, but that comes with this cost.

I don't accept that requirement.

In the IETF, we get to change things. Even to the degree that the new instance does things that diverge significantly from the old instance. We do need to be prudent and cause the least possible amount of harm, but there is no requirement to stick to arbitrary old ways of doing things just because.

>> However, we can deduce that applications care if they bind to a
>> specific address, or look up the address tied to the remote end of an
>> incoming session. If neither happens subflows can continue without trouble.

> Not sure this is sufficient. You can bind to a set of addresses (or
> ANY), and still care that the IP address doesn't change (e.g., in-band
> info can be IP-address specific, such as access control, etc.).

Yes, when you bind to an address you care. If you don't bind to an address (but ANY instead) apparently you don't care.

>> Another class of applications is those that care about the addresses,
>> but are not bothered by change. For instance, I may log that I'm talking
>> to 192.0.2.1 but then when that address goes down and communication
>> continues using 10.0.0.1, I simply log the address addition/change and
>> all is well.

> This presumes that you know the purpose of a log. If the log is just
> informational, the above may be true. But if the log is used to verify
> access, or to coordinate future responses, just knowing it's logged to a
> file isn't sufficient.

Well, these are applications that need to know about multiaddressing/multipath anyway, so presumably these apps know whether they just need logging or they need more.

>> - mechanism to indicate that a session is bound to an address

> I think you need the negative of this, i.e., to find out whether a
> session is NOT bound to an address, that can respond, YES, NO, or DON'T
> KNOW (which should behave like YES).

Ok, I can go along with that at this point.

>> - mechanism to indicate that an address has been removed
>> - mechanism to indicate "no address agility" (default = agility)

> As above, default = no agility.

Can we narrow down our differences to just this one?

>> - mechanism to indicate "no MPTCP" (default = MPTCP)

> Under what conditions would you want to set "no MPTCP"?

Not sure if there is a large class of conditions that is incompatible with MPTCP, the only thing I can think of is speed tests. But as long as we're adding API calls we may as well err on the side of adding more than on the side of adding fewer, as the marginal cost of the extra ones is near-zero and the cost of producing and implementing an update are huge.

> See RFC1122 Sec 3.3.4.3, which explicitly ties the transport selection
> of a source address to an address selected based on the state of the
> interface. I.e., your assertion changes an existing standard.

I can live with that.

By the way, about the protocol number: is that relevant? If two ends, including the applications on both sides, agree on different semantics, why would it be necessary to use a different protocol number?