Priority Queuing

Priority Queuing

Priority Queuing (PQ) is a Congestion Management technique. PQ schedules traffic such that the higher-priority queues "always" get serviced first. This can cause the traffic of other lower-priority queues to starve out. PQ uses 4 different queues- High, Medium, Normal and Low.

If the High queue has a packet waiting, the scheduler will service it first. If there is no packet in the High queue, the scheduler will look to service the Medium queue. It will take one packet from the Medium queue, and then again look for any packets waiting in the High queue. The Low queue only gets serviced if there are no packets waiting in High, Medium and Normal queues.

Network topology:

To put traffic onto 4 queues, the four different types of traffic generated are-

1) Using Iperf, TCP traffic will be generated from PC1 to PC2 on Port 5001 - High Queue

2) Using Iperf, TCP traffic will be generated from PC1 to PC2 on Port 5002 - Medium Queue

3) Using Iperf, TCP traffic will be generated from PC1 to PC2 on Port 5003 - Normal Queue

4) Normal ICMP traffic (PING) between two PC1 and PC2 - Low Queue

Configuration:

Configuring PQ on a router is a 2 step process-

1. Define the Priority List

The Priority List specifies which queue a packet will be placed in and (optionally), maximum length of different queues. The Priority List is configured using priority-list command from Global configuration mode.

NOTE: By default, anything that does not match a priority-list is sent to Normal queue.

Define Priority List on R1

!---- Defining Access-Lists to match traffic
!
access-list 101 permit tcp host 192.168.1.10 host 192.168.2.10 eq 5001
!
access-list 102 permit tcp host 192.168.1.10 host 192.168.2.10 eq 5002
!
access-list 103 permit tcp host 192.168.1.10 host 192.168.2.10 eq 5003
!
access-list 104 permit icmp host 192.168.1.10 host 192.168.2.10
!
!--- Defining Priority Lists
!
priority-list 1 protocol ip high list 101
priority-list 1 protocol ip medium list 102
priority-list 1 protocol ip normal list 103
priority-list 1 protocol ip low list 104
!

By default, the queue-limit for each queue is as follows-

High - 20 packets

Medium - 40 packets

Normal - 60 packets

Low - 80 packets

The queue-limits can be changed using priority-list queue-limit command.

Queue-limit

priority-list 1 queue-limit 10 20 30 40
!

2. Assign the Priority List to an interface

To assign the Priority List to an interface, use priority-group <group-number> interface configuration command.

Assign the Priority List to an interface

interface Serial 1/0
 priority-group 1
!

Monitoring Priority Queuing:

The show queueing priority command shows the current PQ configuration and the queue-limit of each queue if changed from default.

show queueing priority

R1# show queueing priority
Current DLCI priority queue configuration:
Current priority queue configuration:
List   Queue  Args
1      high   protocol ip          list 101
1      medium protocol ip          list 102
1      normal protocol ip          list 103
1      low    protocol ip          list 104
1      high   limit 10
1      medium limit 20
1      normal limit 30
1      low    limit 40

The show interface Serial 1/0 command shows the PQ applied to the interface. It also shows the queue statistics.

show interface Serial 1/0

R1# show interfaces serial 1/0
Serial1/0 is up, line protocol is up
  Hardware is M4T
  Internet address is 10.1.1.1/30
  MTU 1500 bytes, BW 1544 Kbit/sec, DLY 20000 usec,
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation HDLC, crc 16, loopback not set
  Keepalive set (10 sec)
  Restart-Delay is 0 secs
  Last input 00:00:05, output 00:00:01, output hang never
  Last clearing of "show interface" counters 00:00:01
  Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
  Queueing strategy: priority-list 1
  Output queue (queue priority: size/max/drops):
     high: 0/10/0, medium: 0/20/0, normal: 0/30/0, low: 0/40/0
...
...output ommitted

When the flows were started, High queue tries to send the most traffic. The router serves the High queue if there are packets in that queue. The following Iperf output on the client (PC1) shows that TCP traffic on port 5001 received highest bandwidth.

Iperf output on PC1

C:\>iperf -c 192.168.2.10 -t 120 -P 1 -p 5001
------------------------------------------------------------
Client connecting to 192.168.2.10, TCP port 5001
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
[1900] local 192.168.1.10 port 1170 connected with 192.168.2.10 port 5001
[ ID] Interval       Transfer     Bandwidth
[1900]  0.0-120.2 sec  7.38 MBytes   515 Kbits/sec
C:\>iperf -c 192.168.2.10 -t 60 -P 1 -p 5002
------------------------------------------------------------
Client connecting to 192.168.2.10, TCP port 5002
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
[1912] local 192.168.1.10 port 1172 connected with 192.168.2.10 port 5002
[ ID] Interval       Transfer     Bandwidth
[1912]  0.0-60.4 sec  1.28 MBytes   178 Kbits/sec
C:\>iperf -c 192.168.2.10 -t 60 -P 1 -p 5003
------------------------------------------------------------
Client connecting to 192.168.2.10, TCP port 5003
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
[1900] local 192.168.1.10 port 1171 connected with 192.168.2.10 port 5003
[ ID] Interval       Transfer     Bandwidth
[1900]  0.0-60.9 sec  1.36 MBytes   187 Kbits/sec