QoS的构建模块与机制
本文翻译自ITU-T的Technical Paper:《How to increase QoS/QoE of IP-based platform(s) to regionally agreed standards》(2013/3/1)。这是其第五章的一部分,给出了QoS的构建模块与机制。PS:在此感谢一位师弟的翻译。
QoS的作用是支持特定应用的特点和属性,然而的不同的应用可能有着差别很大的要求。例如,对于远程医疗,交付的准确性就比整体延迟或分组时延偏差(也就是抖动)更加重要,但是对于IP电话而言,抖动和延迟就是关键问题,而且必须进行最小化处理。QoS支持的体系结构框架的重点是网络内的某些机制提供所需的网络性能。 [b- ITU-T Y.1291]
5.1 QoS的构建模块
与QoS有关的网络机制可以特定于一个网络单元也可以特定于网络单元之间的信号传输,或用于控制和管理在网络上的流量。形成QoS构建模块的QoS体系结构框架重点确定了一组通用的针对网络服务响应服务请求的控制机制。一个QoS构建模块可能特定于一个网络节点(例如缓冲区管理)或者适用于一个需要在网络节点之间进行信号传输的网段(例如QoS路由),无论这些节点是否属于同一网段(例如端到端、端对边、边对边或网络对网络)。
通过应用通信的通用参考架构模型,QoS的构建模块可以组织成三个平面内,如下图10所示,同时也在下面的总结中进行了解释[b- ITU-T Y.1291]:
控制平面: 包括了与用户流量通过路径相关的处理机制(例如接入控制、QoS路由和资源预留);
数据平面: 包括了与用户流量的直接处理有关的机制(例如缓冲管理、拥塞避免,数据包标记、排队和调度、流量分类、流量监管和流量整形);
管理平面: 包括了与网络的操作和管理方面有关的处理机制(例如SLA、流量恢复、计量和记录,和相关策略)。
图 10 –QoS构建模块的架构视图
5.2 控制平面机制
控制平面机制的关键作用是控制网络服务的响应和流量。它有如下三个机制。
接入控制
这一机制控制了接入网络的流量,是否允许接入取决于一个先验的SLA。可以根据网络资源的可用性决定是否允许接入,从而确保新接入的流量不会使网络过载,也不会降低当前进行的流量的服务质量。服务供应商希望在维持相同QoS水平的情况下接入最多的流量。
这一机制同时也可以用于满足在特定时间段内接入控制所优先要求的服务可靠性/可用性,比如在SLA中。设置接入控制的优先级是允许更高优先级的流量在拥塞情况时优先接入的方法之一(例如,用于紧急通讯)。
QoS路由
这一机制提供了选择能满足QoS对于流的要求的路径(并非是传统的最短路径)的能力。网络的规模随着相关的QoS指标数量增加而扩大,适当的路径选择也就成为了重要的问题。因而实际的QoS路由方案考虑到了单QoS指标(例如带宽或延迟)和双QoS指标(例如,费用-延迟、费用-带宽和带宽-延迟)的主要情况。QoS路由提供了一种方法来确定唯一的那个可能合适于所请求性能的路径,而不能保证性能。为了保证性能,需要在路径上储备QoS路由认定的必要资源
路径选择的处理过程涉及到了对流的QoS要求和特性的理解(受信令协议支持),同时也包括了有关于网络资源可用性(可用的带宽和时延)的信息。
相关信息主要依靠信令协议的帮助来获得并分发。根据状态信息的维护方式以及可行路径的寻找方式,可以有三种降低路径选择计算复杂度的方法:源路由、分布式路由以及分层路由。此外,根据QoS指标的处理方式,又有另外两种方法:指标排序和顺序滤波 [IETF RFC 2386].
资源预留
这一机制留出了为交付预期的网络性能所需的网络资源。通常来说,当有足够的资源时,一个预留请求才会被接入控制方批准。资源预留依赖于网络性能的要求,包括未满足要求而采用的特定的网络方法,同时,服务供应商也应该可以向用户就预留资源进行收费。因此,资源预留需要支持不同服务供应商之间的认证,授权,计费和结算。
资源预留通常利用一些专门设计的协议(如RSVP)来实现[IETF RFC 2205]。资源预留的功能可以是分布式的也可以是集中式的。但是一个主要的问题在于实际的和预期的可用资源之间的差异,以及保障最新信息的可达性,使得节点、链接以及其他的资源都可为发出请求的应用所利用。
5.3 数据平面机制
数据平面机制的关键作用在于处理操作和管理。它包含如下的几种机制。
队列(或缓冲)管理
这一机制处理(等待传输的)数据包的存储和删除,从而最小化稳态队列的大小。这一机制可以用来避免链接的不充分应用以及单一流量或连接独占队列空间时的锁定现象。队列管理方案之间的主要区别在于什么时候丢包以及丢掉什么样的数据包。一般常见的丢包标准是达到了队列尺寸的上限,也即是队列已满的情况。而多队列的使用则带来了一些变化,比如数据包在可以在队列之间分发。
丢弃什么样的数据包则依赖于丢弃准则;“尾部丢弃”准则中会丢掉新到达的数据包(最常见的策略),“首部丢弃”准则中会丢掉在队列首部的数据包(同时会保留后来到达的数据包),而“随机丢弃”准则通过随机丢弃队列中的数据包来保留新到达的数据包。
拥塞避免
这一机制将网络负载保持在其容量之下,从而保证网络在不发生拥塞的情况下保持可接受的性能水平。当流量超过或接近网络容量的时候就会因为缺乏资源(如链接带宽和缓冲空间)而发生拥塞。举例来说,拥塞的标志之一就是路由器(或交换机)队列总是满的并且路由器已经开始丢包。丢包会引起重传输,进而带来更多的流量和更严重的拥塞。这种连锁反应会让网络彻底停止,吞吐量也会降为0.
在出现网络拥塞的迹象(或拥塞即将发生)之时避免拥塞的一个典型方法就是减少输入到网络的流量。通常来说,数据包丢失和定时器超时都被认为是发生网络拥塞的隐式征兆,除非使用了像ECN(用于IP和TCP的显示拥塞指示:IETF RFC 3168)这样的显示指示。
排队及调度
这一机制控制了要在传出链路上传输哪些数据包。传入流量被保持在一个有多个队列和一个调度器组成的队列系统中。管理队列系统就是选择它所采用的排队和调度准则。下面是几种关键的方法:
先进先出排队:数据包被放置到单一队列中去,且它们在队列中的顺序与它们到达队列时的顺序相同;
公平排队(或基于流的排队):数据包被分为不同的流并分配到不同的队列中去,各队列都只处理自己的流。然后各队列循环发送;
优先权排队:首先将数据包分类,在放入有不同优先级的队列中去,在每个优先权队列中,数据包遵循先进先出准则;
加权公平排队:数据包被分为不同的流并分配到不同的队列中去,各队列都只处理自己的流。每个队列都依据各自的流所需的带宽来分配输出带宽的百分比。通过区分不同长度的数据包,这种方法也可以防止有大数据包的流被分配到窄带宽中去。
基于类的排队:数据包被分为很多个类别,然后被分配到不同的队列中去,每个队列又根据服务类别分类。每个队列可以被分配一定的输出带宽并且循环输出。空的队列将被轮空。
数据包标记
这一机制根据数据包在网络中所接受到的具体服务类别来标记它们,通常是由边缘节点来完成的。数据包标记涉及到以一种标准的方式给数据包指定头字段分配一个值(例如IP数据报头字段中的服务类型)。如果标记是由主机完成的,那么边缘节点应该检查标记并且在必要的时候修改标记。有时候会用特殊值标记不一致的数据包,而这些数据包可能会在拥塞情况下被丢弃。无论数据包标记由主机还是边缘节点完成,标记的标准都应提供并且被动态地配置。
流量分类
这一机制可以在流或数据包层面实现流量的分类。在网络边缘,负责流量分类的实体往往通过观察数据包的多个方面(例如与IP流有关的五元组)来决定它所属于的集合以及它们各自的SLA。
流量监管
The senders may be notified of the dropped packets and causes determined and future compliance enforced by SLAs.这一机制用于监管测定被呈现的流量是否符合预先商谈好的基于逐跳机制的策略或合约。通常不符合要求的数据包会被丢弃。发送方会被告知被丢弃的数据包。
流量整形
This is a mechanism for controlling the rate and volume of traffic entering the network, for example, buffers non-conformant packets until it brings the respective aggregate in compliance with the traffic.
这一机制用于控制进入网络的流量的速率和体积。这样最后得到的流量就不像先前那样具有爆发性,而更具可预测性。流量整形往往需要在出口和入口的节点之间进行。流量整形有两种主要方法:漏桶算法和令牌桶算法。
漏桶算法应用一个漏桶来调节离开一个节点的流量的速率,它可以保证流出量的速率恒定,而不考虑流入量的速率。任何溢出桶的数据包都会被丢弃。令牌桶允许数据包以与流入速率相同的水平流出,条件是有足够多的令牌,而这些令牌是按一定的速率产生并存储到令牌漏桶中去直到满了为止的。每牺牲一个令牌,一定体积的流量就被允许离开节点,如果漏桶中没有令牌,就不能传输任何数据包。但是也可以一次牺牲多个令牌来允许突然爆发的流量通过。漏桶和令牌桶算法可以同时使用。特别的是,可以先用令牌桶算法进行流量整形后再用漏桶法进行整形,这样可以去除不必要的突发数据。
5.4 管理平面机制
管理平面机制的主要作用是直接处理用户流量,它包括如下四个机制。
服务水平协议
这一机制用于处理客户和服务供应商之间达成的协议,协议确定了可用性、可维护性、性能、操作或服务水平的其他属性,称为SLA。
流量计量
这一机制用于监测流量的时间属性(例如,速率)并与协定的流量信息进行对比。这一机制涉及到在给定的网络点观察流量特性、搜集并存储流量信息以供分析和下一步的动作使用。根据一致性水平,计量实体可以针对数据包流调用必要的处理方法(例如丢弃或整形)。
流量恢复
这一机制用于处理网络在故障模式下的缓解响应。在许多层面上都应该考虑到这一机制,例如拥有动态环和网状保护以及波长级别恢复功能的光网络,再比如拥有自动保护切换(APS)和自愈环以及网状结构的SONET/SDH层。在接入控制方面,与关键服务有关的流量可能需要更高优先权的恢复。因此服务供应商需要准备足够水平的闲置资源才能让QoS的多个SLA在恢复情况下保持一致。衡量服务可恢复性的常见参数有恢复时间和可恢复服务的百分比。
策略
这一机制用于处理与管理、控制网络资源接入有关的策略。这一机制可以特定于服务供应商的需求,也可以反映供应商与客户之间达成的协议,这一协议可能包含在特定时间段内的可靠性和可用性要求等其他的QoS要求。举例来说可以有策略路由(不使用路由表而直接将数据包流带到目标端口)、数据包过滤策略(依据分类策略标记或丢弃数据包)、数据包记录(允许用户记录特定的数据包流)以及与安全有关的策略。
QoS的构建模块与机制的更多相关文章
- ITU-T Technical Paper: QoS的构建模块与机制
本文翻译自ITU-T的Technical Paper:<How to increase QoS/QoE of IP-based platform(s) to regionally agreed ...
- UML构建模块(转载)
UML描述的实时系统,这是非常重要的一个概念模型,然后进行逐渐. UML的概念模型可以通过学习掌握以下三大要素: UML构建模块 规则连接构建模块 UML的公共机制 本章介绍了所有的UML构建块. U ...
- [译文]Domain Driven Design Reference(三)—— 模型驱动设计的构建模块
本书是Eric Evans对他自己写的<领域驱动设计-软件核心复杂性应对之道>的一本字典式的参考书,可用于快速查找<领域驱动设计>中的诸多概念及其简明解释. 其它本系列其它文章 ...
- 【Java并发.5】基础构建模块
本章会介绍一些最有用的并发构建模块,有丶东西(最后一小节,纯干货). 5.1 同步容器类 同步容器类包括 Vector 和 Hashtable ,这些类实现线程安全的方式是:将它们的状态封装起来,并对 ...
- 《java并发编程实战》读书笔记4--基础构建模块,java中的同步容器类&并发容器类&同步工具类,消费者模式
上一章说道委托是创建线程安全类的一个最有效策略,只需让现有的线程安全的类管理所有的状态即可.那么这章便说的是怎么利用java平台类库的并发基础构建模块呢? 5.1 同步容器类 包括Vector和Has ...
- 深入浅出NodeJS——数据通信,NET模块运行机制
互联网的运作,最根本的驱动就是信息的交互,NodeJS 在数据交互这一块做的很带感,异步编程让人很惬意,关于 NodeJS 的数据通信,最基础的两个模块是 NET 和 HTTP,前者是基于 TCP 的 ...
- [转] npm 模块安装机制简介
npm 是 Node 的模块管理器,功能极其强大.它是 Node 获得成功的重要原因之一. 正因为有了npm,我们只要一行命令,就能安装别人写好的模块 . $ npm install 本文介绍 npm ...
- npm 模块安装机制简介
npm 是 Node 的模块管理器,功能极其强大.它是 Node 获得成功的重要原因之一. 正因为有了npm,我们只要一行命令,就能安装别人写好的模块 . $ npm install 本文介绍 npm ...
- 详解npm的模块安装机制 --社会我npm哥,好用话不多
依赖树表面的逻辑结构与依赖树真实的物理结构 依赖树表面的逻辑结构与依赖树真实的物理结构并不一定相同! 这里要先提到两个命令:tree -d(linux)和npm ls(npm) 在一个npm项目下 ...
随机推荐
- 20172319 2018.04.11 《Java程序设计教程》第7周课堂测验(补写博客)
20172319 2018.04.11 <Java程序设计教程>第7周课堂测验 课程:<程序设计与数据结构> 班级:1723 学生:唐才铭 学号:20172319 指导老师:王 ...
- 使用ViewPager实现android软件使用向导的功能
现在的大部分android软件,都是使用说明,就是第一次使用该软件时,会出现向导,可以左右滑动,然后就进入应用的主界面了. 先看下效果图: 首先需要一个布局文件,是FlameLayout组成的,里面包 ...
- SQL Server Management Studio 教程一:设置sa用户登录
今天在net项目中添加数据库过程中出现了小问题,就是使用sql server身份验证没登录成功,经过一番调试,终于解决问题. 使用sa账户登录sql server 2008 的方法步骤如下: 1.首先 ...
- ASP.NET MVC的请求处理流程
(1)用户打开浏览器,在地址栏输入某个网址URL并回车,浏览器便开始向该URL指向的服务器发送HTTP请求(一般是GET方式).(2)服务器端的网站服务系统(IIS)接收到该请求,先检查自己是否认识该 ...
- Oracle问题诊断过程常用SQL
--查看临时表空间使用情况select tablespace_name ,sum(size_mb),sum(used_mb),round(sum(used_mb)/sum(size_mb),2) fr ...
- 丢失或损坏NDF文件如何附加数据库
在论坛看到有人遇到 NDF文件丢失并且没有备份,所以无法成功附加数据库.在网上也看到过很多回答是如果没有NDF就无法附加成功. 其实我自己测试下来即使没有NDF也是可以成功附加的.但是有条件,丢失的N ...
- wamp经典安装
1,根据综述 本机 注意,现在apache2.2不能和5.5php, 2.4apache和5.5php就可以 window10 64位 vc14 apache 2.4.23 注意,虚拟 ...
- QT 开发资料
http://pan.baidu.com/s/1bntYkpx 密码: fgsa
- mysql安装三 linux源码安装mysql5.6.22
http://blog.csdn.net/beiigang/article/details/43053803
- 多线程编程中条件变量和的spurious wakeup 虚假唤醒
1. 概述 条件变量(condition variable)是利用共享的变量进行线程之间同步的一种机制.典型的场景包括生产者-消费者模型,线程池实现等. 对条件变量的使用包括两个动作: 1) 线程等待 ...