From the blog.

Managing Digital Racket
The more I tune out, the less I miss it. But that has presented me with some complex choices for a nuanced approach to curb
Complexity – My Friend, My Enemy
Over my years of network engineering, I've learned that the fewer features you can implement while still achieving a business goal, the better. Why? Fewer

OECG – Chapter 15

422 Words. Plan about 2 minute(s) to read this.

Low latency queuing is the tool to use when you are providing QoS for delay sensitive traffic. LLQ is the same as CBWFQ, but for the addition of some queues to be tweaked to be low-latency. These special low-latency queues are serviced much like PQ’s “high” queue – LLQ will service packets in these queues first.

You might remember that with PQ, a busy high queue could result in queue starvation (starved of pipe) for the other queues. LLQ prevents this problem of queue starvation by policing the low-latency/high priority queue based on configured bandwidth. Therefore, the bandwidth you give to a LLQ priority queue is not only the guaranteed minimum, but also the policed maximum. The net result is that packets leaving the queue will have low-latency, but not everyone will make it out of the queue. Some priority queue packets may get dropped so that the other queues do not starve.

Configuring LLQ is the same as for CBWFQ. However, you get an additional command called “priority {bandwidth-kbps | percent <percentage>} [burst]” which you use instead of “bandwidth” to make that queue a low-latency queue. The “burst” refers to the burst size of the policer, in other words, how high can the traffic burst above the configured maximum, where the default of 20% of the bandwidth you’ve configured usually being sufficient.

Note that the bandwidth used by priority queues take away from the “remaining bandwidth”. So as a follow up to the previous post, remaining bandwidth is really the max-reservable, minus whatever’s been taken up with priority queues. If you go crazy enough reserving percentages and Kbps, you’ll need a slide ruler to sort it out, and we don’t want that.

Finally, note that while you can configure multiple priority (low-latency) queues, those queues are treated by the router as if they were a single priority queue. You would set up multiple priority queues then, so that you can policy different classes of traffic at different rates, thus keeping different types of priority traffic from clobbering one another.

And finally, a couple of miscellaneous notes:

  • A router probably won’t have packets in all the configured queues all at the same time. In that case, you might see some traffic getting more bandwidth than they were allocated. If there’s extra bandwidth, the router will allocate it proportionally when computed against what each class is reserved.
  • A router will only use queuing if there’s congestion. In other words, when the hardware queue is full. The queuing logic never kicks in otherwise.