嘘~ 正在从服务器偷取页面 . . .

QoS服务模型介绍(1)


什么是QoS

QoS,顾名思义,Quality of Service,服务质量。对于网络业务来说,服务质量包括哪些方面呢?从传
统意义上来讲,无非就是传输的带宽、传送的时延、数据的丢包率等,而提高服务质量无非也就是保证传输
的带宽,降低传送的时延,降低数据的丢包率以及时延抖动等。广义上讲,服务质量涉及网络应用的方方面
面,只要是对网络应用有利的措施,其实都是在提高服务质量。因此,从这个意义上来说,防火墙、策略路
由、快速转发等也都是提高网络业务服务质量的措施之一。

但是,服务质量又是相对网络业务而言的,在保证了某类业务的服务质量的同时,可能就是在损害其它业务
的服务质量。因为网络资源总是有限的,只要存在抢夺网络资源的情况,就会出现服务质量的要求。比如,
网络总带宽为100Mbps,而BT下载占用了90Mbps,其他业务就只能占用剩下的10Mbps。而如果限制BT下载占
用的最大带宽为50Mbps,则也就提高了其他业务的服务质量,使其他业务能够占用最少50Mbps的带宽,但是
这是在损害BT业务的服务质量为前提的。本文主要从QoS业务应用与服务等级出发,对目前业界使用最多、也
最成熟的一些QoS技术原理逐一进行描述与说明。 在特定的环境里合理地使用这些技术,可以有效地提高服
务质量。

QoS等级

网络中的通信都是由各种应用流组成的,这些应用对网络服务和性能的要求各不相同,比如FTP下载业务希
望能获取尽量多的带宽, 而VoIP语音业务则希望能保证尽量少的延迟等。但是所有这些应用的特殊要求又
取决于网络所能提供的QoS能力,根据网络对应用的控制能力的不同,可以把网络QoS能力分为以下三种等级:
● 尽力而为的服务
只提供基本连接,对于分组何时以及是否被传送到目的地没有任何保证,并且只有当路由器输入/输出缓冲区
队列耗光时分组才会被丢弃。拥塞管理中的FIFO(First In First Out,先进先出)队列其实就是一种尽力
而为的服务。尽力而为的服务实质上并不属于QoS的范畴,因为在转发尽力而为的通信时,并没有提供任何服
务或传送保证。

● 区分服务
在区分服务中,根据服务要求对通信进行分类。网络根据配置好的QoS机制来区分每一类通信,并为之服务。
这种提供QoS的方案通常称作COS。区分服务本身并不提供服务保证,它只是区分通信,从而优先处理某种通
信,因此这种服务也叫做软QoS。区分服务一般用来为一些重要的应用提供端到端的QoS,它通过下列技术来
实现:
1、流量标记与控制技术:它根据报文的ToS或CoS值(对于IP报文是指IP优先级或者DSCP等)IP报文的五元
组(协议、源地址、目的地址、源端口号、目的端口号)等信息进行报文分类,完成报文的标记和流量监管。
目前实现流量监管技术多采用令牌桶机制。
2、拥塞管理与拥塞避免技术:WRED、PQ、CQ、WFQ、CBWFQ等队列技术对拥塞的报文进行缓存和调度,实现
拥塞管理与拥塞避免。

● 保证服务
保证服务需要预留网络资源,确保网络能够满足通信流的特定服务要求。保证服务因此也称作硬QoS,因为它
能够对应用提供严格的服务保证。保证服务是通过信令(signal)来完成的,应用程序首先通知网络它自己
的流量参数和需要的特定服务质量请求,包括带宽、时延等,应用程序一般在收到网络的确认信息,即确认网
络已经为这个应用程序的报文预留了资源后,才开始发送报文。同时应用程序发出的报文应该控制在流量参数
描述的范围以内。负责完成保证服务的信令
为RSVP(Resource Reservation Protocol,资源预留协议),它通知路由器应用程序的QoS需求。RSVP是
在应用程序开始发送报文之前来为该应用申请网络资源的,所以是带外(out-bind)信令。

保证服务要求为单个流预先保留所有连接路径上的网络资源,而当前在Internet主干网络上有着成千上万条应
用流,保证服务如果要为每一条流提供QoS服务就变得不可想象了。因此,保证服务在目前Internet上基本没
有得到什么广泛应用,本文下面所讲述的QoS基本原理也基本都是区分服务的QoS原理。

