VeriCon: towards verifying controller programs in software-defined networks

Software-defined networking (SDN) is a new paradigm for operating and managing computer networks. SDN enables logically-centralized control over network devices through a "controller" software that operates independently from the network hardware, and can be viewed as the network operating system. Network operators can run both inhouse and third-party SDN programs (often called applications) on top of the controller, e.g., to specify routing and access control policies. SDN opens up the possibility of applying formal methods to prove the correctness of computer networks. Indeed, recently much effort has been invested in applying finite state model checking to check that SDN programs behave correctly. However, in general, scaling these methods to large networks is challenging and, moreover, they cannot guarantee the absence of errors. We present VeriCon, the first system for verifying that an SDN program is correct on all admissible topologies and for all possible (infinite) sequences of network events. VeriCon either confirms the correctness of the controller program on all admissible network topologies or outputs a concrete counterexample. VeriCon uses first-order logic to specify admissible network topologies and desired network-wide invariants, and then implements classical Floyd-Hoare-Dijkstra deductive verification using Z3. Our preliminary experience indicates that VeriCon is able to rapidly verify correctness, or identify bugs, for a large repertoire of simple core SDN programs. VeriCon is compositional, in the sense that it verifies the correctness of execution of any single network event w.r.t. the specified invariant, and can thus scale to handle large programs. To relieve the burden of specifying inductive invariants from the programmer, VeriCon includes a separate procedure for inferring invariants, which is shown to be effective on simple controller programs. We view VeriCon as a first step en route to practical mechanisms for verifying network-wide invariants of SDN programs.

[1]  Brighten Godfrey,et al.  VeriFlow: verifying network-wide invariants in real time , 2012, HotSDN '12.

[2]  Marco Canini,et al.  A SOFT way for openflow switch interoperability testing , 2012, CoNEXT '12.

[3]  Paul Hudak,et al.  Maple: simplifying SDN programming using algorithmic policies , 2013, SIGCOMM.

[4]  Minlan Yu,et al.  SIMPLE-fying middlebox policy enforcement using SDN , 2013, SIGCOMM.

[5]  Azer Bestavros,et al.  A Verification Platform for SDN-Enabled Applications , 2014, 2014 IEEE International Conference on Cloud Engineering.

[6]  Kathi Fisler,et al.  A balance of power: expressive, analyzable controller programming , 2013, HotSDN '13.

[7]  Nate Foster,et al.  NetKAT: semantic foundations for networks , 2014, POPL.

[8]  Nikolaj Bjørner,et al.  Z3: An Efficient SMT Solver , 2008, TACAS.

[9]  Marco Canini,et al.  A NICE Way to Test OpenFlow Applications , 2012, NSDI.

[10]  Koushik Sen,et al.  DART: directed automated random testing , 2005, PLDI '05.

[11]  George Varghese,et al.  Header Space Analysis: Static Checking for Networks , 2012, NSDI.

[12]  Vyas Sekar,et al.  Stratos: A Network-Aware Orchestration Layer for Middleboxes in the Cloud , 2013, ArXiv.

[13]  George Varghese,et al.  Usenix Association 10th Usenix Symposium on Networked Systems Design and Implementation (nsdi '13) 99 Real Time Network Policy Checking Using Header Space Analysis , 2022 .

[14]  Russell J. Clark,et al.  Resonance: dynamic access control for enterprise networks , 2009, WREN '09.

[15]  Sharad Malik,et al.  Abstractions for model checking SDN controllers , 2013, 2013 Formal Methods in Computer-Aided Design.

[16]  Min Zhu,et al.  B4: experience with a globally-deployed software defined wan , 2013, SIGCOMM.

[17]  Arjun Guha,et al.  Machine-verified network controllers , 2013, PLDI.

[18]  Edsger W. Dijkstra,et al.  Guarded commands, nondeterminacy and formal derivation of programs , 1975, Commun. ACM.

[19]  David Walker,et al.  Languages for software-defined networks , 2013, IEEE Communications Magazine.

[20]  J. Rexford,et al.  Logic Programming for Software-Defined Networks , 2012 .

[21]  Jorge Sousa Pinto,et al.  Verification conditions for source-level imperative programs , 2011, Comput. Sci. Rev..

[22]  John McCarthy,et al.  Towards a Mathematical Science of Computation , 1962, IFIP Congress.

[23]  David Walker,et al.  Abstractions for network update , 2012, SIGCOMM '12.

[24]  Martín Casado,et al.  Network Virtualization in Multi-tenant Datacenters , 2014, NSDI.