In last month's newsletter I discussed the mechanisms QoS PRovides for delivering traffic with different priorities and assurances. This month we are going to look at the specific configurations for enabling the QoS assurances. Configuration of QoS is somewhat confusing as there are many types of QoS "knobs" that can be configured on a router or a switch. Hopefully this newsletter will provide the necessary instrUCtion for getting through some of the complexities of QoS configurations. This newsletter focuses on the QoS configurations relevant to Cisco IOS not CatOS. Layer2 QoS is another topic entirely and will be reserved for future newsletters.
To refresh our memory from last month, let's review QoS briefly. QoS is a set of tools, or "knobs" as they are sometimes called, that are configured on network elements (usually routers and switches) to enforce traffic delivery policies for certain types of traffic. QoS can be broken down into three levels or models to provide end-to-end levels of service to traffic delivered over the network infrastructure. These models are called best-effort service, integrated service and differentiated service. Within these models, QoS defines different techniques to handle traffic. These techniques are congestion avoidance, congestion management, policing and traffic shaping. We will focus on the configuration of the congestion management techniques in this newsletter. Congestion avoidance, policing and traffic shaping techniques will be discussed next month.
Congestion Management
Congestion management techniques control the prioritization of traffic as it leaves the queues, it does not minimize congestion. Cisco provides several different techniques for providing congestion management. The mechanisms include First In First Out Queuing (FIFO), Weighted Fair Queuing (WFQ), Priority Queuing and Custom Queuing. In addition, there is Class Based Weighted Fair Queuing (CBWFQ), ip RTP Priority (or Priority Queue WFQ) and Low Latency Queuing (LLC).
First in First Out Queuing (FIFO) FIFO has no concept of priority or classes of traffic and does not provide any prioritization of packets
Weighted Fair Queueing (WFQ) WFQ provides allocation of bandwidth to network conversations. Weights are assigned based on source and destination patterns. WFQ automatically gives precedence for low-volume traffic such as telnet and HTTP over high volume traffic such as FTP. WFQ is enabled by default on interfaces that run below E1 speeds (2.048 Mbps).
Priority Queuing (PQ) PQ allows you to define four queues for traffic prioritization. Traffic is matched using match criteria such as IP address, port numbers and interfaces. The four priorities are defined as high, medium, normal and low. The queues are served in a preferential manner. The router will not service the lower-priority queues until all packets from the higher-priority queues have been delivered. This can be detrimental if not configured properly as all of the bandwidth can be consumed by the higher-priority queues, not allowing the router to transmit data out of the other queues. Let's say you want to do the following for traffic being forwarded out interface serial 0.
Telnet (TCP port 23) traffic is assigned to the high-priority queue. AppleTalk and IPX are given the medium-priority queue. All other IP traffic is assigned to the normal-priority queue. All other traffic is assigned to the low-priority queue (as default)
Below is the configuration:
priority-list 2 protocol ip high tcp 23 priority-list 2 protocol ip high list 1 priority-list 2 protocol interface ethernet 0 medium priority-list 2 protocol ip normal priority-list 2 queue-limit 15 20 20 30 ! access-list 1 permit 131.108.0.0 0.0.255.255 ! interface serial 0 priority-group 2
You can change the default number of packets in each queue by using the following command:
Custom Queuing (CQ) CQ provides the same type of classification of packets as PQ with 16 queues instead of four. In addition, CQ allows the number of bytes to be specified for forwarding each time the queue is serviced. The queues are serviced in a round-robin fashion. By servicing each queue in a round-robin fashion, CQ ensures that no application receives more than a predetermined amount of overall bandwidth. Let's say you want to do the following for traffic being forwarded out interface serial 0.
Traffic from E0 is assigned to queue 1. IP traffic is sent to queue 2. IPX traffic goes to queue 3. AppleTalk traffic goes to queue 4 Queue 5 is the default queue. Traffic that is not from E0 or is not IP-, IPX- or AppleTalk-based is sent to this queue.
CQ allows for granularity on the number of packets in any queue and the number of bytes delivered from a queue. This is done by using the following commands:
queue-list 1 queue 10 limit 40 (limit number of packets) queue-list 1 queue 10 byte-count 1400 (set byte count)
In addition, access lists can be used to identify what applications are serviced by each queue. Instead of just configuring IP in queue 2 you could add a protocol number or access list to the queue list command. For example:
queue-list 1 protocol ip 2 TCP 23 (TCP) OR queue-list 1 protocol ip 2 list 10 (where 10 is an access list defining certain traffic types)
More Congestion Management Techniques
The last three types of congestion management techniques are presented separately as they utilize enhancements and combinations of the previous queuing techniques. The following queuing techniques are used primarily in IP telephony environments as they have the ability to give more granular prioritization to voice traffic.
Class Based Weighted Fair Queuing (CBWFQ) CBWFQ extends WFQ to provide user-defined classes using match criteria. Queues are reserved for each class, and characteristics are assigned to each queue. The characteristics include bandwidth, weight and queue limit. The way CBWFQ works is as follows: Match criteria filters and classify packets first and then each packet is assigned a weight. The weight is derived from the bandwidth you assigned to the class. Finally, each packet is placed in the appropriate queue and serviced according to the weights. In order to configure this on a Cisco router, you must perform the following three processes:
* Class Map Process: Define the traffic classes (i.e., what packets are going to be matched and by what criteria). * Class Policy Process: Specify the policies for each clas