词条 | Network scheduler |
释义 |
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. AlgorithmsIn 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][2] 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.[3][4][5] Examples of algorithms suitable for managing network traffic include: {{Div col|colwidth=30em}}
Several of the above have been implemented as Linux kernel modules[17] and are freely available. BufferbloatBufferbloat 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 and Random early detection. Terminology and responsibilitiesA 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{{incomplete section|reason=What about network equipment, non-Unix-like OSs?|date=October 2018}}Linux kernelThe 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, 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 The tc utility.[21]BSD and OpenBSDALTQ is the implementation of a network scheduler for BSDs. As of OpenBSD version 5.5 ALTQ was replaced by the HFSC scheduler. See also{{Portal|Computer networking}}
Notes{{Notelist}}References1. ^{{cite web | url = http://www.tldp.org/HOWTO/Traffic-Control-HOWTO/classless-qdiscs.html | title = Traffic Control HOWTO: Classless Queuing Disciplines (qdiscs) | accessdate = {{date|2013-11-24|mdy}} | website = tldp.org}} {{Computer science}}2. ^{{cite web | url = http://qos.ittc.ku.edu/howto/node8.html | title = QoS Support in Linux: Queuing Disciplines | date = {{date|1999-09-30|mdy}} | accessdate = {{date|2014-03-18|mdy}} | author = Saravanan Radhakrishnan | website = qos.ittc.ku.edu}} 3. ^{{cite web | url = http://www.tldp.org/HOWTO/Traffic-Control-HOWTO/components.html | title = Traffic Control HOWTO: Components of Linux Traffic Control | accessdate = {{date|2013-11-24|mdy}} | website = tldp.org}} 4. ^{{cite web | url = http://www.tldp.org/HOWTO/Traffic-Control-HOWTO/elements.html | title = Traffic Control HOWTO: Traditional Elements of Traffic Control | accessdate = {{date|2013-11-24|mdy}} | website = tldp.org}} 5. ^{{cite web | url = http://www.eng.tau.ac.il/~netlab/resources/booklet/lab9.pdf | title = Queuing Disciplines: Order of Packet Transmission and Dropping | date = {{date|2006-10-25|mdy}} | accessdate = {{date|2014-03-18|mdy}} | website = tau.ac.il | format = PDF}} 6. ^http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.108.4477&rep=rep1&type=pdf 7. ^{{cite web |url=https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/net/sched/sch_drr.c |title=DRR Linux kernel network scheduler module |publisher=kernel.org |accessdate=2013-09-07}} 8. ^{{cite web |url=http://oatao.univ-toulouse.fr/10282/1/Lochin_10282.pdf |title=FavorQueue: a Parameterless Active Queue Management to Improve TCP Traffic Performance}} 9. ^{{cite web |url=https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=10239edf86f137ce4c39b62ea9575e8053c549a0 |title=Heavy-Hitter Filter qdisc |publisher=kernel.org}} 10. ^{{cite web |url=https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/net/sched/sch_htb.c |title=HTB Linux kernel network scheduler module |publisher=kernel.org |accessdate=2013-09-07}} 11. ^{{cite web |url=https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/net/sched/sch_qfq.c |title=QFQ Linux kernel network scheduler module |publisher=kernel.org |accessdate=2013-09-07}} 12. ^{{cite web |url=https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=afe4fd062416b158a8a8538b23adc1930a9b88dc |title=Fair Queue packet scheduler committed to Linux kernel 3.12}} 13. ^{{cite web |url=https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/net/sched/sch_netem.c |title=Network emulator Linux kernel network scheduler module |publisher=kernel.org |accessdate=2013-09-07}} 14. ^{{cite web |url=https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d4b36210c2e6ecef0ce52fb6c18c51144f5c2d88 |title=Proportional Integral controller Enhanced (PIE) |publisher=kernel.org }} 15. ^{{cite web |url=https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/net/sched/sch_sfq.c |title=SFQ Linux kernel network scheduler module |publisher=kernel.org |accessdate=2013-09-07}} 16. ^{{cite web |url=https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/net/sched/sch_tbf.c |title=TBF Linux kernel network scheduler module |publisher=kernel.org |accessdate=2013-09-07}} 17. ^{{cite web|url=https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/net/sched|title=The Linux kernel network scheduler|publisher=kernel.org|date=2012-12-26|accessdate=2013-09-07}} 18. ^{{cite web | url = http://www.lartc.org/howto/lartc.qdisc.classless.html | title = Linux Advanced Routing and Traffic Control HOWTO, Section 9.2.1. pfifo_fast | date = 2012-05-19 | accessdate = 2014-09-19 | website = lartc.org}} 19. ^{{cite web | url = http://cgit.freedesktop.org/systemd/systemd/tree/NEWS | title = systemd System and Service Manager: NEWS file | date = 2015-05-22 | accessdate = 2015-06-09 | website = freedesktop.org}} 20. ^{{cite web |url=http://kernelnewbies.org/Linux_4.1#head-c64a7aa1ccb73618b4a7b5f3bef64ff435738098 |title=Linux kernel 4.1, Section 11. Networking |date=2015-06-21 |website = kernelnewbies.org}} 21. ^{{cite web |url=https://cilium.readthedocs.io/en/latest/bpf/ |title=BPF and XDP Reference Guide |website=Cilium documentation web site}} 4 : Linux kernel features|Network performance|Network scheduling algorithms|Network theory |
随便看 |
|
开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。