network scheduler this article is about scheduling in networking for scheduling in computing generally see scheduling computing packets queuing in a fifo first in first out data structure a network scheduler also called packet scheduler queueing discipline qdisc or queueing algorithm is an arbiter on a node in packet switching communication network it manages the sequence of network packets in the transmit and receive queues of the 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 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 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 quality of service qos measures examples of algorithms suitable for managing network traffic include avq adaptive virtual queue cbq classbased queueing discipline choke choose and keep for responsive flows choose and kill for unresponsive flows is a variant of red codel controlled delay and fairflow queue codel creditbased fair queuing drr deficit round robin and dwrr implementation eg written by patrick mchardy for the linux kernel and published under the gnu general public license faq favourqueue gcra generic cell rate algorithm hff heavyhitter filter hfsc hierarchical fairservice curve htb hierarchical token bucket qfq quick fair queueing fq fair queuing and wfq weighted fair queuing fifo first in first out pktsched fq fair queue packet scheduler netem network emulator pie proportional integral controller enhanced red random early detection ared advanced random early detection gred generalized random early detection rred robust random early detection wred weighted random early detection rr roundrobin and wrr weighted round robin sfb stochastic fair blue as well as rsfb resilient sfb sfq stochastic fairness queuing tbf token bucket filter teql trivial link equalizer several of the above have been implemented as linux kernel modules and are freely available bufferbloat bufferbloat is a phenomenon in packetswitched 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 and random early detection 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 congest 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 is the prioritization of traffic based on service class differentiated services or reserved connection integrated services implementations linux kernel the linux kernels packet scheduler is part of the network stack together with netfilter nftables and berkeley packet filter the linux kernel packet scheduler is an integral part of the linux kernels network stack and manages the transmit and receive ring buffers of all nics by working on the layer 2 of the osi model and handling ethernet frames for example 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 pfifofast 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 kernels network stack contains several other buffers which are not managed by the network scheduler berkeley packet filter filters can be attached to the packet schedulers classifiers the ebpf functionality brought by version 41 of the linux kernel in 2015 extends the classic bpf programmable classifiers to ebpf bsd and openbsd altq is the implementation of a network scheduler for bsds as of openbsd version 55 altq was replaced by the hfsc scheduler computer networking portal network congestion queue abstract data type queueing theory statistical time division multiplexing traffic shaping traffic classification type of service notes vtemajor fields of computer sciencenote this template roughly follows the 2012 acm computing classification systemhardware printed circuit board peripheral integrated circuit very large scale integration systems on chip socs energy consumption green computing electronic design automation hardware acceleration computer systemsorganization computer architecture embedded system realtime computing dependability networks network architecture network protocol network components network scheduler network performance evaluation network service software organization interpreter middleware virtual machine operating system software quality software notationsand tools programming paradigm programming language compiler domainspecific language modeling language software framework integrated development environment software configuration management software library software repository software development software development process requirements analysis software design software construction software deployment software maintenance programming team opensource model theory of computation model of computation formal language automata theory computational complexity theory logic semantics algorithms algorithm design analysis of algorithms algorithmic efficiency randomized algorithm computational geometry mathematicsof computing discrete mathematics probability statistics mathematical software information theory mathematical analysis numerical analysis informationsystems database management system information storage systems enterprise information system social information systems geographic information system decision support system process control system multimedia information system data mining digital library computing platform digital marketing world wide web information retrieval security cryptography formal methods security services intrusion detection system hardware security network security information security application security humancomputerinteraction interaction design social computing ubiquitous computing visualization accessibility concurrency concurrent computing parallel computing distributed computing multithreading multiprocessing artificialintelligence natural language processing knowledge representation and reasoning computer vision automated planning and scheduling search methodology control method philosophy of artificial intelligence distributed artificial intelligence machine learning supervised learning unsupervised learning reinforcement learning multitask learning crossvalidation graphics animation rendering image manipulation graphics processing unit mixed reality virtual reality image compression solid modeling appliedcomputing ecommerce enterprise software computational mathematics computational physics computational chemistry computational biology computational social science computational engineering computational healthcare digital art electronic publishing cyberwarfare electronic voting video games word processing operations research educational technology document management book category portal wikiproject commons 