I’m looking for the origins of SLIP and PPP on Unix. Both seem to have been developed long before their RFC’s appeared. As far as I can tell, SLIP originally appeared in 3COM’s UNET for the PDP11, around 1980. From the TUHS Unix tree, first appearance in BSD seems to be 4.3 (1986). Not sure when PPP first appeared, but the linux man page for pppd has a credit that goes back to Carnegie Mellon 1984. First appearance in BSD seems to be FreeBSD 5.3 (2004), which seems improbably late (same source). Paul
On 5 Dec 2019 11:34 +0100, from pnr@planet.nl (Paul Ruizendaal): > Not sure when PPP first appeared, but the linux man page for pppd > has a credit that goes back to Carnegie Mellon 1984. First > appearance in BSD seems to be FreeBSD 5.3 (2004), which seems > improbably late (same source). The FreeBSD man page archive indicates that client-side (user) PPP goes back at least to 2.0.5-RELEASE. It's there in 2.0.5-RELEASE at <https://www.freebsd.org/cgi/man.cgi?query=ppp&apropos=0&sektion=8&manpath=FreeBSD+2.0.5-RELEASE&arch=default&format=html> It isn't there in 2.0-RELEASE at <https://www.freebsd.org/cgi/man.cgi?query=ppp&apropos=0&sektion=8&manpath=FreeBSD+2.0-RELEASE&arch=default&format=html> However, 2.0-RELEASE has pppd at <https://www.freebsd.org/cgi/man.cgi?query=pppd&sektion=8&apropos=0&manpath=FreeBSD+2.0-RELEASE> Even FreeBSD 1.0-RELEASE has pppd at <https://www.freebsd.org/cgi/man.cgi?query=pppd&apropos=0&sektion=8&manpath=FreeBSD+1.0-RELEASE&arch=default&format=html> The 1.0-RELEASE man page for pppd references documents as recent as May 1992, which agrees fairly well with Wikipedia which gives the release date for FreeBSD 1 as November 1993. Certainly a lot earlier than 2004. -- Michael Kjörling • https://michael.kjorling.se • michael@kjorling.se “Remember when, on the Internet, nobody cared that you were a dog?”
[-- Attachment #1: Type: text/plain, Size: 245 bytes --] Rick Adams reverse-engineered the 3Com protocol, gave the code to CSRG and named it SLIP; see "Creation of SLIP" at https://en.wikipedia.org/wiki/Rick_Adams_(Internet_pioneer) . The IETF started work on PPP to address some of its deficiencies. [-- Attachment #2: Type: text/html, Size: 394 bytes --]
[-- Attachment #1: Type: text/plain, Size: 3346 bytes --] below... On Thu, Dec 5, 2019 at 5:42 AM Paul Ruizendaal <pnr@planet.nl> wrote: > I’m looking for the origins of SLIP and PPP on Unix. Both seem to have > been developed long before their RFC’s appeared. > This is true... > > As far as I can tell, SLIP originally appeared in 3COM’s UNET for the > PDP11, around 1980. Sort of.... As the first customer for UNET I can verify that there was a serial interface that had been used to for debugging the SW until the 3C100 became stable. But it was not what we would later call SLIP. It was really not usable for much other than to debug the protocol. It did not have a 'chatting' and was for dedicated (hardwired) serial lines. As I remember it, the code mostly was used as a loopback between two TTY ports and IIRC it only worked on the DH11. I think Greg Shaw wrote it, but it might have been Bruce Borden (I can ask Bruce). Glaser and I set it up in lookback mode as we used it to A/B test the Hyperchannel code we wrote. My first experience with a real 'SLIP' as we later knew it was a distribution from Harvard/MIT in early the 1980s (83/84 IIRC but dates could be off). The code base took some major rework to the TTY driver, that I thought had originated at MIT. IIRC I got the sources from someone like Jack Test or somebody else working in Steve Ward's real-time lab (i.e. Terry Hayes/tjt may have brought the src with them); but we could have just has likely gotten them sob @ harvard. It ran on DH's as DZ'd were an issue because of interrupts as I remember (DZ's always were an issue when you pushed them). But, it must have originally worked on BSD 4.1 not 4/1C/4.2, which tells me it was hack off the original BBN code which did not use sockets, but rather the same open("/dev/tcp", ...) stuff that chaosnet used. But the times are fuzzy in my mind, so it's possible by the time we got it, worked with the UCB code sockets code base. I do remember that it ran on sockets by the time Steve Zimmerman hacked SLIP into RTU when he redid our TTY driver. The important thing is that the early version lacked PPPD, as we were later know it. > From the TUHS Unix tree, first appearance in BSD seems to be 4.3 (1986). > That's make sense. > > Not sure when PPP first appeared, but the linux man page for pppd has a > credit that goes back to Carnegie Mellon 1984. First appearance in BSD > seems to be FreeBSD 5.3 (2004), which seems improbably late (same source). > There were two or three different PPP schemes in the beginning. What was common was the SLIP line discipline code under the covers, but how the line got set up to start running it was different. The original SLIP 'kit' from Harvard/MIT lacked anything like PPPD to start and was sort of ad hoc. I think originally it used a program called 'chat' that had been pulled out uucico that set things up then exec'ed the SLIP stuff; but chat(1) may have been round 2 or 3. I've forgotten the name of the original daemon, I bet it you look in the Usenet archives from 82-84 and look for 'SLIP' you find a couple of things. The more modern pppd(1) coming from CMU is as likely as anywhere else. I did eventually run it at home on a FreeBSD box, but it was at least the second or third way I set up my dial-ip ISP connection. [-- Attachment #2: Type: text/html, Size: 5197 bytes --]
> From: Paul Ruizendaal > I'm looking for the origins of SLIP and PPP on Unix. Both seem to have > been developed long before their RFC's appeared. You're dealing with an epoch when the IETF motto - "rough consensus and running code" - really meant something. Formal RFC's way lagged protocol development; they're the last step in the process, pretty much. If you want to study the history, you'd need to look at Internet Drafts (if they're still online). Failing that, look at the IETF Proceedings; I think all the ones from this period have been scanned in. They won't have the detail that the I-D's would have, but they should give the rough outlines of the history. Noel
I still remember the laughter at the IETC when someone asked if PPP stood for "Philip Pindeville's Protocol." > -----Original Message----- > From: TUHS <tuhs-bounces@minnie.tuhs.org> On Behalf Of Noel Chiappa > Sent: Thursday, December 5, 2019 2:06 PM > To: tuhs@minnie.tuhs.org > Cc: jnc@mercury.lcs.mit.edu > Subject: Re: [TUHS] Origins of PPP > > > From: Paul Ruizendaal > > > I'm looking for the origins of SLIP and PPP on Unix. Both seem to have > > been developed long before their RFC's appeared. > > You're dealing with an epoch when the IETF motto - "rough consensus and > running code" - really meant something. Formal RFC's way lagged protocol > development; they're the last step in the process, pretty much. > > If you want to study the history, you'd need to look at Internet Drafts (if > they're still online). Failing that, look at the IETF Proceedings; I think all the > ones from this period have been scanned in. They won't have the detail that > the I-D's would have, but they should give the rough outlines of the history. > > Noel
[-- Attachment #1: Type: text/plain, Size: 3125 bytes --] FreeBSD 1.0 shipped if_ppp.c, the kernel version of PPP which predated the userland version ppd, with the following headers: /* * if_ppp.c - Point-to-Point Protocol (PPP) Asynchronous driver. * * Copyright (c) 1989 Carnegie Mellon University. * All rights reserved. and later /* * $Id: if_ppp.c,v 1.4 1993/10/07 02:19:37 rgrimes Exp $ * From: if_ppp.c,v 1.22 1993/08/31 23:20:40 paulus Exp * From: if_ppp.c,v 1.21 1993/08/29 11:22:37 paulus Exp * From: if_sl.c,v 1.11 84/10/04 12:54:47 rick Exp */ the $id line is FreeBSD's modification of this file in 1993. I'm unsure where the paulus files came from, but maybe netbsd, which has the earliest two ppp revs as: commit 2db2cc6845660ec5ce837a05838fb49f999903c6 Author: paulus <paulus@netbsd.org> Date: Tue Aug 31 00:05:31 1993 +0000 Modified if_ppp.c and if_ppp.h to add priority queueing for "interactive" traffic (done in a similar fashion to if_sl.c), and BPF support. commit 0e20c036228474457205bae6fd791d9029dc85eb Author: deraadt <deraadt@netbsd.org> Date: Sat Aug 14 06:38:50 1993 +0000 ppp from paul mackerras But it's not in NET/2. I've not checked 386BSD to see if it was in there, or not (since both FreeBSD 1.0 and NetBSD started from the tainted first 4.4 BSD release). It's not in the 4.4 alpha BSD archive in the tuhs archive. Looks like it's from CMU, but I can't find earlier versions that Paul distributed with my quick google search, maybe others can find it? FreeBSD removed if_ppp.c in around FreeBSD 5 because it wasn't working due to the sorry state of the SMPification of the tty code interacting poorly with the slightyly less sorry state of the SMPification of the networks stack at the time and reconciling the differences was too hard. userland pppd worked just as well and had none of the thorny locking issues of a kernel bit of code that was trying to bridge two different domains. Warner On Thu, Dec 5, 2019 at 12:21 PM <ron@ronnatalie.com> wrote: > I still remember the laughter at the IETC when someone asked if PPP stood > for "Philip Pindeville's Protocol." > > > > -----Original Message----- > > From: TUHS <tuhs-bounces@minnie.tuhs.org> On Behalf Of Noel Chiappa > > Sent: Thursday, December 5, 2019 2:06 PM > > To: tuhs@minnie.tuhs.org > > Cc: jnc@mercury.lcs.mit.edu > > Subject: Re: [TUHS] Origins of PPP > > > > > From: Paul Ruizendaal > > > > > I'm looking for the origins of SLIP and PPP on Unix. Both seem to > have > > > been developed long before their RFC's appeared. > > > > You're dealing with an epoch when the IETF motto - "rough consensus and > > running code" - really meant something. Formal RFC's way lagged protocol > > development; they're the last step in the process, pretty much. > > > > If you want to study the history, you'd need to look at Internet Drafts > (if > > they're still online). Failing that, look at the IETF Proceedings; I > think > all the > > ones from this period have been scanned in. They won't have the detail > that > > the I-D's would have, but they should give the rough outlines of the > history. > > > > Noel > > [-- Attachment #2: Type: text/html, Size: 4287 bytes --]
[-- Attachment #1: Type: text/plain, Size: 982 bytes --] On Thu, Dec 5, 2019 at 9:40 AM Clem Cole <clemc@ccc.com> wrote: > What was common was the SLIP line discipline code under the covers, but > how the line got set up to start running it was different. The original > SLIP 'kit' from Harvard/MIT lacked anything like PPPD to start and was sort > of ad hoc. I think originally it used a program called 'chat' that had been > pulled out uucico that set things up then exec'ed the SLIP stuff; but > chat(1) may have been round 2 or 3. I've forgotten the name of the > original daemon, I bet it you look in the Usenet archives from 82-84 and > look for 'SLIP' you find a couple of things. > There never was a slipd, at least in this time frame. The chat program would login to the remote system, start SLIP on the remote end, then run a program that effectively put the slip line discipline into place and then maybe did an ifconfig. It was hit dinosaur over head with club level of sophistication, if it was that advanced... Warner [-- Attachment #2: Type: text/html, Size: 1453 bytes --]
[-- Attachment #1: Type: text/plain, Size: 502 bytes --] On Thu, Dec 5, 2019 at 2:41 PM Warner Losh <imp@bsdimp.com> wrote: > > > On Thu, Dec 5, 2019 at 9:40 AM Clem Cole <clemc@ccc.com> wrote: > >> The original SLIP 'kit' from Harvard/MIT lacked anything like PPPD to >> start and was sort of ad hoc. >> > > ... > It was hit dinosaur over head with club level of sophistication, if it was > that advanced... > Right, as I said -- pretty ad hoc. I note the CMU code, has an if_sl.c edit tag. Which makes sense that it goes back to the original SLIP code. [-- Attachment #2: Type: text/html, Size: 2206 bytes --]
On Thu, Dec 05, 2019 at 11:34:48AM +0100, Paul Ruizendaal wrote: > I’m looking for the origins of SLIP and PPP on Unix. Both seem to have been developed long before their RFC’s appeared. > > As far as I can tell, SLIP originally appeared in 3COM’s UNET for the PDP11, around 1980. From the TUHS Unix tree, first appearance in BSD seems to be 4.3 (1986). > > Not sure when PPP first appeared, but the linux man page for pppd has a credit that goes back to Carnegie Mellon 1984. First appearance in BSD seems to be FreeBSD 5.3 (2004), which seems improbably late (same source). Yes, I remember doing CMU pppd v1.4 or so on SunOS v4.x in the 1991-1994 time period. SL/IP was more prevelent because it was easier to find devices doing it. Version 2.x of the package started adding support into Linux/*BSD when they started appearing. I don't think the current repo (https://ppp.samba.org/) has much of the earlier v1.x history.
At the other end of PPP history, I’ve always felt that the best part of IP is that it will run, more or less, over a piece of wet string. In 2006 at SiCortex we were building a modest supercomputer with 972 six-core MIPS-64 chips connected by a rather nice high speed interconnect. The chips were booted over JTAG, which is another story, but in addition the chip had a “communications register” that could be written and read in I/O space from the kernel and over JTAG from the module level coldfire microcontroller. This was at first used for the console, and all 972 console streams were collected on a front end machine. However, it was a small step from there to multiplexing the comm register to provide two serial ports. We used the second one for PPP using a standard driver on the MIPS end and a somewhat strange JTAG driver on the coldfire end. This scheme let us SSH into the machine nodes when the high speed interconnect needed debugging. In spite of the bit-banging JTAG-ness of it all, it was usably fast at 100 Kbps or so. It was much easier to spin up PPP than to write a new network driver for this low-speed application. -Larry
[-- Attachment #1: Type: text/plain, Size: 1658 bytes --] On Thu, Dec 5, 2019 at 7:06 PM Lawrence Stewart <stewart@serissa.com> wrote: > At the other end of PPP history, I’ve always felt that the best part of IP > is that it will run, more or less, over a piece of wet string. > > In 2006 at SiCortex we were building a modest supercomputer with 972 > six-core MIPS-64 chips connected by a rather nice high speed interconnect. > The chips were booted over JTAG, which is another story, but in addition > the chip had a “communications register” that could be written and read in > I/O space from the kernel and over JTAG from the module level coldfire > microcontroller. > > This was at first used for the console, and all 972 console streams were > collected on a front end machine. However, it was a small step from there > to multiplexing the comm register to provide two serial ports. We used the > second one for PPP using a standard driver on the MIPS end and a somewhat > strange JTAG driver on the coldfire end. This scheme let us SSH into the > machine nodes when the high speed interconnect needed debugging. In spite > of the bit-banging JTAG-ness of it all, it was usably fast at 100 Kbps or > so. > > It was much easier to spin up PPP than to write a new network driver for > this low-speed application. > Seconded... At a past life, we had a SONET circuit that we were using for timing signals, but needed some way to do networking... The timing signals and driver chips we were using precluded using the front door, so we used the 1-byte service field per frame to do PPP, which we did have access to (and was the only data field we had access to). Warner [-- Attachment #2: Type: text/html, Size: 1978 bytes --]