RFC-11

by Darius Kazemi, Jan 11 2019

In 2019 I'm reading one RFC a day in chronological order starting from the very first one. More on this project here. There is a table of contents for all my RFC posts.

GORDO and the IMP

RFC-11 is another Gérard Deloche paper. This one is dated Aug 1st, 1969 and is an extremely in-depth expansion on the contents of RFCs 7, 8, and 9. It's our longest RFC so far, clocking in at a monstrous 54 pages typewritten.

It's called “Implementation of the HOST – HOST Software Procedures in GORDO” and details how a HOST running the GORDO operating system would connect to another HOST on the network (more on that operating system in my notes on RFC-7).

The technical content

This paper has enough technical detail that if you were a programmer whose job was writing software for GORDO you could absolutely use the information here to connect a machine to ARPANET. Though remember ARPANET was still 3 months away this point and this is a spec for how you would talk to a theoretical future ARPANET.

The main goal of this document is to outline how multiple users connected to a GORDO machine via a time-sharing system could all simultaneously access ARPANET. So it's not just one user at a time; this could mean an entire department could connect to a GORDO machine at UCLA using their terminals at their desks and each make what seems like simultaneous communications with a remote computer. The paper defines a “Network program” whose job it is to manage all the input from different users, send that input over the network, receive data back from the network, and then parcel it back out to the users again. In technical terms this type of activity where you take multiple streams of information and put them into one stream and then pick them back out again is sometimes called multiplexing and demultiplexing, which is the terminology used in this paper.

The paper states up front that it “is convenient to consider the Network as a black box – a system whose behavior is known but whose mechanisms are not”. “Network” is capitalized throughout, which reminds me of early internet style where “internet” was always capitalized like a proper noun. Nobody really does that anymore, although I remember bitter fights about it.

In terms of content, this paper covers what was already covered by Deloche in RFCs 7, 8, and 9. The main difference is that it explicitly covers GORDO implementation. We learn that GORDO's file system is centered around pages. A page is basically a chunk of memory in a computer that is organized in a way so that it's very fast for us to access to it, and once we access the page we can then more slowly go through its contents. Imagine a paper book: I could tell you to count up to the 10,000th word and tell me what it is, but assuming I kept track of exactly how many words are on each page of the book it would be faster to ask you to look up page 204 and tell me the 52nd word on the page. A simple file system is basically a whole bunch of tables of data that keep track of how many words are on each page of this book so we can quickly look up the information we need!

GORDO contains concepts of processes, forks of processes, and users/jobs. If you're familiar with Unix you've certainly seen these terms before, and I am guessing GORDO borrowed these concepts from Multics, the early time-sharing operating system developed by MIT, GE, and Bell Labs. Unix draws a direct lineage to Multics which would make GORDO a kind of cousin of early Unix.

Overall this document really is just a fleshed-out version of the previous three Deloche RFCs. This is the last RFC Deloche will author and since he graduated UCLA with Ph.D. in 1970 I'm imagining that these four RFCs represent his piecemeal thesis work, which he wrapped up with this RFC and then moved on to whatever the next thing in his career was. This paper does have the smell of a Ph.D. supervisor going “look, document what you're working on and we'll call it a thesis and then you can leave the lab.” Ahem, not that I've witnessed this exact thing happen in engineering schools, heaven forbid.

Analysis

There is no mention in this RFC of Deloche's claim in RFC-9 that there are 256 links between HOSTs. But there is also no claim of 32 links like in other docs. We do see specific link numbers mentioned in examples but they only go as high as 25. Odd, though. I wonder if he's hedging after making a mistake claiming the 256 links? Or maybe “link” was already a semantically overloaded term before the internet even existed and it's referring to something totally different.

Of note was a single mention of “slave mode” for a process. There's been a lot of heated discussion around master/slave terminology in computing in the last ten years so this kind of jumped out at me.

Further reading

A history of Multics compiled by people who contributed to the operating system over the years (the whole site is worth checking out).

How to follow this blog

You can subscribe to this blog's RSS feed or if you're on a federated ActivityPub social network like Mastodon or Pleroma you can search for the user “@365-rfcs@write.as” and follow it there.

About me

I'm Darius Kazemi. I'm a Mozilla Fellow and I do a lot of work on the decentralized web with both ActivityPub and the Dat Project.