Cisco 10000 Series Router Quality of Service Configuration Guide
Prioritizing Services
Downloads: This chapterpdf (PDF - 429.0KB) The complete bookPDF (PDF - 21.32MB) | Feedback

Prioritizing Services

Table Of Contents

Prioritizing Services

Low-Latency Priority Queuing

Feature History for Low-Latency Priority Queuing

Bandwidth Starvation

Multi-Level Priority Queues

Feature History for Multi-Level Priority Queues

Child Service Policy Allowed Under Priority Class

Interfaces Supporting Priority Queuing

Queues per Policy Map

Restrictions and Limitations for Priority Queuing

Restrictions for Multi-Level Priority Queues

Configuring a Priority Queue

Configuring Multi-Level Priority Queues

Configuration Examples for Configuring Priority Queues

Configuring a Priority Queue with a Guaranteed Bandwidth Based on Kilobits per Second: Example

Configuring a Priority Queue with a Percent-Based Bandwidth Guarantee: Example

Configuring Multi-Level Priority Queues: Example

Unacceptable MPQ Configurations: Examples

Verifying and Monitoring Priority Queues

Verification Examples for Priority Queues

Verifying a Priority Queue: Example

Verifying Multi-Level Priority Queues: Example

Related Documentation


Prioritizing Services


Voice, video, and data applications have differing quality of service needs. Voice applications, for example, require a small but guaranteed amount of bandwidth, are less tolerant of packet delay or loss, and require low jitter. A data application such as File Transfer Protocol (FTP) needs more bandwidth than voice and can tolerate packet delay and jitter. To provide end-to-end differentiated services, QoS policies must allow critical applications to receive the resources required while ensuring that other applications are not neglected.

Priority queuing offers the ability to deliver assured bandwidth, low latency, low jitter, and low packet loss for voice applications while simultaneously ensuring that other applications receive portions of the available bandwidth.

This chapter describes low-latency priority queuing and includes the following topics:

Low-Latency Priority Queuing

Multi-Level Priority Queues

Child Service Policy Allowed Under Priority Class

Interfaces Supporting Priority Queuing

Queues per Policy Map

Restrictions and Limitations for Priority Queuing

Restrictions for Multi-Level Priority Queues

Configuring a Priority Queue

Configuring Multi-Level Priority Queues

Configuration Examples for Configuring Priority Queues

Verifying and Monitoring Priority Queues

Verification Examples for Priority Queues

Related Documentation

Low-Latency Priority Queuing

Using a single queue for packets from all traffic streams is simple, efficient, and offers optimal average delay per packet because the queue uses the entire link bandwidth to transmit waiting packets. The drawback to this method is it does not distinguish among different traffic streams—voice, data, video. The more traffic in a stream, the larger its share of the link bandwidth. Packets arriving first are the first packets out of the queue, regardless of the packet type.

Priority queuing overcomes the shortcomings of single queuing by allowing the router to dequeue and transmit delay-sensitive data such as voice before it dequeues and sends packets in other queues. Using priority queuing, delay-sensitive data receives preferential treatment over other traffic.

In all releases prior to Cisco IOS Release 12.0(25)S and Release 12.3(7)XI, low-latency priority queuing (LL/PQ) and bandwidth reservation together enabled you to provide differentiated services (DiffServ). Priority queuing lets you assign a guaranteed minimum bandwidth to one queue to minimize packet delay. Bandwidth reservation divides the link bandwidth among the different traffic streams into multiple queues, with each queue receiving its fair share of the link bandwidth divided among all non-empty queues. By dividing the unused bandwidth among the queues with packets to send, multiple queuing has the same average delay per packet as the single queue scheme, with the advantage of each queue receiving its fair share of the bandwidth.

In Cisco IOS Release 12.0(25)S and Release 12.3(7)XI, and later releases, strict priority queuing guarantees low-latency for any packet that enters a priority queue, regardless of the current congestion level on the link. With strict priority queuing, the router gives the traffic full priority and services it at line rate, which can cause bandwidth starvation of other traffic queues. To avoid this, use the police command to restrict the amount of bandwidth the priority queue can use. When you specify the police command, the router sets the committed information rate (CIR) for the priority queue to the bandwidth you specify in the police command. The router must drop packets that exceed the committed rate.


Note The actual throughput of a priority queue does not exceed its configured value even if other queues on the link are empty.


For multilink PPP (MLPPP) bundling, the router restricts the priority queue bandwidth to the bandwidth of one of the bundle members.


