SDNRacer: concurrency analysis for software-defined networks

Concurrency violations are an important source of bugs in Software-Defined Networks (SDN), often leading to policy or invariant violations. Unfortunately, concurrency violations are also notoriously difficult to avoid, detect and debug. This paper presents a novel approach and a tool, SDNRacer, for detecting concurrency violations of SDNs. Our approach is enabled by three key ingredients: (i) a precise happens- before model for SDNs that captures when events can happen concurrently; (ii) a set of sound, domain-specific filters that reduce reported violations by orders of magnitude, and; (iii) a sound and complete dynamic analyzer, based on the above, that can ensure the network is free of harmful errors such as data races and per-packet incoherence. We evaluated SDNRacer on several real-world OpenFlow controllers, running both reactive and proactive applications in large networks. We show that SDNRacer is practically effective: it quickly pinpoints harmful concurrency violations without overwhelming the user with false positives.

[1]  Manu Sridharan,et al.  Effective race detection for event-driven programs , 2013, OOPSLA.

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

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

[4]  Laurent Vanbever,et al.  SDNRacer: detecting concurrency violations in software-defined networks , 2015, SOSR.

[5]  Colin Scott,et al.  Troubleshooting blackbox SDN control software with minimal causal sequences , 2015, SIGCOMM.

[6]  David Walker,et al.  Frenetic: a network programming language , 2011, ICFP.

[7]  Rob Sherwood,et al.  OFLOPS: An Open Framework for OpenFlow Switch Evaluation , 2012, PAM.

[8]  Stephen N. Freund,et al.  FastTrack: efficient and precise dynamic race detection , 2009, PLDI '09.

[9]  Michael Schapira,et al.  VeriCon: towards verifying controller programs in software-defined networks , 2014, PLDI.

[10]  Brighten Godfrey,et al.  Debugging the data plane with anteater , 2011, SIGCOMM.

[11]  Brighten Godfrey,et al.  Software-Defined Networks as Databases , 2014, ONS.

[12]  Pavlin Radoslavov,et al.  ONOS: towards an open, distributed SDN OS , 2014, HotSDN.

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

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

[15]  Maciej Kuźniar,et al.  What You Need to Know About SDN Flow Tables , 2015, PAM.

[16]  Junda Liu,et al.  Libra: Divide and Conquer to Verify Forwarding Tables in Huge Networks , 2014, NSDI.

[17]  Sharad Malik,et al.  An assertion language for debugging SDN applications , 2014, HotSDN.

[18]  Rupak Majumdar,et al.  Kuai: A model checker for software-defined networks , 2014, 2014 Formal Methods in Computer-Aided Design (FMCAD).

[19]  George Varghese,et al.  Real Time Network Policy Checking Using Header Space Analysis , 2013, NSDI.

[20]  Shriram Krishnamurthi,et al.  Tierless Programming and Reasoning for Software-Defined Networks , 2014, NSDI.

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

[22]  Austin T. Clements,et al.  The scalable commutativity rule: designing scalable software for multicore processors , 2013, SOSP.

[23]  Zhi Liu,et al.  Troubleshooting blackbox SDN control software with minimal causal sequences , 2014 .

[24]  Dimitar Dimitrov,et al.  Commutativity race detection , 2014, PLDI.

[25]  Ratul Mahajan,et al.  On consistent updates in software defined networks , 2013, HotNets.

[26]  David Walker,et al.  A compiler and run-time system for network programming languages , 2012, POPL '12.

[27]  Leslie Lamport,et al.  Time, clocks, and the ordering of events in a distributed system , 1978, CACM.

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