QoS(Quality of Service)服务质量,是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术。
1.QoS参数
衡量服务质量QoS的参数主要包括:
端到端延迟(Delay):包括传输时延、传播时延、排队时延。
延迟抖动(Jitter):抖动是网络延迟的变化量,是由于同一应用的任意两个相邻分组在传输路由中经过不同的网络延迟产生的。
抖动控制对多媒体应用十分重要。
分组丢失率(Loss Ratio):网络拥塞时由于缓冲溢出或分组到达延迟超过延迟上界,分组将被丢弃。这些丢弃的分组将直接影
响接收端的回放质量。不同的多媒体应用能忍受不同的分组丢失。
吞吐量(Throughput):吞吐量对于数据传输应用是一个重要的QoS参数,它直接反映了在一段时间间隔中网络所传输的通信量。
但吞吐量对某些应用不适于作为QoS的直接参数,特别是突发的通信量。
2.改进QoS的技术
这里简要地讨论四种常用的改进服务质量的方法:调度,通信量整形,许可控制和资源预留。
2.1.调度
来自不同数据流的分组到达交换机或路由器,并由它进行处理,一种好的调度技术会以公平合理的方式来对待不同的数据流,已经
设计了多种调度技术用来改进服务质量,在这里讨论其中三种技术:FIFO队列,优先权队列和加权公平队列。
2.1.1.先进先出队列
在先进先出(first-in,first-out,FIFO)队列中,分组在缓冲区(队列)中等待,直到节点(路由器或者交换机)处理它们为止,如果
平均到达速率高于平均处理速率,那么队列将会被填满,新的分区就会被丢弃。
2.1.2.优先权队列
在优先权队列(priority queuing)中,每个到来的分组都被分配了一个不同的优先权,每个优先权都有自己的队列。最高优先权的队列
中的分组首先被得到处理,最低优先权的队列的分组最后被处理。
与FIFO队列相比,优先权对垒能提供更好的QoS,因为较高的优先权的通信量能用较少的延迟到达目的端。但是优先权队列也有潜在的
缺点,如果高优先权的队列有持续的通信量,那么较低优先权队列中的分组将永远得不到处理。这种情形称为“饥饿”。
2.1.3.加权公平队列
较好的调度算法是加权公平队列(weighted fair queuing)。在这种技术中,分组仍然被分为不同的类,并且属于不同的队列,但是,队列
是基于队列的优先权来分配权重的,较高的优先权就意味着较高的权重,系统以轮换的方式来处理每个对列中的分组,所处理的分组数量等于
相应队列的权重,例如:如果这些权重是3,2和1,那么就对第一队列中的3个分组进行处理,对第二队列中的2分分组进行处理,对第三队列中的
1个分组进行处理。
2.2.通信量整形
通信量整形(traffic shaping)是一种控制发送到网络中的通信量和速率的机制。通信量整形主要有二种技术:漏桶和令牌桶。
2.2.1漏桶
如果桶在底部有一个小洞,只要桶中有水,水便从桶中以不变的速率漏下,如果桶中有水,水漏的速率并不依赖于将水倒入桶中的速率。输入速率
可以发生变化,但是输出速率是恒定的。在网路中,一种叫漏桶(leaky bucket)的技术能防止突发通信量。下图说明了漏桶的效果。
简单漏桶的实现过程如图所示:
如果通信量由固定大小的分组(例如:ATM中的信元)构成,那么在每个时钟单位时间内,进程从队列中移除固定数量的分组,如果通信量
是由变长分组组成的,那么固定输出的速率必须是基于字节个数或位数。
以下是变长分组的算法:
1.在计时开始时,将计数器初始化为n。
2.如果n比分组的出长度长,就发送分组,并将计数器的值减去分组的长度。重复该步骤,知道n值小于分组的长度。
3.重新设置计数器,并返回到步骤1.
2.2.2.令牌桶
漏桶算法有很大的局限性,他不能给空闲的主机提供信用。例如,如果一台主机在一段时间内没有发送数据,其漏桶就变成空桶了。现在即使
主机中有突发性数据,漏桶也只能允许平均速率的数据,此时并没有考虑主机空闲的时间,另一方面,令牌桶(token bucket)算法允许空闲主机
以令牌的形式为未来积累信用,在每个时钟单位时间内,系统发送n个令牌到桶中,在每个数据信元发生后,系统就从中去掉一个令牌,例如,假设
n是100,主机空闲了100个时钟单位时间,那么令牌桶便收集了100*100个令牌,主机可以在一个时钟单位时间消费所有这些令牌来发送10000个信元,
或者花去1000个时钟单位时间,每个时钟单位时间内发送10个信元。
2.2.3.令牌桶和漏桶的结合使用
可将两种技术结合起来给空闲主机提供信用,同时调整通信量,在令牌桶中应用漏桶,并且漏桶的速率应比将令牌放入桶中的速率高。
2.3.资源预留
数据流需要诸如缓冲区,带宽,CPU时间等资源,如果提前对这些资源进行预留,将会提高服务质量,后面会讨论一个称为综合业务的QoS模型,
该模型极大地依赖资源预留来提高服务质量。
1.4.许可控制
许可控制指的是由路由器或交换机使用的一种机制,它基于一个称为数据流规范的预定义参数来接收或者拒绝数据流,在路由器接收数据流并对其
进行处理之前,它检查数据流规范,查看其性能(根据带宽,缓冲区大小以及CPU速度等)和它与其他数据流先前的约定是否处理新的数据流。
3.QoS模型
目前QoS主要有两种解决模型:综合业务(IntServ)和差分业务(DiffServ)。
3.1.综合业务
是一种端到端基于流的QoS技术,基本思想就在于以资源预留的方式来实现QoS保障。其服务模型在IETF RFC1633中进行了定义。RFC1633将
资源预留协议RSVP作为IntServ结构中的核心信令协议。
IntServ/RSVP提供3种层次的业务:
端到端的质量保证型服务:保证带宽、限制延迟、无丢包。
可控负载型服务:类似于在当前负载较轻网络中实现尽力而为业务的服务质量。
尽力而为的服务:类似于当前Internet上尽力而为的服务。
从技术角度讲,IntServ/RSVP在目前的网络上是一种行之有效的QoS保障方法,可提供严格的端到端细粒度的服务质量,但其对网络节点要求高,
扩展性差。因此目前端到端全网支持的IntServ实用性很低。
3.2.差分业务
DiffServ是IETF在1998年推出的一种基于类的QoS技术,主要用于骨干网。使用DiffServ,在网络入口处根据服务要求对业务进行分类、流量控制,
在网络中根据实施好的QoS机制来区分每一类通信,并为之服务(包括资源分配、队列调度、分组丢弃策略等)。
与IntServ类似,DiffServ也定义了3种服务类型:
尽力而为的服务:类似于目前Internet上尽力而为的服务。
奖赏服务:为用户提供低延迟、低抖动、低丢包率和保证带宽的端到端或者网络边界到边界的传输服务。
确保服务:确保服务通过控制丢包优先级,提供比“尽力而为”服务更好的服务。
DiffServ不面向单个业务流,而采用聚合机制将具有相同特性的若干业务流聚合起来,为整个聚合流提供服务,具有良好的扩张性,同时,DiffServ
相对更容易在现有IP网络及产品中实现,因此目前商用网络中QoS基本上都是基于DiffServ模型实现,但其难做到基于流的端到端的QoS,颗粒度较差。