[ih] Installed base momentum (was Re: Design choices in SMTP)
Jack Haverty
jack at 3kitty.org
Mon Feb 13 13:57:43 PST 2023
Rob's Vax TCP was done from scratch IIRC. I had written TCP for Unix on
a PDP-11/40 (which AFAIK was the first Unix TCP). Because of the
11/40s hardware limitations, my TCP was written in PDP-11 assembler,
using Jim Mathis' LSI-11 implementation from the Packet Radio work at
SRI as a model and source of code fragments. I still have a listing.
With the 11/40 constraints, TCP code wouldn't fit into the kernel so I
designed it as a user process. That surfaced some issues in Unix
design, in particular in the facilities "pipes" provided (and Rand's
"ports" which were extensions of pipes for interprocess
communications). There was no way we could find for a user process to
sleep waiting for a wakeup from any of several possible inputs. That
motivated the definition of two new Unix system calls, "await" and
"capac", which were minimalistic because they had to fit in the
extremely limited kernel memory space. We even visited Bell Labs to
talk with Ritchie while figuring out how to implement TCP in Unix.
Those new system calls were documented and published -- *Haverty*, JF,
and *Rettberg*, RD,'Inter-process communications for a server
in***UNIX*', in COMPCON Fall 78 (September, 1978): pp. 312-15. I
can't seem to find such ancient conference proceedings online today, but
Google knows about it:
https://www.google.com/books/edition/Proceedings_Compcon/Mf1VAAAAMAAJ?hl=en&gbpv=0&kptab=overview
That work was available to Rob while he was implementing Vax TCP, as
well as to Mike Wingfield, who was implementing TCP for PDP-11/70 under
a contract with DCEC (engineering arm of DCA). For a while, all of
these machines were housed in the same computer room/lab, connected to
an in-house IMP network, which made brainstorming and testing pretty
easy. Also juggling practice, something to do for a few minutes while
waiting for the compile or assembly process to complete.
My 11/40 TCP had little value for the future since such limited machines
as the 11/40 were being replaced by more powerful machines. But Rob's
work was all provided to Berkeley for their use in BSD. I never heard
whether or how they used it. I was the contractor-side point man for
the ARPA contract that funded all of this work, and ARPA had decided to
consolidate its Unix OS efforts and focus on BSD. The "await" and
"capac" system calls were a minimalist implementation of what sockets
later provided on more powerful hardware.
Jack
On 2/13/23 13:07, Craig Partridge via Internet-history wrote:
> Hi John:
>
> Oh no, far more complicated than that. As I recall (and my memory on this
> is probably imperfect as I was young and learning and some things went over
> my head):
>
>
> - Bill rewrote the BBN TCP to make it more efficient. The BBN TCP used
> a function table that was indexed by connection state and TCP segment type
> (so you looked up the connection using the TCP/IP header, then grabbed the
> segment type, and called the indexed function along with the PCB and
> inbound segment). It made for tight and simple routines... but, as I
> recall, the VAX (the primary platform at the time) made function calls
> expensive, so Bill wanted a minimal number of function calls and produced
> long routines as a result (cf. tcp_input in 4.2BSD).
> - Bill (or someone) at Berkeley came up with the idea of sockets and the
> socket/bind/listen/connect API as they did not like /dev/tcp and ioctls
> (which BBN TCP used and which Dennis Ritchie independently came up with for
> System V UNIX). While ioctls and /dev/tcp may have fit the existing UNIX
> philosophy, having taught thousands of students in the 1990s sockets and
> had a few then encounter System V and say "ugh", Berkeley was probably
> right on this one.
> - Various innards of the BSD implementation were cribbed from the BBN
> TCP. A good example is mbufs -- invented by Rob Gurwitz when he ported an
> early TCP (Jack Haverty's???) to BSD. I seem to recall seeing a memo from
> Rob c. 1988 saying mbufs were a hack to solve an immediate porting problem
> and that he was surprised a better solution had not materialized.
> - The 4.1BSD BBN TCP was more stable than the 4.1c BSD (first socket)
> TCP and there was a period in which DARPA was (unhappily) funding both TCPs
> because many sites asked to have the BBN TCP so they could have reliable
> Internet connectivity. This lasted a certain number of years into 4.2BSD,
> but eventually went Berkeley's way.
>
> Craig
>
> On Mon, Feb 13, 2023 at 1:35 PM John Day<jeanjour at comcast.net> wrote:
>
>> So Berkeley’s position was that they were to port the BBN implementation
>> bugs and all?
>>
>> And BBN is to blame for sockets? What a lost opportunity.
>>
>> The first Unix on the Net in 1975 didn’t do that. It used file_io.
>>
>>
>>> On Feb 13, 2023, at 15:28, Craig Partridge via Internet-history <
>> internet-history at elists.isoc.org> wrote:
>>> HI Scott:
>>>
>>> Small nit.
>>>
>>> DARPA funded Berkeley to port the BBN Unix to BSD -- and Bill Joy chose
>> to
>>> reimplement and develop sockets. Much behind the scenes fighting ensued
>> (I
>>> was hired into that fight in 1983 when BBN concluded it needed to train
>>> someone to understand the BSD implementation). Led to various odd
>>> conversations years later -- I remember Van Jacobson justifying a TCP bug
>>> in the BSD implementation by saying it had been in the BBN implementation
>>> that Bill used as a reference -- c. 1989, long after BBN BSD TCP was
>> gone.
>>> Craig
>>>
>>> On Mon, Feb 13, 2023 at 12:50 PM Scott Bradner via Internet-history <
>>> internet-history at elists.isoc.org> wrote:
>>>
>>>> for what its worth - here is my take on some of the reasons that the
>>>> Internet (and specifically
>>>> TCP/IP) took over the world
>>>>
>>>> Forks: Decisions that got us the Internet we have
>>>> https://www.sobco.com/presentations/2020-06-25-forks.pdf
>>>>
>>>> Scott
>>>> (I, along with Scott Shackelford, have a book on the subject that should
>>>> be published at some
>>>> point - the text is done & now in publisher wait)
>>>> --
>>>> Internet-history mailing list
>>>> Internet-history at elists.isoc.org
>>>> https://elists.isoc.org/mailman/listinfo/internet-history
>>>>
>>>
>>> --
>>> *****
>>> Craig Partridge's email account for professional society activities and
>>> mailing lists.
>>> --
>>> Internet-history mailing list
>>> Internet-history at elists.isoc.org
>>> https://elists.isoc.org/mailman/listinfo/internet-history
>>
More information about the Internet-history
mailing list