Discussion:
[ih] Early sockets discussion paper
Paul Ruizendaal
2017-11-28 21:52:34 UTC
Permalink
I'm hoping someone on this list can help me locating an ancient Berkeley report: "CSRG TR/4: Proposals for the Enhancement of Unix on the Vax" (1981)
This tech report probably contains the first draft of what would become the BSD sockets interface in the next two years.

A bit of background: to guide the development of 4.2BSD a Steering Committee was formed consisting of Bob Fabry, Bill Joy and Sam Leffler from UCB, Alan Nemeth and Rob Gurwitz from BBN, Dennis Ritchie from Bell Labs, Keith Lantz from Stanford, Rick Rashid from Carnegie-Mellon, Bert Halstead from MIT, Dan Lynch from ISI and Gerald J. Popek of UCLA. In the autumn of 1981 a discussion paper was circulated, to kick off committee discussions. I think the TR/4 report is that discussion document.

The TR/4 report does not seems to be in the Berkeley library, it is not in the CSRG archive, it is not in the (online public) DTIC archive and the folks on the Unix Heritage Society mailing list also don't appear to have it.

Anybody on this list who knows about a surviving copy?

Many thanks,

Paul
Craig Partridge
2017-11-28 22:13:47 UTC
Permalink
Hi Paul:

Alas I don't have the TR. It actually sounds like a broader discussion of
the overall BSD effort from its title.

I do recall reading Rob Gurwitz' review of a discussion paper about sockets
and how to revamp the networking code.

Craig
Post by Paul Ruizendaal
I'm hoping someone on this list can help me locating an ancient Berkeley
report: "CSRG TR/4: Proposals for the Enhancement of Unix on the Vax" (1981)
This tech report probably contains the first draft of what would become
the BSD sockets interface in the next two years.
A bit of background: to guide the development of 4.2BSD a Steering
Committee was formed consisting of Bob Fabry, Bill Joy and Sam Leffler from
UCB, Alan Nemeth and Rob Gurwitz from BBN, Dennis Ritchie from Bell Labs,
Keith Lantz from Stanford, Rick Rashid from Carnegie-Mellon, Bert Halstead
from MIT, Dan Lynch from ISI and Gerald J. Popek of UCLA. In the autumn of
1981 a discussion paper was circulated, to kick off committee discussions.
I think the TR/4 report is that discussion document.
The TR/4 report does not seems to be in the Berkeley library, it is not in
the CSRG archive, it is not in the (online public) DTIC archive and the
folks on the Unix Heritage Society mailing list also don't appear to have
it.
Anybody on this list who knows about a surviving copy?
Many thanks,
Paul
_______
internet-history mailing list
http://mailman.postel.org/mailman/listinfo/internet-history
--
*****
Craig Partridge's email account for professional society activities and
mailing lists.
For Raytheon business, please email: craig. <***@bbn.com>
***@raytheon.com
Paul Ruizendaal
2017-11-28 22:41:19 UTC
Permalink
Yes, it is broader.

According to Kirk McKusick the discussion paper evolved into the 4.2BSD system manual, which is TR/5. That report survived in its revised 1983 form:
http://www.cilinder.be/docs/bsd/4.2BSD_Unix_system_manual.pdf
The chapter on IPC would be my focus. That said, the (abandoned) network 'portal' facility is described under the chapter on file system functionality.

There are also 'networking implementation notes', which is report TR/6. That too survived in its revised 1983 form:
https://www2.eecs.berkeley.edu/Pubs/TechRpts/1983/CSD-83-146.pdf

Finding 1982 versions of TR/5 and/or TR/6 would also be highly interesting.

Paul
Alas I don't have the TR. It actually sounds like a broader discussion of the overall BSD effort from its title.
I do recall reading Rob Gurwitz' review of a discussion paper about sockets and how to revamp the networking code.
Craig
I'm hoping someone on this list can help me locating an ancient Berkeley report: "CSRG TR/4: Proposals for the Enhancement of Unix on the Vax" (1981)
This tech report probably contains the first draft of what would become the BSD sockets interface in the next two years.
A bit of background: to guide the development of 4.2BSD a Steering Committee was formed consisting of Bob Fabry, Bill Joy and Sam Leffler from UCB, Alan Nemeth and Rob Gurwitz from BBN, Dennis Ritchie from Bell Labs, Keith Lantz from Stanford, Rick Rashid from Carnegie-Mellon, Bert Halstead from MIT, Dan Lynch from ISI and Gerald J. Popek of UCLA. In the autumn of 1981 a discussion paper was circulated, to kick off committee discussions. I think the TR/4 report is that discussion document.
The TR/4 report does not seems to be in the Berkeley library, it is not in the CSRG archive, it is not in the (online public) DTIC archive and the folks on the Unix Heritage Society mailing list also don't appear to have it.
Anybody on this list who knows about a surviving copy?
Many thanks,
Paul
_______
internet-history mailing list
http://mailman.postel.org/mailman/listinfo/internet-history
--
*****
Craig Partridge's email account for professional society activities and mailing lists.
Joe Touch
2017-11-30 14:44:51 UTC
Permalink
Not sure if it helps, but a history of port numbers as used in Internet
sockets (including NCP) appears in RFC7605. I've always wondered about
the chicken-and-egg issue of BSD sockets vs. the interface defined in
the early TCP specs.

