Priority Scheduling Overview
The Juniper Networks® Junos® operating system (Junos OS) supports multiple levels of transmission priority, which in order of increasing priority are low, medium-low, medium-high, high, and strict-high. This allows the software to service higher-priority queues before lower-priority queues.
Priority scheduling determines the order in which an output interface transmits traffic from the queues, thus ensuring that queues containing important traffic are provided better access to the outgoing interface.
Higher-priority queues transmit packets ahead of lower priority queues as long as the higher-priority forwarding classes retain enough bandwidth credit. When you configure a higher-priority queue with a significant fraction of the transmission bandwidth, the queue might lock out (or starve) lower priority traffic.
On Juniper Networks M Series Multiservice Edge Routers and Juniper Networks T Series Core Routers, you can configure one queue per interface to have strict-high priority, which works the same as high priority, but provides unlimited transmission bandwidth. As long as the queue with strict-high priority has traffic to send, it receives precedence over all other queues, except queues with high priority. Queues with strict-high and high priority take turns transmitting packets until the strict-high queue is empty, the high priority queues are empty, or the high priority queues run out of bandwidth credit. Only when these conditions are met can lower priority queues send traffic.
When you configure a queue to have strict-high priority, you do not need to include the transmit-rate statement in the queue configuration at the [edit class-of-service schedulers scheduler-name] hierarchy level because the transmission rate of a strict-high priority queue is not limited by the weighted round robin (WRR) configuration. If you do configure a transmission rate on a strict-high priority queue, it does not affect the WRR operation. The transmission rate only serves as a placeholder in the output of commands such as the show interface queue command.
The strict-high priority queues might starve low priority queues. The high priority allows you to protect traffic classes from being starved by traffic in a strict-high queue. For example, a network-control queue might require a small bandwidth allocation (for example, 5 percent). You can assign high priority to this queue to prevent it from being underserved.
A queue with strict-high priority supersedes bandwidth guarantees for queues with lower priority. Therefore, we recommend that you use the strict-high priority to ensure proper ordering of special traffic, such as voice traffic. You can preserve bandwidth guarantees for queues with lower priority by allocating to the queue with strict-high priority only the amount of bandwidth that it generally requires. For example, consider the following allocation of transmission bandwidth:
- Q0 BE—20 percent, low priority
- Q1 EF—30 percent, strict-high priority
- Q2 AF—40 percent, low priority
- Q3 NC—10 percent, low priority
This bandwidth allocation assumes that, in general, the EF forwarding class requires only 30 percent of an interface’s transmission bandwidth. However, if short bursts of traffic are received on the EF forwarding class, 100 percent of the bandwidth is given to the EF forwarding class because of the strict-high setting.