QoS的基本原理

● 流量分类与标记
流量分类,就是将流量划分为多个优先级或多个服务类,如使用IP报文头的ToS(Type of service,服务
类型)字段的前三位(即IP优先级)来标记报文,可以将报文最多分成23 = 8类;若使用DSCP(Differen
tiated Services Codepoint,区分服务编码点,ToS域的的前6位),则最多可分成26 = 64类。在报文
分类后,就可以将其它的QoS特性应用到不同的分类,实现基于类的拥塞管理、流量整形等。对于MPLS网络
报文,则一般是根据MPLS报文中的EXP域进行处理。EXP域包括3位,虽然RFC 3032把它叫做实验域,但它通
常作为MPLS报文的CoS域,与IP网络的ToS或DSCP域等效。

对于流量的分类,上面提到的关于IP报文的ToS域等与MPLS报文的EXP域等仅是分类的一种情况,其实几乎可
以对报文的任何信息段进行分类,比如也可以根据源IP地址、目的IP地址、源端口号、目的端口号、协议ID
等进行流量的分类。虽然流量分类几乎可以根据报文的任何信息段进行,但是流量分类标记则一般只对IP报文
的ToS域、MPLS报文的EXP域进行标记。流量的标记主要的目的就是让其他处理此报文的应用系统或设备知道
该报文的类别,并根据这种类别对报文进行一些事先约定了的处理。

● 拥塞管理技术
拥塞管理是指网络在发生拥塞时,如何进行管理和控制。处理的方法是使用队列技术。将所有要从一个接口发
出的报文进入多个队列,按照各个队列的优先级进行处理。不同的队列算法用来解决不同的问题,并产生不同
的效果。常用的队列技术有FIFO、PQ、CQ、WFQ、CBWFQ等,下文逐一介绍这些常用队列技术的基本原理。

1、FIFO队列原理
FIFO(First In First Out,先进先出),如下图所示,FIFO队列不对报文进行分类,当报文进入接口的速
度大于接口能发送的速度时,FIFO按报文到达接口的先后顺序让报文进入队列,同时,FIFO在队列的出口让报
文按进队的顺序出队,先进的报文将先出队,后进的报文将后出队。

2、PQ队列原理
PQ(Priority Queuing,优先队列)如下图所示,PQ对报文进行分类,对于IP网络,可以根据IP报文的
ToS、五元组(协议ID、源IP地址、目的IP地址、源端口号、目的端口号)等条件进行分类,对于MPLS网络,
则根据MPLS报文EXP域值进行分类。最终将所有报文分成最多至4类,分别属于PQ的4个队列中的一个,然后,
按报文所属类别将报文送入相应的队列。

PQ的4个队列分别为高优先队列、中优先队列、正常优先队列和低优先队列,它们的优先级依次降低。在报文
出队的时候,PQ首先让高优先队列中的报文出队并发送,直到高优先队列中的报文发送完,然后发送中优先队
列中的报文,同样,直到发送完,然后是正常优先队列和低优先队列。这样,分类时属于较高优先级队列的报
文将会得到优先发送,而较低优先级的报文将会在发生拥塞时被较高优先级的报文抢先。这样会使得实时业务
(如VoIP)的报文能够得到优先处理,非实时业务(如E-Mail)的报文在网络处理完关键业务后的空闲中得到
处理,既保证了实时业务的优先,又充分利用了网络资源。

3、CQ队列原理
CQ(Custom Queuing,定制队列),CQ的分类方法和PQ基本相同,不同的是它最终将所有报文分成最多至
17类,分别属于CQ的17个队列中的一个,然后,按报文的类别将报文送入相应的队列。CQ的17个队列中,0
号队列是优先队列,路由器总是先把0号队列中的报文发送完,然后才处理1到16号队列中的报文,所以0号队
列一般作为系统队列,把实时性要求高的交互式协议报文放到0号队列。1到16号队列可以按用户的定义分配
它们能占用接口带宽的比例,在报文出队的时候,CQ按定义的带宽比例分别从1到16号队列中取一定量的报文
在接口上发送出去。

