Re: [tsv-area] [tae] Transport negotiation

Joe Touch <touch@ISI.EDU> Mon, 08 December 2008 15:14 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 9B2693A684C; Mon, 8 Dec 2008 07:14:59 -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 A059E3A684C; Mon, 8 Dec 2008 07:14:58 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.282
X-Spam-Level:
X-Spam-Status: No, score=-1.282 tagged_above=-999 required=5 tests=[AWL=-1.284, BAYES_00=-2.599, J_CHICKENPOX_74=0.6, NORMAL_HTTP_TO_IP=0.001, SARE_HEXOCTDWORD=2]
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 xkTUgURqslPT; Mon, 8 Dec 2008 07:14:57 -0800 (PST)
Received: from vapor.isi.edu (vapor.isi.edu [128.9.64.64]) by core3.amsl.com (Postfix) with ESMTP id A563E3A6805; Mon, 8 Dec 2008 07:14:57 -0800 (PST)
Received: from [192.168.1.46] (pool-71-106-119-240.lsanca.dsl-w.verizon.net [71.106.119.240]) by vapor.isi.edu (8.13.8/8.13.8) with ESMTP id mB8FEjDN014183 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Mon, 8 Dec 2008 07:14:48 -0800 (PST)
Message-ID: <493D39E4.7030006@isi.edu>
Date: Mon, 08 Dec 2008 07:14:44 -0800
From: Joe Touch <touch@ISI.EDU>
User-Agent: Thunderbird 2.0.0.18 (Windows/20081105)
MIME-Version: 1.0
To: Lloyd Wood <L.Wood@surrey.ac.uk>
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> <7DA33930-1767-492B-807E-7A7DA661AFE9@apple.com> <EAB5CBF0-4C7A-44F1-BF57-641915CBE6AB@surrey.ac.uk> <493CB9D3.2080308@isi.edu> <4B36B0DC-54CC-4ADE-9688-074312E70E0D@surrey.ac.uk>
In-Reply-To: <4B36B0DC-54CC-4ADE-9688-074312E70E0D@surrey.ac.uk>
X-Enigmail-Version: 0.95.7
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit
X-ISI-4-43-8-MailScanner: Found to be clean
X-MailScanner-From: touch@isi.edu
Cc: tae@ietf.org, tsv-area@ietf.org
Subject: Re: [tsv-area] [tae] 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

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1



Lloyd Wood wrote:
> Joe,
> 
> I'm interested in a parseable way to pass that information down from a
> URI and the program handling the URI.

OK...

> Right now, we can explicitly state 'http' or 'https'. These are presumed
> to live over TCP, and IP - whether to use v4 or v6 is usually determined
> directly by giving an address or by DNS. But, oddly enough, we can also
> explicitly specify the port number, which defaults to 80. So, even
> though http lives on port 80 (and https on 443), that can be overridden
> in the URI.

Right. The port number is determined by the service name (which doubles
as the application protocol name) by default, but since that number is
solely determined by the endpoints anyway, there's an override.
ou w
> Similarly, though http is expected to live over TCP, being able to
> explicitly override it in the URI if desired has merit in some cases.
> That is, 'http' would be the same as writing 'http-tcp'. 'http-sctp',
> for the work outlined in:
> http://tools.ietf.org/html/draft-natarajan-http-over-sctp
> means use a different transport - SCTP instead of TCP.
> 
> Doesn't it strike you as odd that we can, at a high uri level, specify
> the low-level port number, but not the details of the layering to be
> used for that port? By adding explicit detail in the URI, we are
> removing ambiguity.

The port number isn't low level; it's the highest level, at the same
level as the protocol name/service name (http, https). The address is
also application-layer (consider that http://www.a.com/ returns a
different result than http://www.b.com/ even if they resolve to the same
IP address, at least since HTTP 2.x AFAIR).

The fact that addresses have different formats (DNS name, IPv4 dotted,
IPv6 coloned) is the part you're trying to mimic, IMO, and the
implication that using an IPv4 dotted implies a particular network layer
(IPv4 packets). Right now, we can specify that only for numeric IP
addresses, not even for DNS names.

Note that we don't let that float, though - it isn't:

	http or https://www.a.com/

It's the floating part that doesn't make a lot of sense from a protocol
handshake viewpoint - regardless of the fact that it also doesn't map
well to existing protocol handshakes.

As to specifying the lower layers, that builds on the artifact of
numeric IP addresses implying network layer. I don't know if I think
this should be visible to the app layer (as the address necessarily is);
it seems to break a lot of the isolation that layering is intended to
provide.

- ----

If you're going to do this, though, I wonder if the syntax of that
shouldn't lie syntactically where it exists in layering:

i.e.:
	http://www.example.com/
would become, explicitly:
	http:80//tcp:nagle//www.example.com:v4/

I.e., tcp doesn't modify the http part; it modifies the service:port
*pair*, and isn't tied any more to that pair than it is to the DNS name.
The DNS name, further, requires a version as well. We could add explicit
options to TCP as shown above too.

The general form might thus be:

	protocol_ID[:defaut_override]*

And the general form of a URI would include:

	app proto_ID//[transport_proto_ID//]?net_proto_ID

Joe

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkk9OeQACgkQE5f5cImnZrs6CwCg6cEhPjZ4BxkztAdEMHYucGys
OuAAniS1alup1A0U1MV9eQ/BTvqupRR5
=VBwp
-----END PGP SIGNATURE-----