Cisco CCNP Certification Exam Training:
Priority Queueing (PQ)
By Chris Bryant, CCIE #12933
The "next level" of queueing is Priority Queueing (PQ), where four predefined queues exist: High, Medium, Normal, and Low. Traffic is placed into one of these four queues through the use of access lists and priority lists. The High queue is also called the strict priority queue, making HQ and LLQ the queueing solutions to use when a priority queue is needed.

It won't surprise you to learn that these limits can be changed. Before we configure PQ and change these limits, there's one very important concept that you must keep in mind when developing a PQ strategy. PQ is not round-robin; when there are packets in the High queue, they're going to be sent before any packets in the lower queues. If too many traffic types are configured to go into the High and Medium queues, packets in the Normal and Low queues may never be sent!
This is sometimes referred to as traffic starvation or packet starvation. (I personally think it's more like queue starvation, but the last thing we need is a third name for it.)The moral of the story: When you're configuring PQ, be very discriminating about how much traffic you place into the upper queues.
Configuring PQ is simple. The queues already exist, but we need to define what traffic should go into which queue. We can use the incoming interface or the protocol to decide this, and we can also change the size of the queue with the priority-list command.
R3(config)#priority-list 1 ?
default Set priority queue for unspecified datagrams
interface Establish priorities for packets from a named interface
protocol priority queueing by protocol
queue-limit Set queue limits for priority queues
If we choose to use protocol to place packets into the priority queues, access lists can be used to further define queueing.
R3(config)#priority-list 1 protocol ?
aarp AppleTalk ARP
appletalk AppleTalk
arp IP ARP
bridge Bridging
cdp Cisco Discovery Protocol
compressedtcp Compressed TCP
decnet DECnet
decnet_node DECnet Node
decnet_router-l1 DECnet Router L1
decnet_router-l2 DECnet Router L2
ip IP
ipx Novell IPX
llc2 llc2
pad PAD links
snapshot Snapshot routing support
R3(config)#priority-list 1 protocol ip ?
high
medium
normal
lowR3(config)#priority-list 1 protocol ip high ?
fragments Prioritize fragmented IP packets
gt Prioritize packets greater than a specified size
list To specify an access list
lt Prioritize packets less than a specified size
tcp Prioritize TCP packets 'to' or 'from' the specified port
udp Prioritize UDP packets 'to' or 'from' the specified port
<cr>
Let's say we want IP traffic sourced at 20.1.1.0 /24 and destined for 30.3.3.0 /27 to be placed into the High queue. We'd need to write an ACL defining that traffic and call that ACL from the priority-list command.
R3(config)#access-list 174 permit ip 20.1.1.0 0.0.0.255 30.3.3.0 0.0.0.31
R3(config)#priority-list 1 protocol ip high list 174
To place all TCP DNS traffic into the Medium queue, use the protocol option with the priority-list command. We'll use IOS Help to show us the options after the queue name.
R3(config)#priority-list 1 protocol ip medium tcp 53R3(config)#priority-list 1 protocol ip medium ?
fragments Prioritize fragmented IP packets
gt Prioritize packets greater than a specified size
list To specify an access list
lt Prioritize packets less than a specified size
tcp Prioritize TCP packets 'to' or 'from' the specified port
udp Prioritize UDP packets 'to' or 'from' the specified port
<cr>
R3(config)#priority-list 1 protocol ip medium tcp ?
<0-65535> Port number
bgp Border Gateway Protocol (179)
chargen Character generator (19)
cmd Remote commands (rcmd, 514)
daytime Daytime (13)
discard Discard (9) < output of command edited here >
R3(config)#priority-list 1 protocol ip medium tcp 53
As you can see, the router will list many of the more common TCP ports. To place packets coming in on the Ethernet0 interface into the Normal queue, use the interface option with the priority-list command.
R3(config)#priority-list 1 interface ethernet0 normal
Finally, the default queue sizes can be changed with the queue-limit command. This is an odd little command in that if you just want to change one queue's packet limit, you still have to list the values for all four queues - and all four values must be entered in the order of high, medium, normal, and low. In the following example, we'll double the capacity of the Normal queue while retaining all other default queue sizes.
R3(config)#priority-list 1 queue-limit ?
<0-32767> High limit
R3(config)#priority-list 1 queue-limit 20 ?
<0-32767> Medium limit
R3(config)#priority-list 1 queue-limit 20 40 ?
<0-32767> Normal limit
R3(config)#priority-list 1 queue-limit 20 40 120 ?
<0-32767> Lower limit
R3(config)#priority-list 1 queue-limit 20 40 120 80 ?
<cr>R3(config)#priority-list 1 queue-limit 20 40 120 80
Priority queuing is applied to the interface with the priority-group command.
R3(config)#int serial0
R3(config-if)#priority-group 1
show queueing verifies that PQ is now in effect on this interface.
R3#show queueing inter serial0
Interface Serial0 queueing strategy: priority
Output queue utilization (queue/count)
high/0 medium/0 normal/0 low/0
Show queueing priority displays the priority lists that have been created, along with the changes to each queue's defaults. Note that the queue limit is only shown under Arguments ("Args") if it's been changed. Also, ACLs and port numbers in use are shown on the right.
R3#show queueing priority
Current DLCI priority queue configuration:
Current priority queue configuration:
List Queue Args
1 high protocol ip
1 high protocol ip list 174
1 medium protocol ip tcp port domain
1 normal interface Ethernet0
1 normal limit 120
As with many other CCNP certification topics, there are quite a few details when it comes to PQ! Master these details with plenty of quality study and practice, and you're on your way to the CCNP!
To your success,
Chris Bryant
CCIE #12933
chris@thebryantadvantage.com
|