Qos(Quality of Service,服务质量),其目的是针对各种业务的不同需求,为其提供端到端的服务质量保证。
随着网络技术的飞速发展,互联网中的业务越来越多样化,随之而来产生网络拥塞,转发时延增加,严重时产生丢包,导致业务质量下降甚至不可用,因此要在IP网络上开展实时性业务,就必须解决网络拥塞问题。
解决网络拥塞的最好办法是增加带宽,但是从运营、维护的成本考虑,不现实。因而QoS技术应运而生。

业务类型

带宽/吞吐量

时延

抖动

丢包率

电子邮件、文件传输、远程终端

需求低

容许时延

容许抖动

不敏感

HTML网页浏览

需求不定

容许适当时延

容许适当抖动

不敏感

电子商务

需求适当

敏感

敏感

敏感。必须可靠传输

基于IP的语音VoIP和实时视频

需求低

非常敏感

非常敏感

敏感,需求可预计的丢包率

流媒体

需求高

非常敏感,要求可预计的时延

非常敏感

敏感,需求可预计的丢包率

Qos度量指标

  • 带宽/吞吐量
  • 带宽(bandwidth)也称为吞吐量(throughput),是指在一个固定的时间内(1s),从网络一端流到另一端的最大数据位数,也可以理解为网络的两个节点之间特定数据流的平均速度,带宽的单位是比特/秒(bit/s,简写为bps)
  • 对应的业务流量大小可以由时延约束计算出所需的最小带宽
  • 时延
  • 时延(latency)是指一个报文或分组从一个网络的一端传送到另一端所需要时间。大多数用户察觉不到小于100毫秒的延迟;当延迟在100毫秒和300毫秒之间时,说话者可以察觉到对方回复的轻微停顿,这种停顿可能会使通话双方都感觉到不舒服。超过300毫秒,延迟就会很明显,用户开始互相等待对方的回复,当通话的一方不能及时接收到期望的回复时,说话者可能会重复所说的话,这样会与远端延迟的回复碰撞,导致重复。
  • 时延变化(抖动)
  • 时延变化(抖动)是指同一业务流中不同分组所呈现的时延不同。时延变化也称为抖动(jitter)。抖动主要由于业务流中相继分组的排队等候时间不同引起的,是对服务质量影响最大的一个问题
  • 某些业务类型,特别是话音和视像等实时业务是极不能容忍抖动的。分组到达时间的差异将在话音或视频中造成断续。抖动也会影响一些网络协议的处理,有些协议是按固定的时间间隔发送交互性报文,抖动过大会导致协议震荡。
  • 所有传输系统都会有抖动,只要抖动在规定容差之内就不会影响服务质量。利用缓存可以克服过量的抖动,但这将增加时延。
  • 丢包率
  • 少量的丢包(Loss)对业务的影响并不大,例如,在语音传输中,丢失一个比特或一个分组的信息,通话双方往往注意不到,在视频广播期间,丢失一个比特或一个分组可能造成在屏幕上瞬间的波形干扰,但视频很快恢复正常,即使用传输控制协议(TCP)传输数据也能处理少量丢包,因为传输控制协议允许丢失的信息重发。但大量的丢包会影响传输效率。所以QoS更关注的是丢包的统计数据-丢包率。丢包率是指在网络传输过程中丢失报文占传输报文的百分比。

QoS三种模型

  • 尽力而为(Best-Effort)服务模型
  • Best-Effort是最简单的QoS服务模型,应用程序可以在任何时候,发出任意数量的报文,而且不需要通知网络。对Best-Effort服务,网络尽最大的可能性来发送报文,但对时延、可靠性等性能不提供任何保证。Best-Effort服务模型适用于对时延、可靠性等性能要求不高的业务质量保证。Best-Effort是现在Internet的缺省服务模型,它适用于绝大多数网络应用,如FTP、E-mail等。
  • 综合服务(Integrated Service,简称IntServ)模型
  • IntServ模型是指应用程序在发送报文前,需要通过信令(signaling)向网络描述它的流量参数,申请特定的QoS服务。网络在流量参数描述的范围内,预留资源以承诺满足该请求。在收到确认信息,确定网络已经为这个应用程序的报文预留了资源后,应用程序才开始发送报文。应用程序发送的报文应该控制在流量参数描述的范围内。网络节点需要为每个流维护一个状态,并给予这个状态执行相应的QoS动作,来满足对应用程序的承诺。
  • IntServ模型使用RSVP(Resource Reservation Protocol)作为信令,类似于ATM SVC的方式,是面向连接的。RSVP工作在传输层,但不参与应用数据的传送,是一种网络上的控制协议(类似于ICMP),用于在网络节点间传递资源预留信息以及建立资源预留。在通过RSVP建立端到端通信的过程中,沿途的各路由器(包括核心路由器)必须为每个要求服务质量保证的数据流保存状态信息,称为“软状态”。“软状态”是一种临时性状态,被定期的RSVP信息更新。通过RSVP信息的预留,各路由器可以判断是否有足够的资源可以预留。只有所有的路由器都给RSVP提供了足够的资源,“路径”方可建立。
  • 差分服务(Differentiated Service,简称DiffServ)模型
  • DiffServ模型的基本原理是将网络中的流量分成多个类,每个类享受不同的处理,尤其是网络出现拥塞时不同的类会享受不同的优先处理,从而得到不同的丢弃率、时延以及时延抖动。同一类的业务在网络中会被聚合起来统一发送,保证相同的延迟、抖动、丢包率等QoS指标。
  • Diffserv模型中,业务流分类和汇聚工作在网络边缘由边缘路由器完成。边界路由器可以通过多种条件(比如报文的源地址和目的地址、ToS域中的优先级、协议类型等)灵活地对报文进行分类,对不同的报文设置不同的标记字段,而其他路由器只需要简单地识别报文中的这些标记,进行资源分配和流量控制。因此,DiffServ是一种基于报文流的QoS模型。
  • 与IntServ模型相比,DiffServ模型不需要信令。在DiffServ模型中,应用程序发出报文前,不需要预先向网络提出资源申请,而是通过设置IP报文头的QoS参数信息,来告知网络节点它的QoS需求。网络不需要为每个流维护状态,而是根据每个报文流指定的QoS参数信息来提供服务,对报文的服务等级划分,有差别地进行流量控制和转发,提供端到端的QoS保证,DiffServ模型充分考虑了IP网络本身灵活性、可扩展性强的特点,将复杂的服务质量保证通过报文自身携带的信息转换为单挑行为,从而大大减少了信令的工作,因此DiffServ模型不但适合运营商环境使用,而且也大大加快了IP QoS在实际网络中应用的进程。
    PHB(Per Hop Behavior)在每一个DS节点上对分组的处理称为每跳行为PHB(Per-Hop Behavior)。PHB描述了DS节点对具有相同DSCP的分组采用的外部可见的转发行为。可以用优先级来定义PHB,也特定的实现方式。
    RFC定义了四种标准的PHB:可以用一些可见的服务特征如分组延迟、抖动或丢包率来定义
  • 类选择码CS(Class Selector): 代表的服务等级与在现有网络中使用的IP Precedence相同。DSCP取值为“XXX000”,X为0或1。当X为全0时,就是Default PHB。
  • 加速转发EF(Expedited Forwarding): 针对VOIP这样的服务,保证低延迟,低抖动和较小的丢包率。因为分组延迟和抖动的主要原因是排队延迟,而排队延迟通常是在拥塞时排队过长引起的,EF PHB 保证通信不需要排队或队列足够短,所以一般要在高度加权的队列上传送。EF PHB的编码为DSCP 101110
  • 确保转发AF(Assured Forwarding): AF PHB 对应4种AF Class,每一个Class都将自己要发的数据包优先级分为高中低三个档次,而且Class之间也有差异,Class等级越高,对应的IP优先级也就越高,QoS质量也就越好。PHB编码的前3bit表示IP报文优先级,接下来的2bit表示丢包优先级(不会是00),最后1bit总是0。************
  • 尽力而为BE(Best-Effort): 默认的PHB行为,编码为DSCP 000000

