There are key capabilities that are table-stakes for a Controller in today’s SDN environments, regardless of whether the solution based on an open source or proprietary vendor platform. These capabilities include:
Rich Southbound Support (OpenFlow, etc.): enabling the Controller to manipulate and optimize how switches (and routers) manage the flow of traffic. While there are other southbound protocols that can be used, many SDN solutions are OpenFlow-enabled, making it imperative the Controller support it to maximize deployment scenarios.
Extensible API Support: ensuring the Controller can be used within the varied environment in which it is deployed to intelligently orchestrate communications, both at Layer 2- 3 and Layer 4-7. For example, the Controller should be able to support OpenStack orchestration systems, as well as vendor-specific protocols. When it does, it can execute both network functionality and application logic.
Programmability: providing the ability to redirect traffic, apply sophisticated filters to packets (that can be deployed dynamically), leverage templates to streamline the creation of custom applications, ensure northbound APIs make the control information centralized in the Controller available to be changed by applications. This will ensure the Controller can dynamically adjust the underlying network to optimize traffic flows to use the least expensive path, take into consideration varying bandwidth constraints, meet quality of service (QoS) requirements, etc.