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