QOS各种队列详解(FIFO,FQ,CBWFQ,PQ)

QOS各种队列详解(FIFO,FQ,CBWFQ,PQ)

对于拥塞管理,一般采用队列技术,使用一个队列算法对流量进行分类,之后用某种优先级别算法将这些流量发送出去。每种队列算法都是用以解决特定的网络流量问题,并对带宽资源的分配、延迟、抖动等有着十分重要的影响。

这里介绍几种常用的队列调度机制。

1. FIFO(先入先出队列,First In First Out Queuing)

图9 先入先出队列示意图

如上图所示,FIFO按照时间到达的先后决定分组的转发次序。用户的业务流在某个设备能够获得的资源取决于分组的到达时机及当时的负载情况。Best-Effort报文转发方式采用的就是FIFO的排队策略。

如果设备的每个端口只有一个基于FIFO的输入或输出队列,那么恶性的应用可能会占用所有的网络资源,严重影响关键业务数据的传送。

每个队列内部报文的发送(次序)关系缺省是FIFO。

2. PQ(优先队列,Priority Queuing)

图10 优先队列示意图

PQ队列是针对关键业务应用设计的。关键业务有一个重要的特点,即在拥塞发生时要求优先获得服务以减小响应的延迟。PQ可以根据网络协议(比如IP,IPX)、数据流入接口、报文长短、源地址/目的地址等灵活地指定优先次序。优先队列将报文分成4类,分别为高优先队列(top)、中优先队列(middle)、正常优先队列(normal)和低优先队列(bottom),它们的优先级依次降低。缺省情况下,数据流进入normal队列。

在队列调度时,PQ严格按照优先级从高到低的次序,优先发送较高优先级队列中的分组,当较高优先级队列为空时,再发送较低优先级队列中的分组。这样,将关键业务的分组放入较高优先级的队列,将非关键业务的分组放入较低优先级的队列,可以保证关键业务的分组被优先传送,非关键业务的分组在处理关键业务数据的空闲间隙被传送。

PQ的缺点是如果较高优先级队列中长时间有分组存在,那么低优先级队列中的报文将一直得不到服务。

3. CQ(定制队列,Custom Queuing)

图11 定制队列示意图

CQ按照一定的规则将分组分成16类(对应于16个队列),分组根据自己的类别按照先进先出的策略进入相应的CQ队列。

CQ的1到16号队列是用户队列,如图11所示。用户可以配置流分类的规则,指定16个用户队列占用接口或PVC带宽的比例关系。在队列调度时,系统队列中的分组被优先发送。直到系统队列为空,再采用轮询的方式按照预先配置的带宽比例依次从1到16号用户队列中取出一定数量的分组发送出去。这样,就可以使不同业务的分组获得不同的带宽,既可以保证关键业务能获得较多的带宽,又不至于使非关键业务得不到带宽。缺省情况下,数据流进入1号队列。

定制队列的另一个优点是:可根据业务的繁忙程度分配带宽,适用于对带宽有特殊需求的应用。虽然16个用户队列的调度是轮询进行的,但对每个队列不是固定地分配服务时间片——如果某个队列为空,那么马上换到下一个队列调度。因此,当没有某些类别的报文时,CQ调度机制能自动增加现存类别的报文可占的带宽。

4. WFQ(加权公平队列,Weighted Fair Queuing)

图12 加权公平队列示意图

在介绍加权公平队列前,先要理解公平队列FQ(Fair Queuing)。FQ是为了公平地分享网络资源,尽可能使所有流的延迟和抖动达到最优而推出的。它照顾了各方面的利益,主要表现在:

l 不同的队列获得公平的调度机会,从总体上均衡各个流的延迟。

l 短报文和长报文获得公平的调度:如果不同队列间同时存在多个长报文和短报文等待发送,应当顾及短报文的利益,让短报文优先获得调度,从而在总体上减少各个流的报文间的抖动。

与FQ相比,WFQ在计算报文调度次序时增加了优先权方面的考虑。从统计上,WFQ使高优先权的报文获得优先调度的机会多于低优先权的报文。WFQ能够按流的“会话”信息(协议类型、源和目的TCP或UDP端口号、源和目的IP地址、ToS域中的优先级位等)自动进行流分类,并且尽可能多地提供队列,以将每个流均匀地放入不同队列中,从而在总体上均衡各个流的延迟。在出队的时候,WFQ按流的优先级(precedence)来分配每个流应占有出口的带宽。优先级的数值越小,所得的带宽越少。优先级的数值越大,所得的带宽越多。

例如:接口中当前共有5个流,它们的优先级分别为0、1、2、3、4,则带宽总配额为所有(流的优先级+1)的和。即

1 + 2 + 3 + 4 + 5 = 15

每个流所占带宽比例为:(自己的优先级数 + 1)/(所有 (流的优先级 + 1) 的和)。即每个流可得的带宽分别为:1/15,2/15,3/15,4/15,5/15。

由于WFQ在拥塞发生时能

linux fq队列,QOS各种队列详解(FIFO,FQ,CBWFQ,PQ).doc相关推荐

  1. RabbitMQ--交换器类型/队列模式--使用/教程/详解

    原文网址:RabbitMQ--交换器类型/队列模式--使用/教程/详解_IT利刃出鞘的博客-CSDN博客 简介 本文介绍RabbitMQ的交换器类型和队列模式. 本内容也是Java后端面试常见的问题. ...

  2. redis队列优先级java实现_Redis 实现队列原理的实例详解

    Redis 实现队列原理的实例详解 场景说明: ·用于处理比较耗时的请求,例如批量发送邮件,如果直接在网页触发执行发送,程序会出现超时 ·高并发场景,当某个时刻请求瞬间增加时,可以把请求写入到队列,后 ...

  3. Linux 下 TC 命令原理及详解<一>

    文章目录 1 前言 2 相关概念 3 使用TC 4 创建HTB队列 5 为根队列创建相应的类别 6 为各个类别设置过滤器 7 复杂的实例 Linux 下 TC 命令原理及详解<一> Lin ...

  4. Linux中/proc目录下文件详解

    Linux中/proc目录下文件详解(一) 声明:可以自由转载本文,但请务必保留本文的完整性. 作者:张子坚 email:zhangzijian@163.com 说明:本文所涉及示例均在fedora ...

  5. linux tf命令,Linux系统命令介绍之vmstat命令详解

    今天小编要跟大家介绍的vmstat命令详解.熟悉Linux系统和使用Linux系统工作的小伙伴都知道Linux的命令有很多,而真正在工作中用到的命令应该不超过几十个,为了让大家更好的掌握这些命令,小编 ...

  6. Linux_arm_启动_c语言部分详解,[原创]Linux arm 启动 c语言部分详解第四讲

    Linux arm启动c语言部分详解第四讲(from setup_per_cpu_areas();) Written by leeming 上面的setup_arch花了我们大量的篇幅,现在我们要继续 ...

  7. linux下防火墙iptables用法规则详解

    linux下防火墙iptables用法规则详解 分享者: du52.com 邮件: wangaibo168@163.com 主页: http://www.du52.com linux下防火墙iptab ...

  8. Linux中/proc目录下文件详解 /proc/devices文件 /proc/modules文件

    http://blog.chinaunix.net/uid-10449864-id-2956854.html 原来对linux系统中的/proc目录不是很了解,只知道可以查看cpu,内存等相关的信息, ...

  9. Linux下sysstat安装使用图文详解

    文章目录 Linux下sysstat安装使用图文详解 1.iostat 2.mpstat 3.sadc 4.sadf 5.sar 6.pidstat Linux下sysstat安装使用图文详解 Sys ...

最新文章

  1. 一图了解git常用开源许可证书
  2. 文件上传至服务器cpu,文件服务器构建指南
  3. Bzoj2440 完全平方数
  4. Centos7:Docker私有仓库搭建和使用
  5. 从hook007学习dll劫持自启动方式
  6. python【数据结构与算法】选数问题(指定值求和——递归)
  7. java 令牌解析_Java编程guava RateLimiter实例解析
  8. Xilinx IP核之FIFO
  9. oracle 触发器
  10. 移动端网站如何开发(电脑端网站到手机端网站我们需要在html代码中添加哪个meta标签)...
  11. MFC中CDC画线总结
  12. linux中括号 美元符号怎么打,键盘输入美元符号
  13. 浅析高速公路网络数据集制作
  14. Android Alarm机制分析
  15. 专属微信公众号消息推送(java版)
  16. Android异步和同步的区别
  17. 接口测试平台代码实现86: 全局请求头-1
  18. 江苏无锡14岁女孩被推荐上北大(图)
  19. Win10彻底删除OneDrive的方法
  20. 盛辉SG90舵机 51单片机PWM控制程序 手机屏幕触控

热门文章

  1. 探索SwipeRefreshLayout配合自定义ListView完成下拉刷新、滑到底部自动加载更多
  2. 2021 回头看看这一年
  3. Windows驱动_文件系统微小过滤驱动之三微小过滤驱动的操作
  4. Tomcat出现警告:[RMI TCP Connection(3)-127.0.0.1] org.apache.tomcat.util.descriptor.web.WebXml.setVersion
  5. 郑志远的java学习笔记
  6. 无聊记录下爬取虎牙录播
  7. 7-3 生化危机 (20 分)java版
  8. (附源码)计算机毕业设计ssm大学校园兼职网站
  9. Win 10 Hyper-V 虚拟机怎么迁移部署
  10. 洛谷 P2782 友好城市