One of the promises of software-defined networking is that it can speed up the introduction of new network applications and services. Instead of re-architecting the network and the network management system for every new service, these services can be developed and maintained in the same way as other software applications.
SDN does this by shifting the focal point of networking from protocols to software abstractions. The networking community has traditionally solved new problems by inventing new protocols. The software industry, in contrast, has advanced by developing solid abstractions that can be reused as foundational building blocks.
Tail-f makes use of the following six such building blocks or design principles to enable software-defined networking, with the goal of making network service implementation quicker:
- Logically centralized implementation of network services with centralized APIs.
- Data structure representations of network services and network resources.
- Data models that describe these data structures in a semantically rich way, including integrity constraints.
- Mappings from service operations to network state changes.
- Transactional guarantees to ensure fail-safe operation.
- Multi-protocol support to support both traditional networking devices, often with proprietary interfaces, and new protocols such as Openflow.
In the next several posts I will describe these design principles in more detail. If you want an overview already now, please check out this 26 minute presentation: