Configuration of QoS
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:
Priority-list list-number queue-limit high-limit medium-limit normal-
limit low-limit
This is not recommended!!!!!
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.
The configuration would be as follows:
queue-list 1 interface E0 1
queue-list 1 protocol ip 2
queue-list 1 protocol ipx 3
queue-list 1 protocol appletalk 4
queue-list 1 default 5
!
Interface serial 0
custom-queue-list 1
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