Transmission Priority Scheduling
Junos supports multiple levels of transmission priority, which in order of increasing
priority are low
, low-medium
, low-high
,
medium-low
, medium-high
, high
,
strict-high
, and low-latency
. This allows the software
to service higher-priority queues before lower-priority queues. Which transmission priority
levels are supported can vary depending on the platform and software release.
Prioritize Traffic through Priority Scheduling
Priority scheduling determines the order in which an output interface transmits
traffic from its queues, thus ensuring that queues containing important traffic have
better access to the outgoing interface. Junos accomplishes priority scheduling by
examining the assigned priority of each individual queue and whether each individual
queue is within its defined bandwidth profile. Junos determines whether an
individual queue is within its bandwidth profile by comparing, at regular intervals,
the amount of data transmitted by the queue against the amount of bandwidth
allocated to it by the configured scheduler transmission rate (transmit-rate
)
defined at the [edit class-of-service schedulers
scheduler-name]
hierarchy level. When the
transmitted amount is less than the allocated amount, the queue is considered to be
in profile. A queue is out of profile when its transmitted amount
is larger than its allocated amount.
The queues for a given output physical or logical interface are divided into sets based on their priority. Any such set contains queues of the same priority.
Junos traverses the sets in descending order of priority. If at least one of the queues in the set has a packet to transmit, the software selects that set. A queue from the set is selected based on the weighted round robin (WRR) algorithm, which operates within the set.
Junos performs priority queuing using the following steps:
The software locates all high-priority queues that are currently in profile. These queues are serviced first in a weighted round-robin fashion.
The software locates all medium-high priority queues that are currently in profile. These queues are serviced second in a weighted round-robin fashion.
The software locates all medium-low priority queues that are currently in profile. These queues are serviced third in a weighted round-robin fashion.
The software locates all low-high priority queues that are currently in profile. These queues are serviced second in a weighted round-robin fashion.
The software locates all low-medium priority queues that are currently in profile. These queues are serviced third in a weighted round-robin fashion.
The software locates all low-priority queues that are currently in profile. These queues are serviced fourth in a weighted round-robin fashion.
The software locates all high-priority queues that are currently out of profile and are not rate limited. The weighted round-robin algorithm is applied to these queues for servicing.
The software locates all medium-high priority queues that are currently out of profile and are not rate limited. The weighted round-robin algorithm is applied to these queues for servicing.
The software locates all medium-low priority queues that are currently out of profile and are not rate limited. The weighted round-robin algorithm is applied to these queues for servicing.
The software locates all low-high priority queues that are currently out of profile and are not rate limited. The weighted round-robin algorithm is applied to these queues for servicing.
The software locates all low-medium priority queues that are currently out of profile and are not rate limited. The weighted round-robin algorithm is applied to these queues for servicing.
The software locates all low-priority queues that are currently out of profile and are also not rate limited. These queues are serviced last in a weighted round-robin manner.
Low Latency Queuing (LLQ) Overview
On platforms that support low latency queuing (LLQ). LLQ enables delay-sensitive
data to have preferential treatment over other traffic. A
low-latency
queue has the highest priority over any other
priority queues, including strict-high
queues, as well as a low
delay scheduling profile.
For port scheduling of virtual output queues (VOQs), low latency VOQs receive their own dedicated egress queue. High priority VOQs receive a second dedicated egress queue, and low priority VOQs receive a third dedicated egress queue.
Due to the scheduling hierarchy of hierarchical class of service (HCoS), a hierarchical scheduling can use a maximum of two egress queues. Therefore for hierarchical scheduling of VOQs, low latency VOQs and high priority VOQs receive a common dedicated egress queue, and low priority VOQs receive the second dedicated egress queue.
We recommend the following when configuring low-latency VOQs:
-
Use policers to normalize the burstiness of traffic before it reaches a low-latency VOQ.
-
Configure a maximum of two low-latency VOQs on a physical or logical interface.
-
Classify and schedule traffic (that is, reserve bandwidth) for low-latency VOQs so that there is no congestion for those queues.
Low-latency queues receive the same buffers as other queues to efficiently use the limited hardware VOQ buffer profiles.
Strict-High Priority Configuration Overview
Depending on the platform can configure one or more queues 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.
On platforms that support multiple strict-high
queues per
interface, the hardware services the queues in the descending order of queue
numbers marked with strict-high
priority.
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 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 does, however, affect the calculation of the
delay buffer and also serves as a placeholder in the output of commands such as
the show interface queue
command.
strict-high
priority queues might starve low
priority queues, and under certain circumstances might limit
high
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 (say, 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 by applying the
rate-limit
option to the strict-high
queue’s transmission rate. 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, and the
rate-limit
option is not applied, 100 percent of the
bandwidth is given to the EF forwarding class because of the
strict-high
setting.
Configure Schedulers for Priority Scheduling
This topic describes how to configure priority scheduling.
[edit class-of-service schedulers scheduler-name] priority priority-level;
The priority level can be low
, low-medium
,
low-high
, medium-low
,
medium-high
, high
,
strict-high
, or low-latency
. The priorities
map to numeric priorities in the underlying hardware. In some cases, different
priorities behave similarly, because two software priorities behave differently only
if they map to two distinct hardware priorities.
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.
In the following example procedure, you create a scheduler, configure the mapping between the scheduler and the forwarding class, and assign the scheduler to an interface.
Platform-Specific Priority Schedulers Behavior
Use Feature Explorer to confirm platform and release support for scheduling priority.
Use the following table to review platform-specific behavior for your platforms:
Platforms |
Platform-specific Behavior |
---|---|
ACX5048 and ACX5096 routers |
|
ACX7000 Series |
|
EX4400 |
On EX4400 switches, applying strict-high priority schedulers to queues 0 through 3 also applies strict-high priority to queues 8 through 11. Therefore, Juniper recommends applying strict-high priority schedulers only to queues 4 through 7. |
EX4600 and QFX5100 |
On QFX5100 and EX4600 switches, you can configure only one queue as a strict-high priority queue. We recommend that you always apply a shaping rate to strict-high priority queues to prevent them from starving other queues. A shaping rate (shaper) sets the maximum amount of bandwidth a queue can consume. (Unlike using the transmit rate on a QFX10000 switch to limit traffic that receives strict-high priority treatment, traffic that exceeds the shaping rate is dropped, and is not treated as best-effort traffic that shares in excess bandwidth.) If you do not apply a shaping rate to limit the amount of bandwidth a strict-high priority queue can use, then the strict-high priority queue can use all of the available port bandwidth and starve other queues on the port. |
QFX10000 |
On QFX10000 switches, you can configure as many strict-high priority queues as you want. On QFX10000 switches, we strongly recommend that you apply a transmit rate to strict-high priority queues to prevent them from starving other queues. A transmit rate configured on a strict-high priority queue limits the amount of traffic that receives strict-high priority treatment to the amount or percentage set by the transmit rate. |