In my PhD dissertation, I explore the design space of software packet processing applications within the new “cloud-native” era, and I propose a novel paradigm to design, run, and manage software network functions that follow the same approach of micro-services. I first discuss Polycube, a software framework that enables the creation of efficient, modular, and dynamically reconfigurable in-kernel networking components available with vanilla Linux. Polycube exploits the extended Berkeley Packet Filter (eBPF) framework to execute the data plane of those network functions and introduces a set of additional components and common APIs that make it easier to develop and manage those services. I designed and evaluated the use of this paradigm through bpf-iptables, a clone of iptables characterized by improved performance and scalability.
In the last part of the dissertation, I will present Kecleon, a compiler framework that can be used to dynamically optimize generic software data planes, taking into account the runtime characteristics and packet processing behavior of the original network function. My idea would be to create a new model of packet processing applications that is better suited for modern cloud environments, having the capability to be dynamically re-combined, re-generated, and re-optimized without sacrificing programmability, extensibility and performance.