In reviewing some opportunities for Plexxi this week, I was reminded that we have made things very hard on ourselves. Through no one’s fault but our own we have created monsters of networks that are impossible to maintain, debug, diagnose and understand.
I have been lucky in my career. Most of it has been in an R&D organization for a large network vendor, but always in positions where I was close to customers, close to customer networks, and of course with that comes the “close to customer networks that are not working well”. And while there are always exceptions, in most of these troublesome networks, the sheer complexity of the network contributed significantly to the problem at hand, even if the end result was a bug.
Finding and fixing issues in networks is often one of these activities where you spent almost half your time understanding the network and its intricacies, a quarter of the time debugging and diagnosing the actual problem, and a last quarter producing, testing and implementing the solution. And so often the problem is hidden in the understanding of the network. An additional link that was not documented. A spanning tree config that was slightly different on one switch. A LAG with slightly different LACP timers. One vendor’s version of MLAG behaving just slightly different than another. And the guy that configured it no longer works here.
Whether it is a support person hunting for a problem, or a sales engineer trying to propose a new design or product, the process always almost starts with pictures. Network diagrams are the most powerful thing we produce. They are also the most misleading piece of information we produce because without fail they are wrong. Or missing something that is really important for that one specific item you are chasing. Network engineers and architects love to draw, our world exists of boxes, circles and lines between them. The challenge is that a 2 dimensional representation of a network is always going to be abstracted and therefore will always miss something. A network diagram that articulates the overall architecture and design of a network is absolutely key and with a clean sheet of paper we always start out with something that is sensible, easy to understand and typically simple. And then weeks, months and even years of incremental needs and requirements start eating away at the clean design.
Over 20 years of networking have created an astounding amount of capabilities. What we have taught our switches and routers to do is really amazing, and our packet forwarding chip vendors have done an equally outstanding job keeping up pushing these capabilities into hardware. And lots of these capabilities slowly make it into your network, chipping away at what was the “perfect” architecture. In the end, we are configuring individual devices with endless amounts of functions. Functions that should be so simple you should not have to configure them by hand.
We all know that ethernet networks need to be loop free. It should be dreadfully simple to instruct your devices to “make it so”. Except that we have at least 5 ways to ensure it is loop free. And then only for a specific portion of the network. We all know VoIP traffic should get preferred treatment over regular internet or other traffic. But in the end we configure complicated access lists and mappings to DSCP values that then map into queues that then have to be hand crafted into a scheduling mechanism we believe does not mess up the original voice traffic we cared about, or the other important traffic. We know routers needs to exchange subnet information for reachability. But we end up with rather complicated protocols that have endless options, some apply globally, some to interfaces, some need filtering, some need adjusted timers, you name it.
Your equipment vendor will tell you that there will be bugs. A switch or router is no different than a regular application, there are millions of lines of code and bug free code does not exist. We as vendors need to help the network architecture, manager and operator. We have to make it much easier to implement the functionality you require. You can help yourself by uncluttering your network as a regular activity. Think back to those pristine network diagrams you created before the network was installed. Instead of adjusting the diagram to represent reality, perhaps it is worth spending some time adjusting the network back to the diagram.[Today’s fun fact: there is an actual website where you can submit network diagrams to be rated by the viewing public. Really. http://www.ratemynetworkdiagram.com]