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.