ClickNF: a Modular Stack for Network Function Composition
01 January 2020
Network function virtualization calls for the replacement of specialized equipment and monolithic software deployments by functionally equivalent but leaner modular software implementations. Server-side network functions developers could especially benefit from the existence of a highly customizable yet scalable framework for the rapid design of network applications. However, balancing the conflicting requirements of customizability and scalability goes often beyond the interests and time constraints of developers. Click made a first step in this direction providing a modular and scalable software router but is limited to the support of L2-L3 data planes and offers weak built-in primitives for manipulating network flows at higher layers. In this paper we present ClickNF, an extension to Click that enables the programming and composition of full-blown network functions by way of a customizable modular L2-L7 network stack. ClickNF introduces a high-performance modular TCP transport layer which is tightly integrated with lower and higher layers of the stack. To facilitate developers' efforts, ClickNF provides basic building blocks such as SSL/TLS termination that can be easily used to compose complex L7 functions. We evaluate ClickNF to highlight its state-of-the-art performance and scalability compared to standard and user-space network stacks and showcase its modularity by building sample applications such as an HTTP/HTTPS cache out of the provided modules.