Benefits of Multi-Level Priority Queues
The MPQ feature allows you to configure multiple priority queues for multiple traffic classes by specifying a different priority level for each of the traffic classes in a single service policy map. You can configure multiple service policy maps per switch.
Previously, switches could have only one strict priority queue per policy map for all delay-sensitive traffic— the switch associated all priority traffic with this one single priority queue. However, having only one priority queue can cause significant delay in delivering traffic, especially if the switch sends high-priority traffic (for example, voice) behind low-priority traffic (for example, video). Using class-based weightedfair queueing (CBWFQ) to reduce delay by heavily weighting one queue can affect the granularity of bandwidth allocations to the other queues. The MPQ feature addresses these issues and improves latency.
Functionality of Multi-Level Priority Queues
The priority command is used to specify that a class of traffic has latency requirements with respect to
other classes. For multiple priority queues, you can use the priority level command to configure a level of priority service on a class in a policy map. Currently, the switch supports two priority levels: level 1 (high) and level 2 (low). The switch places traffic with a high-priority level on the outbound link ahead of traffic with a low-priority level. High-priority packets, therefore, are not delayed behind low-priority packets.
The switch services the high-level priority queues until empty before servicing the next-level priority queues and non-priority queues. While the switch services a queue, the service rate is as fast as possible and is constrained only by the rate of the underlying link or parent node in a hierarchy. If a rate is configured and the switch determines that a traffic stream has exceeded the configured rate, the switch drops the exceeding packets during periods of congestion. If the link is currently not congested, the switch places the exceeding packets onto the outbound link.
When configuring MPQ on different traffic classes in a policy map, you must specify different priority levels for the traffic classes. For example, configure one traffic class to have priority level 2 and another class to have priority level 1.
Note
In a hierarchical MPQ configuration in which all traffic is sent through the level-2 priority queue only, the traffic sent through the level-2 priority queue receives the same treatment as the traffic sent through the level-1 priority queue.
If high-priority traffic is not policed appropriately, bandwidth starvation of low-priority traffic can occur. herefore, though not required, we recommend that you configure a policer for high-priority traffic using the police command. If you configure the police command for priority queues, the traffic rate is policed to the police rate for each of the priority queues.
You cannot configure the priority command and the priority level command on different classes in the same policy map.
Traffic Policing and Multi-Level Priority Queues
Bandwidth guarantees can be given to other classes only if traffic policing is enabled on the priority queue. Using the priority and police commands, multi-level priority queues can be configured to police traffic:
- Unconditional traffic policing, as illustrated below:
bandwidth 400000 <<<400M minimum guaranteed to class gold
The priority class is configured with an "always on" (unconditional) policer. The priority class is always policed to the configured value regardless of whether the interface is congested.
The advantage of an unconditional policer is that you always know how much priority traffic will be offered to the downstream switches, thus making your bandwidth planning much simpler.
This is the recommended choice.
- Absolute priority queue (no traffic policing). If traffic policing is not configured, the priority traffic may consume the entire interface bandwidth.