最近在研究客户端通信技术,查阅相关资料看到一个关键词频频出现-“QoS”。记得之前学习计算机网络课程的时候学到过它,可是学完计算机网络以后并无从底层或者深层出发考虑网络问题,今天将QoS的知识作一下梳理。安全
在封包交换网络和计算机网络领域中,流量工程术语服务质量(英文Quality of Service,QoS)指的是网络知足给定业务合同的几率,或在许多状况下,非正式地用来指分组在网络中两点间经过的几率。QoS是一种控制机制,它提供了针对不一样用户或者不一样数据流采用相应不一样的优先级,或者是根据应用程序的要求,保证数据流的性能达到必定的水准。QoS的保证对于容量有限的网络来讲是十分重要的,特别是对于串流多媒体应用,例如voice over IP 和 IP电视等,由于这些应用经常须要固定的传输率,对延时也比较敏感。
在电话业务领域,服务质量是指线路噪音和声音,适当的音量水平等指标的衡量,而且不能与服务等级相混淆。
在正常状况下,若是网络只用于特定的无时间限制的应用系统,并不须要QoS,好比Web应用,或E-mail设置等。可是对关键应用和多媒体应用就十分必要。当网络过载或拥塞时,QoS 能确保重要业务量不受延迟或丢弃,同时保证网络的高效运行。服务器
.Qos具备以下功能:网络
一、分类并发
分类是指具备QoS的网络可以识别哪一种应用产生哪一种数据包。没有分类,网络就不能肯定对特殊数据包要进行的处理。全部应用都会在数据包上留下能够用来识别源应用的标识。分类就是检查这些标识,识别数据包是由哪一个应用产生的。如下是4种常见的分类方法。性能
(1)协议 有些协议很是“健谈”,只要它们存在就会致使业务延迟,所以根据协议对数据包进行识别和优先级处理能够下降延迟。应用能够经过它们的EtherType进行识别。譬如,AppleTalk协议采用0x809B,IPX使用0x8137。根据协议进行优先级处理是控制或阻止少数较老设备所使用的“健谈”协议的一种强有力方法。
(2)TCP和UDP端口号码 许多应用都采用一些TCP或UDP端口进行通讯,如 HTTP采用TCP端口80。经过检查IP数据包的端口号码,智能网络能够肯定数据包是由哪类应用产生的,这种方法也称为第四层交换,由于TCP和UDP都位于OSI模型的第四层。
(3)源IP地址 许多应用都是经过其源IP地址进行识别的。因为服务器有时是专门针对单一应用而配置的,如电子邮件服务器,因此分析数据包的源IP地址能够识别该数据包是由什么应用产生的。当识别交换机与应用服务器不直接相连,并且许多不一样服务器的数据流都到达该交换机时,这种方法就很是有用。
(4)物理端口号码 与源IP地址相似,物理端口号码能够指示哪一个服务器正在发送数据。这种方法取决于交换机物理端口和应用服务器的映射关系。虽然这是最简单的分类形式,可是它依赖于直接与该交换机链接的服务器。 学习
2.标注
在识别数据包以后,要对它进行标注,这样其余网络设备才能方便地识别这种数据。因为分类可能很是复杂,所以最好只进行一次。识别应用以后就必须对其数据包进行标记处理,以便确保网络上的交换机或路由器能够对该应用进行优先级处理。经过采纳标注数据的两种行业标准,即IEEE 802.1p或差别化服务编码点(DSCP),就能够确保多厂商网络设备可以对该业务进行优先级处理。
在选择交换机或路由器等产品时,必定要确保它能够识别两种标记方案。虽然DSCP能够替换在局域网环境下主导的标注方案IEEE 802.1p,可是与IEEE 802.1p相比,实施DSCP有必定的局限性。在必定时期内,与IEEE 802.1p 设备的兼容性将十分重要。做为一种过渡机制,应选择能够从一种方案向另外一种方案转换的交换机。
3.优先级设置
一旦网络能够区分电话通话和网上浏览,优先级处理就能够确保进行Internet上大型下载的同时不中断电话通话。为了确保准确的优先级处理,全部业务量都必须在网络骨干内进行识别。在工做站终端进行的数据优先级处理可能会因人为的差错或恶意的破坏而出现问题。黑客能够有意地将普通数据标注为高优先级,窃取重要商业应用的带宽,致使商业应用的失效。这种状况称为拒绝服务攻击。经过分析进入网络的全部业务量,能够检查安全攻击,而且在它们致使任何危害以前及时阻止。
在局域网交换机中,多种业务队列容许数据包优先级存在。较高优先级的业务能够在不受较低优先级业务的影响下经过交换机,减小对诸如话音或视频等对时间敏感业务的延迟事故。
为了提供优先级,交换机的每一个端口必须有至少2个队列。虽然每一个端口有更多队列能够提供更为精细的优先级选择,可是在局域网环境中,每一个端口须要4个以上队列的可能性不大。当每一个数据包到达交换机时,都要根据其优先级别分配到适当的队列,而后该交换机再从每一个队列转发数据包。该交换机经过其排队机制肯定下一步要服务的队列。有如下2种排队方式。 编码
(1)严格优先队列(SPQ) 这是一种最简单的排队方式,它首先为最高优先级的队列进行服务,直到该队列为空,而后为下一个次高优先级队列服务,依此类推。这种方法的优点是高优先级业务老是在低优先级业务以前处理。可是,低优先级业务有可能被高优先级业务彻底阻塞。 计算机网络
(2)加权循环(WRR) 这种方法为全部业务队列服务,而且将优先权分配给较高优先级队列。在大多数状况下,相对低优先级,WRR将首先处理高优先级,可是当高优先级业务不少时,较低优先级的业务并无被彻底阻塞。
Qos能够根据报文中的802.1P判断优先级 视频
.问题的提出队列
在因特网建立初期,没有意识到QoS应用的须要。所以,整个因特网运做如一个“不遗余力”的系统。每段信息都有4个“服务类别”位和3个“优先级”位,可是他们彻底没有派上用场。 依发送和接收者看来,数据包从起点到终点的传输过程当中会发生许多事情,并产生以下有问题的结果:
丢失数据包 - 当数据包到达一个缓冲区(buffer)已满的路由器时,则表明这次的发送失败,路由器会依网络的情况决定要丢弃一部份、不丢弃 或者是全部的数据包,并且这不可能在预先就知道,接收端的应用程式在这时必须请求从新传送,而这同时可能形成整体传输严重的延迟。
延迟 - 或许须要很长时间才能将数据包传送到终点, 由于它会被漫长的队列迟滞, 或须要运用间接路由以免阻塞;也许能找到快速、直接的路由。总之,延迟很是难以预料。
传输顺序出错 - 当一群相关的数据包被路由通过因特网时,不一样的数据包可能选择不一样的路由器,这会致使每一个数据包有不一样的延迟时间。最后数据包到达目的地的顺序会和数据包从发送端发送出去的顺序不一致,这个问题必需要有特殊额外的协议负责从新整理失序的数据包。
出错 - 有些时候,数据包在被运送的途中会发生跑错路径、被合并 甚至是 毁坏的状况,这时接收端必需要能侦测出这些状况,并将它们通通判别为已遗失的数据包,再请求发送端再送一份一样的数据包。
.须要QoS的应用
流量约定(SLA, Service Level Agreement服务等级协议)给数据流设定优先级,以此在网络/协议层面上,根据相互商定的尺度,设定有保障的性能、经过量、延迟等界限。一些特定形式的网络数据流须要定义服务质量,例如:
多媒体流要求有保障的经过量
IP电话须要严格的抖动和延迟限制
性命悠关的应用系统, 例如远程外科手术要求有可靠保证的可用性 (也称做硬性 QoS).
这些类型的服务被称为非弹性,意思是它们须要固定的带宽才能运做--若是获得多余的带宽,它们也没法使用;若是获得较少的带宽,则根本没法工做。相形之下,弹性应用能够从多余的带宽中受益。
.保持 QoS
实质上有两种方式提供QoS保证。第一种,就是简单地提供大量的资源,用丰富、安全的余量设备应付预期中的“高峰”需求。这样既好又简单,然而有人认为这种方式代价昂贵,并且不能应对高峰需求超越预期的情形,部署额外的资源也很耗费时间。
第二种是要求用户预定带宽,而且仅在可以提供可靠服务的前提下接受预定。天然,能够为预定服务向用户收费。经常使用的实现方法有两类: 恩!
.某些技术的QoS难题
如下的特性也许只会被用在end ports, 但不会在服务器, 中枢 或是其它的端口上,这就缓和了许多并发流的冲突.