Building the nextÌýgeneration of programmable networking -Ìýpowered by Linux
Introduction
Programmable networking has the potential to enable new applications, as well as increase theÌýflexibility of existing ones. Over the last several years, the performance of general purposeÌýcomputers has reached the point where it hasÌýbecome practical to perform high-speed packetÌýprocessing in software, and several frameworks have emerged to enable this, such as the DataPlaneÌýDeveloper Kit (DPDK). However, as these new frameworks have been focused onÌýmaximisingÌýperformance, they have adapted a clean-slate design that means that existing mature networkÌýmanagement tools are harder to integrate with them. On the other hand, mature operating systemÌýnetworking stacks are featurefulÌýand well-integrated into the ecosystem, but lack the performance toÌýkeep up with the specialised frameworks. Finally, networking hardware is starting to become everÌýmore programmable, leading to a desire to integrate programmableÌýhardware features with theÌýsoftware stack.
The Linux networking community has reacted to these challenges by integrating a new data pathÌýinto the Linux kernel, called the eXpress Data Path (XDP). This runs inline with the regular dataÌýpath, allowing flexible high-performanceÌýprogrammable networking to function in concert with theÌýregular networking stack. In addition, some network adapters have adopted the eBPF byte codeÌýformat used by XDP as an option for offloading programmable processing to theÌýhardware. ThisÌýmakes XDP a promising technology for solving the problems of integration between existing stacks,Ìýhigh-speed packet programming in software, and hardware offloading of programmable features.ÌýHowever, while XDPÌýshows promise, there are several open problems that need to be resolvedÌýbefore the vision of an integrated architecture for programmable networking can be achieved. ThisÌýresearch project aims to explore these problems and offerÌýsolutions at both the architectural andÌýtechnical implementation levels.
An explicit aim of this project is to integrate the academic work with an open-sourceÌýimplementation. To this end, this project is structured as a partnership between Red Hat andÌý¹û¶³´«Ã½ in Sweden. ¹û¶³´«Ã½ has a strong history of research excellence inÌýthe field of computer networking, with particular competences in the areas of 5G, programmableÌýnetworking and SDN/NFV. As such, this research project is envisioned as the beginning of a longerÌýcollaboration that will bring these competences into play in the future development of XDP andÌýrelated technologies.
Problems this project seeks to solve
This project aims to explore multiple areas related to programmable networking in general, andÌýXDP in particular. The exact areas to be explored will be adjusted along the way, as participantsÌýexplore the possibilities.
Areas of interest at the time of writing this include:
- Defining a coherent architecture for using Linux as a programmable networkÌýplatform. The XDP and eBPF technologies in the Linux kernel are only building blocks forÌýa larger programmable architecture based on Linux. Defining just whatÌýthis architectureÌýneeds to look like, what problems it can solve and cannot solve, and how it fits into a widerÌýecosystem of programmable network technology and hardware, is still very much up in theÌýair. As such, this project seeks toÌýexplore these architectural issues further, possibly inÌýcollaboration with other programmable network initiatives.
Ìý - Expanding the scope of programmability in XDP . As noted above, the XDP subsystem isÌýjust a building block, and one that is still under active development, which presents an opportunity to expand the scope of what is programmable.ÌýThis project seeks to exploreÌýdifferent ways that the programmability of the data path can be usefully expanded in Linux.ÌýThis could include things like adding new XDP hooks for transmission or addingÌýprogrammable queueing.
Ìý - Using XDP as a platform for implementing Virtual Network Functions (VNFs) . TheÌýLinux kernel networking stack already implements several features that can be deployed asÌývirtual network functions, such as connection tracking, and transport protocol parsers.ÌýBecause XDP is integrated with the networking stack, it is possible to use these featuresÌýfrom a programmable packet processor context. This project will explore best practices andÌýarchitectural issues needed toÌýsee this potential be realised.
Ìý - Defining an infrastructure for container-based NFVs on Linux . Containers are anÌýincreasingly popular technology for deploying applications to cloud environments, becauseÌýof the lower overhead compared to full virtualisation. However, to be useful in an NFVÌýcontext, the networking interconnect between containers need to be high performance asÌýwell. XDP enables programmable steering of traffic, and is tightly integrated with the virtualÌýnetworking interfaces used for interconnecting containers. As such, XDP has the potential toÌýrealise the promise of high-performance container-based NFVs. This project seeks toÌýexplore the technical and architectural challenges involved in realising this potential.
Ìý - Specifying an architecture for programmable protocol processing . As moreÌýprogrammable networking solutions appear on the market, interoperability becomes anÌýimportant issue, as does the smooth integration of different architecturesÌý(e.g.,Ìýhardware-based and software-based). At the same time, a way to specify behaviours orÌýdefine parsing semantics at a higher level of abstraction is needed. The c3po initiative was 3Ìýannounced after the Netdev conference in MarchÌý2019, and aims to define a specification forÌýa "common model of programmable protocol processing". This project will participate inÌýthat effort.