# Class-based queueing

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/Class-based_queueing
> Markdown URL: https://mediated.wiki/source/Class-based_queueing.md
> Source: https://en.wikipedia.org/wiki/Class-based_queueing
> Source revision: 1268899560
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

[fa : صف بندی بر اساس کلاس](/source/fa_%3A_%D8%B5%D9%81_%D8%A8%D9%86%D8%AF%DB%8C_%D8%A8%D8%B1_%D8%A7%D8%B3%D8%A7%D8%B3_%DA%A9%D9%84%D8%A7%D8%B3)
{{Short description|Scheduling algorithm for network data flows}}
{{More citations needed|date=March 2024}}
'''Class-based queuing''' ('''CBQ''') is a [queuing discipline](/source/queuing_discipline) for the [network scheduler](/source/network_scheduler) that allows traffic to share [bandwidth](/source/Bandwidth_(computing)) equally, after being grouped by classes. The classes can be based upon a variety of parameters, such as priority, interface, or originating program.

CBQ is a traffic management algorithm developed by the Network Research Group at Lawrence Berkeley National Laboratory as an alternative to traditional router-based technology. Now in the public domain as an open technology, CBQ is deployed by companies at the boundary of their WANs.

CBQ divides user traffic into a hierarchy of classes based on any combination of IP addresses, protocols and application types. A company's accounting department, for example, may not need the same Internet access privileges as the engineering department. Because every company is organized differently and has different policies and business requirements, it is vital for traffic management technology to provide flexibility and granularity in classifying traffic flows. 

CBQ lets network managers classify traffic in a multilevel hierarchy. For instance, some companies may first identify the overall needs of each department or business group, and then define the requirements of each application or group of applications within each department. For performance and architectural reasons, traditional router-based queuing schemes are limited to a small number of classes and only allow one-dimensional classification. 

Because it operates at the [IP](/source/Internet_Protocol) network layer, CBQ provides the same benefits across any [Layer 2](/source/Data_link_layer) technology and is equally effective with any IP protocol, such as [Transmission Control Protocol](/source/Transmission_Control_Protocol) (TCP) and [User Datagram Protocol](/source/User_Datagram_Protocol) (UDP). It also operates with any client or server TCP/IP stack variation, since it takes advantage of standard TCP/IP flow control mechanisms to control end-to-end traffic.

An implementation is available under the [GNU General Public License](/source/GNU_General_Public_License) for the [Linux kernel](/source/Linux_kernel).<ref>{{cite web |url=https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/net/sched/sch_cbq.c |archive-url=https://archive.today/20130907180916/https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/net/sched/sch_cbq.c |url-status=dead |archive-date=September 7, 2013 |title=CBQ Linux kernel network scheduler module |publisher=[kernel.org](/source/kernel.org) |accessdate=2013-09-07 }}</ref>

==References==
{{Reflist}}

{{DEFAULTSORT:Class-Based Queuing}}
Category:Computer networks engineering
Category:Network scheduling algorithms

{{Compu-network-stub}}

---
Adapted from the Wikipedia article [Class-based queueing](https://en.wikipedia.org/wiki/Class-based_queueing) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/Class-based_queueing?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
