NetEgg: Programming Network Policies by Examples

The emergence of programmable interfaces to network controllers offers network operators the flexibility to implement a variety of policies. We propose NetEgg, a programming framework that allows a network operator to specify the desired functionality using example behaviors. Our synthesis algorithm automatically infers the state that needs to be maintained to exhibit the desired behaviors along with the rules for processing network packets and updating the state. We report on an initial prototype of NetEgg. Our experiments evaluate the proposed framework based on the number of examples needed to specify a variety of policies considered in the literature, the computational requirements of the synthesis algorithm to translate these examples to programs, and the overhead introduced by the generated implementation for processing packets. Our results show that NetEgg can generate implementations that are consistent with the example behaviors, and have performance comparable to equivalent imperative implementations.

[1]  Ion Stoica,et al.  Declarative networking , 2009, Commun. ACM.

[2]  David Harel,et al.  Come, Let’s Play , 2003, Springer Berlin Heidelberg.

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

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

[5]  Rajeev Alur,et al.  TRANSIT: specifying protocols with concolic snippets , 2013, PLDI.

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

[7]  David Harel,et al.  Can Programming Be Liberated , 2008 .

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

[9]  David Walker,et al.  Composing Software Defined Networks , 2013, NSDI.

[10]  David Harel,et al.  Come, let's play - scenario-based programming using LSCs and the play-engine , 2003 .

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

[12]  Nick McKeown,et al.  A network in a laptop: rapid prototyping for software-defined networks , 2010, Hotnets-IX.

[13]  David Harel Can Programming Be Liberated, Period? , 2008, Computer.

[14]  Sumit Gulwani,et al.  Automating string processing in spreadsheets using input-output examples , 2011, POPL '11.

[15]  David Harel,et al.  Behavioral programming , 2012, CACM.

[16]  Ramesh Govindan,et al.  Flow-level state transition as a new switch primitive for SDN , 2014, HotSDN.

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