QoS入门,为了进一步学习DPDK上的QoS

《计算机网络的服务质量(QoS)》 林闯,单志广,任丰原 著

Background

Internet的传统分组交换网络是面向非实时数据通信而设计的,典型应用例如FTP和Email。IP协议是典型的Best-effort,尽力而为的服务,TCP这类可靠的传输层协议被设计出来是为了缓解严重的网络拥塞,优化网络的数据吞吐量,最重要的是保证数据通信的可靠性。随着网络的发展,人们对于网络的要求越来越高,Internet上也从单一的数据传输变为数据、语音、图像、视频等多媒体的传输。多媒体信息对网络的带宽要求很高,而且要求信息传输延迟低,但能够容忍一定的错误率和丢失率(本书作于2003年,关于流量类型的着眼点在于多媒体)。现如今又出现了datacenter,以及云计算、大数据、IoT等大流量的传输要求,或是实时对战游戏、直播平台、自动驾驶这一类对时延、抖动要求极高的网络应用。Internet与生俱来的Best-effort特点,无法满足现如今越发多样化的网络应用以及用户对网络传输质量的不同要求。在此背景下,人们致力提高整个计算机网络系统的服务性能和质量,以期为下一代网络应用、为用户提供更高质量的网络传输。以上就是计算机网络QoS的诞生背景。

对QoS的研究可以追溯到上世纪八十年代,当时已经有一些具有远见的研究者认识到了服务质量的重要性,但很长的一段时间内,整个Internet的性能和规模有限,QoS并未获得大多数人的重视。直到网络规模的不断扩大以及多媒体应用的增加,研究者才开始了对QoS的系统性研究。最主要的是IETF在1997年9月开始制定一系列与QoS有关的RFC标准,典型的有【RFC 2215】综合服务(integrated services, IntServ, IS)和【RFC 2474】区分服务(differentiated services, DiffServ, DS)。我也重点看的是这两个。

Definition & Terminology

QoS的定义:

  • QoS是网络在传输数据流时要满足一系列服务请求,具体可以量化为带宽、时延、抖动、丢失率、吞吐量等性能指标。
  • QoS是用户和服务网络之间关于信息传输质量的约定。
  • QoS的目标是为Internet应用提供服务区分和性能保证:服务区分是指网络能根据不同的应用的需求,为其提供不同的网络服务;性能保证则要解决带宽、丢失、延迟、抖动等性能问题,QoS的设计需以提高网络性能为目的。

从QoS的目标来看,以整个计算机网络庞大的体量,QoS绝不是网络中某个个体元素的行为,不是在某一台主机、某一台路由器上稍作修改即可达到的目的,而是涉及到用户与网络、网络内部节点的一种整体行为。

【RFC 2216】是IETF对QoS做的一系列定义,其中有如下术语:

Terminology Explanation
QoS 用带宽、分组延时、分组丢失率等参数描述的关于分组传输网的质量
网络元素(Element) 任何一个可以在Internet中处理packet的构件。当用element描述时,表示它具有数据通过时对其进行QoS控制的能力
流(Flow) 相同QoS要求,服从统一QoS控制方法的,通过某一网络元素的packet集合。一个流的packet可以来自不同的应用。
服务(service) 描述网络元素的控制能力
行为(behavior) 应用直接可见的,由服务提供的最终结果
流量规范(traffic specification,TSpec) 流、网络元素、服务,三者之间的合同

基于上述术语,IETF将QoS定义成二维空间:<服务类型>、<参数类型>

用户需要与网络系统进行协商。协商就是用户之间/用户与网络之间就QoS要求进行交互,最后确定QoS的过程。用户可以表达的QoS描述包括:

  • 信息流特征。例如,信息流产生的峰值速率和平均速率等,以及五元组等网络数据。体现用户让网络知晓自己的特定的流量特征,需要QoS服务。
  • 信息流的性能要求、同步要求。如吞吐量、延迟、抖动、丢包率的各种要求。
  • 服务层次。例如想要可控负载型服务、保证性服务、还是尽力而为服务。

