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

[ih] Early Unix networking



Gentlemen,

Following my earlier request I have received a lot of information off list. I think it might be useful to summarize that on this list.

For introduction: I'm a retro-computing hobbyist who's interested in the origins of networking in Unix (other than uucp). From 1983 onwards that history is well-kown and documented in several books; my interest is in what came before. Warren Toomey of the Unix Heritage Society has done a wonderful job of preserving the development of the early Unix source code (see http://minnie.tuhs.org/cgi-bin/utree.pl). However, in that archive networking appears as a big blob in 4.1c BSD and I am trying to dig beyond that and figure out how the code developed.

I'm a bit peculiar in that I like to work from the actual source code and trying to get it running again (in emulation, or by porting) and experience the design choices made first hand. Hence my interest is sometimes about arcane detail and sometimes about the big picture.

Here is where I am at, working backwards from 4.1c BSD. Questions are inline, marked with "=>".

- 4.1a BSD (March '82). This is essentially 4.1BSD plus Rob Gurwitz' TCP/IP stack plus a precursor to the Joy/Leffler socket API. In backup tape in the CSRG archives was corrupted and the kernel files could not be read. However, I'm hopeful that 4.1a can be reconstructed from the SCCS files if need be.

=> does anybody know of a preserved good copy of the 4.1a distribution tape?

- 4.1 BBN (November '81). This is the beta code that BBN sent to CSRG. It has Rob Gurwitz' TCP/IP stack as described in ien168 (https://www.rfc-editor.org/ien/ien168.txt) combined with an API and user land programs (telnet, etc.) that seem to derive from Network Unix as developed at the University of Illinois. The source to this system was preserved in the CSRG archives. Making this TCP/IP stack run with a loopback driver on X64 and on a 16-bit mini was surprisingly clean and easy.

- Network Unix (May '76). This is the NCP Unix system as described in RFC681 and here https://archive.org/details/networkunixsyste243kell From the authors and the Chesson paper I know that the kernel did not change much between '76 and '78. A tape from early 1979 has been located that might contain the source, but it has not been read so far. This seems to be the eldest Arpanet enabled Unix, and also the eldest networked Unix -- predating uucp.

=> does anybody know of a preserved copy of this system? It would seem to have been in fairly wide use.

There are three code bases that may have influenced the design decisions of later TCP/IP stacks:

- DTI Unix (March '79). This is mentioned in IEN98 (https://www.rfc-editor.org/ien/ien98.txt). I have questions outstanding off list to understand what this was. Perhaps it derives from Network Unix, with NCP ripped out and TCP/IP put in.

- BBN Unix / Wingfield (March '79). Also mentioned in IEN98. This is a user land TCP/IP implementation that runs on top of a kernel enriched with Rand ports, await/capac synchronization and a IMP device driver. The source is available as a scan at the Internet Museum at UCLA (http://digital2.library.ucla.edu/viewItem.do?ark=21198/zz002gvzqg). It may have been a test bed for some security enhancements, not sure yet how this worked. Over the coming months I will try to get this OCR'ed and running again.

- BBN Unix / Haverty (September '77 - March '79). See Jack's post yesterday for detail. As I understand the broad design is similar to the later Wingfield Unix, but the TCP/IP stack is written in assembly. As he mentioned, a printout of the source code has survived in Jack's basement. If I understood Jack correctly, the main lesson from this work was that if buffers or code of the TCP/IP stack can be swapped out performance becomes terrible.

I find the ports system and the await/capac system calls interesting, as they may have influenced the later design decisions on the BSD socket API. So far I have no source for these kernel extensions, but there is detailed documentation, so they could be recreated I think (for details see http://www.dtic.mil/dtic/tr/fulltext/u2/a044201.pdf and BBN Quarterly Report 3824).

=> Did the kernel source code for these extensions survive?


Paul