This project is focused on networking in the datacentre. It aims to optimse network traffic based upon knowledge about the applications creating that traffic. This allows sophisticated mechanisms to be implemented in the network, for example custom routing protocols, traffic filtering, streaming processing of data and key-value stores. We term this approach as “Network-as-a-Service”. By modifying the content of packets on-path, they can efficiently implement advanced, application-specific network services, such as in-network data aggregation and smart caching. Parallel processing systems such as MapReduce and Search engines, as well as emerging machine learning systems would greatly benefit because data can be aggregated on-path, thus reducing execution times. Key-value stores (e.g. memcached) can improve their performance by caching popular keys within the network, which decreases latency and bandwidth usage compared to end-host-only deployments.
To facilitate the development of the NaaS system we have created a domain specific language, FLICK, and an efficient parallel runtime. The FLICK language is used to specify a variety of middlebox functionality in a compact but safe-by-design way. This allows an application programmer to, for example, specify a system that intelligently balances http traffic or that processes Hadoop MapReduce data in a small number of lines. The runtime system is focused on smart scheduling that allows a diverse library of applications to co-exist on the same box in a safe and efficient manner so that one application cannot starve another of resources.