Priority Queueing
Priority Queueing (PQ) is an older queueing algorithm
that handles traffic with different precedence levels much more pragmatically.
The Cisco implementation of Priority Queueing uses four distinct queues called
"high priority," "medium priority," "normal priority," and "low priority." The
PQ algorithm maintains an extremely strict concept of priority. If there are any
packets in a higher priority queue, they must be sent first before any packets
in the lower priority queues are sent.
Some types of critical real-time applications that absolutely
cannot wait for low priority traffic work well with PQ. However, there is an
obvious problem with this strategy as well. If the volume of traffic in the
higher priority queues is greater than the link capacity, then no traffic from
the lower priority queues will be forwarded. PQ starves low-priority
applications in these cases.
So a pure PQ implementation requires that you have an extremely
good understanding of your traffic patterns. The high-priority traffic must
represent a small fraction of the total, with the lowest priorities having the
largest net volume. Further, you must have enough link capacity that the PQ
algorithm is only used during peak bursts. If there is routine link congestion,
PQ will give extremely poor overall performance.
However, Cisco has recently implemented a new hybrid queue
type, called Low Latency Queueing (LLQ), which you can use with CBWFQ to give
the best features of PQ while avoiding the queue starvation problem. The idea is
simply to use CBWFQ for all of the traffic except for a small number sub-queues
that are reserved strictly for relatively low-volume real-time applications. The
router services the real-time queues using a strict priority scheme, and the
others using CBWFQ. So, if there is a packet in one of the real-time queues, the
router will transmit it before looking in one of the other queues. However, when
there is nothing in the priority queues, the router will use normal CBWFQ for
everything else.
LLQ also includes the stipulation that, if the volume of high
priority traffic exceeds a specified rate, the router will stop giving it
absolute priority. The guarantees that LLQ will never starve the low priority
queues.
This model is best suited to applications like voice or video
in which the real-time data comes in a fairly continuous, but low-bandwidth,
stream of small packets, as opposed to more bursty applications such as file
transfers.