Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

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:

  1. The software locates all high-priority queues that are currently in profile. These queues are serviced first in a weighted round-robin fashion.

  2. The software locates all medium-high priority queues that are currently in profile. These queues are serviced second in a weighted round-robin fashion.

  3. The software locates all medium-low priority queues that are currently in profile. These queues are serviced third in a weighted round-robin fashion.

  4. The software locates all low-high priority queues that are currently in profile. These queues are serviced second in a weighted round-robin fashion.

  5. The software locates all low-medium priority queues that are currently in profile. These queues are serviced third in a weighted round-robin fashion.

  6. The software locates all low-priority queues that are currently in profile. These queues are serviced fourth in a weighted round-robin fashion.

  7. 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.

  8. 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.

  9. 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.

  10. 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.

  11. 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.

  12. 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.

Note:

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.

Note:

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.

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.

  1. Configure a scheduler, be-sched, with medium-low priority.
  2. Configure a scheduler map, be-map, that associates be-sched with the best-effort forwarding class.
  3. Assign the be-map scheduler map to an interface, et-0/0/0.
  4. Verify your configuration.
  5. Save your configuration.

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

  • ACX5048 and ACX5096 routers support CIR among strict-priority queues. There is no implicit queue number-based priority among the strict-priority queues.

  • ACX5048 and ACX5096 routers support configuring drop profiles for loss-priority low, medium-high, and high for non-TCP protocols as well.

ACX7000 Series

  • ACX7000 routers support multiple queues with the same priority.

  • ACX7000 routers support multiple strict-high queues per interface.

  • ACX7000 Series routers support all eight levels of priority for port scheduling and six levels for HCoS scheduling (all except low-medium and low-high).

  • ACX7000 Series routers do not guarantee round-robin distribution between queues of the same priority.

  • You can configure trasmit-rate only on low priority queues.

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.