当用户与网络系统达成QoS约定之后,网络系统就要提供基于QoS信息的流量实时控制了。包括几个重要的术语:

Terminology Explanation
整型 meter 调节流量速率,例如令牌桶算法。数学上证明了如果在网络边缘进行整型,在网络中采取适当的调度策略,可以为应用提供非常好的QoS[1]
调度 schedule 每个网络元素对packet进行排队时要根据QoS要求所赋予的相应优先级,调度网络资源(带宽、缓存、CPU、队列、线程等)来执行
监控 monitor 监视是否提供了预先约定的QoS,当无法提供时,提醒用户,协商降低QoS级别
控制 Control 开环和闭环两种模式。开环:只要开始QoS控制后,允许发送方一直按照一个速率发送数据。闭环:发送方还是要根据反馈信息调整发送速率。
同步 Synchronize 控制事件顺序和应用交互行为的精确时间先后顺序定义

IntServ

IETF先后提出两种QoS体系结构,集成服务IntServ是第一种。特点是:需要所有的路由器在控制路径上处理每个流的消息,维护每个流的路径状态和资源预留状态,在路径上执行基于流的分类、调度、管理。技术上,基于资源预留协议RSVP;逐节点建立或拆除流的状态和资源预留状态;判断资源是否满足用户需求;根据流的状态进行QoS路由,传输控制等措施。IntServ的基石就是:资源预分配、全局流状态、传输控制。

DiffServ

看了上面那段话也知道IntServ想在网络层建立太过复杂的逻辑而失败。于是DiffServ应运而生了。

  • 目标:简单有效、可扩展
  • 内部节点只进行根据DS头部的简单转发
  • 在边界节点进行流状态信息的保持和实现

具体来讲:边界节点根据约定好的QoS规定,把将要进入网络的流量分类成不同的流。流的聚集信息用IP头部的DS field来标识,DS field 里的内容叫做DSCP(codepoint)。内部节点在调度这种包的时候,就是简单的根据不同的DSCP选择特定的调度和转发服务即可。

element 在收到包之后,要做的事情是:

  • 分流 classify,根据预先预定的规则,例如DSCP值、五元组等等。将包划到某一流的类别。
  • 调节,包括 meter(限速)、mark(修改DSCP值)、drop(丢包)、shaping(整型,修改包的其他内容)、计量器(计数、记录流量速率等)、经过令牌桶算法调整速率等。
  • 调度,发包。element实现一组PHB(per-hop-behavior,逐跳行为),就根据IP包的DSCP选取特定的PHB,执行特定的动作。

reference

[1] - Parekh A, Gallager R G. A generalized processor sharing approach to flow contol in integrated service networks - the multiple node case. IEEE INFOCOM'93. April 1993. 521~530

wiki - DS

