网络调度器

编辑
本词条由“匿名用户” 建档。

网络调度器,也被称为分组调度,排队规则,队列规定或排队算法,是一个仲裁器一个上节点在分组交换通信网络。它管理网络接口控制器的发送和接收队列中的网络数据包序列。有多种网络调度程序可用于不同的操作系统,它们实现了许多现有的网络调度算法。 网络调度器逻辑决定接下来要转发哪个网络数据包。网络调度器与排队系统相关联,临时存储网络数据包直到它们被传输。系统可能有一个或多个队列,在这种情况下,每个队列可以保存一...

什么是网络调度器

编辑

网络调度器,也被称为分组调度,排队规则,队列规定或排队算法,是一个仲裁器一个上节点在分组交换通信网络。它管理网络接口控制器的发送和接收队列中的网络数据包序列。有多种网络调度程序可用于不同的操作系统,它们实现了许多现有的网络调度算法。

网络调度器逻辑决定接下来要转发哪个网络数据包。网络调度器与排队系统相关联,临时存储网络数据包直到它们被传输。系统可能有一个或多个队列,在这种情况下,每个队列可以保存一个流、一个分类或一个优先级的数据包。

在某些情况下,可能无法在系统的限制范围内安排所有传输。在这些情况下,网络调度程序负责决定转发哪些流量以及丢弃哪些流量。

术语和职责

编辑

网络调度器程序可能负责实施特定的网络流量控制计划。网络流量控制是所有旨在减少拥塞、延迟和数据包丢失的措施的总称。具体来说,主动队列管理(AQM)是选择性丢弃排队的网络数据包,以实现防止过度网络拥塞的更大目标。调度程序必须选择要丢弃的数据包。流量整形通过在突发排队时延迟传输数据包来平滑流量的带宽需求。调度器决定传输数据包的时间。服务质量(QoS)是基于服务等级的流量优先级(差异化服务)或保留连接(集成服务)。

网络调度器的算法

编辑

随着时间的推移,已经开发了许多网络排队规则。其中每一个都提供特定的重新排序或丢弃各种传输或接收缓冲区内的网络数据包。排队规则通常用于补偿各种网络条件,例如减少某些类别的网络数据包的延迟,并且通常用作QoS措施的一部分。

适用于管理网络流量的算法示例包括:

  • AVQ(自适应虚拟队列)
  • CBQ(基于类的排队)纪律
  • CHOKe(选择并保留用于响应流,选择和杀死用于无响应流)是RED的变体
  • CoDel(受控延迟)和公平/流队列CoDel
  • CAKE(CommonApplicationsKeptEnhanced),在linux内核中实现
  • 基于信用的公平排队
  • DRR(赤字循环)和DWRR,例如由PatrickMcHardy为Linux内核编写的实现并在GNU通用公共许可证下发布。
  • 常见问题(FavourQueue)
  • FQ-PIE(增强型流队列比例积分控制器)
  • GCRA(通用信元速率算法)
  • HFF(重击过滤器
  • HFSC(分层公平服务曲线)
  • HTB(分层令牌桶)
  • QFQ(快速公平排队)
  • FQ(公平排队)和WFQ(加权公平排队)
  • FIFO(先入先出)
  • pkt_sched:fq:公平队列包调度器
  • NETEM网络模拟
  • PIE(增强型比例积分控制器)
  • RED(随机早期检测
    • ARED(高级随机早期检测)
    • GRED(广义随机早期检测)
    • RRED(鲁棒随机早期检测)
    • WRED(加权随机早期检测)
  • RR(循环)和WRR(加权循环)
  • SFB(随机公平蓝色)以及RSFB(弹性SFB)
  • SFQ(随机公平排队)
  • TBF(令牌桶过滤器)
  • TEQL(平凡链接均衡器

以上几个已经实现为Linux内核模块并且可以免费获得。

缓冲膨胀

编辑

缓冲区膨胀是数据包交换网络中的一种现象,其中数据包的过度缓冲会导致高延迟和数据包延迟变化。Bufferbloat可以通过网络调度程序解决,该程序策略性地丢弃数据包以避免不必要的高缓冲积压。示例包括CoDel和Randomearlydetection。

实现

编辑

Linux内核

Linux内核的数据包调度程序与netfilter、nftables和BerkeleyPacketFilter一起是网络堆栈的一部分。

网络调度器

Linux内核数据包调度程序是Linux内核网络堆栈的一个组成部分,通过在OSI模型的第2层上工作和处理以太网帧来管理所有NIC的发送和接收环形缓冲区。

数据包调度程序使用称为tc(“流量控制”的缩写)的实用程序进行配置。作为默认排队规则,数据包调度器使用称为pfifo_fast的FIFO实现,尽管systemd自其版本217以来将默认排队规则更改为fq_codel。

的ifconfig和ip实用程序使系统管理员能够配置缓冲区大小txqueuelen和rxqueuelen每个设备单独地无论大小以太网帧的数目方面。Linux内核的网络堆栈包含其他几个缓冲区,它们不由网络调度程序管理。

Berkeley数据包过滤器过滤器可以附加到数据包调度程序的分类器。2015年Linux内核4.1版本带来的eBPF功能将经典的BPF可编程分类器扩展到eBPF。这些可以使用LLVMeBPF后端进行编译,并使用该tc实用程序加载到正在运行的内核中。

BSD和OpenBSD

ALTQ是BSD网络调度程序的实现。从OpenBSD5.5版开始,ALTQ被HFSC调度程序取代。

内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/124662/

(0)
词条目录
  1. 什么是网络调度器
  2. 术语和职责
  3. 网络调度器的算法
  4. 缓冲膨胀
  5. 实现
  6. Linux内核
  7. BSD和OpenBSD

轻触这里

关闭目录

目录