4、WFQ队列原理
WFQ(Weighted Fair Queuing,加权公平队列),如下图所示,WFQ对报文按流进行分类,对于IP网络,
相同源IP地址、目的IP地址、源端口号、目的端口号、协议号、ToS的报文属于同一流,而对于MPLS网络,
具有相同的标签和EXP域值的报文属于同一个流。每一个流被分配到一个队列,该过程称为散列,采用HASH
算法来自动完成,这种方式会尽量将不同的流分入不同的队列中。WFQ的队列数目N可以配置。在出队的时
候,WFQ按流的优先级(precedence)来分配每个流应占有出口的带宽。优先级的数值越小,所得的带宽
越少。优先级的数值越大,所得的带宽越多。这样就保证了相同优先级业务之间的公平,体现了不同优先级
业务之间的权值。

5、CBWFQ队列原理
CBWFQ(Class Based Weighted Fair Queuing,基于类的加权公平队列),如图所示,CBWFQ首先根据
IP优先级或者DSCP、输入接口、IP报文的五元组等规则来对报文进行分类;对于MPLS网络的LSR,主要是根
据EXP域值进行分类。然后让不同类别的报文进入不同的队列。对于不匹配任何类别的报文,报文被送入系
统定义的缺省类。

CBWFQ有一个低时延队列LLQ(Low Latency Queuing,低时延队列),用来支撑EF(Expedited Forward
ing,快速转发)类业务,被绝对优先发送,保证时延;另外有64个BQ(Bandwidth Queuing,带宽保证队
列),用来支撑AF(Assured Forwarding,确保转发)类业务,可以保证每一个队列的带宽及可控的时延;
还有一个WFQ,对应BE(Best Effort,尽力传送)业务,使用接口剩余带宽进行发送。CBWFQ可根据报文的
输入接口、满足ACL(Access Control List,访问控制列表)情况、IP Precedence、DSCP、EXP、Label
等规则对报文进行分类,进入相应队列,规则可以是通过结构化命令行或网管进行手工配置,也可以是通过MP
LS DiffServ-Aware TE的控制平面进行的自动配置。对于进入LLQ和BQ的报文,要进行测量;考虑到链路层
控制报文的发送、链路层封装开销及物理层开销(如ATM信元税),建议RTP实时队列、LLQ与BQ占用接口的总
带宽不要超过接口带宽的75%。LLQ只采用尾丢弃,BQ可采用尾丢弃、WRED(基于IP优先级,DSCP或MPLSEXP)
,WFQ可采用尾丢弃和RED。CBWFQ可为不同的业务定义不同的调度策略(如带宽、时延等),由于涉及到复杂
的流分类,对于高速接口(GE以上)启用CBWFQ特性系统资源存在一定的开销。

● 拥塞避免原理
由于内存资源的有限,按照传统的处理方法,当队列的长度达到规定的最大长度时,所有到来的报文都被丢
弃。对于TCP报文,如果大量的报文被丢弃,将造成TCP超时,从而引发TCP的慢启动和拥塞避免机制,使TCP
减少报文的发送。当队列同时丢弃多个TCP连接的报文时,将造成多个TCP连接同时进入慢启动和拥塞避免,
称之为:TCP全局同步。这样多个TCP连接发向队列的报文将同时减少,使得发向队列的报文的量不及线路发
送的速度,减少了线路带宽的利用。并且,发向队列的报文的流量总是忽大忽小,使线路的上的流量总在极少
和饱满之间波动。

为了避免这种情况的发生,队列可以采用加权随机早期检测WRED(Weighted Random Early Detection)的
报文丢弃策略(WRED与RED的区别在于前者引入IP优先权,DSCP值,和MPLS EXP来区别丢弃策略)。采用WR
ED时,用户可以设定队列的阈值(threshold)。当队列的长度小于低阈值时,不丢弃报文;当队列的长度在
低阈值和高阈值之间时,WRED开始随机丢弃报文(队列的长度越长,丢弃的概率越高);当队列的长度大于高
阈值时,丢弃所有的报文。WRED和队列机制的关系如下图。

● 流量监管原理
流量监管(Commit Access Rate,简称CAR)的典型作用是限制进入某一网络的某一连接的流量与突发。在
报文满足一定的条件时,如某个连接的报文流量过大,流量监管就可以对该报文采取不同的处理动作,例如
丢弃报文,或重新设置报文的优先级等。通常的用法是使用CAR来限制某类报文的流量,例如限制HTTP报文不
能占用超过50%的网络带宽。CAR利用令牌桶(Token Bucket,简称TB)进行流量控制。下图所示为利用CAR
进行流量控制的基本处理过程。