Does anyone happen to know whether TCP v1, v2, or the split TCP/IP v3
variants that preceded the current v4 had the same interface spec and
the direction of influence (TCP to BSD or the converse)?

Joe
Post by Paul Ruizendaal
I'm hoping someone on this list can help me locating an ancient Berkeley report: "CSRG TR/4: Proposals for the Enhancement of Unix on the Vax" (1981)
This tech report probably contains the first draft of what would become the BSD sockets interface in the next two years.
A bit of background: to guide the development of 4.2BSD a Steering Committee was formed consisting of Bob Fabry, Bill Joy and Sam Leffler from UCB, Alan Nemeth and Rob Gurwitz from BBN, Dennis Ritchie from Bell Labs, Keith Lantz from Stanford, Rick Rashid from Carnegie-Mellon, Bert Halstead from MIT, Dan Lynch from ISI and Gerald J. Popek of UCLA. In the autumn of 1981 a discussion paper was circulated, to kick off committee discussions. I think the TR/4 report is that discussion document.
The TR/4 report does not seems to be in the Berkeley library, it is not in the CSRG archive, it is not in the (online public) DTIC archive and the folks on the Unix Heritage Society mailing list also don't appear to have it.
Anybody on this list who knows about a surviving copy?
Many thanks,
Paul
_______
internet-history mailing list
http://mailman.postel.org/mailman/listinfo/internet-history
Craig Partridge
2017-11-30 18:34:53 UTC
Permalink
Post by Joe Touch
Not sure if it helps, but a history of port numbers as used in Internet
sockets (including NCP) appears in RFC7605. I've always wondered about
the chicken-and-egg issue of BSD sockets vs. the interface defined in
the early TCP specs.
Does anyone happen to know whether TCP v1, v2, or the split TCP/IP v3
variants that preceded the current v4 had the same interface spec and
the direction of influence (TCP to BSD or the converse)?
Hi Joe:

I'm going to do this from memory (always perilous when looking back 30+
years), but here's my recollection.

The earlier BBN TCPs used a file system abstraction -- you opened /dev/tcp
(or something like that -- it was
in /dev -- may have been /dev/inet/tcp or similar) and then used ioctls to
set the socket parameters such as port
numbers and whether the port was listening for connections. I do not
remember what the corresponding abstraction
to accept() was for forking off new connections.

The idea of dividing the port space into reserved and non-reserved ports
(e.g. ports below 1024) was a Berkeley
innovation.

Craig
--
*****
Craig Partridge's email account for professional society activities and
mailing lists.
For Raytheon business, please email: craig. <***@bbn.com>
***@raytheon.com
Noel Chiappa
2017-11-30 18:35:13 UTC
Permalink
From: Joe Touch
I've always wondered about the chicken-and-egg issue of BSD sockets
vs. the interface defined in the early TCP specs.
?? See below...
Does anyone happen to know whether TCP v1, v2, or the split TCP/IP v3
variants that preceded the current v4 had the same interface spec
Without checking to be sure (and it's been a _long_ time, so don't put much
weight on this), I think they were (modulo changes to the protocol, e.g. EOL
changes). But the docs are out there, it would not be too hard to check.
and the direction of influence (TCP to BSD or the converse)?
BSD _long_ post-dates the TCP spec.

Noel
Vint Cerf
2017-11-30 18:47:09 UTC
Permalink
noel is right. The spec, however, did not specify the API - only the
information that the API needed to support.
The sockets interface was presumably designed for UNIX, possibly by BSD
although BBN also did a UNIX API for Internet services (TCP, IP, UDP, ...).

TCP split comes with TCP v3 as I recall but the specs should be in EIN
and/or RFC notes for reference.

v
Post by Noel Chiappa
From: Joe Touch
I've always wondered about the chicken-and-egg issue of BSD sockets
vs. the interface defined in the early TCP specs.
?? See below...
Does anyone happen to know whether TCP v1, v2, or the split TCP/IP v3
variants that preceded the current v4 had the same interface spec
Without checking to be sure (and it's been a _long_ time, so don't put much
weight on this), I think they were (modulo changes to the protocol, e.g.
EOL
changes). But the docs are out there, it would not be too hard to check.
and the direction of influence (TCP to BSD or the converse)?
BSD _long_ post-dates the TCP spec.
Noel
_______
internet-history mailing list
http://mailman.postel.org/mailman/listinfo/internet-history
--
New postal address:
Google
1875 Explorer Street, 10th Floor
Reston, VA 20190
Paul Ruizendaal
2017-11-30 23:00:33 UTC
Permalink
The sockets interface was presumably designed for UNIX, possibly by BSD although BBN also did a UNIX API for Internet services (TCP, IP, UDP, …).
Yes. The documentation for that BBN API is here (see bottom post on that page):
https://www.rfc-editor.org/rfc/museum/tcp-ip-digest/tcp-ip-digest.v1n1.1

