FLICK: Developing and Running Application-Specific Network Services
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.