Sun Fellow Radia Perlman specializes in network and security protocols. She is the inventor of the spanning tree algorithm used by bridges, and the mechanisms that make modern link state protocols efficient and robust.
DDJ: What advice do you have about designing network protocols?
RP: Don't get hung up on details such as syntax, and don't start by patching up lots of special cases. Instead, try to think of the problem conceptually first.
An issue that separates real network protocol design from, say, a theoretical algorithm, is realizing that the components don't always behave as they should. A network has to be designed so that components that are configured incorrectly, or misbehaving in various ways can't do too much damage.
The third issue that is really important is to make the network as self-configuring as possible. Some people like a lot of control over their network in order to fine-tune performance. And it's fine to give them that control. But it's important for the network to behave reasonably without being configured, and to behave reasonably even when it is misconfigured.
DDJ: What kinds of protocols have you designed?
RP: I designed routing for DECnet, which got standardized as the IS-IS routing protocol. The basic components of the design, which make routing scalable and robust, and reasonably self-configuring, have been mostly carried over into OSPF as well.
I also designed the spanning tree algorithm, which is the heart of today's Ethernet. Ironically, I didn't think it was a good idea at the time; the Ethernet header was not designed to be forwarded. The Ethernet header was not intended to be the kind of envelope (like IP or DECnet) that would carry data across many hops of packet switches. But people confused "Ethernet" with a "network" rather than a link in a network, so built protocol stacks without "layer 3" (IP or DECnet, for example). Traditional routers cannot forward traffic on behalf of endnodes that have not implemented the layer 3 protocol.
So we at Digital invented "bridging," which did not depend on endnodes implementing layer 3. The spanning tree algorithm is at the heart of the design.
DDJ: You say you didn't think bridging was a good idea at the time. Have you changed your mind?
RP: No. I'm kind of horrified it's still in use. Bridging is a fragile protocol in various ways, plus it doesn't give optimal routes. Now that all the endnodes include layer 3, and the world has pretty much converged on IP as the single layer 3 protocol, there should not, in theory, be a necessity for bridging anymore.
However, there's a problem with IP as a layer 3 protocol. The world would have been much better off if everyone had converged on ISO's layer 3 format (known as CLNP). We (Digital) adopted CLNP as the packet format for DECnet Phase V. CLNP had 20 byte addresses (instead of IP's 4-byte addresses), and had the nice feature that quite a large network could be self-configuring. In contrast, with IP each link needs a separate portion of the IP address space, so a network with a block of IP addresses needs to have the address block chopped up to give a unique portion to each link, and each router must be configured to know what addresses are on each of its ports. IPv6 has the same property. Even though its addresses are larger than IPv4 (16 bytes instead of 4), each link has its own block of addresses, so routers must be configured and nodes that move to a different link must change their address.
So, recently I designed something I called RBridges (routing bridges) that will give the best of both worlds. IETF started a working group known as TRILL (TRansparent Interconnection of Lots of Links) to standardize it. RBridges give the ease of configuration of bridges with the robustness and route efficiency of layer 3. RBridges are also completely compatible with IP nodes, IP routers, and current bridges, so if you had a bridged network, you could replace any subset of the bridges with RBridges, and everything will still work as it did with the bridges. The only thing you'd notice is that the more bridges you replace, the more robust the network will be, and the better the paths will be.
DDJ: What advice do you have for the next generation of protocol designers?
RP: Don't believe everything you hear, such as "if everything were encoded in XML, everything would interoperate," or "security is built into IPv6, and it's just an add-on to IPv4." There is a lot of stuff that "everyone knows" that just isn't true, but if you hear it said enough you feel silly questioning it.
Another piece of advice is that it's never a waste of time to describe what you are doing at a basic level, or to answer questions about why the design is a certain way and couldn't have been some other way. Answering "naïve questions" is an excellent way of making sure your design really will hold together.