Path: utzoo!utgpu!watmath!clyde!att!rutgers!ucsd!sdcsvax!ucsdhub!hp-sdd!ncr-sd!ncrlnk!uunet!mcvax!ukc!dcl-cs!aber-cs!pcg
From: pcg@aber-cs.UUCP (Piercarlo Grandi)
Newsgroups: comp.mail.misc
Subject: Re: Another example why not to re-route
Summary: Domain names are NOT routes. You still need routes...
Message-ID: <321@aber-cs.UUCP>
Date: 3 Dec 88 21:05:31 GMT
References: <989@tank.uchicago.edu> <360@lakart.UUCP>
Reply-To: pcg@cs.aber.ac.uk (Piercarlo Grandi)
Distribution: eunet,world
Organization: CS Dept., University College of Wales, Aberystwyth, UK
Lines: 89
X-Disclaimer: Any statement is purely personal.

In article <360@lakart.UUCP> dg@lakart.UUCP (David Goodenough) writes:

    N.B. Just in case the message DOES start looping (e.g. garp thinks
    the cheapest way to decwrl is thru lakart, with a broken path out
    of here) I keep a check on message ID's for all letters passing
    thru, on the fourth time of seeing, they are returned to sender,
    along the reply path that came in originally.  i.e. the data file
    looks like:

	XX00010030@pallio.UUCP  1       pallio!dg

    where the 1 is the count of times I've seen the message.

The problem with dynamic routing (because rerouting, peeking, or what
else you call this hideous sin :-> is dynamic adaptive routing) is that
it requires a cooperative, distributed adaptive routing algorithm, just
like old ARPAnet. And devising one that fits the UUCP mould is not
easy. And having it adopted by everybody is even less easy. As all
rerouters always say: "if only we kept up to date maps everywhere"
(read: distributed routing database maintenance in realtime), and "if
only we had a good algorithm to avoid loops, losses, etc..." (read:
distributed dynamic adaptive routing with local knowledge).

To make dynamic routing possible you have to have a way to ensure that
all sites have the same software, all sites cooperate in the
distributed updating of the routing database, all sites cooperate in
running the distributed adaptive routing algorithm. This may be
possible on the internet (maybe :->).  It cannot be done, by
definition, on USENET, which is a loose band of independent sites.

In article <360@lakart.UUCP> dg@lakart.UUCP (David Goodenough) also writes:

    Of course, as soon as we all follow killer's lead, and lakart becomes
    lakart.boston.ma.us, and pallio becomes pallio.lakart.boston.ma.us
    then bang paths become a thing of the past. Now if someone could
    tell me how to do this .....

This is again the old, tired confusion, apparent in another part of
your article as well, between names and routes.

First of all, domainization, I will repeat here for the NTH time, is
only a way to help have unique names, and, even in its limited purpose,
requires some central administration. Thank goodness this is
lightweight enough that USENET can live with it.

Domainization can also be extended to imply name service where b.a is
the holder of the map for *.b.a, and route service where b.a is the
gateway to *.b.a; note that often both choices are appallingly
inefficient, as proximity in the domain space does not imply any
proximity in the connectivity space.

A bang path, and this is something that very few people realize, is
BOTH a NAMING device and a ROUTING device. It is NOT JUST A ROUTING
DEVICE. In particular, since host names need not be unique, a given
host is named by a bang path, not by the host name alone.  It is just a
coincidence that a bang path can be also used as a route, just as it is
a coincidence that a domain name can be used as a route.

Given this, your rules of clipping a bang path if you find your site
name or one of your neighbours' in the path are quite wrong, because
there might be MANY sites with the same host name. What would you do
with a message reaching you with a further path like
"uunet!enea!lakart!carlsson"?

In other words bang paths are just like unix filesystem paths, but
there is no root.  Domain based names at least have a root (well,
approximately) and therefore ambiguities cannot exist. Note that in a
sense domain based names are paths, paths in the name space, just like
bang names are; if one assumes that the connectivity space is shaped
like the name space, both may be used as routes,

The differences between domain and bang paths are first that the former
have a tree shaped namespace (arguably a DAG shaped namespace, but many
frown at allowing this), the latter are paths through an arbitrary
unrooted graph, and second that normally domain paths are good for
naming and bad for routing, and bang paths viceversa.  routespace
paths, and bang paths viceversa.

The complete solution is: use domain names for unique identification of
hosts, use bang paths for routing, do generate bang routes at the
source, statically, do not do dynamic routing (unless among consenting
sites that can be relied upon to maintain among them consistent
distributed map databases and distributed adaptive routing algorithms,
i.e. within the internet), and do not rely on domain names to locate
map servers or to do routing.
-- 
Piercarlo "Peter" Grandi			INET: pcg@cs.aber.ac.uk
Sw.Eng. Group, Dept. of Computer Science	UUCP: ...!mcvax!ukc!aber-cs!pcg
UCW, Penglais, Aberystwyth, WALES SY23 3BZ (UK)