William (Bill) Yeager is 66 and still gets peeved when someone trots out the Silicon Valley fable about how the founders of Cisco invented the router. He was the guy at Stanford University who made it happen. The history of Network World roughly parallels the commercialization of routing, so we tracked Yeager down for a glimpse into the scene back then.
You're credited with developing the first router while you were a staff researcher at Stanford. Tell us the tale.
This project started for me in January of 1980, when essentially the boss said, 'You're our networking guy. Go do something to connect the computer science department, medical center and department of electrical engineering.
What kind of gear did you need to connect?
We had mainframes, of course, DEC10 Systems, a number of Xerox PARC Lisp machines, Altos file servers and printers, and over the next year or so added DEC VAXs, Texas Instruments' Explorers and Symbolic systems. All of these things had to be hooked together, because we were spread across buildings on campus, and people were tired of carrying tapes around.
I thought about this for a bit, and I said, well really what you need is an operating system. So while the cables were being pulled and tested, I developed a network operating system [NOS] and routing code [to run on a] DEC PDP11/05. But the Alan Snyder Portable C compiler generated too much code. So I had to go into the compiler and improve the code generators. And that wasn't even good enough. So then I had to write an optimizer for PDP11/05 assembler so I could reduce the code by about 30%. This was major engineering, because you had your hands into everything. It's important to remember the PDP11/05 only had 56KB of user memory, and was diskless.
The struggle was always a balance between how many input buffers you could have. You really had to squeeze things, because there was no disk and if you ran out of memory for input buffers you were dead in the water. So you had all of these constraints, which actually had a lot to do with how good it ended up being, because I had to do a lot of work to both assure the memory allocation algorithms would never run out of memory, as well as get things scheduled right. I spent an entire summer making sure the NOS scheduling and packet-switching algorithms were optimal.
All in all we had the basic systems put together and working in about three months, and at six months the first router was in place in Pine Hall in a telephone closet. Pine Hall was midway between the medical center and the department of computer science. It was about a 2,000 feet cable run on either side of the router.
What protocols did the box support?
Initially, the code routed Parc Universal Packet (PUP) for the Xerox PARC systems and mainframes. Late in '81 my boss said, 'IP is coming down the pipe. Figure out what you can do with it.' So I put a little IP router in, and I didn't have to worry about things like ARP [Address Resolution Protocol], because it was 3 megabit Ethernet, so your IP address was just 2 bytes, one for the network and the other for the host, and the host byte was also the [media access control] address. But we were ready by '82, when the computer science department started dropping IP in all of these VAX750s, and by 1983 the routers supported XNS - which is Xerox Network Services - CHAOSnet for the TI Explorer and Symbolics Lisp machines, and IP. And it was just about then that Stanford University started to make the big transition to 10Mbps Ethernet.
Is that roughly when you made the shift from the PDP11/05-based router to the device based on the 68000 board developed by Andy Bechtolsheim (who later went on to found Sun)?
Andy was a master's student, and that collision was fortuitous. We had heard about his board, and we talked to him and he said we could have it. We plugged that sucker into a multibus backplane, plugged in some 3Com Ethernet boards and then rattled off a few copies, and I sat down and did a full transition of the code. One of the key aspects of these routers I put together is they really could route. I had a tremendous amount of instrumentation in there. I worked very, very hard to get that right and they could really pass stuff through as fast as the hardware could move. My limitation was the bus speed, that was it. The original Bechtolsheim boards had 256KB of RAM, and that was huge at the time. To me it seemed like paradise.
Is that when the school's network started to take off?
People were skeptical at first, but by 1983 it was clear this was the way to go. Initially, just technical people were hooking up, but then the rest of the campus got wind of it and it was made official and the thing started growing like hell. I completed the serious development around '85.
What happened in the interim? A lot of tweaking and refinement?
It's endless, right? New features, functions. I did a lot of Lisp work where objects were used, and I adapted that approach in C, so a router was a class, and a specific protocol, say IP, was an instance of that class, and the NOS was multitasking. When you added another router, then you ended up putting in an instance as another task or thread. In the network I/O drivers you would look for the link-level type in the packet to determine the protocol, and everything goes into nice queues under these router threads and it all works. That's why Cisco did so well in this, because you could add more and more stuff to the [operating system], no problem. Just add another task.
Speaking of Cisco, when did they enter the picture?
In the spring of 1985 Len Bosack [who was in charge of the computer science department's computer facilities and later went on to co-found Cisco] and another guy knocked on my office door and asked if they could have access to sources for the router code. I said, what do you want to do? They said, we want to improve it, add more features. I said, well that would be great, because I have other research tasks to do, and I gave them the password and away they went. I had no idea Cisco had been founded in '84. I'd never heard of it.
So your understanding was they wanted the code for the betterment of the school network?
Right. So we had weekly meetings and they were indeed working on the sources. The decision had been made to go with pure IP routers, so they took out XNS, CHAOSnet and PUP. And ultimately when they got it going about a year later their version of my code became the official Stanford routers. Things were working well and that was my only concern. We had connectivity.
So I guess sometime in '86 I found out about Cisco. We all found out about Cisco and what Len was up to. And yeah, they were developing that code on Stanford time for Cisco. But this was not exactly bad, because other things had happened like that at Stanford before. But Stanford was deciding it was time to put its foot down. 'Guys, you develop something on Stanford's campus, we want to profit from it,' right?
Who was saying this?
This was just kind of the general tenor. So I was called into Stanford Legal and the lawyer told me to bring my sources on paper. Since [Len's partner] was in the Double E department he had the Double E sources. And I sat down, and the lawyer said, 'Will you do a comparison.' And I said, well let's start with the operating system. That's sort of the heart and soul of this. And it was identical except for changing variables names. I said, can you see this? She said, 'I'm a lawyer and I can see this is identical.'
Let's look at other things. Let's look at this network data logblock (a C structure). Well it's been broken into two pieces, big deal. Any time someone gets a chance to go over code again they refine it. It was refined, clearly, but absolutely the same stuff. Derivative. They changed and added a their new routing protocol, no big deal. If you knew networking you could do it. I only did what I had to do, because I was driven by my boss and he was driven by the department's needs. And when I stopped I stopped.
Well, then Stanford really put its foot down and Len [and his partners, including Cisco co-founder Sandy Lerner] left the university to focus on Cisco.
Did Cisco ever give you any credit, other than the $100,000 in royalties?
The way royalties work, a third goes to the school, a third goes to the department and a third goes to the inventor. I gave my third back to my department because essentially all of this stuff is born out of a great research environment.
But Cisco has always had trouble giving me credit. They had a Web page that I was very irked by. 'Sandy Lerner and Len Bosack were in love and they had to go out and invent routers so they could talk across campus.' What a joke. And I'm like one of these bulldogs, you know, I get a hold of these guys' pant's leg and I won't let go of it.
I'm sort of a persona non grata down there at Cisco. But it was fun. I was very passionate about this stuff. I'm always passionate about what I do. And I learned a lot about how corporations work and these guys were great capitalists and obviously they turned out with a great company.
So you left Stanford after 20 years and went to Sun, right?
I left Stanford because it was getting more difficult to get grant money, so I did a bunch of consulting at Sun to make some extra money. Mostly dealing with IMAP e-mail stuff because there was a very interesting project at Sun called SPARCstation Voyager: a laptop with a fast matrix display, nice little footprint, running Solaris 2.4. Great system. One of the Voyager's special features was that it ran in disconnected mode. You could disconnect it from the network, and it would continued to function. My job was to create an IMAP server and client that worked when the client disconnected. This was tough because, at that time, IMAP2bis did not support disconnected e-mail, and I needed to modify the protocol to do this as well as support low bandwidth (IMAP can be very chatty). After one of the guys I was working with quit, his boss asked me to come save the e-mail part of the project. And I thought, I'm 53. I've been at universities too long. So I said sure.
How would you compare the academic to the commercial world?
I always ran into walls at Sun, company politics, and that never worked out too well. When I was at Stanford there was a rule: The best engineering wins. Simple, straightforward. If your engineering is better than the other guy's, yours got the blue ribbon. Well at Sun, and at companies in general, it's different. It's the politically correct software that gets productized. There are charters and vice presidents and presidents and all of that stuff, and I would find myself embroiled in these battles with people 10 levels above me [laughs], but I just kept battling. I didn't care, because I liked doing good engineering.
So I brought in the IMAP technology, and by '96 IMAP servers I had written were everywhere at Sun. And once that was in place they decided we should do something called mission-critical mail. So I invented something called Sun Internet Mail Servers [SIMS], which is a whole different type of server. We ended up getting hundreds of thousands of in-boxes on a single server.
The four patents I have, out of the 40 I filed, are on SIMS. The rest are really in peer-to-peer, which I did a lot with as I moved through Sun, ending up as the CTO of JXTA, Sun's open source peer-to-peer project.
What was JXTA all about?
The charter was to create an open source project for the creation of peer-to-peer protocols that would yield a virtual layer on top of the TCP/IP stack. That would return end-to-end connectivity to the Internet by making the traversal of NATs and firewalls transparent, and provide host endpoints with globally unique identifiers. Another goal was to work toward peer-to-peer protocol standards. I personally pushed this forward in the IETF and that resulted in an IRTF Peer-to-Peer Research Group that I still co-chair.
Open source was new territory for Sun, and the Project JXTA group were the pioneers. We had a very tight organization and a charter to do disruptive technology, so it was a grand experiment. An engineer was two degrees of separation from the vice president and they were always available for discussions. Amazing! We received an introduction to how to do an open source project from CollabNet and they hosted Project JXTA. Initially, most of the engineering was done by Sun but then the JXTA community began to grow exponentially and great contributions came from non-Sun members.