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,颗粒度较差。

《数据通信与网络》笔记--QoS的更多相关文章

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

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

  2. 《数据通信与网络》笔记--虚电路网络:帧中继和ATM

    在之前的文章中已经介绍过虚电路交换,详细请参见:http://blog.csdn.net/todd911/article/details/9069447 这边介绍下使用虚电路交换的2中WAN技术:帧中 ...

  3. 《数据通信与网络》笔记--TCP中的拥塞控制

    1.拥塞窗口 发送方窗口的大小不仅取决于接收方,而.而且还取决于网络拥塞的情况. 发送方有2种信息:接收方通告的窗口大小和拥塞窗口的大小,实际的窗口大小事这两者中的最小者. 实际窗口大小 = min( ...

  4. 《数据通信与网络》笔记--IPSec

    1.IP层的安全:IPSec IP层安全(IP security,IPsec)是由因特网工程任务组(IETF)设计用来为IP层的分组提供安全的一组协议.IPsec帮助 生成经过鉴别的与安全的IP层的分 ...

  5. 《数据通信与网络》笔记--SCTP

    SCTP(stream control transmission protocol)是一种新的可靠的,面向报文的传输层控制协议.它兼有UDP和TCP的特性,它是可靠的面向报文的协议,它保存报文的边界, ...

  6. 《数据通信与网络》笔记--SSL/TLS

    上次简单地介绍了IP层的安全,今天来介绍下在传输层提供安全性最主要的2个协议:安全套接字层(SSL)协议和传输 层安全(TLS)协议.TLS实际上就是SSL的IETF版本. 1.SSL服务 设计安全套 ...

  7. 网络笔记02数据解析 -1-JSON解析

    1.JSON解析 1.JSON介绍 JSON是最网络传输数据最为广泛的数据格式,没有之一,出身草根,是Javascript的子集,专门负责描述数据格式.Javascript是网页开发的一种脚本语言,和 ...

  8. 网络笔记-unity 实现AOP

    该文章来自网络,如有冒犯,请及时联系! 前提 引用以下文件 Microsoft.Practices.ObjectBuilder2.dll Microsoft.Practices.Unity.dll M ...

  9. Android网络笔记

    (1)网络状态: ConnectivityManager负责管理所有连接的服务(如:系统服务,3G/4G,WiFi,蓝牙等).查看网络状态的类是NetWorkInfo,它是通过Connectivity ...

随机推荐

  1. uEditor独立图片上传

    项目中.上传图片,非常希望有一款比较兼容的查件. 网上找了一些,图片上传立刻显示的js代码,还有uploadify.都会碰到这样那样的不兼容和其它头疼的问题. 后来想,干脆就用php的上传类最干脆.但 ...

  2. (原创)CityEngine 2014和ArcGIS 10.3冲突问题的解决

      先卸载ArcGIS License Manager 10.3 安装ArcGIS License Manager 10.2.2 用keygen算出ArcGIS 10.3的许可,似乎本许可在ArcGI ...

  3. Android Paint中setTextSize

    界面适配的时候发现Paint.setTextSize与TextView.setTextSize传入的单位不一致.Paint.setTextSize传入的单位是px,TextView.setTextSi ...

  4. P134、面试题22:栈的压入、弹出序列

    题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1.2.3.4.5是某栈的压栈序列,序列4,5,3,2,1是该压栈序列对 ...

  5. Java API ——Scanner类

    1.Scanner类概述 JDK5以后用于获取用户的键盘输入,一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器.Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空 ...

  6. 2014年最火的 21个JavaScript 框架

    下面,我们将会介绍 2014 年最火的 21 款JavaScript 框架,专为前端开发者准备的哦:)众所周知, JavaScript 框架是 JavaScript编程语言最棒的特性之一. JavaS ...

  7. dom4j 的小小测试

    @Test public void gogo() throws IOException{ InputStream in = this.getClass().getClassLoader() .getR ...

  8. 函数fsp_alloc_seg_inode

    从inode page中申请inode entry inode = fsp_alloc_seg_inode(space_header, mtr); /************************* ...

  9. poj3254

    还是那句老话:dp关键在状态: 求有多少种排布方式,是任意两头牛不相邻(有些地方不能放): 不用心,一开始还纠结了半天 和之前USACO上某题方法是一样的,每一行放或不放只有两种情况 把它当作一个二进 ...

  10. UVa 201 Squares

    题意: 给出这样一个图,求一共有多少个大小不同或位置不同的正方形. 分析: 这种题一看就有思路,最开始的想法就是枚举正方形的位置,需要二重循环,枚举边长一重循环,判断是否为正方形又需要一重循环,复杂度 ...