The Beginning of the Network Working Group from The Origins of RFCS by Stephen D. Crocker (from RFC 1000 by J. Reynolds and J. Postel) The DDN community now includes hundreds of nodes and thousands of users, but once it was all a gleam in Larry Roberts' eye. While much of the development proceeded according to a grand plan, the design of the protocols and the creation of the RFCs was largely accidental. The procurement of the ARPANET was initiated in the summer of 1968 -- Remember Vietnam, flower children, etc? There had been prior experiments at various ARPA sites to link together computer systems, but this was the first version to explore packet-switching on a grand scale. ("ARPA" didn't become "DARPA" until 1972.) Unlike most of the ARPA/IPTO procurements of the day, this was a competitive procurement. The contract called for four IMPs to be delivered to UCLA, SRI, UCSB and The University of Utah. These sites were running a Sigma 7 with the SEX operating system, an SDS 940 with the Genie operating system, an IBM 360/75 with OS/MVT (or perhaps OS/MFT), and a DEC PDP-10 with the Tenex operating system. Options existed for additional nodes if the first experiments were successful. BBN won the procurement in December 1968, but that gets ahead of this story. Part of the reason for selecting these four sites was these were existing ARPA computer science research contractors. The precise usage of the ARPANET was not spelled out in advance, and the research community could be counted on to take some initiative. To stimulate this process, a meeting was called during the summer with representatives from the selected sites, chaired by Elmer Shapiro from SRI. If memory serves me correctly, Jeff Rulifson came from SRI, Ron Stoughton from UCSB, Steve Carr from Utah and I came from UCLA. (Apologies to anyone I've left out; records are inaccessible or lost at this point.) At this point we knew only that the network was coming, but the precise details weren't known. That first meeting was seminal. We had lots of questions -- how IMPs and hosts would be connected, what hosts would say to each other, and what applications would be supported. No one had any answers, but the prospects seemed exciting. We found ourselves imagining all kinds of possibilities -- interactive graphics, cooperating processes, automatic data base query, electronic mail -- but no one knew where to begin. We weren't sure whether there was really room to think hard about these problems; surely someone from the east would be along by and by to bring the word. But we did come to one conclusion: We ought to meet again. Over the next several months, we managed to parlay that idea into a series of exchange meetings at each of our sites, thereby setting the most important precedent in protocol design. The first few meetings were quite tenuous. We had no official charter. Most of us were graduate students and we expected that a professional crew would show up eventually to take over the problems we were dealing with. Without clear definition of what the host-IMP interface would look like, or even what functions the IMP would provide, we focused on exotic ideas. We envisioned the possibility of application specific protocols, with code downloaded to user sites, and we took a crack at designing a language to support this. The first version was known as DEL, for "Decode-Encode Language" and a later version was called NIL, for "Network Interchange Language." When the IMP contract was finally let and BBN provided some definite information on the host-IMP interface, all attention shifted to low-level matters and the ambitious ideas for automatic downloading of code evaporated. It was several years before ideas like remote procedure calls and typed objects reappeared. In February of 1969 we met for the first time with BBN. I don't think any of us were prepared for that meeting. The BBN folks, led by Frank Heart, Bob Kahn, Severo Ornstein and Will Crowther, found themselves talking to a crew of graduate students they hadn't anticipated. And we found ourselves talking to people whose first concern was how to get bits to flow quickly and reliably but hadn't -- of course -- spent any time considering the thirty or forty layers of protocol above the link level. And while BBN didn't take over the protocol design process, we kept expecting that an official protocol design team would announce itself. A month later, after a particularly delightful meeting in Utah, it became clear to us that we had better start writing down our discussions. We had accumulated a few notes on the design of DEL and other matters, and we decided to put them together in a set of notes. I remember having great fear that we would offend whomever the official protocol designers were, and I spent a sleepless night composing humble words for our notes. The basic ground rules were that anyone could say anything and that nothing was official. And to emphasize the point, I labeled the notes "Request for Comments." I never dreamed these notes would distributed through the very medium we were discussing in these notes. Talk about Sorcerer's Apprentice! Over the spring and summer of 1969 we grappled with the detailed problems of protocol design. Although we had a vision of the vast potential for intercomputer communication, designing usable protocols was another matter. A custom hardware interface and custom intrusion into the operating system was going to be required for anything we designed, and we anticipated serious difficulty at each of the sites. We looked for existing abstractions to use. It would have been convenient if we could have made the network simply look like a tape drive to each host, but we knew that wouldn't do. It was clear we needed to support remote login for interactive use -- later known as Telnet -- and we needed to move files from machine to machine. We also knew that we needed a more fundamental point of view for building a larger array of protocols. Unfortunately, operating systems of that era tended to view themselves as the center of the universe; symmetric cooperation did not fit into the concepts currently available within these operating systems. And time was pressing: The first IMP was due to be delivered to UCLA September 1, 1969, and the rest were scheduled at monthly intervals. At UCLA we scrambled to build a host-IMP interface. SDS, the builder of the Sigma 7, wanted many months and many dollars to do the job. Mike Wingfield, another grad student at UCLA, stepped in and offered to get interface built in six weeks for a few thousand dollars. He had a gorgeous, fully instrumented interface working in five and one half weeks. I was in charge of the software, and we were naturally running a bit late. September 1 was Labor Day, so I knew I had a couple of extra days to debug the software. Moreover, I had heard BBN was having some timing troubles with the software, so I had some hope they'd miss the ship date. And I figured that first some Honeywell people would install the hardware -- IMPs were built out of Honeywell 516s in those days -- and then BBN people would come in a few days later to shake down the software. An easy couple of weeks of grace. BBN fixed their timing trouble, air shipped the IMP, and it arrived on our loading dock on Saturday, August 30. They arrived with the IMP, wheeled it into our computer room, plugged it in and the software restarted from where it had been when the plug was pulled in Cambridge. Still Saturday, August 30. Panic time at UCLA. The second IMP was delivered to SRI at the beginning of October, and ARPA's interest was intense. Larry Roberts and Barry Wessler came by for a visit on November 21, and we actually managed to demonstrate a Telnet-like connection to SRI. With the pressure to get something working and the general confusion as to how to achieve the high generality we all aspired to, we punted and defined the first set of protocols to include only Telnet and FTP functions. In particular, only asymmetric, user-server relationships were supported. In December 1969, we met with Larry Roberts in Utah, and suffered our first direct experience with "redirection". Larry made it abundantly clear that our first step was not big enough, and we went back to the drawing board. Over the next few months we designed a symmetric host-host protocol, and we defined an abstract implementation of the protocol known as the Network Control Program. ("NCP" later came to be used as the name for the protocol, but it originally meant the program within the operating system that managed connections. The protocol itself was known blandly only as the host-host protocol.) Along with the basic host-host protocol, we also envisioned a hierarchy of protocols, with Telnet, FTP and some splinter protocols as the first examples. If we had only consulted the ancient mystics, we would have seen immediately that seven layers were required. The initial experiment had been declared an immediate success and the network continued to grow. More and more people started coming to meetings, and the Network Working Group began to take shape. Working Group meetings started to have 50 and 100 people in attendance instead of the half dozen we had had in 1968 and early 1969. We held one meeting in conjunction with the Spring Joint Computer Conference in Atlantic City in 1971. In October 1971 we all convened at MIT for a major protocol "fly-off". Representatives from each site were on hand, and everyone tried to log in to everyone else's site. With the exception of one site that was completely down, the matrix was almost completely filled in, and we had reached a major milestone in connectivity. The rapid growth of the network and the working group also led to a large pile of RFCs. When the 100th RFC was in sight, Peggy Karp took on the task of indexing them. That seemed like a large task then, and we could have hardly anticipated seeing more than a 1000 RFCs several years later. Where will it end? The network has the exceeded all estimates of its growth. It has been transformed, extended, cloned, renamed and reimplemented. I doubt if there is a single computer still on the network that was on it in 1971. But the RFCs march on. Maybe I'll write a few words for RFC 10,000.