Content

| 8.5 |  | Scheduling |
| 8.5.5 |  | Class-Based Weighted Fair Queuing (CBWFQ) |

Class-Based Weighted Fair Queuing (CBWFQ) extends the standard WFQ functionality to provide support for user-defined traffic classes. For CBWFQ, the traffic classes are defined using match criteria including protocols, access control lists, and input interfaces. Packets satisfying the match criteria for a class constitute the traffic for that class and a FIFO queue is reserved for each class. Traffic belonging to a class is directed to the queue for that class the same way WFQ directs traffic belonging to different flows.

Once a class has been defined according to its match criteria, characteristics can be assigned to it. To characterize a class, bandwidth, weight, and maximum packet limit are specified. The bandwidth assigned to a class is the guaranteed bandwidth delivered to that class during congestion. Packets belonging to a class are subject to the bandwidth and queue limits that characterize the class. After a queue has reached its configured queue limit, queuing of additional packets to the class causes further packets to be dropped.

If a default class is configured with the bandwidth policy-map class configuration command, all unclassified traffic is put into a single FIFO queue and given treatment according to the configured bandwidth. If a default class is configured with the fair-queue command, all unclassified traffic is flow classified and given best-effort treatment. If no default class is configured, then by default the traffic that does not match any of the configured classes is flow classified and given best-effort treatment. Once a packet is classified, all of the standard mechanisms that can be used to differentiate service among the classes apply.

For CBWFQ, the weight specified for the class becomes the weight of each packet that meets the match criteria of the class. Packets that arrive at the output interface are classified according to the match criteria filters specified. Each packet is then assigned the appropriate weight. The weight for a packet belonging to a specific class is derived from the bandwidth assigned to the class when configured. In this case, the weight for a class is user-configurable.