[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[ih] Internet addressing history section

> On 14 Feb 2019, at 04:57, Dave Taht <dave at taht.net> wrote:
> Anyway, although I can add a lot more to the arpanet portion of the
> history section, and probably will, my current working draft of the
> history section of this document is now up here:
> https://github.com/dtaht/ipv4-cleanup/blob/master/rfcs/draft-gilmore-taht-v4uniext.txt#L117
> Feel free to make suggestions for more (or less!) content, comment as to
> my mental state, ancestry, naivety, and overall correctness of the cites
> - I note that the last cite I added today was rfc1925, which really
> should get cited more often.

Hi Dave,

In the paper you write around line 233:

"During that era, there was confusion in one popular IPv4 implementation, 4.2 BSD, which used the zero node address for broadcast, rather than the all-ones node address.  When these mismatched implementations tried to interoperate on an Ethernet, it was easy to produce "broadcast storms" that would consume all available network bandwidth until manually stopped. The offending implementation was upgraded in the subsequent 4.3 BSD release to meet the standards.?

I was looking into the early history of routing protocols the other day and I think the above paragraph might suggest an incorrect timeline. Interestingly, there is a link with PUP, the ipx/spx ancestor, as well. Let me explain my understanding:

- Early in the development of tcp/ip routers (gateways) used static routing tables. This was foreseen to become a problem as the network grew and the gateway-to-gateway protocol  GGP was developed. As originally developed, the gateways needed an initial table of other routers, although newer versions of the table could be propagated between routers. There was no broadcast-based discovery of other gateways on the same local net(s).

- It would seem that the GGP protocol was under heavy review around 1982, with ICMP split off in 1981 and the first proposals for an EGP appearing around the same time. It is hard to tell from RFC?s alone, but my impression is that early in 1983 there was no firm router protocol spec for tcp/ip.

- Then, early in 1983, CSRG took the RIP protocol from XNS and implemented that as RIP for tcp/ip (the ?routed? daemon). RIP used broadcast to discover neighbouring routers and hence tcp/ip needed some way to specify broadcast addresses. In 4.2BSD this was apparently the zero node address. It turns out that the XNS RIP protocol was based on the PUP Gateway Information Protocol, which in turn seems to have been influenced by the routing protocols used inside IMP?s.

- Usage of all ones as the tcp/ip broadcast address was codified only later, in 1984 or 1985 I think. RIP for tcp/ip itself was only codified in an RFC in 1988; not sure why it took 5 years to do so.

So, if the above understanding is correct, then having the potential misreading of the above paragraph that 4.2BSD implemented the standard incorrectly is at odds with the timeline, where 4.2BSD appeared before the standard did.


PS In reading up on a PUP document just now, I noticed that PUP also uses ?network #0? to mean ?this network?.