What is an Elegant Network
What is an elegant network? And why does it matter?
We’ll start with the second question. Society needs better networks. We need them to be more reliable, easier to build, and easier to change. Can you imagine if bridges or waterworks or cars were built as haphazardly as networks often are? Some of the reasons I find networking so interesting is that it’s important and so challenging, and that it still has huge opportunities to make things better.
What is an elegant network? Of course, that is hard to define. Elegance has many definitions including: “dignified gracefulness or restrained beauty of style” and “scientific precision, neatness, and simplicity”. An elegant network is therefore one that is simple as possible, not driven by whim, fad, or feature of the month. Possibly it is made by people who are skeptical of what hardware vendors think the solution is. There is rigor and discipline about design, best practices about building and considerable thought on testing and operating this network. In some ways an elegant network describes a pursuit. A pursuit to make a network that is easy to understand and explain, easy to debug, easy to scale. It requires asking a lot of questions, a pursuit of understanding what is needed, as well as the trade-offs involved in decisions. It is a pursuit of continuous refinement with every change, every new network that is built.
“The Design of Design” by Fred Brooks is book which has many good ideas on architecture and design of computer systems. “Much of what we consider elegance in a design is the integrity, the consistency of its concepts.” He also writes about designs needing to be **“conceptually coherent”. **Consistency of concepts and coherence are some of the most important ideas that allow understanding so that troubleshooting, or design changes are easy to perform. This is also very difficult to do, and requires a constant refining. All of this helps us with understandability. The more consistent we are, the easier things are to understand and remember, which means the networks become easier to debug and change.
The essence of engineering is the art of trade-offs. No matter the decision you make, you will be making trade-offs. Even as you gain something, you lose something. I can’t think of a decision in which we made something much better that we didn’t also give up something useful. Thinking through trade-offs is a critical part of good engineering. Acknowledging that the path forward will also be a little bit sideways is really important. Thinking through those trade-offs explicitly leads to better engineering.
As an industry and a discipline, we can and need to do much better in the design and practice of networks. Even the best of us in the biggest places aren’t nearly as good as we could be. It is still too hard to do the right thing. It takes too many people. Network design and practice needs to be simpler than they are. We are missing good ways of training people to think like engineers, to work hard at making things as simple as possible (but no simpler). And compared to almost any engineering field, we are radically under-tooled.
Dinesh and I are working on software, content, and helping startups and network operators to improve network design and practice. We need much more elegant networking. Some of that involves big steps, some of that is simple steps.
You can reach us via LinkedIn or via email at thenetworkelegant AT gmail.com.
Try out Suzieq, our open source, multivendor tool for network observability and understanding. Suzieq collects operational state in your network and lets you find, validate, and explore your network.