Event-driven network programming

Software-defined networking (SDN) programs must simultaneously describe static forwarding behavior and dynamic updates in response to events. Event-driven updates are critical to get right, but difficult to implement correctly due to the high degree of concurrency in networks. Existing SDN platforms offer weak guarantees that can break application invariants, leading to problems such as dropped packets, degraded performance, security violations, etc. This paper introduces EVENT-DRIVEN CONSISTENT UPDATES that are guaranteed to preserve well-defined behaviors when transitioning between configurations in response to events. We propose NETWORK EVENT STRUCTURES (NESs) to model constraints on updates, such as which events can be enabled simultaneously and causal dependencies between events. We define an extension of the NetKAT language with mutable state, give semantics to stateful programs using NESs, and discuss provably-correct strategies for implementing NESs in SDNs. Finally, we evaluate our approach empirically, demonstrating that it gives well-defined consistency guarantees while avoiding expensive synchronization and packet buffering.

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

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

[3]  Giuseppe Bianchi,et al.  OpenState: programming platform-independent stateful openflow applications inside the switch , 2014, CCRV.

[4]  Russell J. Clark,et al.  Simpler Network Configuration with State-Based Network Policies , 2013 .

[5]  Arne Ludwig,et al.  Good Network Updates for Bad Packets: Waypoint Enforcement Beyond Destination-Based Routing Policies , 2014, HotNets.

[6]  Brighten Godfrey,et al.  Enforcing Customizable Consistency Properties in Software-Defined Networks , 2015, NSDI.

[7]  Russell J. Clark,et al.  SDX , 2014 .

[8]  Yifei Yuan,et al.  Scenario-based programming for SDN policies , 2015, CoNEXT.

[9]  Yifei Yuan,et al.  NetEgg: Programming Network Policies by Examples , 2014, HotNets.

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

[11]  Ryan Beckett,et al.  Temporal NetKAT , 2016, PLDI.

[12]  Martín Casado,et al.  Ethane: taking control of the enterprise , 2007, SIGCOMM '07.

[13]  Arjun Guha,et al.  A fast compiler for NetKAT , 2015, ICFP.

[14]  Nick Feamster,et al.  Procera: a language for high-level reactive network control , 2012, HotSDN '12.

[15]  Alvin Cheung,et al.  Packet Transactions: High-Level Programming for Line-Rate Switches , 2015, SIGCOMM.

[16]  David Walker,et al.  SNAP: Stateful Network-Wide Abstractions for Packet Processing , 2015, SIGCOMM.

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

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

[19]  Martín Casado,et al.  Fabric: a retrospective on evolving SDN , 2012, HotSDN '12.

[20]  P. Cochat,et al.  Et al , 2008, Archives de pediatrie : organe officiel de la Societe francaise de pediatrie.

[21]  Paul Hudak,et al.  Nettle: Taking the Sting Out of Programming Network Routers , 2011, PADL.

[22]  Fernando Pedone,et al.  Merlin: A Language for Provisioning Network Resources , 2014, CoNEXT.

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

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

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

[26]  Brighten Godfrey,et al.  Towards correct network virtualization , 2014, HotSDN.

[27]  Glynn Winskel,et al.  Event Structures , 1986, Advances in Petri Nets.

[28]  George Varghese,et al.  P4: programming protocol-independent packet processors , 2013, CCRV.

[29]  Xin Jin,et al.  Dynamic scheduling of network updates , 2014, SIGCOMM.

[30]  Rakesh Bobba,et al.  Inter-flow consistency: A novel SDN update abstraction for supporting inter-flow constraints , 2015, 2015 IEEE Conference on Communications and Network Security (CNS).

[31]  Nate Foster,et al.  Efficient synthesis of network updates , 2014, PLDI.

[32]  Arun Venkataramani,et al.  Consensus Routing: The Internet as a Distributed System. (Best Paper) , 2008, NSDI.

[33]  Srikanth Kandula,et al.  Achieving high utilization with software-driven WAN , 2013, SIGCOMM.

[34]  Russell J. Clark,et al.  Kinetic: Verifiable Dynamic Network Control , 2015, NSDI.

[35]  MahajanRatul,et al.  Achieving high utilization with software-driven WAN , 2013 .

[36]  Ramesh Govindan,et al.  Scalable Rule Management for Data Centers , 2013, NSDI.

[37]  Neil Immerman,et al.  Decentralizing SDN Policies , 2015, POPL.

[38]  David Walker,et al.  Optimizing the "one big switch" abstraction in software-defined networks , 2013, CoNEXT.

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

[40]  Nancy A. Lynch,et al.  Perspectives on the CAP Theorem , 2012, Computer.

[41]  George Varghese,et al.  Checking Beliefs in Dynamic Networks , 2015, NSDI.

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

[43]  Eric A. Brewer,et al.  Towards robust distributed systems (abstract) , 2000, PODC '00.

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

[45]  Alvin Cheung,et al.  Packet Transactions: A Programming Model for Data-Plane Algorithms at Hardware Speed , 2015, ArXiv.

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