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.
@inproceedings{nelson:flowlog, author = "Tim Nelson and Arjun Guha and Daniel~J. Dougherty and Kathi Fisler and Shriram Krishnamurthi", title = "A Balance of Power: Expressive, Analyzable Controller Programming", year = 2013, booktitle = "ACM SIGCOMM Workshop on Hot Topics in Software Defined Networking (HotSDN)" }