QoS入门,为了进一步学习DPDK上的QoSnode
《计算机网络的服务质量(QoS)》 林闯,单志广,任丰原 著算法
Internet的传统分组交换网络是面向非实时数据通讯而设计的,典型应用例如FTP和Email。IP协议是典型的Best-effort,尽力而为的服务,TCP这类可靠的传输层协议被设计出来是为了缓解严重的网络拥塞,优化网络的数据吞吐量,最重要的是保证数据通讯的可靠性。随着网络的发展,人们对于网络的要求愈来愈高,Internet上也从单一的数据传输变为数据、语音、图像、视频等多媒体的传输。多媒体信息对网络的带宽要求很高,并且要求信息传输延迟低,但可以容忍必定的错误率和丢失率(本书做于2003年,关于流量类型的着眼点在于多媒体)。现现在又出现了datacenter,以及云计算、大数据、IoT等大流量的传输要求,或是实时对战游戏、直播平台、自动驾驶这一类对时延、抖动要求极高的网络应用。Internet与生俱来的Best-effort特色,没法知足现现在愈加多样化的网络应用以及用户对网络传输质量的不一样要求。在此背景下,人们致力提升整个计算机网络系统的服务性能和质量,以期为下一代网络应用、为用户提供更高质量的网络传输。以上就是计算机网络QoS的诞生背景。api
对QoS的研究能够追溯到上世纪八十年代,当时已经有一些具备远见的研究者认识到了服务质量的重要性,但很长的一段时间内,整个Internet的性能和规模有限,QoS并未得到大多数人的重视。直到网络规模的不断扩大以及多媒体应用的增长,研究者才开始了对QoS的系统性研究。最主要的是IETF在1997年9月开始制定一系列与QoS有关的RFC标准,典型的有【RFC 2215】综合服务(integrated services, IntServ, IS)和【RFC 2474】区分服务(differentiated services, DiffServ, DS)。我也重点看的是这两个。缓存
QoS的定义:网络
从QoS的目标来看,以整个计算机网络庞大的体量,QoS毫不是网络中某个个体元素的行为,不是在某一台主机、某一台路由器上稍做修改便可达到的目的,而是涉及到用户与网络、网络内部节点的一种总体行为。app
【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信息的流量实时控制了。包括几个重要的术语:优化
Terminology | Explanation |
---|---|
整型 meter | 调节流量速率,例如令牌桶算法。数学上证实了若是在网络边缘进行整型,在网络中采起适当的调度策略,能够为应用提供很是好的QoS[1] |
调度 schedule | 每一个网络元素对packet进行排队时要根据QoS要求所赋予的相应优先级,调度网络资源(带宽、缓存、CPU、队列、线程等)来执行 |
监控 monitor | 监视是否提供了预先约定的QoS,当没法提供时,提醒用户,协商下降QoS级别 |
控制 Control | 开环和闭环两种模式。开环:只要开始QoS控制后,容许发送方一直按照一个速率发送数据。闭环:发送方仍是要根据反馈信息调整发送速率。 |
同步 Synchronize | 控制事件顺序和应用交互行为的精确时间前后顺序定义 |
IETF前后提出两种QoS体系结构,集成服务IntServ是第一种。特色是:须要全部的路由器在控制路径上处理每一个流的消息,维护每一个流的路径状态和资源预留状态,在路径上执行基于流的分类、调度、管理。技术上,基于资源预留协议RSVP;逐节点创建或拆除流的状态和资源预留状态;判断资源是否知足用户需求;根据流的状态进行QoS路由,传输控制等措施。IntServ的基石就是:资源预分配、全局流状态、传输控制。
看了上面那段话也知道IntServ想在网络层创建太过复杂的逻辑而失败。因而DiffServ应运而生了。
具体来说:边界节点根据约定好的QoS规定,把将要进入网络的流量分类成不一样的流。流的汇集信息用IP头部的DS field来标识,DS field 里的内容叫作DSCP(codepoint)。内部节点在调度这种包的时候,就是简单的根据不一样的DSCP选择特定的调度和转发服务便可。
element 在收到包以后,要作的事情是:
[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