Using Custom Queues with Priority Queues
Problem
You want to combine Custom Queuing with Priority Queuing on an interface so the highest priority packets are always handled first, and lower priority traffic streams share bandwidth with one another.
Solution
You can split the queues so that some use Priority Queuing and the remainder Custom Queuing:
Router#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router(config)#access-list 101 permit ip any any precedence 7 Router(config)#access-list 102 permit ip any any precedence 6 Router(config)#access-list 103 permit ip any any precedence 5 Router(config)#access-list 104 permit ip any any precedence 4 Router(config)#access-list 105 permit ip any any precedence 3 Router(config)#access-list 106 permit ip any any precedence 2 Router(config)#access-list 107 permit ip any any precedence 1 Router(config)#queue-list 1 protocol ip 1 list 101 Router(config)#queue-list 1 protocol ip 2 list 102 Router(config)#queue-list 1 protocol ip 3 list 103 Router(config)#queue-list 1 protocol ip 4 list 104 Router(config)#queue-list 1 protocol ip 5 list 105 Router(config)#queue-list 1 protocol ip 6 list 106 Router(config)#queue-list 1 protocol ip 7 list 107 Router(config)#queue-list 1 lowest-custom 4 Router(config)#interface HSSI0/0 Router(config-if)#custom-queue-list 1 Router(config-if)#exit Router(config)#end Router#
Discussion
This example is similar to Recipe 11.4, which looked at a pure Custom Queuing example. In this case, however, we have added the command:
Router(config)#queue-list 1 lowest-custom 4
This command allows you to mix Custom and Priority Queue types. Note that this command only works with queue-list number 1. It is not available for any other queue-lists.
In this example, queue number 4 is the lowest numbered Custom Queue. So, in this example, queues 1, 2, and 3 are all Priority Queues. This means that the router will deliver all of the packets in queue number 1, then all of the packets in queue number, and then all of the packets in queue number 3. Then, if these high priority queues are all empty, it will use custom queuing to deliver the packets in the lower priority queues.
The main advantage to this sort of configuration is that it gives absolute priority to real-time applications. This is important not because of the bandwidth, but because priority queuing the real-time applications minimizes their queuing latency. However, as with the pure Priority Queuing example of Recipe 11.3, you have to be extremely careful to prevent the high-priority traffic from starving the other queues.
See Also
Recipe 11.3; Recipe 11.4; Recipe 11.16