Most networked applications spend a significant amount of time on communication, and the software libraries and hardware used for communication often determines their performance (both throughput and latency), and their resource requirements. In the past decade, we have seen several efforts to improve communication performance and efficiency at the end-host. These include kernel bypass libraries such as DPDK, new kernel interfaces such as io_uring, in-kernel network offloads provided by XDP and eBPF, and SmartNICs of a variety of types. Each of these approaches makes trade-offs in terms of their performance, how easily they can be deployed (in private clusters and multi-tenant environments), their resource requirement, the reliability they provide, and how easy it is for programmers to use them when building networked applications. We are organizing this Dagstuhl Seminar to bring together people who work on systems, networking, programming languages, compilers, computer architecture, and distributed systems to work together to articulate and understand these trade-offs, and collectively propose approaches to improve usability, reliability, deployability, and analysis of high-performance networking software and hardware.
Why now? Finding approaches for building correct, resource-efficient networked applications that can provide low request latency and have high-throughput has been an ongoing concern since the emergence of the first distributed systems in the 1960s. Developing and evaluating these approaches has gained importance in recent years: the adoption of online services has led to more people building and deploying distributed applications whose performance and availability impact societal functions; and the end of Dennard scaling, the likely end of Moore’s law, and a desire to reduce energy usage in these large deployment has made resource efficiency more important. The hyper-scalers, kernel-developers, and academia have been developing solutions that seek to address this, but in most cases, this has been done without looking across approaches or areas. Our goal is to foster discussion across communities and areas so that we can all develop better, more reliable, and easily deployed solutions.
What topics do you plan to talk about? We are planning on discussing the following topics:
- Application requirements for host-networking.
- Network stack and APIs that applications use for communication.
- In-kernel network offloads and how applications use them.
- SmartNIC architecture, and how applications can offload functionality to them.
- The interface between SmartNICs and CPUs: how data gets from applications to SmartNICs.
- Offloads and transport protocols: how do offloads impact transport protocols.
- How to reason about the correctness, performance and reliability of programs that use offloads.
These topics are broad guidelines: our goal is not to hem us into talking about a few pre-selected topics, but rather to encourage a wider discussion on how programming methodologies, APIs, compilers, runtimes, operating systems, and hardware should evolve to better support high-performance, resource-efficient networked applications.
- Hardware Architecture
- Networking and Internet Architecture
- Operating Systems
- Network stacks
- Network APIs