Re: Thinking differently about names and addresses

John C Klensin <john-ietf@jck.com> Tue, 01 April 2003 06:18 UTC

Received: from ran.ietf.org (ran.ietf.org [10.27.6.60]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id BAA14541; Tue, 1 Apr 2003 01:18:21 -0500 (EST)
Received: from majordomo by ran.ietf.org with local (Exim 4.10) id 190FFA-00075i-00 for ietf-list@ran.ietf.org; Tue, 01 Apr 2003 01:27:36 -0500
Received: from odin.ietf.org ([10.27.2.28] helo=ietf.org) by ran.ietf.org with esmtp (Exim 4.10) id 190FEV-00073O-00 for ietf@ran.ietf.org; Tue, 01 Apr 2003 01:26:55 -0500
Received: from bs.jck.com (ietf-mx.ietf.org [132.151.6.1]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id BAA14424 for <ietf@ietf.org>; Tue, 1 Apr 2003 01:10:23 -0500 (EST)
Received: from [209.187.148.215] (helo=p3.JCK.COM) by bs.jck.com with esmtp (Exim 4.10) id 190F0c-0006hI-00; Tue, 01 Apr 2003 01:12:34 -0500
Date: Tue, 01 Apr 2003 01:12:34 -0500
From: John C Klensin <john-ietf@jck.com>
To: Dave Crocker <dhc2@dcrocker.net>, Tony Hain <alh-ietf@tndh.net>
cc: 'Margaret Wasserman' <mrw@windriver.com>, "ietf@ietf.org" <ietf@ietf.org>
Subject: Re: Thinking differently about names and addresses
Message-ID: <281541845.1049159553@p3.JCK.COM>
In-Reply-To: <3186787045.20030331164435@brandenburg.com>
References: <079601c2f7d5$32d01e70$ee1a4104@eagleswings> <3186787045.20030331164435@brandenburg.com>
X-Mailer: Mulberry/3.0.3 (Win32)
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"; format="flowed"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Content-Transfer-Encoding: 7bit
Sender: owner-ietf@ietf.org
Precedence: bulk
Content-Transfer-Encoding: 7bit

--On Monday, 31 March, 2003 16:44 -0800 Dave Crocker 
<dhc2@dcrocker.net> wrote:

> Tony,
>
>>> Let's assume that there is a FooBar server in SiteA.  If
>>> another node in SiteA (NodeA) is communicating via a
>>> multi-party application to a node in SiteB (NodeB), and
>>> wants  to refer NodeB to the FooBar server in SiteA, what
>>> does it do?
>
> TH> Send a name.
>...
> In any event, please note that the suggestion that
> applications are required to use names, rather than IP
> addresses, is new.
>
> Completely new.
>
> As in, it has not been part of the Internet architecture for
> the past 25 years.
>
> So we all should be a tad careful about claiming that failure
> to use that enhancement represents a failure.  A new idea that
> is good is good, but failure to use that idea previously is
> not "broken".

Hmm.  Maybe some clarification is in order, since at least three 
different, and contradictory, claims have been made about this 
principle.

The "use names and not addresses to facilitate the transition to 
IPv6" principle was articulated some years ago, I'm pretty sure 
back when I was still Apps AD.   It was discussed at the time, 
and should not now come as a surprise to anyone.   However, my 
understanding --then and now-- was that what we agreed to was to 
try to move away from the presentation form of IP addresses on 
the user interface side of applications.  For example, we wanted 
to strongly discourage the use of addresses in URLs, we wanted 
to see an address in a telnet command or in setting up an FTP 
command channel only for debugging (if that) and so on.

Today's implied claim that the principle extends to use of names 
within and between applications is new to me.  There are all 
sorts of reasons why I think it is impractical. Certainly it is 
not something I would have consciously agreed to at any time in 
the last decade or so.  In addition to the reasons that have 
been given, there is the small matter that DNS resolvers use 
timeout logic that is measured in seconds -- tolerable for 
one-time use when an application starts up, and maybe every 
half-hour or so thereafter, but almost inconceivable each time 
an application needs to look at an address or pass an address 
reference to a machine with which it is already conducting a 
dialogue.  Worse, some applications are likely to get very 
confused if they go back to the DNS a second time and get very 
different address information (or even a different ordering of a 
set of addresses) to be used in conjunction with connections 
that are already open.

Now, this may suggest that we need new facilities.  Or perhaps 
we just need a way to say "use this address, but the same prefix 
you already have for me" or "look the name up again, and pick 
the address you get back that matches the prefix you see for 
me".  I don't know.  I am pretty sure that no one has discussed 
those issues with the applications area at any time since IPv6 
started to gell.

I'm equally concerned about statements like:

TH> Any app that sends topology locator information without 
understanding
TH> the topology is broken.

and

> That is not clear, but in any case the deployed Internet is
> not the same as it was 25 years ago. From RFC 791;

> 	A distinction is made between names, addresses, and
> 	routes [4].   A name indicates what we seek.  An address
> 	indicates where it is.  A route indicates how to get
> 	there.  The internet protocol deals primarily with
> 	addresses.  It is the task of higher level (i.e.,
> 	host-to-host or application) protocols to make the
> 	mapping from names to addresses.   The internet module
> 	maps internet addresses to local net addresses.  It is
> 	the task of lower level (i.e., local net or gateways)
> 	procedures to make the mapping from local net addresses
> 	to routes.

> Mapping names to addresses is a simple task. One could argue
> that it was so simple that apps took the shortcut of using the
> 'where' to also define the 'what'. That does not mean the
> requirement for apps to keep a clear context for 'what' is a
> new requirement.

Tony, I agree with the first statement.  I'd almost suggest that 
it is self-evidently true, which may be the point you are trying 
to make. But we get different meanings from the RFC 791 quote, 
and that may be a lot of the difference in perspective here.  At 
the time 791 was written, addresses were not routes, or bound to 
routes.  Consequently, it would have been inappropriate to refer 
to them as "topology locators".  They were just addresses. 
Routes, and hence topology and topology locators, were 
invisible, not only to the applications, but even to TCP.  An 
application that uses addresses in the 791 sense isn't involved 
with topology at all and has no clue about network topology. 
Even the "here" and "not here" implied by testing whether an 
address was on the same network was, and remains, invisible to 
most applications.

When we introduced subnetting and then CIDR and, more 
specifically, route aggregation, we changed the character of 
that name/ address/ route separation.  For the first time, an 
address manifestly implied more about topology than "same 
network or not".  In the process, we effectively introduced the 
notions of PI and PD space, and made multihoming nearly 
impossible for anyone but very large enterprises plus those with 
the financial resources to bully their way in.  But, even then, 
I suggest that calling an address a "topology locator" is 
something of a stretch, so, while your statement is true about 
"topology locators", it is not clear to me that it applies to IP 
addresses, at least in IPv4.

The IPng effort started off with a number of problems to be 
solved.   More address space was one.  My recollection is that 
getting multihoming back was another and that we knew that we 
had a route-scaling problem as well as an address-scaling one. 
This multiple-prefix-per-host stuff is dandy in theory, but 
we've yet to see it work to permit widespread multihoming 
without exploding the routing tables.  My own sense is that it 
will not work unless we end up dividing the world up into a 
handful of super-ISPs with local ISPs organized in strict 
hierarchy.  To overdramatize things a bit (I hope), if the IPv6 
architecture requires that business model in order to keep 
routing working, IPv6 will fail and, probably, so will the 
Internet.

My hope continues to be that we will eventually devise, and 
evolve to, a routing architecture with much better scaling 
properties than full-knowledge link state models and Dijkstra, 
or Dijkstra-equivalent, calculations performed on each state 
change.  While there hasn't been much visible motion, I don't 
believe the IETF community has given up on that class of change. 
To decide that IPv6 addresses are locators that are bound to the 
topology of the network, and doing applications design on that 
basis, runs the risk of precluding such routing options.    I 
haven't seen where or when the community has agreed that "IPv6 
Address == topological locator" as a matter of architecture and 
I'm fairly relieved by that.

And, as Dave Crocker pointed out (if I interpret his remarks 
correctly), if IPv6 addresses are topology locators, then we are 
going to need identifiers that have the appropriate binding 
properties to those addresses.  The DNS won't do it: it is too 
slow, updates take too long, inconsistent responses from 
different servers while updates propagate are the norm, and it 
isn't tightly enough bound to the addressing mechanism to be 
able to yield "best address for purpose" information.

My own guess is that the principle behind the statement you 
quote from 791 is correct, but the terminology may need to be 
adjusted.  Today, I would say that there is an important 
separation between name, address-identifier, and 
topology-locator.  If IPv6 addresses are the topology-locators 
of the IPv6 universe, then there isn't going to be much real 
progress on application upgrading and deployment until we invent 
address-identifiers.  On the other hand, if IPv6 addresses are 
to serve as address-identifiers (as IPv4 addresses have done 
since the 70s), then we shouldn't expect applications to either 
understand any hidden topology semantics they might have or to 
refrain from using the addresses because those topology 
semantics exist.

  regards,
    john