Online / 6 & 7 February 2021


Networking Performances in the Linux Kernel, Getting the most out of the Hardware

The networking stack is one of the most complex and optimized subsystem in the Linux kernel, and for a good reason. Between the wild range of applications, the complexity and variety of the networking hardware, getting good performances while keeping the stack easily usable from userspace has been a long-standing challenge.

Nowadays, complex Network Interface Controllers (NICs) can be found even on small embedded systems, bringing powerful features that were previously found only in the server world closest to day to day users.

This is a good occasion to dive into the Linux Networking stack, to discover what is used to make networking as fast as possible, by both using all the features of the hardware, but also implementing some clever software tricks.

In this talk, we'll cover these various techniques, ranging from simple batch processing with NAPI, queue management with RSS, RPS, XPS and so on, flow steering and filtering with ethool and TC, to finish with the newest big change that is XDP.

We'll dive into these various techniques and see how to configure them to squeeze the most out of your hardware, and discover that what was previously in the realm of datacenters and huge computers can now also be appliable to embedded linux development.


Maxime Chevallier