In youth-oriented Silicon Valley, it’s risky to mention this, but I’ve been around for a long time. In fact, in theory I could retire! I already moved to a small town in the Pacific Northwest where the cost of living is low, and I could spend my days hiking in the mountains.
But actually I can’t retire. Why? The networking field is too interesting! In addition, modern networking, with its emphasis on design, applications, policies, and users, focuses on the same concepts that have interested me from the beginning. Not only that, but I firmly believe that with today’s network design tools, we are positioned to build networks that are faster, larger, and even more user-friendly than ever. How could I retire when that’s the case?
In the Beginning
I started my career as a software developer. This was long before agile software development became popular, but nonetheless there was a focus on agility and flexibility. The goal was to develop software that could be used in multiple ways to support a broad range of users. The focus was on user behavior, application modeling, systems analysis, and structured design.
When I moved into networking, many, many years ago, my primary interest was network design. When I wrote Top-Down Network Design, which is now in its 3rd edition, I tried to merge my interests. In the book I posed (and answered hopefully) the question of whether systems analysis and structured design can be applied to networking. I contend that the answer is definitely yes. In those days, there was a big focus on configuring boxes (routers, switches, firewalls). I proposed a more holistic view based on what I had learned from my programming days.
Although some of the words from those early days (systems analysis, structured design, etc.) may sound old-fashioned, the networking field has an even bigger focus on design principles these days than it did in the early days.
With architectures and products such as Cisco Application Centric Infrastructure and the Cisco Application Policy Infrastructure Controller Enterprise Module, engineers have the opportunity to design networks that truly meet the needs of users. The network system still has those boxes, of course, but the focus is on users, applications, and policies.
Network Design in the Modern Era
Network design in the modern era is still inspired by software design principles, just as it was in the olden days, including a focus on agility, flexibility, and declarative control. Declarative control means that abstract objects in a network are asked to achieve a desired state. Declarative control makes a promise to reach this state, without being told precisely how to do so. In contrast, imperative control specifies how each individual element in a network should achieve its desired state.
In simpler language:
• Declarative control tells a system what the result should be, and lets the system figure out how to do it.
• Imperative control tells the elements in a system how to do the tasks necessary to achieve a result.
For software developers, this article does a good job explaining the difference between declarative and imperative programming. Note the focus on what to do rather than how to do it. From a networking point of view, this article discusses declarative control in a Cisco network.
In a Cisco architecture based on Cisco ACI and Cisco APIC, although the network system is made up of routers, switches, and other devices, application policies can be defined at a higher level and dynamically distributed to the devices.
Software Defined Networking (SDN), which represents a major innovation in the networking field, plays a role here, of course. SDN provides an abstraction of the network infrastructure and an open interface to the network so that it can be controlled programmatically. Cisco APIC Enterprise Module offers an incremental approach to adopting SDN. By supporting existing infrastructure, without the need for agent software on individual devices, Cisco APIC EM offers investment protection along with innovation.
The Cisco APIC EM architecture includes a controller and a set of northbound and southbound Application Programming Interfaces (APIs). The controller is the brain of the system. It knows how to talk to the components in the network. To use or program Cisco APIC EM, users don’t need to know configuration commands or the nuances of the different platforms and code variations of the components in the network. The APIs handle this. The northbound APIs can be used to access the controller and instruct it to do things, such as push a QoS change or check ACLs for policy compliance. The controller uses the southbound APIs to communicate with the components in the network infrastructure.
Network Design Principles from Previous Eras
Many modern network design concepts and terminology may sound new, but actually they aren’t much different than what we used in the olden days, back in the 1990s and 2000s. Although we no longer call the design that we do top-down design, note that Top-Down Network Design (the book and the concept) focuses on applications and users just like we do today.
The idea is to learn about the applications that a network must support, including whether the applications are mission-critical (which most are today), their acceptable Mean Time Between Failure (MTBF) and Mean Time To Repair (MTTR), and their throughput and delay requirements.
The book also recommends learning about the size and location of user communities, where data is stored (usually in a data center these days), network traffic flow, and network applications traffic characteristics.
I believe that with a few updates these network design templates are still relevant today. Perhaps more information should be added regarding policies, and less detail is needed regarding mission criticality and MTBF and MTTR, but the focus on applications, users, and traffic flows hasn’t changed. In the Comments section of this blog, I’d be very interested to hear what people think. Is network design today similar to what it was when we first started using a systems analysis approach back in the late 1990s?
Network design in the modern era is inspired by software design principles, including agility, flexibility, and declarative control. Networks designed with these principles accelerate application deployment, support policy implementation, and keep the users happy. As a network designer coached in old-school design fundamentals, I’m thrilled to see this evolution. I may not be able to retire for a long time if the networking field continues to be so interesting!