Menu
Home Explore People Places Arts History Plants & Animals Science Life & Culture Technology
On this page
Network scheduler
Arbiter on a node in packet switching communication network

A network scheduler, also called packet scheduler, queueing discipline (qdisc) or queueing algorithm, is an arbiter on a node in a packet switching communication network. It manages the sequence of network packets in the transmit and receive queues of the protocol stack and network interface controller. There are several network schedulers available for the different operating systems, that implement many of the existing network scheduling algorithms.

The network scheduler logic decides which network packet to forward next. The network scheduler is associated with a queuing system, storing the network packets temporarily until they are transmitted. Systems may have a single or multiple queues in which case each may hold the packets of one flow, classification, or priority.

In some cases it may not be possible to schedule all transmissions within the constraints of the system. In these cases the network scheduler is responsible for deciding which traffic to forward and what gets dropped.

Related Image Collections Add Image
We don't have any YouTube videos related to Network scheduler yet.
We don't have any PDF documents related to Network scheduler yet.
We don't have any Books related to Network scheduler yet.
We don't have any archived web articles related to Network scheduler yet.

Terminology and responsibilities

A network scheduler may have responsibility in implementation of specific network traffic control initiatives. Network traffic control is an umbrella term for all measures aimed at reducing network congestion, latency and packet loss. Specifically, active queue management (AQM) is the selective dropping of queued network packets to achieve the larger goal of preventing excessive network congestion. The scheduler must choose which packets to drop. Traffic shaping smooths the bandwidth requirements of traffic flows by delaying transmission packets when they are queued in bursts. The scheduler decides the timing for the transmitted packets. Quality of service (QoS) is the prioritization of traffic based on service class (Differentiated services) or reserved connection (Integrated services).

Algorithms

In the course of time, many network queueing disciplines have been developed. Each of these provides specific reordering or dropping of network packets inside various transmit or receive buffers.1 Queuing disciplines are commonly used as attempts to compensate for various networking conditions, like reducing the latency for certain classes of network packets, and are generally used as part of QoS measures.234

Classful queueing disciplines allow the creation of classes, which work like branches on a tree. Rules can then be set to filter packets into each class. Each class can itself have assigned other classful or classless queueing discipline. Classless queueing disciplines do not allow adding more queueing disciplines to it.5

Examples of algorithms suitable for managing network traffic include:

Queueing Algorithms
AlgorithmAcronymTypeHW Support
Generic cell rate algorithmGCRA
CHOose and Kill for unresponsive flowsCHOKeClassless
Controlled delayCoDelClassless
Common Applications Kept Enhanced6CAKE
Earliest TxTime FirstETFClasslessYes
First in, first outFIFOClassless
Fair queuingFQClassless
Fair Queuing Controlled DelayFQ-CoDelClassless
Flow Queuing with Proportional Integral controller EnhancedFQ-PIEClassless
Generalized Random Early DetectionGREDClassless
Heavy-Hitter Filter7HHFClassless
Multiqueue PriorityMQ-PRIOClasslessYes
MultiqueueMULTIQClasslessYes
Network Emulator8NETEMClassless
Proportional Integral controller-Enhanced9PIEClassless
Random early detectionREDClassless
Stochastic fair BlueSFBClassless
Stochastic Fairness QueueingSFQClassless
Token Bucket FilterTBFClassless
Class-based queueingCBQClassful
Credit-Based ShaperCBSClassfulYes
Deficit round robin10DRRClassful
Enhanced Transmission SelectionETSClassful
Hierarchical fair-service curveHFSCClassful
Hierarchical Token Bucket11HTBClassful
PriorityPRIOClassful
Quick Fair Queueing12QFQClassful
Time Aware Priority ShaperTAPRIOClassfulYes

Several of the above have been implemented as Linux kernel modules1314 and are freely available.

Bufferbloat

Bufferbloat is a phenomenon in packet-switched networks in which excess buffering of packets causes high latency and packet delay variation. Bufferbloat can be addressed by a network scheduler that strategically discards packets to avoid an unnecessarily high buffering backlog. Examples include CoDel, FQ-CoDel and random early detection.

Implementations

Linux kernel

The Linux kernel packet scheduler is an integral part of the Linux kernel's network stack and manages the transmit and receive ring buffers of all NICs.

The packet scheduler is configured using the utility called tc (short for traffic control). As the default queuing discipline, the packet scheduler uses a FIFO implementation called pfifo_fast,15 although systemd since its version 217 changes the default queuing discipline to fq_codel.16

The ifconfig and ip utilities enable system administrators to configure the buffer sizes txqueuelen and rxqueuelen for each device separately in terms of number of Ethernet frames regardless of their size. The Linux kernel's network stack contains several other buffers, which are not managed by the network scheduler.17

