What goes around comes around
Paul Francis--formerly Tsuchiya <francis@thumper.bellcore.com> Sun, 13 June 1993 22:19 UTC
Received: from ietf.nri.reston.va.us by IETF.CNRI.Reston.VA.US id aa16031; 13 Jun 93 18:19 EDT
Received: from CNRI.RESTON.VA.US by IETF.CNRI.Reston.VA.US id aa16027; 13 Jun 93 18:19 EDT
Received: from munnari.OZ.AU by CNRI.Reston.VA.US id aa17082; 13 Jun 93 18:19 EDT
Received: by munnari.oz.au (5.83--+1.3.1+0.50) id AA25401; Mon, 14 Jun 1993 07:27:19 +1000 (from owner-Big-Internet)
Received: from thumper.bellcore.com by munnari.oz.au with SMTP (5.83--+1.3.1+0.50) id AA25398; Mon, 14 Jun 1993 07:27:10 +1000 (from francis@thumper.bellcore.com)
Received: by thumper.bellcore.com (4.1/4.7) id <AA08558> for big-internet@munnari.oz.au; Sun, 13 Jun 93 17:27:05 EDT
Date: Sun, 13 Jun 1993 17:27:05 -0400
Sender: ietf-archive-request@IETF.CNRI.Reston.VA.US
From: Paul Francis--formerly Tsuchiya <francis@thumper.bellcore.com>
Message-Id: <9306132127.AA08558@thumper.bellcore.com>
To: big-internet@munnari.oz.au
Subject: What goes around comes around
or: There is nothing new under the Sun(shine)
or: How to quote history to further your aims
or: A blast from the past
or: If we do not learn from history, we are bound to
repeat its mistakes
Gang,
As some of you may know, Pip is the topic of my PhD thesis.
Naturally in the course of writing a thesis, one must cite
relavent work, so I went digging....
What I found is that, 1) Pip had already largely been invented,
by Jon Postel in RFC730 (Extensible Field Addressing), and 2)
that all the current "discoveries" about addressing and routing
had already been made, in a flurry of creative activity, in
1977 and 1978, by Postel, Sunshine, Cohen, Clark, Cerf, and
perhaps others who didn't bother putting out IENs (or whose
IENs or other publications I haven't bothered to read).
So, for those of you who don't mind taking a few minutes to
stroll down memory lane (though most of your memories, and
mine, don't go back this far), and listening to platitudes
about Pip, I offer the following....
The opening paragraph in Postel's May 1977 RFC730, "Extensible
Field Addressing", says:
This memo discusses the need for and advantages of the expression of
addresses in a network environment as a set of fields. The suggestion
is that as the network grows the address can be extended by three
techniques: adding fields on the left, adding fields on the right, and
increasing the size of individual fields. Carl Sunshine has described
this type of addressing in a paper on source routing [1].
Well, right here in a nutshell is Pip. Postel's fields are nothing
more than my FTIFs (forwarding table index fields), which allow adding
fields on the left, the right, making them bigger, and adding in the
middle (which Jon's can do too, but he doesn't mention it above).
So, now you know. Pip stands for Postel's internet protocol--though
I should be careful, as Jon credits Carl Sunshine as having described
that type of addressing first. To give credit where it is due, I'm
thinking of changing the name of Pip to Sip--Sunshine's internet
protocol--or maybe SipV0, since it predates that other SIP....
Later in the RFC, Jon says:
The prospect of interconnections of networks to form a complex
multinetwork system poses additional addressing problems. The new
Host-IMP interface specification has reserved fields in the leader to
carry network addresses [2]. There is experimental work in progress on
interconnecting networks [4, 5, 6]. We should be prepared for these
extensions to the address space.
Talk about understatement!
And later still......
A problem with simple field addressing is the desire to specify only the
fields that are necessary given the local context. A program
interpreting the address is then unsure what the first field represents.
Some clues are needed in the address specification for correct parsing
to be possible. Dave Crocker has described a syntax for a similar
problem in network access of data [8].
Pip does this too (puts only the necessary fields in the address).
Pip uses the Routing Context field as the "clue" for correct parsing
of the fields. And, now it is known that Dave Crocker is one of the
original Pip contributors. Come out of the closet Dave!!!
Jon gets to the meat of the thing in the following excerpt:
Specific Sugestion
Specifically i suggest that we adopt a field based extensible address
scheme where each field is separated from its neighbors by a delimiter
character and each field has a name. When an address is specified the
name of the most general field must also be indicated.
Definitions:
<address> ::= <field-name> ":" <fields>
<field-name> ::= "NET" | "IMP" | "HOST" | "MESSAGE-ID"
<fields> ::= <field> | <field> "/" <fields>
<field> ::= a decimal number
Well, (my) Pip has a few differences from this, but the basic
idea is there. Something to give the context of the field
to be parsed (my Routing Context = Jon's field-name), and
a series of fields (mine are binary not decimal, but had Jon's
found their way into a packet, I'm sure they would have been
binary).
Perhaps the major difference between my Pip and Jon's Pip is
that my Pip uses a source route mechanism for parsing the
fields, whereas Jon's (though he really didn't get down to that
level of specificity) presumably always parses the fields
starting at the left-most one.
In April of 1978, Danny Cohen shed more light on the nature of
addresses in his IEN31, "On Names, Addresses and Routings (II)".
After a long rambling introduction, Danny gets to the point, which
is:
I HATE TO ADMIT IT, BUT ...
At the beginning of this note, and in an earlier note, I used a great
line telling that "names tell what the processes are, and addresses tell
where they are." It continues by "routings tell how to get there."
I hate to admit that by now I have some reservations about this
definition. My name is "Danny." My address is "ISI." When I was at
Tech, my name was the same, but the address was different. This
supports the definition. How about the addresses in a broadcasting
media network? When a host changes its position (location) on the same
Ethernet, its address does not change. Well, maybe these addresses are
not real addresses, according to the definition. Admittedly, this is an
uncomfortable thought.
I believe that there is a better explanation. I suggest that an address
is "the canonic routing from the root of the addressing-tree." It sounds
recursive, doesn't it?
To be more precise, an addressing scheme is a hierarchical organization
of elements, with code assignment such that each element has a unique
set of codes, corresponding to its position in the hierarchy.
The notion that the address tells how-to-get-there from the root of the
tree is very similar to the notion that absolute coordinates are really
relative, with respect to the origin.
Since we know (by default) how to get from the source to the UA root,
and since the address tells how to get to the destination from the root,
the address tells how to get from the source to the destination.
Hence, by definition, addresses are routings.
Yes! Addresses are routes! Well, perhaps the fact that Danny said
this 15 years ago still won't help convince those doubters that still
believe that addresses are addresses. Sigh....
Later on in the IEN Danny makes a proposal:
Our proposal for addressing and routing is as follows:
* Establish a UA scheme, of variable level structure.
(UA is Universal-Address, such as the Pip Address......)
* Disseminate as much knowledge to each participating node
as deemed practical.
* Allow the option of routing to be included in the headers
of the messages.
* Refuse delivery of messages to a destination with unknown
routing
* Establish internet-directory-assistance service.
This last bit is crucial. Internet-directory-assistance (now known
as DNS) must advertise the "route" from the root of the hierarchy
to the leaves. In particular, if the packet format is a variable
length string of fields, then DNS should advertise that string, ala
Pip.
So, at this point in the discourse (April 1978), Postel has provided
the address format, and Cohen the architectural underpinning from
which to understand that address. So, what happened? Why did we
end up with IP and not Pip?
We find a clue to the answer from IEN46, written by Clark and Cohen
in June of 1978 called "A Proposal for Addressing and Routing in
the Internet". After discussing several problems with routing and
addressing, they make the following statement:
The solution which has been proposed in the past to cope with this is to
replace the address in the packet whith a route, called a source route since
it is provided by the source of the packet. The disadvantage of having a
route in a packet instead of an address is that the concept of an address is
very useful one. For example, for accounting purposes it may be necessary to
note the source and destination of a packet as it passes through a transit
net. Clearly, it is desirable that the source and destination be uniquely
identified for this purpose, something not easily done if the source and
destination are specified only by a route. Thus, we propose that the address
continue to be the primary piece of information in the packet, but that it be
possible to include, in addition, an optional source route.
So, here they recognize the need for a compact, simple, fixed length
*something* to identify the source and destination of a packet. Sounds
like the EID to me! So, the need for both an identifier and an
"address" (still at that time arguable to be a route.....) was clearly
recognized. However, they added the source route to handle the routing
bit, and kept the address as the primary piece of information.
I think this would have been fine except for the crucial thing mentioned
by Cohen in IEN31:
* Establish internet-directory-assistance service.
Well, this was established, but it didn't contain the source route,
just the address. So, the "routing" information in the packet was
effectively limited to 32 bits.
I was interested to find the following in the Clark/Cohen paper:
5. Migration
What is the relationship between the scheme proposed here and the current
internet header with a fixed size address field? Happily, adoption of the
Huh? In 1978 they were worried about migration? Scheeese!
addressing strategy involving regions together with the optional internet
source route implies no immediate upheaval to packet formats or gateway code.
Currently, every network is a region, and every gateway thus contains code for
doing inter-region routing. Eventually, gateways will want to be modified as
follows. When a region finally is defined which contains more than one
network, then gateways inside that region will need to understand an
additional component of the internet address. Thus, unless gateway code is
rewritten for different regions, it will be necessary to write code which can
deal, eventually, with a variable size component of the address. The address
itself, however, can reasonably be a fixed size, since it is merely an address
and not a route. In fact, it seems that the field as specified for the
current internet header is sufficient in size, although perhaps marginally so.
Well, something happened here. An argument was put forth that 32 bits
is enough because the address doesn't have to do routing--the source
route can handle the rest. Clearly it was recognized that a variable
length *something* was needed, but the source route was deemed sufficient
for that, and the 32-bit address won out in the end. So, perhaps what
killed IP is not that the address is too short (though probably it is),
but that the ability for DNS to hand a host a source route (which it could
then put in the header so that the right thing could happen in the
network) was not created.
So, in fact Pip is a combination of Postel's Extensible Field Addressing
(EFA) and Clark and Cohen's "address", though the "routing" part of the
"address" has been largely moved over to the EFA (FTIF Chain), and the
"address" (ID) is left with minimal routing role (the last hop) and
identification.
As an aside, if we go with SIP, I would strongly encourge the ability
to advertise source routes by DNS, which can be handed to hosts, which
will obediantly put them in the header. This, for all practical
purposes, makes the SIP "address" variable length, thus allowing for
more flexibility in routing and addressing, for instance policy
routing. Such a scheme, I think, would be much closer to what IP
was intended to be (at least by some).
An IEN from Cerf the following month (July 1978) seems to meld
with Clark/Cohen (IEN48, "The Catenet Model for Internetworking").
It generally confirms the Clark/Cohen proposal. It, however,
has some interesting statements of its own:
In order to limit the overhead of address fields in the header,
it was decided to restrict the maximum length of the host portion
of the internet address to 24 bits. The possibility of true,
variable-length addressing was seriously considered. At one
point, it appeared that addresses might be as long as 120 bits
each for source and destination. The overhead in the higher
level protocols for maintaining tables capable of dealing with
the maximum possible address sizes was considered excessive.
Not only is it interesting that a longer address (120 bits, almost
as long as an NSAP), was seriously considered, but the reason for
not going with it (memory overhead to "upper layer protocols") really
shows how times have changed.
Finally, Cerf's IEN seems to delegate source routing to its
current, and very limited, role:
One of the major arguments in favor of variable length
"addressing" is to support what is called "source-routing." The
structure of the information in the "address" really identifies a
route (e.g., through a particular sequence of networks and
gateways). Such a capability could support ad hoc network
interconnections in which a host on two nets could serve as a
private gateway. Though it would not participate in catenet
routing or flow control procedures, any host which knows of this
private gateway could send "source-routed" internet datagrams to
that host.
I find it interesting that the original ideas of Postel and Cohen
(very Pip-like) evolved into the source route, which was then
limited to a "special service" role (i.e., routing a packet through
a private host on two nets). I guess I would characterize Pip has
trying to get back to some of the earliest ideas on internet
addressing and routing.
PX
ps.....
By the way, I hope this little diatribe is in no way interpreted as
a criticism of the work of Cerf, Postel, Clark, Cohen, Sunshine
and others (Boggs, Shoch, Metcalfe, and many others). They're work
is nothing short of brilliant, and the fact that we are doing nothing
but rehash 15-year-old arguments is testimony to that. In particular,
one could conjecture that, had the Extendable Field Addressing idea
won the day, the resulting complexity might have prevented the
internet from growing the way it did. (I certainly don't conjecture
this, but one *could* :-).
I hope somebody out there enjoyed reading this as much as I enjoyed
discovering and writing it. I would love to get war stories from
the participants on what *really* happened.....
- What goes around comes around Paul Francis--formerly Tsuchiya
- Re: What goes around comes around William Allen Simpson
- Re: What goes around comes around Valdis Kletnieks
- Re: What goes around comes around Noel Chiappa
- Re: What goes around comes around John Curran
- Re: What goes around comes around Frank Kastenholz
- Re: What goes around comes around Art Berggreen
- Re: What goes around comes around Scott_Brim
- Re: What goes around comes around prue
- Re: What goes around comes around Noel Chiappa