FLICK: Developing and Running Application-Specific Network Services

Data centre networks are increasingly programmable, with application-specific network services proliferating, from custom load-balancers to middleboxes providing caching and aggregation. Developers must currently implement these services using traditional low-level APIs, which neither support natural operations on application data nor provide efficient performance isolation. We describe FLICK, a framework for the programming and execution of application-specific network services on multi-core CPUs. Developers write network services in the FLICK language, which offers high-level processing constructs and application-relevant data types. FLICK programs are translated automatically to efficient, parallel task graphs, implemented in C++ on top of a user-space TCP stack. Task graphs have bounded resource usage at runtime, which means that the graphs of multiple services can execute concurrently without interference using cooperative scheduling. We evaluate FLICK with several services (an HTTP load-balancer, a Memcached router and a Hadoop data aggregator), showing that it achieves good performance while reducing development effort.

[1]  Ying Zhang,et al.  PGA: Using Graphs to Express and Automatically Reconcile Network Policies , 2015, Comput. Commun. Rev..

[2]  Ravi Kumar,et al.  Pig latin: a not-so-foreign language for data processing , 2008, SIGMOD Conference.

[3]  Albert G. Greenberg,et al.  Ananta: cloud scale load balancing , 2013, SIGCOMM.

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

[5]  Timothy Roscoe,et al.  Filet-o-Fish: practical and dependable domain-specific languages for OS development , 2009, PLOS '09.

[6]  Luigi Rizzo,et al.  Transparent acceleration of software packet forwarding using netmap , 2012, 2012 Proceedings IEEE INFOCOM.

[7]  Giuseppe Lettieri,et al.  VALE, a switched ethernet for virtual machines , 2012, CoNEXT '12.

[8]  Christos Gkantsidis,et al.  Enabling End-Host Network Functions , 2015, Comput. Commun. Rev..

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

[10]  S. Hadjiefthymiades,et al.  Hypertext Transfer Protocol (HTTP) , 1996 .

[11]  Luigi Rizzo,et al.  netmap: A Novel Framework for Fast Packet I/O , 2012, USENIX ATC.

[12]  Eunyoung Jeong,et al.  mTCP: a Highly Scalable User-level TCP Stack for Multicore Systems , 2014, NSDI.

[13]  K. K. Ramakrishnan,et al.  NetVM: High Performance and Flexible Networking Using Virtualization on Commodity Platforms , 2014, IEEE Transactions on Network and Service Management.

[14]  Alexander L. Wolf,et al.  NetAgg: Using Middleboxes for Application-specific On-path Aggregation in Data Centres , 2014, CoNEXT.

[15]  Eddie Kohler,et al.  The Click modular router , 1999, SOSP.

[16]  Haoyu Song,et al.  Protocol-oblivious forwarding: unleash the power of SDN through a future-proof forwarding plane , 2013, HotSDN '13.

[17]  K. K. Ramakrishnan,et al.  SmartSwitch: Blurring the Line Between Network Infrastructure & Cloud Applications , 2014, HotCloud.

[18]  Roy T. Fielding,et al.  The Apache HTTP Server Project , 1997, IEEE Internet Comput..

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

[20]  David J. Scott,et al.  Melange: creating a "functional" internet , 2007, EuroSys '07.

[21]  James Cheney,et al.  Cyclone: A Safe Dialect of C , 2002, USENIX Annual Technical Conference, General Track.

[22]  Alexander L. Wolf,et al.  NaaS: Network-as-a-Service in the Cloud , 2012, Hot-ICE.

[23]  김기천,et al.  생체모방 자율제어 네트워크 환경 구현 연구 동향 :Porgramming Protocol-Independent Packet Processors 기술 개요 , 2016 .

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

[25]  Panos Kalnis,et al.  Mizan: a system for dynamic load balancing in large-scale graph processing , 2013, EuroSys '13.

[26]  Byung-Gon Chun,et al.  Usenix Association 10th Usenix Symposium on Operating Systems Design and Implementation (osdi '12) 135 Megapipe: a New Programming Interface for Scalable Network I/o , 2022 .

[27]  Brad Fitzpatrick,et al.  Distributed caching with memcached , 2004 .

[28]  Roy T. Fielding,et al.  Hypertext Transfer Protocol - HTTP/1.1 , 1997, RFC.

[29]  Vern Paxson,et al.  Hilti: an Abstract Execution Environment for High‐performance Network Traffic Analysis , 2022 .

[30]  Larry L. Peterson,et al.  binpac: a yacc for writing application protocol parsers , 2006, IMC '06.

[31]  Tony Tung,et al.  Scaling Memcache at Facebook , 2013, NSDI.

[32]  Nick McKeown,et al.  OpenFlow: enabling innovation in campus networks , 2008, CCRV.

[33]  Carl A. Gunter,et al.  PLAN: a packet language for active networks , 1998, ICFP '98.

[34]  Dexter Kozen,et al.  Kleene Algebra with Tests: Completeness and Decidability , 1996, CSL.

[35]  George Varghese,et al.  Programming Protocol-Independent Packet Processors , 2013, ArXiv.

[36]  Nickolai Zeldovich,et al.  Nail: A Practical Tool for Parsing and Generating Data Formats , 2014, OSDI.

[37]  Vern Paxson,et al.  HILTI: an Abstract Execution Environment for Deep, Stateful Network Traffic Analysis , 2014, Internet Measurement Conference.

[38]  Amin Vahdat,et al.  xOMB: Extensible Open MiddleBoxes with commodity servers , 2012, 2012 ACM/IEEE Symposium on Architectures for Networking and Communications Systems (ANCS).

[39]  Katerina J. Argyraki,et al.  Software dataplane verification , 2014, NSDI.

[40]  Roberto Bifulco,et al.  ClickOS and the Art of Network Function Virtualization , 2014, NSDI.

[41]  Andrew Warfield,et al.  Split/Merge: System Support for Elastic Execution in Virtual Middleboxes , 2013, NSDI.

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

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

[44]  Srikanth Kandula,et al.  Leveraging endpoint flexibility in data-intensive clusters , 2013, SIGCOMM.

[45]  Laurent Mathy,et al.  FlowOS: a flow-based platform for middleboxes , 2013, HotMiddlebox '13.

[46]  Nick Feamster,et al.  Intentional Network Monitoring: Finding the Needle without Capturing the Haystack , 2014, HotNets.

[47]  Mark Handley,et al.  In-Net: in-network processing for the masses , 2015, EuroSys.