On Jan 9, 2018, at 7:56 PM, Phil Budne via cctalk
<cctalk at classiccmp.org> wrote:
...
(*) "A Network For 10s?" possibly based on a VERY early spec for
DECnet. It may have used link-state routing. I don't think routing
in DECnet appeared before Phase III; Between Phase II systems you
needed to use a passthru service, and ended up hand specifying routes,
like in the UUCP world: A::B::C:: -- DECnet routing (at least up to
Phase IV) was distance vector (within an area, I think node zero was
designated to be a route to an inter-area router). The ONE nice thing
I remember about Phase IV is that an area could span multiple Ethernet
links, so you didn't have to waste a "network number" on each Ether
segment the way you had to use a Class-C in TCP/IP before subnetting.
I've wondered how much longer the IPv4 address space might have lasted
if there hadn't been a constraint that each network link have its own
network number (and each interface be uniquely addressable).
DECnet phase 1 was point to point, usually described as RSX only though there is a
DECnet-8 document that describes it.
DECnet phase 2 is also point to point except for "intercept" nodes which do
routing (by node name -- not number). As I understand it, intercept was intended for
PDP-10/20 systems where the front end would be the intercept, but that may be a
misunderstanding on my part. I worked on DECnet/E, which neither asked for nor offered
intercept. An intercept node is more than a router, actually; it keeps connection state
(NSP state) so it can disconnect connections whose destination has gone away. Note that
Phase 2 NSP doesn't do timeout and retransmit, because it works on a
"reliable" datalink (DDCMP).
DECnet phase 3 adds distance vector routing, NSP now has timeout and retransmit. 255
nodes max, no hierarchy. Still only point to point (X.25 was added).
DECnet phase 4 adds hierarchy, Ethernet support. This is where the infamous "high
order MAC address" hack was concocted. And yes, areas are not subnets, for that
matter addresses are node addresses, not interface addresses, in all versions of DECnet.
That made a bunch of things much cleaner while complicating a few others. Phase 4 is
still distance vector, now with two instances: one for routing within the area, one for
routing among areas. The latter is present only in area routers. And yes, in the
within-area routing table, node number 0 is the alias for "any destination outside
this area".
DECnet Phase V encompassed ISO, and might have
included IS-IS,
which Rhea Perlman had a hand in (while at DEC?). XNS (and hence
Netware) had 32-bits network number (host/node address was 48 bits
(ethernet address) and might also have had longer legs for global
use.
Phase 5 adopted OSI ES-IS (network layer) and TP-4 (transport layer). ISO didn't have
a routing protocol; their theory was that the world is X.25-ish stuff where telcos do the
routing in a proprietary way. That was obviously nonsense, so the DECnet architecture
team created a link state routing protocol inspired by earlier IP work, with a lot of
fixes to deal with failures. That was then adopted by OSI as IS-IS, and further tweaked
to become OSPF.
A bit of obscure history: When she first arrived at DEC (1981?), Radia proposed a link
state routing protocol for what would be phase 4. That wasn't adopted because it was
considered too complicated by the VMS team; instead "phase 3e (3 extended)" was
created by a straightforward hack of phase 3, and that is what we now know as phase 4.
But the packet headers in Radia's proposal were retained for the Eternet case, which
is where the "long headers" come from with a whole pile of fields with strange
names that are for practical purposes simply reserved values. When we outgrew phase 4 and
link state was dusted off again, OSI had become relevant so a new design was created on
that basis. So the link state algorithm is in IS-IS but the packet formats and addressing
are entirely different from the previous "long header" Ethernet stuff.
All DECnet versions from phase 3 onward were one phase backward compatible. Phase 2
wasn't backward compatible with phase 1; the packet formats are rather different.
I'm not sure why this wasn't done; perhaps no one thought it would be interesting.
No DEC product that I know of was multiple-phase backward compatible and no spec says how
to do that, but it isn't actually hard; my Python based router does so.
paul