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 101priority-list 1 protocol ip medium list 102priority-list 1 protocol ip normal list 103priority-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 priorityCurrent DLCI priority queue configuration:Current priority queue configuration:List Queue Args1 high protocol ip list 1011 medium protocol ip list 1021 normal protocol ip list 1031 low protocol ip list 1041 high limit 101 medium limit 201 normal limit 301 low limit 40The 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/0Serial1/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 ommittedWhen 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 5001TCP 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/secC:\>iperf -c 192.168.2.10 -t 60 -P 1 -p 5002------------------------------------------------------------Client connecting to 192.168.2.10, TCP port 5002TCP 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/secC:\>iperf -c 192.168.2.10 -t 60 -P 1 -p 5003------------------------------------------------------------Client connecting to 192.168.2.10, TCP port 5003TCP 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