Re: [tae] The internet architecture
Keith Moore <moore@network-heretics.com> Fri, 05 December 2008 07:28 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 2A5633A6BFB;
Thu, 4 Dec 2008 23:28:59 -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 59FB33A6A44
for <tae@core3.amsl.com>; Thu, 4 Dec 2008 17:50:54 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.594
X-Spam-Level:
X-Spam-Status: No, score=-2.594 tagged_above=-999 required=5 tests=[AWL=0.005,
BAYES_00=-2.599]
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 ZtTMSPdGgFZU for <tae@core3.amsl.com>;
Thu, 4 Dec 2008 17:50:53 -0800 (PST)
Received: from m1.imap-partners.net (m1.imap-partners.net [64.13.152.131])
by core3.amsl.com (Postfix) with ESMTP id 446663A6A29
for <tae@ietf.org>; Thu, 4 Dec 2008 17:50:53 -0800 (PST)
Received: from lust.indecency.org ([72.242.14.237])
by m1.imap-partners.net (MOS 3.10.3-GA)
with ESMTP id BFB59387 (AUTH admin@network-heretics.com)
for tae@ietf.org; Thu, 4 Dec 2008 17:50:47 -0800 (PST)
Message-ID: <493888EA.8010406@network-heretics.com>
Date: Thu, 04 Dec 2008 20:50:34 -0500
From: Keith Moore <moore@network-heretics.com>
User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105)
MIME-Version: 1.0
To: John Leslie <john@jlc.net>
References: <C15AE32B-E564-4C93-86FF-40EF203E673A@mpi-sws.org>
<49382030.5020704@network-heretics.com>
<20081204230325.GA13465@verdi>
In-Reply-To: <20081204230325.GA13465@verdi>
X-Mailman-Approved-At: Thu, 04 Dec 2008 23:28:58 -0800
Cc: tae@ietf.org
Subject: Re: [tae] The internet architecture
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
John Leslie wrote: >> Sigh. Maybe this is unfair, but it seems to me that people keep >> wanting to take (relatively) straightforward, bulletproof >> interfaces and replace them with fragile ones that depend on >> extra layers of indirection, > > I don't think Bryan said that... > >> and additional services that (a) can fail, > > Everything "can fail". That doesn't mean we can't engineer a > layering which makes failure _less_ likely. No, it doesn't. But that kind of engineering goes beyond mere protocol design, and into things like configuration management where we have less expertise, and less ability to specify what happens. >> (b) don't share fate with the endpoints > > It's not clear that application layer _should_ always share fate > with lower layers. In particular, the application-layer connection > of a server invoked by a mobile user _shouldn't_ fail when the user > wanders out of range of a particular cell tower. The point about fate sharing is relative to the potential for these mapping layers to fail. If a mapping layer used by two endpoints can fail independently of either of those endpoints, the overall reliability is less than if the mapping layer shares fate with one of its endpoints... assuming that the reliability of the individual components is the same for both cases. >> and (c) are likely to be very sensitive to configuration errors, >> all for the sake of some notion of architectural purity. > > Architectural "purity" is often helpful to analyze a situation > to decide which wish-list items are "easy". Really? I more often find it being used to pretend that things are easy when they are not. I do think that notions of "purity" or "simplicity" or "elegance" can be valuable. If a design choice doesn't seem "pure" according to the architectural model, it warrants further examination to see if it really is a good idea. But notions like "purity" are best regarded as rules-of-thumb, which can be trumped by actual analysis or experience. >> I won't claim that you can't do it, or that it's a fundamentally >> bad idea on its face. I *will* claim that it's a fundamentally >> bad idea if you don't do very careful engineering on it to make >> sure that the resulting system is as reliable as it would be >> without the extra layer of indirection > > It may be premature to ask for any particular way of increasing > application-layer reliability. (Several come to mind, though.) I was just talking about the mapping layer here. >> - and that includes accounting for the ability of people to >> misconfigure things. > > We all know it's a waste of time to aim for 100% foolproof -- > the fools are too ingenious. ;^) Of course. But if we design a system to replace the current one that requires a higher level of clue to configure than the current one, we should look around and see if the clue level is sufficient. Or to put it more concrete terms: if DNS is the state-of-the-art for mapping layers that are deployed on a large scale, and ordinary network operators can't provision it and configure it so that it's reliable - maybe we shouldn't be trying to put more trust into mapping layers just yet. -- Before we go too far down this path, I should say that at some level I do sympathize with Bryan Ford's desire to "migrate both networking APIs and transport layer protocols themselves toward a model where an 'endpoint' is [...] opaque (to the transport/application) [...] and the transport/application shouldn't even care much if any what exactly the string is." The big caveat is that if you really want to make endpoint IDs opaque to applications, and hide all of the details about locations and network topology and so forth from applications, you have to do several things: 1. As already mentioned, you have to make whatever service maps between endpoint IDs and addresses extremely reliable so that you don't degrade overall system reliability. 2. The lower layers have to "do the right thing" independent of those endpoint IDs and where they're actually located. If the details of locations etc. are hidden from applications, then applications can't ever be expected to make up for the things like the network's inability to do things like handle site multihoming. 3. If you are really serious about hiding all of these details from applications, you need to explain how you're going to build network management and diagnostic tools. You also need a lot better system for detecting and reporting errors caused by network failures so that both the users and whoever can fix the problem can know what is going on. But as an application writer, what Bryan is suggesting is pretty much what I want. I want to be able to open up a connection to an endpoint ID and have it stay up even if links go up or down, networks have to renumber, hosts move, and so on. Once I have an endpoint ID that binds to a specific instance of a service, I want to be able to hand that endpoint ID off to peers on other hosts and have it be usable by those peers without having to worry about those hosts' locations on the network or what kinds of addressing they use. As an application writer, I don't want to have to know about network topology or addressing realms or NATs or ULAs or v4/v6 issues. I don't want to be expected to recover from failures that result from the network's inability to do multihoming. etc. I want to be able to ask the network to do something and have the network make its best effort to do that - and by "best effort" I mean that it shouldn't be possible for the application to do better even if it does know about the network addressing and topology etc. But the things that arose in my mind when reading Bryan's statement were pretty much these: 1. Granted it would be nice for an application to be able to work that way, but would that much enforced opacity really be a good thing? Especially in light of the current network architecture's apparent inability to provide anything close to that kind of programming model? Again as an applications programmer, I like being able to use a simple model, but I also find it useful to be able to get under the hood if I need to do that. 2. It seems to me that the real problems with doing this are not with defining the API or even the transport layers - and the most significant benefits are not resulting from the API either. The hard parts are building the mapping layer so that it's fast and reliable and secure, and designing secure signaling between the network, hosts, and mapping layer, so that the binding IDs continue to work in all cases (and there are lots of cases to analyze). The benefits don't seem so much in ease of programming (though that would be nice) but in having _everything_ be able to be truly mobile and still be reliable. When there's so much emphasis on the easy part of the problem, it makes me wonder whether the true nature of the problem is understood. It strikes me as a bit like someone in 1960 saying "if only we could mine moon rocks, we'd have all of the iron we could possibly need" and then proceeding to design mechanisms for mining moon rocks without first figuring out how to get there and back. Keith _______________________________________________ tae mailing list tae@ietf.org https://www.ietf.org/mailman/listinfo/tae
- Re: [tae] The internet architecture Bryan Ford
- Re: [tae] The internet architecture Keith Moore
- Re: [tae] The internet architecture Hallam-Baker, Phillip
- Re: [tae] The internet architecture Keith Moore
- Re: [tae] The internet architecture Hallam-Baker, Phillip
- Re: [tae] The internet architecture Keith Moore
- Re: [tae] The internet architecture John Leslie
- Re: [tae] The internet architecture Joe Touch
- Re: [tae] The internet architecture Keith Moore
- Re: [tae] The internet architecture Thomas Narten
- Re: [tae] The internet architecture Thomas Narten
- Re: [tae] The internet architecture Henning Schulzrinne
- Re: [tae] The internet architecture Dave CROCKER
- Re: [tae] The internet architecture Melinda Shore
- [tae] sockets vs. fds Dave CROCKER
- Re: [tae] The internet architecture John Day
- Re: [tae] sockets vs. fds Melinda Shore
- Re: [tae] The internet architecture John Day
- Re: [tae] The internet architecture John Day
- Re: [tae] The internet architecture Keith Moore
- Re: [tae] The internet architecture Keith Moore
- Re: [tae] The internet architecture Keith Moore
- Re: [tae] The internet architecture Keith Moore
- Re: [tae] The internet architecture Dave CROCKER
- Re: [tae] The internet architecture John Day
- Re: [tae] The internet architecture John Day
- Re: [tae] The internet architecture Thomas Narten
- Re: [tae] The internet architecture Keith Moore
- Re: [tae] The internet architecture Thomas Narten
- Re: [tae] The internet architecture Keith Moore
- Re: [tae] sockets vs. fds Tony Finch
- Re: [tae] The internet architecture David W. Hankins
- Re: [tae] The internet architecture Hallam-Baker, Phillip
- Re: [tae] sockets vs. fds Florian Weimer
- [tae] The Great Naming Debate (was Re: The intern… Bryan Ford
- Re: [tae] The Great Naming Debate (was Re: The in… Keith Moore
- Re: [tae] The Great Naming Debate (was Re: The in… Joe Baptista
- Re: [tae] The Great Naming Debate (was Re: The in… Hallam-Baker, Phillip
- Re: [tae] The Great Naming Debate (was Re: The in… Melinda Shore
- Re: [tae] The Great Naming Debate (was Re: The in… Hallam-Baker, Phillip
- Re: [tae] The Great Naming Debate (was Re: The in… Keith Moore
- Re: [tae] The internet architecture John Leslie