Professional Documents
Culture Documents
CBWFQ and LLQ
CBWFQ and LLQ
CBWFQ is a modern congestion management technique and it is not advised for Voice and
Video traffic, since both of them need strict priorities. CBWFQ uses the Cisco MQC
command structure. With CBWFQ you can define traffic classes and assign guaranteed
amount of minimum bandwidth, these classes can get more bandwidth if its available, but
they always get the minimum bandwidth assigned to them.
CBWFQ will be used with Low Latency Queuing (LLQ) to deploy voice and video traffic to
give strict priorities.
In the Software Queue there is a WFQ Scheduler, and you define the traffic classes using the
class-maps where each traffic class (Queue) will get its minimum guaranteed bandwidth.
However within each of this Queue the packets are forwarded using the FIFO approach.
There is also a Class-Default which is the default class, this class has any traffic which does
not fall into any of the user defined classes. Within this Default Class Queue you can do
FIFO approach or WFQ. Dropping at the end of Queue the default action is tail drop, but it
can be configured to WRED.
In CBWFQ the weights are defined as Bandwidth Reservation. Bandwidth Reservation can
be defined as one of the following approaches:
1. In Kbps
2. Percentage of Bandwidth
3. Percentage of remaining Bandwidth.
Available Bandwidth Calculation
Available Bandwidth = Bandwidth * Max_Reserve – SUM(All Fixed guarantees)
Note: You need to be consistent in what approach you take to assign bandwidth- you cannot
mix the approaches for reserving bandwidths. That is if you use Kbps you have to use Kbps
consistently across all traffic classes and same goes for percentage.
Configuration
In Policy map structure use the bandwidth command with Kbps or percentage or remaining
bandwidth, optionally you can also specify the queue size with queue-limit command.
Class-Default
This class gets WFQ treatment by default. If you use the bandwidth command in the class-
default then it will no longer do the WFQ, but FIFO within this class (queue)
Monitoring CBWFQ
# show policy-map interface
Example:
1. Define Class Maps
class-map http
match protocol http
class-map telnet
match protocol telnet
LLQ is adding Priority Queueing to the CBWFQ. The Priority Queue is used only for
Voice / Video or mission critical traffic, without having the Queue Starvation for other
Queues. The starvation is avoided using the policing, the traffic in Priority Queue is policed
and the Queue can get to whatever the bandwidth it was assigned. It can however go over the
assigned bandwidth if there is no congestion. The strict policing applies only in times of
congestion and that too to the traffic in the Priority Queue so it does not starve other queues.
The mission critical traffic gets the bandwidth it is assigned and other queues get what ever
minimum bandwidth they were assigned, plus if there is no congestion all the queues can go
over their assigned bandwidth if needed.
The Voice traffic is handled by the PQ Scheduler and the remaining traffic is handled by the
WFQ handler. The policed bandwidth for traffic in PQ is only during the time of congestion,
if there is no congestion then the traffic in PQ (typically voice) can go over the bandwidth
assigned to it.
Configuration:
Use the priority command instead of the bandwidth keyword in the policy-map.
Example:
1. Define Class Maps
class-map http
match protocol http
class-map telnet
match protocol telnet
class-map match-any voice
match protocol rtp
match ip dscp ef
class-map voice-signalling
match ip dscp cs3
class telnet
bandwidth percent 10
class voice-signalling
bandwidth percent 5
class voice
priority percent 50
class class-default
fair-queue