计算机网络的服务质量(QoS)的更多相关文章

  1. Kubernetes 服务质量 Qos 解析 - Pod 资源 requests 和 limits 如何配置?

    QoS是 Quality of Service 的缩写,即服务质量.为了实现资源被有效调度和分配的同时提高资源利用率,kubernetes针对不同服务质量的预期,通过 QoS(Quality of S ...

  2. 异构无线网络之QOS简介

    QoS(Quality of Service,服务质量)指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力, 是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术. 在正常 ...

  3. 《数据通信与网络》笔记--QoS

    QoS(Quality of Service)服务质量,是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术. 1.QoS参数 衡量服务质量QoS的参数主要包括: 端到端延迟(Delay) ...

  4. 分布式还是混合式? 谈CDN架构对服务质量的影响

    传统分布式模型 通 常,内容分发网络(CDN)採用分布式模型.在这样的模型里, 用户的文件存放在一个源server上.而且由大量边缘server负责分发这些文件.这些边缘server的磁盘空间比較小. ...

  5. ITU-T Technical Paper: NP, QoS 和 QoE的框架以及它们的区别

    本文翻译自ITU-T的Technical Paper:<How to increase QoS/QoE of IP-based platform(s) to regionally agreed ...

  6. QOS-QOS(服务质量)概述

    QOS-QOS(服务质量)概述 2018年7月7日  20:29 概述及背景: 1.  引入: 传统IP网络仅提供“尽力而为”的传输服务,网络有可用资源就转发,资源不足时就丢弃 新一代IP网络承载了 ...

  7. LTE QOS

    http://wenku.baidu.com/link?url=ziFIkdKaC7MU2RY-bTOp2bt87WFPw5_02bqmYs5W6w4ktOfPHEcWesK1U2T7YiyXjVSM ...

  8. 面向SOA服务架构的案例分析的研究

    随着互联网应用的不断发展,网络业务的种类.数量不断增加,计算机网络管理的研究重 点正在由过去的个别资源监控.应用可用性阶段,向着如何通过网络获得所需业务.业务流程的优化.保障业务服务水平方向发展.但这 ...

  9. word20161218

    QoS, Quality of Service / 服务质量 QoS Admission Control Service / QoS 许可控制服务 Quality of Service, QoS / ...

随机推荐

  1. MepReduce-开启大数据计算之门

    Hadoop MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算.早期的MapReduce(MR)框架简单明了,JobTracker作为MR框架的集中处理点,随着分布式系统集群 ...

  2. Linux—rm命令

    rm作用:用于删除一个文件或者目录,文件一旦通过rm命令删除,则无法恢复,所以必须格外小心地使用该命令.并且时刻清醒注意自己在哪个目录下面!! 命令格式:rm [选项] name 参数: -i 删除前 ...

  3. FPGA之CORDIC算法实现_理论篇(上)

    关于cordic的算法原理核心思想就是规定好旋转角度,然后通过不停迭代逐步逼近的思想来实现数学求解,网上关于这部分的资料非常多,主要可以参考: 1)https://blog.csdn.net/qq_3 ...

  4. mysql-5.7.12-winx64 安装

    之前安装mysql时未做总结,换新电脑,补上安装记录,安装的时候,找了些网友的安装记录,发现好多坑 1.mysql-5.7.12-winx64.zip下载官方下载地址:http://dev.mysql ...

  5. 2 python介绍

    1.Python介绍:龟叔 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,Guido开始写Python语言的编译器.Python这个名字,来自Gui ...

  6. 10-[协程] greenlet模块、 gevent模块

    1.greenlet模块:实现20个任务切换 如果我们在单个线程内有20个任务,要想实现在多个任务之间切换,使用greenlet模块可以非常简单地实现这20个任务直接的切换 使用yield生成器的方式 ...

  7. Gitlab+Jenkins学习之路(三)之gitlab权限管理--issue管理

    1.创建Group,User,Project 创建一个组,组名为java Group path http://192.168.56.11/java Visibility Level: #为权限级别,一 ...

  8. TMS320VC5509驱动TLV32AIC23

    1. 本次使用LINE_IN作为输入,LINE_OUT作为输出(可以插耳机),代码如下,代码经过测试,没问题,不过发现了一个很奇怪的问题没搞明白 /************************** ...

  9. jsp 中 , jq 获取当前所点击的 select 的 id 值的注意事项

    因为是使用的 jstl 的 foreach ,所以每个 select 的 id 值都不同,要想在 change 方法中获取到 当前所点击的 select 的 id 值,需要注意的地方有: 1. 得到  ...

  10. 菜鸟vimer成长记——第2.3章、insert模式

    大部分的Vim 命令都在非插入模式中执行,不过有些功能在插入模式中会更好实现些. 如果没有输入当前文件不存在的新文本的需求时,建议通过其他模式来操作完成. 目的 掌握inser模式下常用操作的语法和概 ...