Dan Siemon has posted a detailed overview of how the Linux network stack queues packets. "As of Linux 3.6.0 (2012-09-30), the Linux kernel has a new feature called TCP Small Queues which aims to solve this problem for TCP. TCP Small Queues adds a per TCP flow limit on the number of bytes which can be queued in the QDisc and driver queue at any one time. This has the interesting side effect of causing the kernel to push back on the application earlier which allows the application to more effectively prioritize writes to the socket."
August 9, 2013
Siemon: Queueing in the Linux Network Stack
Read more at LWN