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

John Leslie <john@jlc.net> Wed, 10 December 2008 00:30 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 2F8923A680A; Tue, 9 Dec 2008 16:30:50 -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 ADF343A680A for <tae@core3.amsl.com>; Tue, 9 Dec 2008 16:30:48 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.266
X-Spam-Level:
X-Spam-Status: No, score=-6.266 tagged_above=-999 required=5 tests=[AWL=0.333, BAYES_00=-2.599, 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 LmKyb6g6M70k for <tae@core3.amsl.com>; Tue, 9 Dec 2008 16:30:47 -0800 (PST)
Received: from mailhost.jlc.net (mailhost.jlc.net [199.201.159.9]) by core3.amsl.com (Postfix) with ESMTP id 8C8F93A67F4 for <tae@ietf.org>; Tue, 9 Dec 2008 16:30:47 -0800 (PST)
Received: by mailhost.jlc.net (Postfix, from userid 104) id B934A33C32; Tue, 9 Dec 2008 19:30:41 -0500 (EST)
Date: Tue, 9 Dec 2008 19:30:41 -0500
From: John Leslie <john@jlc.net>
To: Stuart Cheshire <cheshire@apple.com>
Message-ID: <20081210003041.GM43294@verdi>
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> <5AE49824-74B1-4ABE-BBD4-7DEAFA348245@apple.com> <3F1AB633-7E17-47C4-B126-D8D872B552C5@apple.com>
Mime-Version: 1.0
Content-Disposition: inline
In-Reply-To: <3F1AB633-7E17-47C4-B126-D8D872B552C5@apple.com>
User-Agent: Mutt/1.4.1i
Cc: tae@ietf.org
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-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: tae-bounces@ietf.org
Errors-To: tae-bounces@ietf.org

Stuart Cheshire <cheshire@apple.com> wrote:
> 
> Bryan Ford's excellent "Breaking Up the Transport Logjam"  
> presentation pointed out that what we call the "transport layer"  
> artificially takes three functions (demux, flow control, and  
> operational abstraction) and lumps them together in what we  
> traditionally call "transport layer", while leaving out other  
> functions (session, presentation, etc.) and artificially deeming them  
> to be "not transport layer". Such artificial distinctions do not help  
> guide our networking design thought processes in useful ways.

   I believe we all agree that the current "definition" of "transport"
layer isn't working well.

> For our purposes here, there are three relevant groupings:
> 
> C. Application/Presentation/Transport/etc.
> B. IP
> A. Datalink/Hardware/etc.
> 
> In group (A) there are differences due to inherent differences in the  
> underlying hardware.
> The purpose of IP (group B) is to homogenize away those hardware  
> differences and present a uniform service model.

   IP layer does pretty well at harmonizing hardware differences; thus,
its definition is helpful.

> In group (C) there are intentional differences due to the different  
> requirements of different applications.
> 
> The point is that the differences in group (C) are *intentional*.  
> Different applications have different requirements. The whole *point*  
> of having different transport protocols is that they offer different  
> operating semantics -- e.g. UDP preserves message boundaries; TCP  
> does not.

   I wouldn't agree that's the "whole point".

   An "ideal" transport layer, IMHO, would contain enough options to
suit the needs of a very wide variety of applications. (No, I'm not
holding my breath either.)

   But any transport layer we define today should harmonize differences
in lower layers. For example:

- we know 802.16 is coming. The IP layer can't hide all its quirks.

- we know the IPv4-IPv6 shift is coming -- and will take a rather long
  time. The IP address formats are wildly incompatible, and there are
  other characteristics of IPv6 routing which will become apparent.

- we know that TCP depends upon some quirks of IPv4 that were never
  actually specified as behaviors of that layer.

- we know that DNS is getting long in the tooth, and suffers from poor
  configurations as well as occasional unfriendly attacks. We don't
  know how successful DNSSEC deployment may (ever) be.

- we know that IPsec deployment is a rocky road.

- we know that IP layer routing could use some security tweaks.

> I think that when we denote a certain application protocol using a  
> name like "foobar", that name has to encompass the complete package  
> of everything the application uses, requires, and assumes, from the  
> IP layer up.

   It would certainly be good to define such requirements; but I think
it extremely short-sighted to expect application writers to maintain
separate versions of their applications for all combinations of issues
I listed above.

   Does the application desire separate streams to the same remote
process? Shouldn't it be able to specify this instead of opening
multiple transport-layer connections?

   Does the application want to know when a possibly-mobile remote
process changes its routing? Shouldn't it be able to specify this
rather than constantly tear down and restart connections?

   Does the application want to maintain a "connection" to a remote
process while connectivity is lost for a possibly extended period?
Shouldn't it be able to specify this, rather than try to remember
enough to restore state when a "similar" connection is made later?

   Et cetera...

> Tempting as it is to think of networking as a set of tinker-toy
> components that can be just plugged together in whatever order we
> feel like, in the real world software is a lot more brittle than
> that.

   But should it be?

   Is there _really_ any reason we shouldn't want an application to
just run -- for years at a time?

   IMHO, what breaks applications is all too often having to deal
with underlying network changes that we didn't bother to abstract
away.

> I'm all in favour of applications negotiating capabilities  
> and requirements, but that has to be done by the applications, and  
> done carefully, with thorough testing. Thinking that we can solve  
> this problem by just enumerating all the permutations in the DNS  
> seems naive to me.

   Thinking we can solve much of anything by adding permutations to
DNS is naive, IMHO...

--
John Leslie <john@jlc.net>
_______________________________________________
tae mailing list
tae@ietf.org
https://www.ietf.org/mailman/listinfo/tae