FLICK: developing and running application-specific network services
File(s)flick-usenix16.pdf (475.72 KB)
Accepted version
Author(s)
Type
Conference Paper
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.
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.
Date Issued
2016-06-22
Date Acceptance
2016-05-30
Citation
Proceedings of the 2016 USENIX Annual Technical Conference (USENIX ATC 16), 2016
Publisher
USENIX Association
Journal / Book Title
Proceedings of the 2016 USENIX Annual Technical Conference (USENIX ATC 16)
Copyright Statement
© The Author(s) 2016.
Source
2016 USENIX Annual Technical Conference (USENIX ATC '16)
Publication Status
Accepted
Start Date
2016-06-22
Finish Date
2016-06-24
Coverage Spatial
Denver, CO, USA