Felix: Implementing Traffic Measurement on End Hosts Using Program Analysis

Network measurement is an essential component of many SDN applications, but most existing controller platforms force programmers to implement measurement tasks by installing fine-grained forwarding rules on switches---an approach that significantly increases configuration and management complexity. This paper proposes a radically different approach: rather than implementing measurement tasks directly on network switches, we argue for pushing measurement to the edge and utilizing the abundant resources available on end hosts. At a technical level, our approach is based on two key ideas: (i) we express measurement tasks using programs in a high-level, declarative query language, and (ii) we use program analysis to calculate predicates that can be used to answer queries at the edge of the network. We present an implementation of our approach on top of the NetKAT framework, we develop case studies illustrating the benefits of our approach, and we conduct experiments that quantify performance on realistic benchmarks.

[1]  Matthew Roughan,et al.  The Internet Topology Zoo , 2011, IEEE Journal on Selected Areas in Communications.

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

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

[4]  Alexandra Silva,et al.  A Coalgebraic Decision Procedure for NetKAT , 2015, POPL.

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

[6]  Alexandra Silva,et al.  Probabilistic NetKAT , 2016, ESOP.

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

[8]  Theodore Johnson,et al.  Gigascope: a stream database for network applications , 2003, SIGMOD '03.

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

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

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

[12]  Minlan Yu,et al.  Software Defined Traffic Measurement with OpenSketch , 2013, NSDI.

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

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

[15]  Ion Stoica,et al.  Declarative routing: extensible routing with declarative queries , 2005, SIGCOMM '05.

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

[17]  Minlan Yu,et al.  Online Measurement of Large Traffic Aggregates on Commodity Switches , 2011, Hot-ICE.

[18]  Minlan Yu,et al.  HONE: Joint Host-Network Traffic Management in Software-Defined Networks , 2014, Journal of Network and Systems Management.

[19]  Nick McKeown,et al.  Where is the debugger for my software-defined network? , 2012, HotSDN '12.

[20]  George Varghese,et al.  Automatic Test Packet Generation , 2012, IEEE/ACM Transactions on Networking.

[21]  David Walker,et al.  Compiling Path Queries , 2016, NSDI.

[22]  Albert G. Greenberg,et al.  On static reachability analysis of IP networks , 2005, Proceedings IEEE 24th Annual Joint Conference of the IEEE Computer and Communications Societies..

[23]  Graham Cormode,et al.  An improved data stream summary: the count-min sketch and its applications , 2004, J. Algorithms.

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

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

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