QoS处理流程

  • 流分类与标记
    流分类是对进入DiffServ域的业务进行分类,以便在网络中得到相应的适当处理。流分类主要目的是让其他处理此报文的应用系统或设备知道该报文的类别,并根据这种类别对报文进行一些事先约定了的处理。
  • 内部标记
    设置/改写报文的优先级字段,用于向下一台设备传递差分服务的QoS信息。其中,改写报文的优先级字段也称为“重标记”
  • 外部标记
  • 标记报文在设备内部处理的服务等级(service-class)与丢弃优先级,让匹配的报文能够直接进入指定服务等级的队列,而不需要根据报文头中的优先级字段来确定服务等级
  • 标记报文的丢弃优先级也叫着色(color),是指在相同service-class的时候,入同一个队列,当此队列快拥塞的时候,可以通过color再进行差分服务,体现在缓存使用上的优先顺序。
  • 流量监管
    流量监管TP(Traffic Policing)是指对进入设备的流量进行监控,确保其没有滥用网络资源。运营商之间都签有服务水平协议(SLA),其中包含每种业务流的承诺速率 CIR(Committed Information Rate)、峰值速率 PIR(Peak Information Rate)、承诺突发尺寸 CBS(Committed Burst Size)、峰值突发尺寸 PBS(Peak Burst Size)等流量参数,对超出SLA约定的流量报文可指定给予pass(通过)、drop(直接丢弃)或markdown(降级)等处理,此处降级是指降低服务等级(Service Class),或者是提高丢弃等级(Color),即报文在网络拥塞时将被优先丢弃,从而保证在SLA约定范围之内的报文享受到SLA预定的服务。
    流量监管的动作包括:
  • 转发(pass):对测量结果不超过CIR的报文通常处理为继续正常转发。
  • 丢弃(discard):对测量结果超过PIR的报文通常进行丢弃
  • 重标记(remark):对处于承诺速率(CIR)与峰值速率(PIR)之间的流量通常执行Remark动作,此时的报文不丢弃,而是通过Remark降低优先级进行尽力而为转发。
  • 拥塞避免
  • 拥塞调度
  • 流量整型
    流量整形是对输出报文的速率进行控制,使报文以均匀的速率发送出去。流量整形通常是为了使报文速率与下游设备相匹配。当从高速链路向低速链路传输数据,或发生突发流量时,带宽会在低速链路出口处出现瓶颈,导致数据丢失严重。
  • 接口流量整形:也叫接口限速LR(Line rate),限制接口发送的所有报文(包括紧急报文)的总速率,是对整个出接口进行流量整形,不区分优先级
  • 队列流量整形:对出接口的每个队列进行流量整形,区分优先级
    流量监管和流量整型的比较
  • 相同点:
  • 作用都是监控网络流量
  • 都是用令牌桶算法评估流量速率
  • 主要都用于网络边缘
  • 不同点:
    流量监管
  • 丢弃超额流量或将超额流量重标记为低优先级量
  • 不需要额外的内存资源,不会带来延迟和抖动
  • 丢包可能引发重传
  • 可以重标记流

流量整形

  • 缓存超出策略/协定SLA规定的超额流量
  • 需要内存去缓存超额流量,可能会带来延迟和抖动
  • 较少的丢包,因而较少导致重传
  • 不能重标记
  • 一般用于出口流量