首先,根据预先设置的匹配规则来对报文进行分类,如果是没有规定流量特性的报文,就直接继续发送,并不
需要经过令牌桶的处理;如果是需要进行流量控制的报文,则会进入令牌桶中进行处理。如果令牌桶中有足够
的令牌可以用来发送报文,则允许报文通过,报文可以被继续发送下去。如果令牌桶中的令牌不满足报文的发
送条件,则报文被丢弃。这样,就可以对某类报文的流量进行控制。在实际应用中,CAR不仅可以用来进行流
量控制,还可以进行报文的标记(mark)或重新标记(re-mark)。具体来讲就是CAR可以设置IP报文的优先
级或修改IP报文的优先级,达到标记报文的目的。

● 流量整型原理
通用流量整形(Generic Traffic Shaping,简称GTS)可以对不规则或不符合预定流量特性的流量进行整
形,以利于网络上下游之间的带宽匹配。GTS与CAR一样,均采用了令牌桶技术来控制流量。GTS与CAR的主要
区别在于:利用CAR进行报文流量控制时,对不符合流量特性的报文进行丢弃;而GTS对于不符合流量特性的
报文则是进行缓冲,减少了报文的丢弃,同时满足报文的流量特性。GTS的基本处理过程如下图所示,其中用
于缓存报文的队列称为GTS队列

● 物理接口总速率限制原理
利用物理接口总速率限制(Line Rate,简称LR)可以在一个物理接口上,限制接口发送报文(包括紧急报
文)的总速率。LR的处理过程仍然采用令牌桶进行流量控制。如果用户在路由器
的某个接口上配置了LR,规定了流量特性,则所有经由该接口发送的报文首先要经过LR的令牌桶进行处理。
如果令牌桶中有足够的令牌可以用来发送报文,则报文可以发送。如果令牌桶中的令牌不满足报文的发送条
件,则报文入QoS队列进行拥塞管理。这样,就可以对通过该物理接口的报文流量进行控制。LR的基本处理过
程如下图所示:

其他提高QoS的技术

● 链路效率机制
链路效率机制,用于改善链路的性能,间接提高网络的QoS,如降低链路发包的时延(针对特定业务)、调
整有效带宽。链路效率机制有很多种,下面介绍两种比较典型的链路效率机制及其基本原理。

1、链路分片与交叉(Link Fragment & Interleave,LFI),对于低速链路,即使为语音等实时业务报文
配置了高优先级队列(如RTP优先队列或LLQ),也不能够保证其时延与抖动,原因在于接口在发送其他数据
报文的瞬间,语音业务报文只能等待,而对于低速接口发送较大的数据报文要花费相当的时间。采用LFI以后
,数据报文(非RTP实时队列和LLQ中的报文)在发送前被分片、逐一发送,而此时如果有语音报文到达则被
优先发送,从而保证了语音等实时业务的时延与抖动。LFI主要用于低速链路。

如下图所示,应用LFI技术,在大报文出队的时候,可以将其分为定制长度的小片报文,这就使RTP优先队列
或LLQ中的报文不必等到大片报文发完后再得到调度,它等候的时间只是其中小片报文的发送时间,这样就很
大程度的降低了低速链路因为发送大片报文造成的时延。

2、RTP报文头压缩(RTP Header Compression,cRTP),cRTP主要在低速链路上使用,可将40字节的
IP/UDP/RTP头压缩到2~4个字节(不使用校验和可到2字节),提高链路的利用率。cRTP主要得益于同一
会话的语音分组头和语音分组头之间的差别往往是不变的,因此只需传递增量。

RTP协议用于在IP网络上承载语音、视频等实时多媒体业务。RTP报文包括数据部分和头部分,RTP的数据
部分相对小,而RTP的报头部分较大。12字节的RTP头,加上20字节的IP头和8字节的UDP头,就是40字节的
IP/UDP/RTP头。而RTP典型的负载是20字节到160字节。为了避免不必要的带宽消耗,可以使用cRTP特性对
报文头进行压缩。cRTP可以将IP/UDP/RTP头从40字节压缩到2~5字节,对于40字节的负载,头压缩到5字节
,压缩比为(40+40)/(40+5),约为1.78,可见效果是相当可观的,可以有效的减少链路,尤其是低速链
路带宽的消耗。

