When planning the development of a networking solution for a few – or even a dozen or so – years ahead, it is necessary to take a step back and look at our plans from a wide-angle. The crucial element we should analyze is the lifespan of a given project. In other words: we need to consider how long the technologies we invest in today will be useful tomorrow. Will the technology that seems so innovative now could become obsolete within 5 years? What will happen when current business needs change? How difficult will it be to implement a more efficient hardware platform on the current software platform? These questions are also valid for network planning in the spirit of a Software-Defined Networking (SDN). The key question is whether SDN will age faster or slower than conventional networks. To answer these questions we should go back to the definition of programmable networks.
It is worthwhile to note that Software-Defined Networking is not the name of a specific product, product group, or technology. First of all, it is a definitive change in the approach to producing, managing, and controlling the functionality of computer networks. Such a change in the approach opens the door to all the benefits (and challenges) of software development. SDN is a tool to make up for more than 20 years of differences between computer networks and software engineering by taking advantage of good software development, extensibility, modularity, and maintenance practices.
Software-Defined Networking differs from traditional computer networks by, among other things, separating the control plane from the data plane – see Figure 2. This separation opened new horizons to the programmability of the former and the emerging of standardized high-level APIs (Application Programming Interface) for the data plane. These data plane APIs allow for control and management of hardware functionalities.
And how does this approach affect network aging? For programmable networks, the situation is very similar to popular operating systems and the applications installed on them. While initially, companies like IBM and Apple offered proprietary software (and user apps as well) on their hardware, we can now independently choose the hardware platform, operating system, and application software (see Figure 1). Thanks to standardization processes (of hardware and software interfaces), components from different vendors can be used interchangeably. What we are witnessing today in computer networking, is the evolution of monolithic vendor systems to a disaggregated ecosystem where hardware, operating systems (SDN controllers), and network applications can be developed independently (see Figure 2).
As in the case of other technology areas, software in networking increasingly gains in importance. With SDN, the field of computer networking is becoming more and more similar to any other area where software plays a key role. When developing SDN solutions we use the same processes, methodologies, and similar tools as when developing applications for smartphones or creating an online store. As with the online store apps, networks need a hardware platform (like switches/routers/encryptors) to handle the traffic. Devices that process the network traffic are highly specialized and their functionality strongly depends on custom, purpose-built, chips (called Application-Specific Integrated Circuits, or ASICs). However, even in this area, programmable network chips with open APIs (e.g., Tofino chips and P4 API) and network functions programmed on FPGAs are emerging.
Thanks to modular software architecture, adding new functionalities does not require changing the whole solution. A specific SDN solution consists of hundreds of smaller components. When a component (hardware or software one) begins to limit the functionality of our platform, we can replace it (or modify it) with a new one, thus introducing a continuous development process for the solution. So when will our SDN become obsolete? Probably sometime after we stop the development and/or the hardware deprecates in terms of functionality and performance. What seems to be important, however, is the fact that a good SDN platform allows for convenient and efficient extension with new functionalities and adaptation to various physical and virtual network elements.