[tae] Transport negotiation
Bryan Ford <baford@mpi-sws.org> Tue, 25 November 2008 22:32 UTC
Return-Path: <tae-bounces@ietf.org>
X-Original-To: tae-archive@ietf.org
Delivered-To: ietfarch-tae-archive@core3.amsl.com
Received: from [127.0.0.1] (localhost [127.0.0.1])
by core3.amsl.com (Postfix) with ESMTP id 3AF1428C1D5;
Tue, 25 Nov 2008 14:32:53 -0800 (PST)
X-Original-To: tae@core3.amsl.com
Delivered-To: tae@core3.amsl.com
Received: from localhost (localhost [127.0.0.1])
by core3.amsl.com (Postfix) with ESMTP id 0107428C1D5;
Tue, 25 Nov 2008 14:32:52 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.394
X-Spam-Level:
X-Spam-Status: No, score=-5.394 tagged_above=-999 required=5 tests=[AWL=0.255,
BAYES_00=-2.599, HELO_EQ_DE=0.35, J_CHICKENPOX_23=0.6,
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 CSStXFuMJqnZ; Tue, 25 Nov 2008 14:32:51 -0800 (PST)
Received: from hera.mpi-sb.mpg.de (hera.mpi-sb.mpg.de [139.19.1.49])
by core3.amsl.com (Postfix) with ESMTP id A3C2728C1C7;
Tue, 25 Nov 2008 14:32:50 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=mpi-sb.mpg.de; s=mail200803; h=Message-Id:From:To:Content-Type:
Content-Transfer-Encoding:Mime-Version:Subject:Date:Cc; bh=R4G+R
HNSMmSU8cVTDeBtQWYR7O8e+iMBbLaklQFmt3Q=; b=fE05ypnwvafG+SCddBuY1
X1irnHyATC4EXDl1eTwLO7M0NCAGoEIDdHFX1hmqMe4tHBO9nOfMVNOSqgC/N5Rf
xNoT5P+sPOvIUGJ6OJmZw726lP+jdQdTBPbH8jl4lQsxTJnWBwKx/HGwmWfhw+44
zu+IqJM+I8PD1UY6b8dw2I=
Received: from swsao0808.mpi-sb.mpg.de ([139.19.1.27]:49882
helo=tentacle.mpi-sb.mpg.de)
by hera.mpi-sb.mpg.de (envelope-from <baford@mpi-sws.org>)
with esmtp (Exim 4.69) id 1L56SZ-0003RC-Es;
Tue, 25 Nov 2008 23:32:46 +0100
Received: from p54a59f6d.dip0.t-ipconnect.de ([84.165.159.109]:49470
helo=[192.168.178.36]) by tentacle.mpi-sb.mpg.de with esmtpsa
(TLS-1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.63)
(envelope-from <baford@mpi-sws.org>)
id 1L56SY-0001t6-U1; Tue, 25 Nov 2008 23:32:43 +0100
Message-Id: <3BB334D8-B00C-48C1-ACBF-4D09576DEADF@mpi-sws.org>
From: Bryan Ford <baford@mpi-sws.org>
To: Joe Touch <touch@ISI.EDU>
Mime-Version: 1.0 (Apple Message framework v929.2)
Date: Tue, 25 Nov 2008 23:32:41 +0100
X-Mailer: Apple Mail (2.929.2)
Cc: tae@ietf.org, tsv-area@ietf.org
Subject: [tae] Transport negotiation
X-BeenThere: tae@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Transport Architecture Evolution <tae.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/tae>,
<mailto:tae-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/pipermail/tae>
List-Post: <mailto:tae@ietf.org>
List-Help: <mailto:tae-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tae>,
<mailto:tae-request@ietf.org?subject=subscribe>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"; DelSp="yes"
Sender: tae-bounces@ietf.org
Errors-To: tae-bounces@ietf.org
Hi Joe, I wanted to follow up with you on your comment during my TSVAREA presentation, about using DNS as a mechanism for negotiation among multiple transports an application may support, since we didn't manage to hook up in person afterwards in Minneapolis. (Note that I'm cc'ing this to a couple relevant lists.) As I said during the presentation, philosophically I agree that DNS might in theory serve as a reasonable point in the architecture to negotiate among multiple transports. I can see four specific practical issues with this approach, however: 1. Such negotiation would only work when DNS is used to resolve a target endpoint; transport negotiation would be impossible (or would have to use a different mechanism) if the user enters a URL into a web browser containing a raw IP address, for example, or a cryptographic HIP endpoint, or a name in some other naming system. In an ideal world where all relevant naming systems support transport negotiation and users and applications never see or care about IP addresses directly, this limitation might not be a problem, but it feels to me like we're still a long way from living in that ideal world. 2. Transport negotiation via (at least the current) DNS would inherently have to be an operation driven exclusively by the client, in which the server is merely a passive participant. That is, the server first passively publishes some DNS information about alternative transports it is making available, and to initiate a connection, the client looks over this DNS information and decides which transport to use: by the time the server gets involved in the setup of any particular connection, it is already too late for the server to have any say in the decision. For whatever it may be worth, an "online" transport negotiation mechanism like the one I suggested would allow both the client and the server to be involved: e.g., the client sends a "Meta-SYN" listing the transports it supports in preference order, and the server picks the first one it supports - or the one the server most prefers, if the server wishes to override the client's preference order. Not to say that any particular negotiation mechanism is necessarily the "right" one - these are just examples - but allowing for online negotiation seems to provide more flexibility for servers than just passively publishing information in DNS records. 3. There may be a robustness or at least "user annoyance" issue with a DNS-based solution if it is used to negotiate among "traditional" transports that operate directly atop IP. Suppose the server claims via DNS to support both SCTP and TCP. The client sees this DNS information, picks SCTP, and tries to initiate an SCTP connection, but it turns out some firewall or NAT in the path doesn't support SCTP so the connection gets silently black-holed. In the worst case, the connection fails even though TCP would have succeeded, because the DNS information only represents the server's capabilities and not the network's. Alternatively, the client tries each mutually supported transport sequentially in preference order, in which the user has to wait for SCTP to time out before the client falls back to TCP - a slightly better scenario, but still seriously problematic in practice; see Stuart Cheshire's presentation in the IETF 72 plenary (http://www.ietf.org/proceedings/08jul/slides/plenaryw-6.pdf ) for related issues arising from IPv4 versus IPv6 negotiation. If the client takes the "safe" approach of just shotgunning the server with parallel connections via all mutually supported transports, we're back to the same efficiency troubles we have now even without any DNS- based "negotiation" mechanism. 4. We haven't yet talked about precisely _how_ a DNS-based mechanism would handle transport negotiation. As it turns out, the current DNS SRV mechanism of RFC 2872 is precisely wrong for this purpose, because it embeds the transport name (e.g., '_tcp' or '_udp') in the name to be looked up rather than in the information returned from the DNS lookup. So if the client wants to see if the server supports each of N alternative transports, it has to make N separate DNS requests. Multiply N by 2 for the forseeable future, since in practice most dual- stack clients will need to check for both A and AAAA records (again see Cheshire's IETF 72 plenary talk). And this is even before the considerations from issue #3 above force the client to try several different transport connection requests in parallel. Granted, this issue could be fixed by defining a new (and incompatible) DNS SRV record type that includes only the service in the name and a list of supported transports in the (single) response, possibly with a separate (IP address or host name, port number) tuple for each - but then we start worrying about the effective size limitats of DNS responses... None of this is to say that we should necessarily dismiss DNS-based transport negotiation; I just wanted to try to analyze some of the challenges involved in that approach. Your further thoughts on this issue would of course be very welcome. Cheers, Bryan _______________________________________________ tae mailing list tae@ietf.org https://www.ietf.org/mailman/listinfo/tae
- [tae] Transport negotiation Bryan Ford
- Re: [tae] Transport negotiation Joe Touch
- Re: [tae] Transport negotiation Janardhan Iyengar
- Re: [tae] Transport negotiation Joe Touch
- Re: [tae] [tsv-area] Transport negotiation Joe Touch
- Re: [tae] [tsv-area] Transport negotiation Lloyd Wood
- Re: [tae] [tsv-area] Transport negotiation Lloyd Wood
- Re: [tae] [tsv-area] Transport negotiation Iljitsch van Beijnum
- Re: [tae] [tsv-area] Transport negotiation Stuart Cheshire
- Re: [tae] [tsv-area] Transport negotiation james woodyatt
- Re: [tae] [tsv-area] Transport negotiation Joe Touch
- Re: [tae] [tsv-area] Transport negotiation james woodyatt
- Re: [tae] [tsv-area] Transport negotiation Iljitsch van Beijnum
- Re: [tae] [tsv-area] Transport negotiation james woodyatt
- Re: [tae] [tsv-area] Transport negotiation Lloyd Wood
- Re: [tae] [tsv-area] Transport negotiation Joe Touch
- Re: [tae] [tsv-area] Transport negotiation Lloyd Wood
- Re: [tae] [tsv-area] Transport negotiation Joe Touch
- Re: [tae] [tsv-area] Transport negotiation John Leslie
- Re: [tae] [tsv-area] Transport negotiation Joe Touch
- Re: [tae] [tsv-area] Transport negotiation Stuart Cheshire
- Re: [tae] [tsv-area] Transport negotiation John Leslie
- Re: [tae] [tsv-area] Transport negotiation Joe Touch
- Re: [tae] [tsv-area] Transport negotiation james woodyatt
- Re: [tae] [tsv-area] Transport negotiation Joe Touch
- Re: [tae] [tsv-area] Transport negotiation Stuart Cheshire
- Re: [tae] [tsv-area] Transport negotiation Joe Touch
- Re: [tae] [tsv-area] Transport negotiation Stuart Cheshire
- Re: [tae] [tsv-area] Transport negotiation james woodyatt
- Re: [tae] [tsv-area] Transport negotiation Joe Touch
- Re: [tae] [tsv-area] Transport negotiation james woodyatt
- Re: [tae] [tsv-area] Transport negotiation John Leslie
- Re: [tae] [tsv-area] Transport negotiation Gorry Fairhurst
- Re: [tae] [tsv-area] Transport negotiation Iljitsch van Beijnum
- Re: [tae] [tsv-area] Transport negotiation Gorry Fairhurst
- Re: [tae] [tsv-area] Transport negotiation Iljitsch van Beijnum
- Re: [tae] [tsv-area] Transport negotiation Lloyd Wood
- Re: [tae] [tsv-area] Transport negotiation Lloyd Wood
- Re: [tae] [tsv-area] Transport checksum Gorry Fairhurst
- Re: [tae] [tsv-area] Transport negotiation Phelan, Tom
- Re: [tae] [tsv-area] Transport negotiation Iljitsch van Beijnum
- Re: [tae] [tsv-area] Transport negotiation Marshall Eubanks
- Re: [tae] [tsv-area] Transport negotiation Iljitsch van Beijnum
- Re: [tae] [tsv-area] Transport negotiation Phelan, Tom
- Re: [tae] [tsv-area] Transport negotiation james woodyatt
- Re: [tae] [tsv-area] Transport negotiation Stuart Cheshire
- Re: [tae] [tsv-area] Transport negotiation Joe Touch
- Re: [tae] [tsv-area] Transport negotiation Iljitsch van Beijnum
- Re: [tae] [tsv-area] Transport negotiation Bryan Ford
- Re: [tae] [tsv-area] Transport negotiation Bryan Ford
- Re: [tae] [tsv-area] Transport negotiation Bryan Ford
- [tae] Host versus Endpoint Granularity (was Re: T… Bryan Ford
- Re: [tae] [tsv-area] Transport negotiation L.Wood
- Re: [tae] [tsv-area] Transport negotiation Joe Touch