FLICK: Developing and Running Application-Specific Network Services

Paper type: 
Conference paper
Abdul Alim, Richard G. Clegg, et al (see bibtex)
USENIX ATC, 2016
Abstract: 
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.
Description: 
This paper describes a system for middleboxes that process application level data -- that is reconstructed TCP flows not packets. The system consists of three parts: 1) A language specific to middleboxes that can quickly express data formats and how to process them but in a "safe" way that allows middleboxes to co-exist on the same physical hardware. 2) An abstraction, the task graph, that breaks middlebox logic into small, parallelisable logical units (tasks) connected by channels through which data flows. 3) A system that allows the compiled code to execute in a performant way.
Preprint: 
bibtex: 
@article{usenix_atc_2016,
title = {{FLICK}: Developing and Running Application-Specific Network Services},
author= {Abdul Alim and Richard G. Clegg and
Luo Mai and Lukas Rupprecht and 
Eric Seckler and Paolo Costa and Peter Pietzuch and 
Alexander L. Wolf and Nik Sultana and Jon Crowcroft and Anil Madhavapeddy and 
Andrew W. Moore and Richard Mortier and
Masoud Koleini and 
Luis Oviedo and Derek McAuley and Matteo Migliavacca},
booktitle = {Proc. USENIX ATC},
year= {2016}
}