Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 3

CBWFQ and LLQ

Class Based Weighted Fair Queueing – CBWFQ

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)

Max_Reserv is the Maximum Reservable Bandwidth.


The Max_Reserve is always 75% of the interface bandwidth but this can be changed by the
command max-reserved-bandwidth

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.

bandwidth { bandwidth-kbps | remaining percentage | percentage }


queue-limit <limit>

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

2. Define Policy Maps


policy-map Example
class http
bandwidth 2000
class telnet
bandwidth 500
class class-default
bandwidth 1000

3. Apply to the Interface:


interface S0/0/0
service-policy output Example

Low Latency Queuing (LLQ)

This is a modern congestion management technique, which is extending CBWFQ to support


Voice and Video or mission critical traffic.

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.

Priority can be assigned in any of these two approaches


priority <bandwidth> [burst]
priority percent <percentage> [burst]
Note: There is going to be only one priority Queue with LLQ which is a policed bandwidth
amount.

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

2. Define Policy Maps


policy-map Example1
class http
bandwidth percent 20

class telnet
bandwidth percent 10

class voice-signalling
bandwidth percent 5

class voice
priority percent 50

class class-default
fair-queue

3. Apply to the Interface:


interface S0/0/0
service-policy output Example1

You might also like