Re: [tae] [tsv-area] Transport negotiation
Stuart Cheshire <cheshire@apple.com> Wed, 03 December 2008 21:07 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 E83DF3A6A3C;
Wed, 3 Dec 2008 13:07:48 -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 181513A6A1F;
Wed, 3 Dec 2008 13:07:48 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -106.496
X-Spam-Level:
X-Spam-Status: No, score=-106.496 tagged_above=-999 required=5
tests=[AWL=2.102, BAYES_00=-2.599, GB_I_LETTER=-2,
NORMAL_HTTP_TO_IP=0.001, RCVD_IN_DNSWL_MED=-4, USER_IN_WHITELIST=-100]
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 KmcSbaSYdHVR; Wed, 3 Dec 2008 13:07:46 -0800 (PST)
Received: from mail-out3.apple.com (mail-out3.apple.com [17.254.13.22])
by core3.amsl.com (Postfix) with ESMTP id D48593A6999;
Wed, 3 Dec 2008 13:07:46 -0800 (PST)
Received: from relay14.apple.com (relay14.apple.com [17.128.113.52])
by mail-out3.apple.com (Postfix) with ESMTP id 08E1E473FFC6;
Wed, 3 Dec 2008 13:07:43 -0800 (PST)
Received: from relay14.apple.com (unknown [127.0.0.1])
by relay14.apple.com (Symantec Brightmail Gateway) with ESMTP id
DF8E72804C; Wed, 3 Dec 2008 13:07:42 -0800 (PST)
X-AuditID: 11807134-a5bbabb000000f08-57-4936f51e08a5
Received: from [17.206.42.11] (chesh1.apple.com [17.206.42.11])
by relay14.apple.com (Apple SCV relay) with ESMTP id AE85F28040;
Wed, 3 Dec 2008 13:07:42 -0800 (PST)
In-Reply-To: <492DE8AD.1090300@isi.edu>
References: <3BB334D8-B00C-48C1-ACBF-4D09576DEADF@mpi-sws.org>
<492C7F97.3030000@isi.edu>
<EDCC4CF2-DC3C-409F-8F99-3BE51BAE4111@surrey.ac.uk>
<492DE8AD.1090300@isi.edu>
Mime-Version: 1.0 (Apple Message framework v753.1)
Message-Id: <7DA33930-1767-492B-807E-7A7DA661AFE9@apple.com>
From: Stuart Cheshire <cheshire@apple.com>
Date: Wed, 3 Dec 2008 13:07:16 -0800
To: Joe Touch <touch@ISI.EDU>
X-Mailer: Apple Mail (2.753.1)
X-Brightmail-Tracker: AAAAAA==
Cc: tae@ietf.org, tsv-area@ietf.org, Lloyd Wood <L.Wood@surrey.ac.uk>
Subject: Re: [tae] [tsv-area] 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
On 26 Nov, 2008, at 16:24, Joe Touch wrote: > http:// doesn't "just work" - it specifically indicates "HTTP over > TCP" > IMO. And http://10.0.0.1/ specifies "HTTP over TCP over IPv4". I think Joe is right about this. I think the whole notion of "transport negotiation" is flawed. It seems attractive to say, "DNS runs over both TCP and over UDP, so we should be able to dynamically negotiate which," but under scrutiny the idea falls apart. The problem is that what constitutes a "transport layer" is a bit slippery. In a text-based protocol that can use either UTF-8 or Latin-1, is the UTF-8/Latin-1 choice a transport negotiation? In a protocol that can run over TCP or over TLS, is that a transport negotiation? If a web server can optionally gzip content to save bandwidth, is that a transport negotiation? What about gzip'd UTF-8 vs. gzip'd Latin-1? What about gzip'd UTF-8 over TLS? What about ASN.1 vs. XDR vs. XML? The combinatorial explosion gets out of control. The correct answer IMHO, is to not even try. The Application Protocol Name in the SRV record needs to be an opaque identifier that denotes the entire top- to-bottom slice through the protocol stack -- semantics, packet formats, encoding rules, transport protocol. (Once the client has got a connection to the server, negotiating things like optional compression at that layer is then feasible and sensible.) Even having the _udp or _tcp is, IMO, a historical mistake. This is what I say about it in draft-cheshire-dnsext-dns-sd-05.txt: 7. Application Protocol Names The <Service> portion of a Service Instance Name consists of a pair of DNS labels, following the established convention for SRV records [RFC 2782], namely: the first label of the pair is an underscore character followed by the Application Protocol Name, and the second label is either "_tcp" or "_udp". Application Protocol Names may be no more than fourteen characters (not counting the mandatory underscore), conforming to normal DNS host name rules: Only lower-case letters, digits, and hyphens; must begin and end with lower-case letter or digit. Wise selection of an Application Protocol Name is very important, and the choice is not always as obvious as it may appear. In many cases, the Application Protocol Name merely names and refers to the on-the-wire message format and semantics being used. FTP is "ftp", IPP printing is "ipp", and so on. However, it is common to "borrow" an existing protocol and repurpose it for a new task. This is entirely sensible and sound engineering practice, but that doesn't mean that the new protocol is providing the same semantic service as the old one, even if it borrows the same message formats. For example, the local network music sharing protocol implemented by iTunes on Macintosh and Windows is little more than "HTTP GET" commands. However, that does *not* mean that it is sensible or useful to try to access one of these music servers by connecting to it with a standard web browser. Consequently, the DNS-SD service advertised (and browsed for) by iTunes is "_daap._tcp" (Digital Audio Access Protocol), not "_http._tcp". Advertising "_http._tcp" service would cause iTunes servers to show up in conventional web browsers (Safari, Camino, OmniWeb, Internet Explorer, Firefox, Chrome, etc.) which is of little use since it offers no pages containing human-readable content. Similarly, if iTunes were to browse for "_http._tcp" service, that would cause it to find generic web servers, such as the embedded web servers in devices like printers, which is of little use since printers generally don't have much music to offer. Similarly, NFS is built on top of SUN RPC, but that doesn't mean it makes sense for an NFS server to advertise that it provides "SUN RPC" service. Likewise, Microsoft SMB file service is built on top of Netbios running over IP, but that doesn't mean it makes sense for an SMB file server to advertise that it provides "Netbios-over-IP" service. The DNS-SD name of a service needs to encapsulate both the "what" (semantics) and the "how" (protocol implementation) of the service, since knowledge of both is necessary for a client to usefully use the service. Merely advertising that a service was built on top of SUN RPC is no use if the client has no idea what the service actually does. Another common question is to ask whether the service type advertised by iTunes should be "_daap._http._tcp." This would also be incorrect. Similarly, a protocol designer implementing a network service that happens to use Simple Object Access Protocol [SOAP] should not feel compelled to have "_soap" appear somewhere in the Application Protocol Name. Part of the confusion here is that the presence of "_tcp" or "_udp" in the <Service> portion of a Service Instance Name has led people to assume that the structure of a service name has to reflect the internal structure of how the protocol was implemented. This is not correct. All that is required is that the service be identified by a unique Application Protocol Name. Making the Application Protocol Name at least marginally descriptive of what the service does is desirable, though not essential. The "_tcp" or "_udp" should be regarded as little more than boilerplate text, and care should be taken not to attach too much importance to it. Some might argue that the "_tcp" or "_udp" should not be there at all, but this format is defined by RFC 2782, and this document does not propose to change that. In addition, the presence of "_tcp" has the useful side-effect that it provides a convenient delegation point to hand off responsibility for service discovery to a different DNS server, if so desired. Stuart Cheshire <cheshire@apple.com> * Wizard Without Portfolio, Apple Inc. * Internet Architecture Board * www.stuartcheshire.org _______________________________________________ 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