Dan Siemon has an excellent article regarding network queueing in the Linux kernel. He provides easily digestible explanations of network queues, and how they can be tuned, including reducing bufferbloat and recent efforts in the Linux kernel to dynamically adjust driver queues using Byte Queue Limits (BQL).
Queueing in the Linux Network Stack
Also interesting is his application and measurement of improvements to his home internet connection: