章节大纲

  • 弹出图片

    服务质量(Quality of Service, QoS)

    服务质量是通过一系列技术手段来确保多媒体网络应用生成的非弹性流量满足特定的延迟和抖动要求。

    主要方法

    为服务质量提出了三种主要方法:

    1. 集成服务(IntServ):要求对网络基础设施进行根本性更改,以便应用能够预留端到端带宽 → 需要在主机和路由器中安装新的复杂软件;
    2. 区分服务(DiffServ):对网络基础设施的改动较少;
    3. 放任自流:不关心延迟和服务质量,认为网络永远不会拥塞 → 所有复杂性集中在应用层。

    原则

    • 包标记:路由器需要通过标记来区分不同的流量类别,并根据新的路由策略处理这些数据包。
    • 提供保护(隔离):将某一类流量与其他流量隔离。
    • 在提供隔离的同时,尽量高效地利用资源。
    • 流量声明其需求(呼叫接纳),如果网络无法满足需求,则可能会拒绝该呼叫(例如,忙音)。

    机制

    数据包调度机制

    调度机制的目标是管理进入数据包的优先级。

    • FIFO调度:实现简单且高效,但仅在有复杂丢包策略时有效:

      • 尾丢包:始终丢弃到达的数据包;
      • 随机丢包:随机丢弃队列中的一个数据包;
      • 优先级丢包:丢弃最低优先级的数据包。
    • 优先级调度:为每个类别提供一个缓冲区,并始终为最高优先级的类别服务。

      这种方式无法保证隔离,可能会导致饿死现象:低优先级队列中的数据包永远不会被服务,因为高优先级数据包不断到达。此外,如果高优先级队列暂时为空,允许开始传输低优先级队列中的数据包,但如果高优先级数据包在传输开始后到达,该数据包将必须等待传输结束,尤其是在数据包较大的情况下 → 会引入传输延迟。

    • 轮询调度:循环扫描各类队列,为每类队列提供一个服务(如果队列非空)。

      这种方式能保证隔离并且公平,但不保证优先级。

    • 加权公平队列(Weighted Fair Queuing):通过将轮询调度与优先级调度结合来对每类流量进行加权服务。

      每个类别在每个周期中都会获得加权的服务量,带宽 RiR_i 对应于类别 ii(权重为 wiw_i)由以下公式给出(空队列的权重为零):

      \(Ri=wi∑jwjRtotR_i = \frac{w_i}{\sum_{j} w_j} R_{tot}\)

      然而,这种解决方案的可扩展性不强,因为该公式需要为每一个数据包计算浮动运算。

    流量控制机制

    流量控制机制的目标是限制流量,以确保其不超过声明的参数,如:

    • 长期平均速率:每单位时间可以发送多少数据包;
    • 峰值速率:每分钟的数据包数;
    • 最大突发大小:连续发送的最大数据包数(没有空闲间隔)。

    令牌桶(Token Bucket): 令牌桶是一种用于限制输入流量至指定突发大小和平均速率的技术:

    • 桶中最多可持有 bb 个令牌;
    • 令牌以速率 rr(每秒)生成,除非桶已满;
    • 在时间间隔 tt 内,允许的数据包数量为 rt+brt + b

    集成服务(IntServ)

    资源预留 主机请求一个需要资源的服务(路径消息):如果网络能够提供该服务,则会为用户提供,否则不会提供(预留消息)。 资源预留是IP协议中没有原生支持的功能。

    呼叫接纳 到达的会话使用资源预留协议(RSVP)信令协议来声明:

    • R-spec:定义请求的服务质量;
    • T-spec:定义流量特性。

    资源预留是由接收端而非发送端指定的。

    然而,这种解决方案的可扩展性较差,且存在较大的问题,当前没有充分的理由去更好地实现集成服务。

    区分服务(DiffServ)

    区分服务(DiffServ)是一种由IETF提出的服务质量架构:它将复杂性(桶和缓冲区)从网络核心转移到边缘路由器(或主机),从而提高可扩展性。

    架构 DiffServ架构由两大主要组件构成,负责每流量的管理:

    • 边缘路由器:它们将数据包标记为“在配置文件内”(高优先级语音流量)或“在配置文件外”(低优先级数据流量);
    • 核心路由器:根据边缘路由器的标记执行缓冲和调度,优先处理“在配置文件内”的数据包。

    标记 标记由边缘路由器在**区分服务代码点(DSCP)**字段中执行,该字段位于IPv4头部的“服务类型”(Type of Service)字段中的6个最重要的位中,IPv6中则位于“优先级”(Priority)字段。

    理想情况下,应该由源端在应用层进行标记,因为只有源端知道流量类型(语音流量或数据流量)。然而,大多数用户会将所有数据包声明为高优先级,因为他们可能不诚实 → 因此,标记应该由网关进行,网关通常受服务提供商控制。但一些研究表明,路由器通常能正确识别最多20-30%的流量,例如,由于加密流量的存在,路由器的识别能力受限。为了简化标记过程,可以通过将PC连接到某个端口,将电话连接到另一个端口来区分流量,路由器可以根据输入端口进行流量标记。

    PHB(每跳行为) 一些每跳行为(PHB)正在被开发:

    • 加速转发:某个类别的数据包发送速率等于或超过指定速率;
    • 保证转发:四类流量:每类流量保证最低带宽量,并且有三种丢包优先级。

    PHB指定了要提供的服务,而不是如何实现这些服务。