There’s a lot of talk about networking simplicity these days. There’s been a lot of talk about networking simplicity, in fact, for as long as I can remember. The drive to simplify networking has certainly been the catalyst for many new products, most (but not all) unsuccessful. Sometimes we forget that networking has some inherent complexities (a large distributed system with multiple os’s, protocols, media types), but that much of the complexity can be attributed to humans and their choices. IPv4 is a good example of this.
When I got into network engineering, I had assumed that network protocols were handed down from God and were immaculate in their perfection. Reading Radia Perlman’s classic book Interconnections changed my understanding. Aside from her ability to explain complex topics with utter clarity, Perlman also exposed the human side of protocol development. Protocols are the result of committees, power politics, and the limitations of human personality. Some protocols are obviously flawed. Some flaws get fixed, but widely deployed protocols, like IPv4, are hard to fix. Of course, v6 does remedy many of the problems of v4, but it’s still IP.
My vote for simplest protocol goes to AppleTalk. When I was a young network guy, I mostly worked on Mac networks. This was in the beige-box era before Jobs made Apple “cool” again. The computers may have been lame, but Apple really had the best networking available in the 1990’s. I’ve written about my love for LocalTalk, and its eminently flexible alternative PhoneNet in the past. But the AppleTalk protocol suite was phenomenal as well.
N.B. My description of AppleTalk protocol mechanics is largely from memory. Even the Wikipedia article is a bit sparse on details. So please don’t shoot me if I misremember something.
In the first place, you didn’t need to do anything to set up an AppleTalk network. You just connected the computers together and switched either the printer or modem port into a network port. Auto-configuration was flawless. Without any DHCP server, AppleTalk devices figured out what network they were on, and acquired an address. This was done by first probing for a router on the network, and then randomly grabbing an address. The host then broadcast its address, and if another host was already using it, it would back off and try another one. AppleTalk addresses consisted of a two byte network address which was equivalent to the “network” portion of an IP subnet, and a one-byte host address (equivalent to the “host” portion of an IP subnet.) If this host portion of the address is only one byte, aren’t you limited to 255 (or so) addresses? No! AppleTalk (Phase 2) allowed aggregation of contiguous networks into “cable ranges”. So I could have a cable range of 60001-60011, multiple networks on the same media, and now I could have 2530 end stations, at least in theory.
Routers did need some minimal configuration, and support for dynamic routing protocols was a bit light. Once the router was up and running, it would create “zones” in the end-user’s computer in an application called “Chooser”. They might see “1st floor”, “2nd floor”, “3rd floor”, for example, or “finance”, “HR”, “accounting”. However you chose to divide things. If they clicked on zone, they would see all of the AppleTalk file shares and printers. You didn’t need to point end stations at their “default gateway”. They simply discovered their router by broadcasting for it upon start up.
AppleTalk networks were a breeze to set up and simple to administer. Were there downsides? The biggest one was the chattiness of the protocols. Auto-configuration was accomplished by using a lot of broadcast traffic, and in those days bandwidth was at a premium. (I believe PhoneNet was around 200 Kbps or so.) Still, I administered several large AppleTalk networks and was never able to quantify any performance hit from the broadcasts. Like any network, it required at least some thinking to contain network (cable range) sizes.
AppleTalk was done away with as the Internet arose and IP became the dominant protocol. For hosts on LocalTalk/PhoneNet networks, which did not support IP, we initially tunneled it over AppleTalk. Ethernet-connected Macs had a native IP stack. The worst thing about AppleTalk was the flaky protocol stack (called OpenTransport) in System 7.5, but this was a flaw in implementation, not protocol design.
I’ll end with my favorite Radia Perlman quote: “We need more people in this industry who hate computers.” If we did, more protocols might look like AppleTalk, and industry MBAs would need something else to talk about.