A Balance of Power: Expressive, Analyzable Controller Programming

Tim Nelson, Arjun Guha, Daniel J. Dougherty, Kathi Fisler, Shriram Krishnamurthi

Workshop on Hot Topics in Software Defined Networks, 2013


Configuration languages for traditional network hardware are often fairly limited and hence easy to analyze. Programmable controllers for software-defined networks are far more flexible, but this flexibility results in more opportunities for mis-configuration and greatly complicates analyses. We propose a new network-programming paradigm that strikes a balance between expressive power and analysis, providing a highly analyzable core language while allowing the re-use of pre-existing code written in more complex production languages.

As the first step we have created FlowLog, a declarative language for programming SDN controllers. We show that FlowLog is expressive enough to build some real controller programs. It is also a finite-state language, and thus amenable to many types of analysis, such as model-checking. In this paper we present FlowLog, show examples of controller programs, and discuss analyzing them.


This paper has largely been superceded by the NSDI 2014 conference version. Please refer to that instead. The main differences are:


