QoS理论篇

1      QoS的产生

随着网络技术的飞速发展,IP网络已经从当初的单一数据网络向集成数据、语音、视频、游戏的多业务网络转变。网络中所承载的数据呈几何级倍数增长,而且这些业务对网络带宽、时延有着极高的要求。同时,由于硬件芯片研发的难度大、周期长、成本高等原因,带宽逐渐成为互联网发展的瓶颈,导致网络发生拥塞,产生丢包,业务质量下降,严重时甚至造成业务不可用。

要在IP网络上开展这些业务,就必须解决网络拥塞问题,最好的解决办法是增加网络带宽。但从运营、维护的成本考虑,一味增加网络带宽是不现实的。

QoS(Quality of Service,服务质量)技术就是在这种背景下发展起来的。QoS技术本身不会增加网络带宽,而是在有限的带宽资源下,如何平衡地为各种业务分配带宽,针对各种业务的不同需求,为其提供端到端的服务质量保证。

2      QoS的度量标准

既然要提高网络质量,首先我们需要了解一下哪些因素会影响网络的服务质量。从传统意义上来讲,影响网络质量的因素包括传输链路的带宽、报文传送时延和抖动、以及丢包率等。因此,要提高网络的服务质量,就可以从保证传输链路的带宽,降低报文传送的时延和抖动,降低丢包率等方面着手。而这些影响网络服务质量的因素,也就成为QoS的度量指标。

2.1      带宽

带宽也称为吞吐量,是指在一个固定的时间内(1秒),从网络一端传输到另一端的最大数据位数,也可以理解为网络的两个节点之间特定数据流的平均速率。带宽的单位是比特/秒(bit/s)。

在网络中,有两个常见的与带宽有关的概念:上行速率和下行速率。上行速率是指用户向网络发送信息时的数据传输速率,下行速率是指网络向用户发送信息时的传输速率。例如,用户用FTP上传文件到网络,影响上传速度的就是上行速率;而从网络下载文件,影响***的就是下行速率。

通常情况下,带宽越大,数据通行能力就越强,网络服务质量就越好。这就好比高速公路,车道越多,车辆通行能力就越强,发生堵车的概率就越低。对于网络用户而言,都希望带宽越大越好,但是与其相应的,网络运营和维护成本也就越高。因此,在互联网日益强大和业务多样化的情况下,带宽成为了严重的瓶颈。

2.2      时延

时延是指一个报文或分组从网络的发送端到接收端所需要的延迟时间,一般由传输延迟及处理延迟组成。

以语音传输为例,时延是指从说话者开始说话到对方听到所说内容的时间。一般人们察觉不到小于100毫秒的延迟。当延迟在100毫秒和300毫秒之间时,说话者可以察觉到对方回复的轻微停顿,这种停顿可能会使通话双方都感觉到不舒服。超过300毫秒,延迟就会很明显,用户开始互相等待对方的回复。当通话的一方不能及时接收到期望的回复时,说话者可能会重复所说的话,这样会与远端延迟的回复碰撞,导致重复。

图1 时延对网络质量的影响

2.3      抖动

如果网络发生拥塞,导致通过同一连接传输的分组延迟各不相同。抖动用来描述延迟变化的程度,也就是最大延迟与最小延迟的时间差。

如下图所示,员工A向员工B发送一句语音“我留,他不留“。假设每个字是一个分组,发送端将语音分割为6个分组,以均匀的时间间隔顺序发出。由于IP网络的复杂性,每个分组时延可能不同,导致在接收端收到分组时各分组之间的时间间隔与发送时的时间间隔不一致。加上说话者的语气等因素,员工B可能会将接收到的语音理解成“我留他?不留!”,从而造成语义上的误解。

图2 抖动对网络质量的影响

所以抖动对于实时性的传输是一个重要参数,特别是语音和视像等实时业务是极不容忍抖动的,抖动会造成话音或视像的断续。

抖动也会影响一些网络协议的处理。有些协议是按固定的时间间隔发送交互性报文,抖动过大会导致协议震荡。

所有传输系统都有抖动,只要抖动在规定容差之内就不会影响服务质量。利用缓存可以克服过量的抖动,但这将增加时延。

2.4      丢包率

丢包率是指在网络传输过程中丢失报文的数量占传输报文总数的百分比。少量的丢包对业务的影响并不大,例如,在语音传输中,丢失一个比特或一个分组的信息,通话双方往往注意不到。在视频的传输中,丢失一个比特或一个分组可能造成在屏幕上瞬间的波形干扰,但能很快恢复正常。

使用TCP传送数据可以处理少量的丢包,因为TCP允许丢失的信息重发。但大量的丢包会影响传输效率。在QoS中,我们关注的是丢包的统计数据,也就是丢包率。所以正常传输时,网络丢包率应该控制在一定范围内即可。

3      QoS服务模型

现在我们已经了解了QoS的度量指标。那么,如何在网络中通过部署来保证这些指标在一定的合理范围内,从而提高网络的服务质量呢?这就涉及到QoS模型。需要说明的是,QoS模型不是一个具体功能,而是端到端QoS设计的一个方案。例如,网络中的两个主机通信时,中间可能会跨越各种各样的设备。只有当网络中所有设备都遵循统一的QoS服务模型时,才能实现端到端的质量保证。IETF、ITU-T等国际组织都为自己所关注的业务设计了QoS模型。下面就来介绍一下主流的三大QoS模型。

3.1      Best-Effort服务模型

Best-Effort是最简单也是最早出现的QoS服务模型。在这种模型中,网络中的设备上除了保证网络之间路由可达之外,不需要部署额外的功能。应用程序可以在任何时候发出任意数量的报文,而且不需要通知网络。网络只是尽最大的可能性来发送报文,但对时延、可靠性等性能不提供任何保证。

在理想状态下,如果有足够的带宽,Best-Effort是最简单的服务模式。而实际上,这种“简单“带来一定的限制。因此,Best-Effort适用于对时延、可靠性等性能要求不高的业务,如FTP、E-Mail等。

3.2      IntServ服务模型

由于网络带宽的限制,Best-Effort服务模型不能为一些实时性要求高的业务提供有力的质量保障,于是IETF在1994年的RFC1633中提出了InterServ模型。

IntServ模型是指应用程序在发送报文前,首先通过RSVP(Resource Reservation Protocol)信令向网络描述它的流量参数。网络在流量参数描述的范围内,预留资源(如带宽、优先级)以承诺满足该请求。在收到确认信息,确定网络已经为这个应用程序的报文预留了资源后,应用程序才开始发送报文。应用程序发送的报文应该控制在流量参数描述的范围内。网络节点需要为每条数据流维护一个状态,并基于这个状态执行相应的QoS动作,来满足对应用程序的承诺。

图3 IntServ服务模型

简单来说,InterServ模型下,网络需要为某个业务预留一条专用通道。这种资源预留的状态称为“软状态”。为了保证这条通道不被占用,RSVP会定期发送大量协议报文进行探测。通过RSVP,各网元可以判断是否有足够的资源可以预留。只有所有的网元都预留了足够的资源,专用通道方可建立。

IntServ模型为业务提供了一套端到端的保障制度,其优点显而易见,但是其局限性一样明显。

l  实现难度大:IntServ模型要求端到端所有网络节点支持。而网络上存在不同厂商的设备,核心层、汇聚层和接入层的设备功能参差不齐,要所有节点都支持IntServ模型,很难达到这方面要求。

l  资源利用率低:为每条数据流预留一条路径,意味着一条路径只为一条数据流服务而不能为其他数据流复用。这样导致有限的网络资源不能得到充分的利用。

l  带来额外带宽占用:为了保证这条通道不被占用,RSVP会发送大量协议报文定期进行刷新探测,这在无形中增大了网络的负担。

3.3      DiffServ服务模型

为了克服InterServ的可扩展性差的问题,IETF在1998年提出了DiffServ服务模型。

DiffServ服务模型,也叫差分服务模型,意思就是提供有差别的服务。就好比银行有黑金卡用户、金卡用户和普通卡用户,银行为不同用户提供的服务也不相同:黑金卡用户享有专人专区服务;金卡用户不能享有专人专区的服务,但是可以享受优先办理业务的特权;普通卡用户则只能按照正常的排队顺序办理业务。这就银行提供的差分服务。

DiffServ模型中,网络中的流量可以根据多种条件被分成多个类,或者标记不同的优先级。这个过程类似于将报文分为黑金卡用户、金卡用户和普通卡用户。当网络出现拥塞时,不同的类会享受不同的优先处理,从而实现差分服务。同一类的业务在网络中会被聚合起来统一发送,保证相同的延迟、抖动、丢包率等QoS指标。

DiffServ模型不需要信令,也不需要预先向网络提出资源申请。业务分类和汇聚工作在网络的边缘节点进行,后续设备根据分类识别出不同的业务,并提供相应的服务。

当前网络中承载的业务类型越来越多,DiffServ模型显得相当灵活,可以说是为现在的网络量身定做的。因此,DiffServ模型成为QoS设计和应用的主要方案。

4      基于DiffServ模型的QoS组成及应用

DiffServ模型包含了四大组件,通过这四大组件实现端到端的QoS:

l  报文分类和标记

要实现差分服务,首先需要将报文分为不同的类别。类别确定好了,设备才能针对性地提供服务。

l  流量监管、流量整形和接口限速

流量监管是将流量限制在特定的带宽内。当业务流量超过额定带宽时,超过的流量将被丢弃。这样可以防止个别业务或用户无限制地占用带宽。

流量整形是一种主动调整流的输出速率的流控措施,使流量比较平稳地传送给下游设备,避免不必要的报文丢弃和拥塞。流量整形通常在接口出方向使用。

接口限速是对一个接口上发送或者接收全部报文的总速率进行限制。当不需要对报文类型进行进一步细化分类而要限制通过接口全部流量的速率时,接口限速功能可以简化配置。

l  拥塞管理

拥塞管理是在网络发生拥塞时,通过一定的调度算法安排报文的转发次序,保证网络可以尽快恢复正常。拥塞管理通常在接口出方向使用。

l  拥塞避免

拥塞避免可以监视网络资源(如队列或内存缓冲区)的使用情况。在拥塞有加剧的趋势时,主动丢弃报文,避免网络拥塞继续加剧。拥塞管理通常在接口出方向使用。

综上所述,报文分类是基础,是有区别地实施服务的前提,流量监管、流量整形和接口限速主要用于预防拥塞,拥塞管理和拥塞避免是用来解决拥塞。

QoS各个组件在设备上的处理顺序如下图所示。

图4 QoS技术处理流程

5      QoS在企业网中的应用

在企业网络中,QoS的一系列技术不要求在同一台设备上应用,而应根据业务需要在不同位置应用。

图5 QoS技术在企业网络中的应用

理论上来说,各层次设备的功能如下:

l  接入层业务识别

接入交换机LSW1作为边界交换机,在接入侧需要担负数据流的识别、分类以及流标记的工作;在网络侧需要担负不同应用数据流的拥塞管理、拥塞避免、流量整形等工作。

l  汇聚层/核心层提供差分服务

汇聚层和核心层设备端口信任基于接入层标识的QoS参数,通过队列调度、流量整形、拥塞避免等方式实施QoS策略,保证高优先级业务优先获得调度。

而实际应用时,具体功能的部署完全取决于业务需求。在图5的组网中,可以在SwitchA应用报文分类和标记,用以区分不同部门的报文,然后在接口GE1/0/2出方向应用流量监管,限制进入广域网的流量。如果不需要区分来自不同部门的报文,可以直接在接口GE1/0/2出方向应用接口限速,限制进入广域网的流量。

当然,同一种QoS技术,也可能因为应用的位置不同而作用范围不同。如图5所示,如果在LSW1的接口GE0/0/1和GE0/0/2应用出方向接口限速,则可以分别保证部门1、部门2可以使用的最大带宽。如果在SwitchA的接口GE1/0/1应用入方向接口限速,则保证的是部门1和部门2一共可以使用的最大带宽,并不能保证部门1、部门2分别可以使用的最大带宽。

6      结束语

QoS的各个组成部分与QoS的度量指标并不是一一对应的。也就是说,并不是一个QoS组成就能保证一项QoS指标。实际上,QoS的各个组成部分是通过相互结合使用来保证服务质量的。例如,报文分类和标记是实现差分服务的前提和基础。流量监管、流量整形、接口限速、拥塞管理和拥塞避免是根据分类或标记结果,从不同方面对网络流量及其分配的资源实施控制,是提供差分服务的具体体现。下一期,我们将详细介绍实现QoS差分服务的一种工具—MQC。

QoS专题-第1期-QoS理论篇的更多相关文章

  1. QoS专题-第5期-QoS实现之队列调度与报文丢弃

    QoS实现之队列调度与报文丢弃 前面的专题里面介绍了通过优先级映射或者MQC对报文进行分类和标记,那么分类之后要做什么呢?那就是根据分类结果对报文进行流量控制处理.拥塞管理和拥塞避免就是两种流量控制手 ...

  2. QoS专题-第4期-QoS实现之限速

    QoS实现之限速 通过前面几篇介绍,大家都知道了MQC是实现QoS的技术,优先级映射是实现QoS的前提条件.读完之后也许无法直观感觉到QoS是如何提升网络服务质量.今天小编给大家介绍限速,通过实验,可 ...

  3. QoS专题-第2期-QoS实现工具之MQC

    QoS实现工具之MQC QoS技术可以对网络中报文进行分类处理,根据优先级提供不同的差分服务,如何实现这种差分服务呢?我们有一种强大的配置方法-模块化QoS命令行MQC(Modular QoS Com ...

  4. QoS专题-第3期-QoS实现之报文简单分类与标记

    QoS实现之报文简单分类与标记 上一期专题我们讲到,MQC中的流分类可以实现报文的分类,流行为可以对报文进行重标记,从而实现对流量的精细化差分服务.而优先级映射则可以根据802.1p优先级.DSCP优 ...

  5. 【PHPsocket编程专题(理论篇)】初步理解TCP/IP、Http、Socket.md

    前言 我们平时说的最多的socket是什么呢,实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API).那TCP/IP又是什么呢?TCP/IP是ISO/OS ...

  6. 如何编写高质量的 JS 函数(3) --函数式编程[理论篇]

    本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/EWSqZuujHIRyx8Eb2SSidQ作者:杨昆 [编写高质量函数系列]中, <如何 ...

  7. RabbitMQ学习总结 第一篇:理论篇

    目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...

  8. 极客技术专题【008期】:CSS3核心技术:选择器

    日期:2013-8-19  来源:GBin1.com 技术专题介绍 技术专题:CSS3核心技术:选择器 专题演讲稿:CSS3选择器 分享人:知名前端技术博客 - w3cplus.com 博主 - 大漠 ...

  9. 极客技术专题【007期】:jQuery初学者入门 - jQuery Event

    日期:2013-8-19  来源:GBin1.com 技术专题介绍 专题:jQuery初学者入门[第三讲:jQuery Event] 分享人:极客标签技术编辑 -Lana (请站内关注分享人) 授课时 ...

随机推荐

  1. day 6 汽车4S店铺

    1.版本1:大框架 class CarStore(object): '''定义一个汽车店铺类''' pass class Car(object): '''定义一个汽车类''' pass car_sto ...

  2. 【LG3237】[HNOI2014]米特运输

    题面 洛谷 题解 代码 #include <iostream> #include <cstdio> #include <cstdlib> #include < ...

  3. Swing 解决 idea 找不到创建gui form的问题

    果然,寄希望于百度google不如自己动手,还是得吃透文档, 然后就是对于别人的博客要严格对照步骤来,否则都容易达不到效果 这边gui form在idea下找不到创建,百度google一个说的也没有, ...

  4. C#之#if #endif的简单用法

    有时候我们看到别人的代码中有#if #endif,其实这是通过不同版本来选择运行哪段代码,和咱们的if,else是一样的.下面看下简单的用法 #if DEBUG txt_display.Text = ...

  5. cookie,session傻傻分不清楚?

    做了这么多年测试,还是分不清什么是cookie,什么是session?很正常,很多初级开发工程师可能到现在都搞不清什么是session,cookie相对来说会简单很多. 下面这篇文章希望能够帮助大家分 ...

  6. Redis 总结精讲 看一篇成高手系统4

    本文围绕以下几点进行阐述 1.为什么使用redis2.使用redis有什么缺点3.单线程的redis为什么这么快4.redis的数据类型,以及每种数据类型的使用场景5.redis的过期策略以及内存淘汰 ...

  7. Qt绘图

    Qt绘图的设置 QPainter::Antialiasing // 反锯齿 QPainter::TextAntialiasing // 文字反锯齿 QPainter::SmoothPixmapTran ...

  8. Amazon移除差评适用范围 - Amazon request for the feedback removal

    Greetings from Amazon Seller Support, Please accept my sincere apologies for the inconvenience cause ...

  9. hadoop的safemode 安全模式

    hadoop启动检查副本块数,就会进入safemode safemode的相关情况 虽然不能进行修改文件的操作,但是可以浏览目录结构.查看文件内容的. 在命令行下是可以控制安全模式的进入.退出和查看的 ...

  10. Java 学习笔记 ------第二章 从JDK到IDE

    本章学习目标: 了解与设定PATH 了解与指定CLASSPATH 了解与指定SOURCEPATH 使用package与import管理类别 初步认识JDK与IDE的对应关系 一.第一个Java程序 工 ...