● 链路层QoS技术
链路层QoS技术主要针对ATM(Asynchronous Transfer Mode,异步传输模式)、帧中继、令牌环等链路
层协议支持QoS。作为一种面向连接的技术,ATM提供对QoS最强有力的支持,而且可以基于每个连接提供特
定的QoS保证。帧中继网络确保连接的CIR(Committed Information Rate,承诺信息速率)最小,即在
网络拥塞时,传输速度不能小于这个值。令牌环和更新的IEEE802.1p标准具有区分服务的机制。

● IPv6 QoS
IPv6在报头中保留了类似IPv4的TOS域,称为传输级别域,以继续为IP提供区分QoS服务。同时IPv6报头中
增加20比特流标签(Flow Label)域。流标签更好支持综合QoS服务,可以直接标识流,并配合RSVP实现
资源预留。IPv4的流分类器是根据源地址、目的地址、源端口号、目的端口号和传输协议类型的五元组确定
。由于分组的拆分或加密,有些域往往难以获得,对高层报头的访问,也可能会阻碍新协议的引入。IPv6中
一个流可以由源IPv6地址和非空的流标签唯一地标
识。源可以通过逐跳扩展头或控制协议RSVP等向转发路径的中间节点建立流状态。IPv6节点接收到一个有标
记的IPv6分组时,可以用流标记、源地址将分组分类到某个流。根据在一系列IPv6节点上建立的流状态,可
以对分组提供一些流特殊处理。IPv6 QoS具体实施还在草案讨论制定中,还有一些具体应用问题需要考虑。

● 基于QoS的路由
整网或局部网络的QoS控制通常通过对路由与信令的控制达到对业务流传输的直接控制,因此路由直接关系到
网络性能,所以QoS路由成为解决QoS问题的一项关键技术。QoS路由研究中需要遇到的问题包括以下几个方面:
1、实时应用往往会对延时,延时抖动,带宽,丢失率,业务代价等多个参数同时提出性能要求,例如,实时
多媒体业务会对延时和延时和延时抖动同时提出要求,这些参数相互独立时,选择满足多个参数限制的路由直
接关系到路由算法的可实现性。
2、同时承载多种QoS要求不同的业务时,网络性能优化困难,扩展困难,尤其是QoS和尽力而为
(Best Effort)的业务独立共存时,很难确定最优的操作点。
3、每个路由节点状态信息的存储量大。QoS 路由中,每个路由节点需记录的状态参量将增多,如状态信息的
存储量随网络节点个数的增加而指数性增加,将限制网络的扩展。
4、传输负载的抖动等动态信息都可能导致网络状态变化,这些变化因素直接影响全网状态信息的准确性,同
时也直接影响算法的性能。

QoS业务分类标准
业务优先级分类的基本模型是区分不同类型的业务,在数据包头的特定域携带该优先级,然后网络节点根据
包头携带的优先级实施不同的转发处理。
● Inter-Serv模型
IETF出版RFC1633提出Inter-Serv模型,该模型使用资源预留(RSVP)协议,RSVP运行在从源端到目的端
的每个路由器上,可以监视每个流,以防止其消耗比其请求、预留和预先购买的要多的资源。这种体系能够
明确区分并保证每一个业务流的服务质量,为网络提供最细粒度化的服务质量区分。Inter-Serv模型能够
在IP网上提供端到端的QoS保证。但是,Inter-Serv模型对路由器的要求很高,当网络中的数据流数量很大
时,路由器的存储和处理能力会遇到很大的压力。因此,Inter-Serv模型可扩展性很差,难以在Internet
核心网络实施,目前业界普遍认为Inter-Serv模型有可能会应用在网络的边缘上。

● Diff-Serv模型
区分服务(DiffServ)是IETF工作组为了克服Inter-Serv的可扩展性差在1998年提出的另一个服务模型,
目的是制定一个可扩展性相对较强的方法来保证IP的服务质量。在Diff-Serv模型中,业务流被划分成不同
的差分服务类。一个业务流的差分服务类由其IP包头中的差分服务标记字段(Different Service Code
Point,简称DSCP)来表示。在实施DiffServ的网络中,每一个路由器都会根据数据包的DSCP字段执行相
应的PHB(Per Hop Behavior)行为。区分服务只包含有限数量的业务级别,状态信息的数量少,因此实现简
单,扩展性较好。它的不足之处是很难提供基于流的端到端的质量保证。目前,区分服务是业界认同的IP骨
干网的QoS解决方案,但是由于标准还不够详尽,不同运营商的DiffServ网络之间的互通还存在困难。

QoS缩略语列表


文章作者: kclouder
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 kclouder !
  目录