Maintaining an up-to-date global network view is of crucial importance for intelligent SDN applications that need to act autonomously. In this paper, we focus on two key factors that can affect the controllers' global network view and subsequently impact the application performance. Particularly we examine: (1) network state collection, and (2) network state distribution. First, we compare the impact of active and passive OpenFlow network state collection methods on an SDN load-balancing application running at the controller using key performance indicators that we define. We do this comparison through: (i) a simulation of a mathematical model we derive for the SDN load-balancer, and (ii) an evaluation of a load-balancing application running on top of single and distributed controllers. Further, we investigate the impact of network state collection on a state-distribution-aware load-balancing application. Finally, we study the impact of network scale on applications requiring an up-to-date global network view in the presence of the aforementioned key factors. Our results show that both the network state collection and network state distribution can have an impact on the SDN application performance. The more the information at the controllers becomes outdated, the higher the impact would be. Even with those applications that were designed to mitigate the issues of controller state distribution, their performance was affected by the network state collection. Lastly, the results suggest that the impact of network state collection on application performance becomes more apparent as the number of distributed controllers increases.
Computer networks lack a general control paradigm, as traditional networks do not provide any network-wide management abstractions. As a result, each new function (such as routing) must provide its own state distribution, element discovery, and failure recovery mechanisms. We believe this lack of a common control platform has significantly hindered the development of flexible, reliable and feature-rich network control planes. To address this, we present Onix, a platform on top of which a network control plane can be implemented as a distributed system. Control planes written within Onix operate on a global view of the network, and use basic state distribution primitives provided by the platform. Thus Onix provides a general API for control plane implementations, while allowing them to make their own trade-offs among consistency, durability, and scalability.