Note The router supports multilink PPP (MLPPP) for Cisco IOS Release 12.3(7)XI2 and later releases. For Cisco IOS Release 12.2(16)BX3 and Release 12.3(7)XI1, the router does not support MLPPP.


Feature History for Low-Latency Priority Queuing

Cisco IOS Release
Description
Required PRE

Release 12.0(17)SL

The priority queuing feature was introduced on the router to allow you to configure a bandwidth rate for a queue in kilobits per second.

PRE1

Release 12.0(20)ST

This feature was enhanced to allow you to configure a bandwidth rate for a queue as a percentage.

PRE1

Release 12.0(25)S

This feature was modified to provide strict priority queuing on the PRE1.

PRE1

Release 12.2(16)BX

This feature was introduced on the PRE2 to allow you to configure a bandwidth rate for a queue in kilobits per second or as a percentage.

PRE2

Release 12.3(7)XI1

This feature was modified to provide strict priority queuing on the PRE2.

PRE2

Release 12.2(28)SB

This feature was integrated in Cisco IOS Release 12.2(28)SB for the PRE2.

PRE2

Release 12.2(31)SB2

This feature was introduced on the PRE3.

PRE3


Bandwidth Starvation

In Cisco IOS Release 12.3(7)XI and later releases, to prevent the priority queue from starving other queues, specify a guaranteed bandwidth using the police command.


Note In Cisco IOS Release 12.0(25)S and Release 12.3(7)XI, and later releases, the priority command no longer allows you to specify a priority rate in kbps or as a percentage of the available bandwidth.


In Cisco IOS Release 12.3(7)XI and later releases, the router allocates the bandwidth you specify in the police command to the priority queue before it allocates bandwidth to the other queues on the link. As a result, the amount of bandwidth allocated to the other queues is based on the bandwidth remaining after the priority queue receives its bandwidth allocation. In a policy map, if you configure a traffic class as a priority queue and you specify a guaranteed bandwidth, you must use the bandwidth remaining command to configure bandwidth for other traffic classes in the policy map.

Multi-Level Priority Queues

