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

[ih] BBN C-series computers

The history of TCP implementations was driven by non-technical forces
too.  As the saying goes -- "Follow the money."

ARPA paid for the development of most if not all of the very early TCP
implementations: the BBN-TENEX and LSI-11 for the Packet Radio project,
my own PDP-11/40 Unix implementation as part of a Network Security
research program, Sax/Edmond's HP-3000 code, Braden's IBM work at UCLA,
Clark/Chiappa at MIT, Mills LSI-11 at UDel, and Gurwitz Vax
implementation.  Probably more I've forgotten.  Wingfield's PDP-11/70
was funded, IIRC, by DCEC, the research arm of DCA - so it represented a
tiny step from the research/ARPA world into the operational side.

ARPA also paid for development of OSes, in particular BSD.  As the TCP
implementations were completed, ARPA stopped funding further
TCP-specific work, and, also IIRC, made those baseline implementations
generally available.  Berkeley continued BSD with ARPA funds, which
evolved into Sun.  Big government contractors (motivated by the
contractual requirement to support TCP) built TCPs as they needed.

Note also that the "await/capac" Unix interface was created by Randy
Rettberg and I to be the minimal functionality, with absolute minimal
kernel code footprint, that we knew was needed to be able to write
network applications - ftp, telnet, etc.  The goal was to cram it into
the PDP-11/40, not to make a definitive interface for general Unix use.
So it's not surprising that sockets took over.

Also, someone commented that it would have been possible to do
networking with standard Unix primitives at the time, by having multiple
processes interacting.  We actually tried that.  More accurately, Ray
Tomlinson (yes the same one) ported a network security application that
had been running on BBN-TENEX into a Unix implementation with a dozen or
so interacting processes.  With all of the context switching it was so
slow that it was totally unusable.  Plan B was await/capac to make it
possible to use a single Unix process instead.

Hardware vendors built TCPs too, such as the C/70.  IIRC, the C/70
development for network management was partially funded by DCA, so that
would have provided support for TCP development too.

Startups popped up to fill gaps.  Microsoft was a tad late to the party,
and a slew of small companies created TCPs for DOS/Windows.  I recall
circa 1990 we had to deal with testing our software using 30+ different
TCP implementations for Windows that were then in common use.

Historians may find DNA traces of some of those baseline 1980-ish
implementations in the later systems.  My gut feeling is that the
choices that were made were not necessarily driven much by technical
evaluations, but more often by pragmatic considerations - availability
of code, or of personnel with relevant experience.

So, when you seek to unravel the history of TCP (and the Internet), I'd
suggest also following the trails of the money, the people, as well as
the software to understand why things happened the way they did.  That
won't be easy...


On 10/25/2017 08:27 AM, James J Dempsey wrote:
> Paul Ruizendaal <pnr at planet.nl> wrote:
>>> On 24 Oct 2017, at 20:52, James J Dempsey <jjd at jjd.com> wrote:
>>> The C/70 (as well as the C/60) definitely did have a TCP/IP stack.  One of
>>> the first uses of the C/70 was to build and run the NU Network Monitoring
>>> system.  When I arrived at BBN in the Summer of 1981, we were already on
>>> track to transition ARPANET to TCP/IP, which as we know eventually happened
>>> on 1 Jan 1983.
>> Thanks for confirming that. Would you recall if the C/70 used the sockets API
>> or the earlier arpanet API? (I would suspect the latter).
>> If the former, it would be the only back port of sockets to V7 that I?m
>> aware of (unless one thinks of 2.8BSD/2.9BSD as being V7).
> If you check out RFC 801 (written Nov 1981), Rob Gurwitz (who wrote BBN's
> UNIX TCP implementation) says of "BBN C70 UNIX":
>       The C/70 processor is a BBN-designed system with a native
>       instruction set oriented toward executing the C language.  It
>       supports UNIX Version 7 and provides for user processes with a
>       20-bit address space.  The TCP/IP implementation for the C/70 was
>       ported from the BBN VAX TCP/IP, and shares all of its features.
>       This version of TCP/IP is running experimentally at BBN, but is
>       still under development.  Performance tuning is underway, to make
>       it more compatible with the C/70's memory management system.
> In the same RFC, Rob writes of the BBN VAX UNIX TCP implementation:
>       The VAX TCP/IP implementation is written in C for Berkeley 4.1BSD
>       UNIX, and runs in the UNIX kernel.  It has been run on VAX 11/780s
>       and 750s at several sites, and is due to be generally available in
>       early 1982.
>       The implementation conforms to the TCP and IP specifications (RFC
>       791, 793).  The implementation supports the new extended internet
>       address formats, and both GGP and ICMP.  It also supports multiple
>       network access protocols and device drivers.  Aside from ARPANET
>       1822 and the ACC LH/DH-11 driver, experimental drivers have also
>       been developed for ETHERNET.  There are user interfaces for
>       accessing the IP and local network access layers independent of
>       the TCP.
>       Higher level protocol services include user and server TELNET,
>       MTP, and FTP, implemented as user level programs.  There are also
>       tools available for monitoring and recording network traffic for
>       debugging purposes.
>       Continuing development includes performance enhancements.  The
>       implementation is described in IEN-168.
> IEN-168 (available here https://www.rfc-editor.org/ien/ien168.txt ) does not
> contain the word "socket", so I suspect that that means the BBN-UNIX
> implementation of TCP didn't contains the socket interface, initially. 
> In "Networking Implementation Notes 4.4BSD Edition" (
> https://docs.freebsd.org/44doc/smm/18.net/paper.pdf ) Sam Leffler and Bill
> Joy acknowledge the BBN TCP/IP implementation:
>     Many of the ideas related to protocol modularity, memory management, and
>     network interfaces are based on Rob Gurwitz?s TCP/IP implementation for the
>     4.1BSD version of UNIX on the VAX [Gurwitz81].
> [Gurwitz81] is IEN-168.
> Finally, at http://www.xbbn.org/note-12.html there is this description of
> sockets and BBN's TCP implementation:
> 	The BBN BSD TCP was the standard TCP for 4BSD and BSD UNIX 4.1. However, in
> 	BSD 4.2, the team at U.C. Berkeley created their own and very different
> 	implementation of TCP/IP (using the now familiar socket interface developed
> 	by Bill Joy and Sam Leffler of Berkeley along with Gurwitz).  BBN promptly
> 	revised its TCP implementation to use the socket interface, and for about a
> 	year there was a battle to determine whose networking code would take
> 	precedence.  Although the BBN code won some adherents, and was licensed to
> 	several computer vendors, the Berkeley code won the battle.
> I hope this clears that up.
> --Jim Dempsey--
> _______
> internet-history mailing list
> internet-history at postel.org
> http://mailman.postel.org/mailman/listinfo/internet-history
> Contact list-owner at postel.org for assistance.