Berkeley Packet Filter filters can be attached to the packet scheduler's classifiers. The eBPF functionality brought by version 4.1 of the Linux kernel in 2015 extends the classic BPF programmable classifiers to eBPF.18 These can be compiled using the LLVM eBPF backend and loaded into a running kernel using the tc utility.19

BSD and OpenBSD

ALTQ is the implementation of a network scheduler for BSDs. As of OpenBSD version 5.5 ALTQ was replaced by the HFSC scheduler.

Cell-Free Network Scheduling

Schedulers in communication networks manage resource allocation, including packet prioritization, timing, and resource distribution. Advanced implementations increasingly leverage artificial intelligence to address the complexities of modern network configurations. For instance, a supervised neural network (NN)-based scheduler has been introduced in cell-free networks to efficiently handle interactions between multiple radio units (RUs) and user equipment (UEs). This approach reduces computational complexity while optimizing latency, throughput, and resource allocation, making it a promising solution for beyond-5G networks. 20

See also

Notes

References

  1. "Traffic Control HOWTO: Classless Queuing Disciplines (qdiscs)". tldp.org. Retrieved November 24, 2013. http://www.tldp.org/HOWTO/Traffic-Control-HOWTO/classless-qdiscs.html

  2. "Traffic Control HOWTO: Components of Linux Traffic Control". tldp.org. Retrieved November 24, 2013. http://www.tldp.org/HOWTO/Traffic-Control-HOWTO/components.html

  3. "Traffic Control HOWTO: Traditional Elements of Traffic Control". tldp.org. Retrieved November 24, 2013. http://www.tldp.org/HOWTO/Traffic-Control-HOWTO/elements.html

  4. "Queuing Disciplines: Order of Packet Transmission and Dropping" (PDF). tau.ac.il. October 25, 2006. Retrieved March 18, 2014. http://www.eng.tau.ac.il/~netlab/resources/booklet/lab9.pdf

  5. "Advanced traffic control - ArchWiki". wiki.archlinux.org. Retrieved 2023-09-11. https://wiki.archlinux.org/title/advanced_traffic_control

  6. "Let them run CAKE". LWN.net. https://lwn.net/Articles/758353/

  7. "Heavy-Hitter Filter qdisc". kernel.org. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=10239edf86f137ce4c39b62ea9575e8053c549a0

  8. "Network emulator Linux kernel network scheduler module". kernel.org. Retrieved 2013-09-07. https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/net/sched/sch_netem.c

  9. "Proportional Integral controller Enhanced (PIE)". kernel.org. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d4b36210c2e6ecef0ce52fb6c18c51144f5c2d88

  10. "DRR Linux kernel network scheduler module". kernel.org. Retrieved 2013-09-07. https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/net/sched/sch_drr.c

  11. "HTB Linux kernel network scheduler module". kernel.org. Retrieved 2013-09-07. https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/net/sched/sch_htb.c

  12. "QFQ Linux kernel network scheduler module". kernel.org. Retrieved 2013-09-07. https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/net/sched/sch_qfq.c

  13. "The Linux kernel network scheduler". kernel.org. 2012-12-26. Retrieved 2013-09-07. https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/net/sched

  14. "tc(8) - Linux manual page". man7.org. Retrieved 2023-09-11. https://man7.org/linux/man-pages/man8/tc.8.html

  15. "Linux Advanced Routing and Traffic Control HOWTO, Section 9.2.1. pfifo_fast". lartc.org. 2012-05-19. Retrieved 2014-09-19. http://www.lartc.org/howto/lartc.qdisc.classless.html

  16. "systemd System and Service Manager: NEWS file". freedesktop.org. 2015-05-22. Retrieved 2015-06-09. http://cgit.freedesktop.org/systemd/systemd/tree/NEWS

  17. The overall size of all buffers has been the point of critique by the Bufferbloat project, which provided a partial solution with CoDel that has been primarily tested in OpenWrt. /wiki/Bufferbloat

  18. "Linux kernel 4.1, Section 11. Networking". kernelnewbies.org. 2015-06-21. http://kernelnewbies.org/Linux_4.1#head-c64a7aa1ccb73618b4a7b5f3bef64ff435738098

  19. "BPF and XDP Reference Guide". Cilium documentation web site. https://cilium.readthedocs.io/en/latest/bpf/

  20. Huleihel, Yara; Maman, Gil; Hadad, Zion; Shasha, Eli; Permuter, Haim H. (2025). "Data-driven cell-free scheduler". Ad Hoc Networks. 169. Elsevier: 103738. doi:10.1016/j.adhoc.2025.103738. /wiki/Doi_(identifier)