计算机网络的服务质量(QoS)

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