The Multi-Level Priority Queues (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 router.

Previously, Cisco IOS-based routers could have only one strict priority queue per policy map for all delay-sensitive traffic—the router 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 router sends high priority traffic (for example, voice) behind low priority traffic (for example, video). Using class-based weighted fair queuing (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.

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 router supports two priority levels: level 1 (high) and level 2 (low). The router 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 router associates a single priority queue with all of the traffic enabled with the same priority level and services the high level priority queues until empty before servicing the next level priority queues and non-priority queues. While the router 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 router determines that a traffic stream has exceeded the configured rate, the router drops the exceeding packets during periods of congestion. If the link is currently not congested, the router 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 level 1.

If high priority traffic is not policed appropriately, bandwidth starvation of low priority traffic can occur. Therefore, 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.

Feature History for Multi-Level Priority Queues

Cisco IOS Release
Description
Required PRE

Release 12.2(31)SB2

This feature was introduced and implemented on the Cisco 10000 series router for the PRE3.

PRE3


Child Service Policy Allowed Under Priority Class

The Cisco 10000 series router supports the Child Service Policy Allowed Under Priority Class feature in Cisco IOS Release 12.2(31)SB2. This feature allows you to attach a child policy with non-queuing features to a priority class. The priority class must be in the middle-level policy of a three-level hierarchical policy or in the parent policy of a two-level hierarchical policy (nested policy).

For more information, see the Child Service Policy Allowed Under Priority Class, Release 12.2(31)SB2 feature module.

Interfaces Supporting Priority Queuing

The following describes interface support for priority queuing using the priority command:

Interfaces Supporting the priority Command

Physical

Multilink PPP and Multilink Frame Relay

ATM shaped (peak cell rate is specified) unspecified bit rate (UBR) PVCs and point-to-point subinterfaces

ATM constant bit rate (CBR) PVCs and point-to-point subinterfaces

ATM variable bit rate (VBR) PVCs and point-to-point subinterfaces

Label-controlled ATM (LC-ATM) subinterfaces *

Frame Relay PVCs, point-to-point subinterfaces, and map classes *

Ethernet VLANs *

* Requires a specific type of hierarchical policy. For more information, see Chapter 13 "Defining QoS for Multiple Policy Levels."


Note The router only supports the priority command on outbound interfaces.


Interfaces Not Supporting the priority Command

ATM unshaped (no peak cell rate specified) UBR PVCs and point-to-point subinterfaces

IP tunnel

Virtual-access (See the "VAI QoS Inheritance" section.)


Note The router does not support the priority command on inbound interfaces.


Queues per Policy Map

Table 8-1 lists the number of queues per policy map supported on the PRE2 and PRE3.

Table 8-1 Number of Queues per Policy Map

PRE
Queues Supported per Policy Map

PRE2

31 class queues

PRE3

1 priority level one queue
1 priority level two queue
12 class queues
1 default queue


Restrictions and Limitations for Priority Queuing

Each policy map can have only one priority class.

You cannot configure the random-detect or bandwidth commands with a priority service.

Restrictions for Multi-Level Priority Queues

You cannot configure both the priority command and the priority level command for two different classes in the same policy map.

You cannot specify the same priority level for two different classes in the same policy map.

You cannot configure the default queue as a priority queue at any level. For example, the router rejects the following configuration:

policy-map P1
class class-default
priority level 1
 
   

You cannot configure the bandwidth command and multi-level priority queuing on the same class. For example, the router rejects the following configuration:

policy-map P1
class C1
priority level 1
bandwidth 200
 
   

You cannot configure the shape command and multi-level priority queuing on the same class. For example, the router rejects the following configuration:

policy-map P1
class C1
priority level 1
shape average 56000
 
   

To convert a one-level (flat) service policy with multiple priority queuing configured to a hierarchical multi-level priority queuing service policy, you must first detach the flat service policy from the interface using the no service-policy command, and then add a child policy map to it.

Configuring a Priority Queue

To assign priority to a class in a policy map, enter the following commands beginning in global configuration mode:

 
Command
Purpose

Step 1 

Router(config)# policy-map policy-map-name

Specifies the name of the policy map and enters policy-map configuration mode.

policy-map-name is the name of the policy map.

Step 2 

Router(config-pmap)# class class-map-name

Assigns the traffic class you specify to the policy map. Enters policy-map class configuration mode.

class-map-name is the name of a previously configured class map and is the traffic class for which you want to define QoS actions.

Step 3 

Router(config-pmap-c)# priority

Assigns priority to the class you specified and reserves a priority queue for class-based weighted fair queuing (CBWFQ) traffic.

For Cisco IOS Release 12.0(25)S and Release 12.3(7)XI, and later releases the priority command does not have any arguments. You must use the police command to specify a guaranteed bandwidth.

Releases prior to Cisco IOS Release 12.0(25)S and Release 12.3(7)XI do not support the priority command without any arguments. Use the following priority command syntax for these releases to configure a priority queue and specify a minimum guaranteed bandwidth (for example, priority 56 or priority percent 20):

priority {bandwidth-kbps | percent percentage}

Step 4 

Router(config-pmap-c)# police [cir] bps [bc burst-normal] {pir pir} [be burst-excess] [conform-action action [exceed-action action [violate-action action]]]

Configures traffic policing and allows you to configure a rate for the priority queue.

For more information, see Chapter 6 "Policing Traffic."

Configuring Multi-Level Priority Queues

To configure Multi-Level Priority Queues (MPQ) in a policy map, enter the following commands beginning in global configuration mode:

 
Command or Action
Purpose

Step 1 

policy-map policy-name

Creates or modifies a policy map. Enters policy-map configuration mode.

policy-name is the name of the policy map.

Step 2 

class class-name

Specifies a traffic class. Enters policy-map class configuration mode.

class-name is the name of a previously configured traffic class.

Step 3 

priority level level

Assigns priority to a traffic class at the priority level specified.

level level is the level of priority assigned to the priority class. Valid values are 1 (high priority) and 2 (low priority). Default: 1

Note Do not specify the same priority level for two different classes in the same policy map.

Step 4 

police [cir] bps [bcburst-normal [pir pir] 
[be] burst-excess [conform-action action] 
[exceed-action action] [violate-action action]

(Optional) Configures bits per second-based traffic policing.

(Optional) cir is the committed information rate and is based on the interface shape rate. Indicates an average rate at which the policer meters traffic.

bps specifies the average rate in bits per second (bps). Valid values are from 8,000 to 2,488,320,000 bps.

(Optional) bc burst-normal is the normal or committed burst (bc) size (in bytes) used by the first token bucket for policing. Valid values are from 1 to 512,000,000. Default: 9,216

(Optional) pir pir is the peak information rate (PIR), expressed as a percentage. The pir pir option indicates the rate at which the second token bucket is updated. Valid values are from 1 to 100.

(Optional) be burst-excess is the excess burst (be) size (in bytes) used by the second token bucket for policing. Valid values are from 0 to 1,024,000,000 bytes. Default: 0

(Optional) conform-action action specifies the action to take on packets that conform to the rate limit. Default: transmit

(Optional) exceed-action action specifies the action to take on packets that exceed the rate limit (but not the PIR if two-rate policing is configured). Default: drop

(Optional) violate-action action specifies the action to take on packets that continuously exceed the PIR rate limit. Default: same as the exceed-action

Note You must specify burst-normal before you specify burst-excess, burst-excess before conform-action, conform-action before exceed-action, and exceed-action before violate-action.

Step 5 

police [cir] percent percent [bc] normal-burst-in-msec [pir pir] [beexcess-burst-in-msec [conform-action action] [exceed-action action] [violate-action action]

(Optional) Configures traffic policing based on a percentage of bandwidth available on the interface.

(Optional) cir is the committed information rate. Indicates an average rate at which the policer meters traffic. CIR is based on the interface shape rate.

percent percent indicates to use the percentage of available bandwidth specified in percent to calculate the CIR. Valid values are from 1 to 100.

(Optional) pir pir is the peak information rate (PIR) expressed as a percentage. The pir pir option indicates the rate at which the second token bucket is updated. Valid values are from 1 to 100.

Configuration Examples for Configuring Priority Queues

This section provides the following configuration examples:

Configuring a Priority Queue with a Guaranteed Bandwidth Based on Kilobits per Second: Example

Configuring a Priority Queue with a Percent-Based Bandwidth Guarantee: Example

Configuring Multi-Level Priority Queues: Example

Unacceptable MPQ Configurations: Examples

Configuring a Priority Queue with a Guaranteed Bandwidth Based on Kilobits per Second: Example

Example 8-1 shows how to configure a priority queue with a guaranteed bandwidth of 8000 kbps. In the example, the Voice1 class in the policy map named Gold is configured as the priority queue. The Gold policy also includes the Voice2 class with a minimum bandwidth guarantee of 48 kbps. The Gold policy is attached to PVC 0/101 on the outbound ATM subinterface 2/0/0.1.

Example 8-1 Priority Queuing Configuration

Router(config)# class-map Voice
Router(config-cmap)# match ip precedence 3
Router(config)# policy-map Gold
Router(config-pmap)# class Voice1
Router(config-pmap-c)# priority 
Router(config-pmap-c)# police 8000
Router(config-pmap)# class Voice2
Router(config-pmap-c)# bandwidth 48
Router(config)# interface atm 2/0/0.1
Router(config-subif)# pvc 0/101
Router(config-atm-vc)# ubr 10000
Router(config-atm-vc)# service-policy output Gold

Configuring a Priority Queue with a Percent-Based Bandwidth Guarantee: Example

Example 8-2 shows how to configure a priority queue with a minimum bandwidth guarantee based on a percentage of the link bandwidth. In the example, the policy map named Premium has two traffic classes: Class1 is configured as the priority queue and has a minimum guaranteed bandwidth of 25 percent of the link bandwidth and Class2 has a minimum bandwidth guarantee of 48 kbps. The Premium service policy is attached to the outbound ATM interface 1/0/0.

Example 8-2 Priority Queue with Bandwidth Percentage

Router(config)# class-map Class1
Router(config-cmap)# match ip dscp ef
Router(config)# policy-map Premium
Router(config-pmap)# class Class1
Router(config-pmap-c)# priority 
Router(config-pmap-c)# police percent 25
Router(config-pmap)# class Class2
Router(config-pmap-c)# bandwidth 48
Router(config)# interface atm 1/0/0
Router(config-subif)# service-policy output Premium

Configuring Multi-Level Priority Queues: Example

The following example shows how to configure multiple priority queues. The policy map named Business has two traffic classes: Bronze and Gold. Bronze traffic has a level 2 (low) priority while Gold traffic has level 1 (high) priority. To prevent bandwidth starvation of Bronze traffic, the Gold traffic is policed at 30 percent of the interface bandwidth.

enable
config terminal
policy-map Business
class Bronze
priority level 2
police 1000
exit
class Gold
priority level 1
police percent 30

Note Although a policer is not required, we recommend that you configure policing for priority traffic to prevent bandwidth starvation of low priority traffic. When policing is configured, the traffic rate is policed to the police rate for each of the priority queues.


Unacceptable MPQ Configurations: Examples

You cannot specify both the priority command and the priority level command for two different classes in the same policy map. For example, the router does not accept the following configuration:

policy-map Map1
class Bronze
priority level 1
exit
class Gold
priority rate 1000
 
   

You cannot specify the same priority level for two different classes in the same policy map. For example, the router does not accept the following configuration:

Router(config)# policy-map Map1
Router(config-pmap)# class Bronze
Router(config-pmap-c)# priority level 1
Router(config-pmap-c)# police percent 30
Router(config-pmap-c)# exit
Router(config-pmap)# class Gold
Router(config-pmap-c)# priority level 1
Router(config-pmap-c)# police 10000

Verifying and Monitoring Priority Queues

The Cisco 10000 series router collects statistical information about the current priority queue length, and the number of packets and bytes transmitted and dropped.

To verify and monitor the contents of the priority queue (such as queue depth and the first packet queued), and to verify the configuration of multi-level priority queues and to display statistical information for each priority level, enter any of the following commands in privileged EXEC mode:

Command
Purpose

Router# show policy-map policy-map-name

Displays the contents of the policy map you specify, including the priority class.

Router# show policy-map interface interface

Displays statistical and configuration information about the input and output policies attached to the interface you specify, and indicates any dropped packets or bytes for the priority class.


Verification Examples for Priority Queues

This section provides the following verification examples:

Verifying a Priority Queue: Example

Verifying Multi-Level Priority Queues: Example

Verifying a Priority Queue: Example

Example 8-3 shows sample output from the show policy-map interface command. In the example, the Business class is the priority queue and is policed at 8000 bps with committed bursts of 5000 bytes and extended bursts of 6000 bytes.

Example 8-3 Verifying Priority Queuing

Router# show policy-map interface atm 3/0/0.532
 ATM3/0/0.532: VC 5/32 -
 
   
  Service-policy output: Gold
 
   
    Class-map: Business (match-all)
      0 packets, 0 bytes
      5 minute offered rate 0 bps, drop rate 0 bps
      Match: ip precedence 4 
      Output queue: 0/512; 0/0 packets/bytes output, 0/0 drops
      Police:
        8000 bps, 5000 limit, 6000 extended limit
        conformed 0 packets, 0 bytes; action: transmit
        exceeded 0 packets, 0 bytes; action: drop
        violated 0 packets, 0 bytes; action: drop
      Absolute priority
 
   
    Class-map: Non-Business (match-all)
      0 packets, 0 bytes
      5 minute offered rate 0 bps, drop rate 0 bps
      Match: ip precedence 3  5 
      Output queue: 0/64; 0/0 packets/bytes output, 0/0 drops
      Bandwidth : 2000 kbps (Weight 25)
 
   
    Class-map: class-default (match-any)
      0 packets, 0 bytes
      5 minute offered rate 0 bps, drop rate 0 bps
      Match: any 
      Output queue: 0/256; 0/0 packets/bytes output, 0/0 drops

Verifying Multi-Level Priority Queues: Example

The following example shows sample output from the show policy-map interface command.

Router# show policy-map interface
 
   
Serial2/1/0
Service-policy output: P1
Queue statistics for all priority classes:
.
.
.
Class-map: Gold (match-all)
0 packets, 0 bytes				/*Updated for each priority level configured.*/
5 minute offered rate 0 bps, drop rate 0 bps
Match: ip precedence 2
Priority: 0 kbps, burst bytes 1500, b/w exceed drops: 0
Priority Level 2:
0 packets, 0 bytes
 
   

Related Documentation

This section provides hyperlinks to additional Cisco documentation for the features discussed in this chapter. To display the documentation, click the document title or a section of the document highlighted in blue. When appropriate, paths to applicable sections are listed below the documentation title.

Feature
Related Documentation

Bandwidth and priority queues

Comparing the Bandwidth and Priority Commands of a QoS Service Policy

Bandwidth starvation

Cisco 10000 Series Router Quality of Service Configuration Guide

Prioritizing Services > Low-Latency Priority Queuing > Bandwidth Starvation

Child Policy Under Priority Class

Child Service Policy Allowed Under Priority Class feature module, Release 12.2(31)SB2

Congestion management

QoS Congestion Management (Queuing), Introduction

Multi-Level Priority Queues

Multi-Level Priority Queues feature module, Release 12.2(31)SB2

Priority Queuing

Cisco IOS Quality of Service Solutions Configuration Guide, Release 12.2

Part 2: Congestion Management > Configuring Priority Queues

ATM Traffic Management, Troubleshooting Output Drops with Priority Queuing tech note

Low Latency Queuing, Release 12.0S feature module

IP to ATM Class of Service, Low Latency Queuing

Low Latency Queuing, Release 12.0T feature module

priority command

Cisco IOS Quality of Service Solutions Command Reference, Release 12.3T

Quality of Service Commands: O through P > priority