For the interested, I've posted a few pages with notes on the evolution of the Unix arpanet API here:
https://ruizendp.home.xs4all.nl/notes.pdf
The notes only cover making connections, but similar analysis can be done for other parts of the API.

Checking and refining this is why I'm after that TR/4 report.
Need to find someone to go to the UC Berkeley archives and make a record
of the 10 cartons of records. And then someone to digitize it.
http://www.oac.cdlib.org/findaid/ark:/13030/hb2b69n7b5/admin/
http://www.oac.cdlib.org/findaid/ark:/13030/hb2b69n7b5/dsc/#dsc-1.3.7
Thank you for posting that, it looks like carton #2 is interesting. I'll contact the librarian about that.

Paul
noel is right. The spec, however, did not specify the API - only the information that the API needed to support.
The sockets interface was presumably designed for UNIX, possibly by BSD although BBN also did a UNIX API for Internet services (TCP, IP, UDP, ...).
TCP split comes with TCP v3 as I recall but the specs should be in EIN and/or RFC notes for reference.
v
From: Joe Touch
I've always wondered about the chicken-and-egg issue of BSD sockets
vs. the interface defined in the early TCP specs.
?? See below...
Does anyone happen to know whether TCP v1, v2, or the split TCP/IP v3
variants that preceded the current v4 had the same interface spec
Without checking to be sure (and it's been a _long_ time, so don't put much
weight on this), I think they were (modulo changes to the protocol, e.g. EOL
changes). But the docs are out there, it would not be too hard to check.
and the direction of influence (TCP to BSD or the converse)?
BSD _long_ post-dates the TCP spec.
Noel
_______
internet-history mailing list
http://mailman.postel.org/mailman/listinfo/internet-history
--
Google
1875 Explorer Street, 10th Floor
Reston, VA 20190
_______
internet-history mailing list
http://mailman.postel.org/mailman/listinfo/internet-history
Jack Haverty
2017-11-30 19:04:28 UTC
Permalink
FYI, for TCP on Unix:
- there was no TCP V1 implementation
- there was a TCP V2 implementation (I personally did this one) based
on the prior LSI-11 MOS TCP done at SRI; the TCP was itself a user
process, and other processes interfaced to TCP through Rand ports
- there was no TCP V3 implementation (V3 had a very short life)
- there were multiple TCP V4 implementations: my V2 implementation was
evolved to do V4; Mike Wingfield did PDP-11/70; Rob Gurwitz did the Vax;
John Sax did the HP-3000
- BSD TCP came after all of these

Also, the user interface to TCP was explicitly not specified in the TCP
definition. The interface outlined in the spec was presented as an
example only. We did this explicitly because there were so many
different machines and OSes and languages at the time that a standard
mandatory API was not reasonable.

IIRC,
/Jack
Post by Noel Chiappa
From: Joe Touch
I've always wondered about the chicken-and-egg issue of BSD sockets
vs. the interface defined in the early TCP specs.
?? See below...
Does anyone happen to know whether TCP v1, v2, or the split TCP/IP v3
variants that preceded the current v4 had the same interface spec
Without checking to be sure (and it's been a _long_ time, so don't put much
weight on this), I think they were (modulo changes to the protocol, e.g. EOL
changes). But the docs are out there, it would not be too hard to check.
and the direction of influence (TCP to BSD or the converse)?
BSD _long_ post-dates the TCP spec.
Noel
_______
internet-history mailing list
http://mailman.postel.org/mailman/listinfo/internet-history
Noel Chiappa
2017-11-30 19:16:39 UTC
Permalink
From: Vint Cerf
The spec, however, did not specify the API - only the information that
the API needed to support.
Well, the spec did contain what's effectively a _sample_ API, although there
was no _mandated_ one. From section "3.8. Interfaces", from RFC-793:

we must warn readers that different TCP implementations may have different
user interfaces. However, all TCPs must provide a certain minimum set of
services ... This section specifies the functional interfaces required of
all TCP implementations.

And then it lists things like:

Send

Format: SEND (local connection name, buffer address, byte
count, PUSH flag, URGENT flag [,timeout])

I have this memory that for the interface on the TCP I did, I relied heavily
on that section of the spec.

(Or am I confused, and confusing that with the _packet processing_, where I
definitely did slavishly follow the spec? I still have the source somewhere, I
could check... :-)

Noel
Loading...