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:
- That paper makes much clearer the tierless design that is latent but not explicit in this version.
- It describes the proactive compiler.
- The verification methodology is significantly revised and much more sophisticated. In particular, see the material on inductive properties.
- It is longer and contains much more detail.
- It is newer and contains more up-to-date detail. It describes more of a real system than the prototype one here.
These papers may differ in formatting from the versions that appear in print. They are made available only to support the rapid dissemination of results; the printed versions, not these, should be considered definitive. The copyrights belong to their respective owners.