reverse engineering How we made the modern The is a key component of today’s Ethernet. Radia Perlman, inventor of the underlying algorithm, recounts how it was frst developed. Radia Perlman

thernet today is completely different than a single Ethernet. In 1983, my manager, from the original Ethernet. The original, Tony Lauck, asked me about designing a Ewhich was conceived by researchers, ‘magic box’ that would let computers on including and David separate communicate (this box Boggs, at Xerox PARC in the early 1970s, would become known as a bridge or switch). was a single wire shared by a few hundred This was exactly what the network layer was computers. Since data could not be received for, but the network layer requires every properly if there were a collision (multiple computer attached to the network to support computers transmitting simultaneously), the network layer, and people had built the key concept in the original Ethernet applications that only supported Ethernet. involved how to avoid collisions. My first suggestion was that people should Technologies that are limited to a single link fix the applications. But Tony said that we are known as local area networks (LANs). needed a quick fix until there was a chance Fig. 1 | Topology of a spanning tree network. Larger networks (such as the ) need to change the software in all the attached Circles represent bridges, solid lines represent computers known as routers, which forward computers. links and squares represent computers. The data between links. One suggested approach was to have a dashed lines indicate links that are not in the In the early 1980s, a few years before bridge simply listen to every packet on each chosen spanning tree. Ethernet was commercially deployed, I of its links, and forward it to each other was at Digital Equipment Corporation, link. The problem with this was that if there responsible for designing the component of were loops (multiple paths between the (a spanning tree), and only forward data a network that allows a router to receive a same pair of computers), Ethernet packets packets to and from links in the tree (Fig. 1). data packet addressed to a destination, and would just keep circulating. Forbidding The amount of resources needed to run this forward the packet toward that destination. loops had some severe limitations. First, a algorithm would also not depend on how Each router participates in a customer might accidentally plug together many links and bridges there were. protocol with other routers, where they devices with a loop, and break the entire By Tuesday afternoon, I had written exchange information in order to compute a network. Second, loops enable alternative the specification, which proved to be forwarding table. The forwarding table tells paths in case a bridge or link fails. So rather sufficiently clear and complete that the the router how to send data on the path to than simply forbid loops, Tony challenged bridge implementers at Digital Equipment the destination. me to allow loops, but invent a mechanism Corporation were able to implement it within Then along came Ethernet. My routing for bridges that finds a loop-free subset a couple of months without asking me a single protocol design assumed links were between of the topology that interconnects all the question. But I couldn’t show it off to Tony just two computers (point-to-point links), computers. As the topology changes due to until he returned the following week, and but Ethernet was a wire with hundreds of bridges or links being added to the network, was too excited to work on anything else, so I computers that could all directly hear each failing or recovering, the mechanism spent the remainder of the week working on a other, and thus were all neighbours. I made should adjust the data paths as necessary, poem (called Algorhyme) that would become modifications to the routing protocol to to always maintain a loop-free path for part of the abstract of the paper in which I efficiently accommodate this new type of data. Tony thought it would be a difficult published the spanning tree algorithm. link. However, perhaps because Ethernet problem, perhaps even impossible, so just Spanning tree bridges quickly replaced was called Ethernet and not Etherlink, to be funny, he threw in an extra challenge: the original concept of Ethernet. Today’s people built applications that would just to make the amount of resources (memory, Ethernet does not involve shared links, but work on a single Ethernet link, leaving out for example) necessary to run the algorithm rather consists solely of point-to-point links, the information and protocol necessary not grow as links and bridges were added to with bridges running the spanning tree to allow a router to forward data between the network. algorithm. This spanning-tree-based design links. I tried to argue that the applications It was a Friday afternoon when Tony first is widely deployed today, and has changed should be using a network protocol posed this challenge, and he was going to be very little in the past 35 years. ❐ (such as IP), rather than simply Ethernet, away and unreachable the following week. because the application might need to work (This was a time before mobile phones or Radia Perlman between computers on different links. "Our reading e-mails while away from the office.) Dell EMC, Seattle, WA, USA. customers would never want to do that," was That night I realized exactly how to solve e-mail: [email protected] the typical reply. the problem. The basic idea was for the But people did, of course, want bridges to collectively select a single bridge, Published online: 12 October 2018 applications to work on larger networks calculate a tree with that bridge as the root https://doi.org/10.1038/s41928-018-0153-6

570 Nature Electronics | VOL 1 | OCTOBER 2018 | 570 | www.nature.com/natureelectronics