Quality of Service, Part 11: CBWFQ

Part 10 of this blog series looked at Weighted Fair Queuing, so now we move on to the next queue mechanism; Class Based Weighted Fair Queuing (CBWFQ).

CBWFQ provides user defined traffic classes allowing for more control and functionality then weighted Fair Queuing. CBWFQ uses matching criteria obtained by Network Based Application Recognition (NBAR), or access control lists (ACLs). A queue is reserved for each class and matching traffic is directed to that queue.

Low Latency Queuing (LLQ) adds priority to the CBWFQ and allows delay sensitive data to be dequeued and sent before lower priority packets, giving delay sensitive data preferential treatment over other traffic. LLQ will be discussed in the next part of this QoS series.

Class Based Weighted Fair Queuing
Once the packets have been matched and the class is defined, a characteristic is assigned to the class. The characteristics that are assigned are bandwidth, weight, and maximum packet limit. The bandwidth is the minimum bandwidth delivered to the class during congestion, and the maximum packets is how many packets are allowed to accumulate in the class queue before tail drops start happening to the worst finish time packets.

CBWFQ supports multiple class maps to classify traffic, with tail drop being the default dropping scheme. Weighted random early detection (WRED) can be used with CBWFQ to prevent class congestion. Guaranteed bandwidth is configured by weights and assigned to traffic classes. The following weights can be used to specify class weight. The reserve default is set to 75%, and must be within the allocated bandwidth. Single service policies cannot mix fixed bandwidth and bandwidth percentages commands.

  • Bandwidth = This command allocates a fixed amount of bandwidth and the reserve bandwidth is subtracted from the available bandwidth of the interface where the service policy is used.
  • Bandwidth percent = This command is used to allocate a percentage of the default or available bandwidth of an interface.
  • Bandwidth remaining percent = This command allocates a portion of the unallocated bandwidth.

CBWFQ Best Practice
Cisco has set a best practice called the 75% Rule to help guide the configuration of CBWFQ on Cisco routers. The network administrator configuring CBWFQ should add up the bandwidth requirements for each major application such as voice, video and data. This sum should represent the minimum bandwidth requirements for any given link. This bandwidth calculation should not exceed 75% of the total available bandwidth for the link or Committed Information Rate for Frame Relay and ATM. This rule allows 25% overhead for routing protocols, layer 2 keep-alives and class default traffic. The Max-rerserved bandwidth command can override the 75% limitation set by default for most interfaces, but is not recommend.

CBWFQ Configuration

  • Bandwidth = Sets a fixed amount of bandwidth in kbps
  • Bandwidth percent = Allocates a percentage of the bandwidth to a class based on the interface bandwidth
  • Bandwidth percent remaining = Allocates the percentage or remaining bandwidth to a class
  • Queue Limit = Maximum packets a queue can hold with the default being 64

CBWFQ Show Command

The next blog in this QoS series will discuss Low Latency queuing (LLQ).

Author: Paul Stryer


In this article

Join the Conversation