[tsv-area] Transport negotiation

Bryan Ford <baford@mpi-sws.org> Tue, 25 November 2008 22:32 UTC

Return-Path: <tsv-area-bounces@ietf.org>
X-Original-To: tsv-area-archive@optimus.ietf.org
Delivered-To: ietfarch-tsv-area-archive@core3.amsl.com
Received: from [127.0.0.1] (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 4BD5628C1E4; Tue, 25 Nov 2008 14:32:53 -0800 (PST)
X-Original-To: tsv-area@core3.amsl.com
Delivered-To: tsv-area@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>
Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes
Content-Transfer-Encoding: 7bit
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: [tsv-area] Transport negotiation
X-BeenThere: tsv-area@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: IETF Transport Area Mailing List <tsv-area.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/tsv-area>, <mailto:tsv-area-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/pipermail/tsv-area>
List-Post: <mailto:tsv-area@ietf.org>
List-Help: <mailto:tsv-area-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tsv-area>, <mailto:tsv-area-request@ietf.org?subject=subscribe>
Sender: tsv-area-bounces@ietf.org
Errors-To: tsv-area-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