The Linux Networking Stack™
This is an oddly specific article, but
a) this is for my own sake, I've read too many Medium articles and blog posts walking through similar concepts and I want to write it down somewhere where I can get it
b) and exactly that, there's just so much out there that it doesn't feel like there's a singular, concise place (emphasis on concise) to just get it all? Like how a packet flows through the Linux kernel? What is in hardware and what is in software underneath it all?
The kernel.org docs on networking are far too broad yet also inadequate in covering the basics? There's too many Medium articles and unfocused Stack Exchange threads to sort through with all different diagrams and vocabularies. There's this wonderful older blog post from my Fastly coworker Joe Damato, but it's one step short of just reading the kernel source code yourself.
Therefore:
Tx/Rx Queues
Transmit, Receive. These are what are holding the packets that hit your host. These live in your Network Interface Card (NIC). In hardware, circular ring buffers, called "queues" to simplify. Most modern NIC drivers call them "queue-pairs" to make them one atomic unit, it's not standard to separate them...
[WIP]