文章是我对网络上能找到关于QOS的内容汇总,如有冒犯,联系我删除,谢谢!
一. 什么叫QoS服务质量?我们需要针对网络里的哪些参数进行调优呢?
当网络发生拥塞的时候,所有的数据流都有可能被丢弃;为满足用户对不同应用不同服务质量的要求,就需要网络能根据用户的要求分配和调度资源,对不同的数据流提供不同的服务质量:对实时性强且重要的数据报文优先处理;对于实时性不强的普通数据报文,提供较低的处理优先级,网络拥塞时甚至丢弃。QoS应运而生。支持QoS功能的设备,能够提供传输品质服务;针对某种类别的数据流,可以为它赋予某个级别的传输优先级,来标识它的相对重要性,并使用设备所提供的各种优先级转发策略、拥塞避免等机制为这些数据流提供特殊的传输服务。配置了QoS的网络环境,增加了网络性能的可预知性,并能够有效地分配网络带宽,更加合理地利用网络资源
服务质量指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力, 是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术。
1).带宽(能占用的带宽);
2).延时(你去往目标所用的时间);
3).丢包率;
4).抖动(时延与时延的差值,越低越好);
5).吞吐量(实际发送和接受的流量)
延时=发送延时(例如我ping 百度,敲下回车的一刻,数据从网卡发出的时间)+传输延时(数据在线路里边所传输的延时)+排队延时(到达设备接口,等待处理的延时,数据包得排队)+处理延时(排完队了,匹配相应接口转发的延时)
二. QoS流量的分类、标记方法
如图所示是基于IP数据包的TOS(服务类型)字段来进行流量的分类和标记的两种方法。
TOS------(Type of Service)字段长度为8位,它用来指定特殊的数据包处理方式。
第一种方法:IP Precedence(优先权)占用TOS字段的高三位,可以分为8类优先级(0-7,越大越优先转发)。
缺点:这个标识只能决定让哪些数据包优先转发,而数据包在转发的时候进入设备的接口是要根据标识排队的,那麽如果这个队满了,该丢包的时候该如何丢呢?这个标识不能决定当需要丢弃数据包的时候应该先丢弃谁。
解决第一种方法的不足是应用第二种方法。
第二种方法:TOS的DSCP区分服务代码点,占用了TOS字段的6个高位,而相对于这6个高位再分高3位来代表调度优先级来决定了调度优先级(就是哪些数据包优先转发,数字越大先被调度),低三位代表丢弃优先级,决定了丢弃优先级(数字越大越容易被丢弃)。
AF:确保转发,共分为12种。
EF:快速转发,调度优先级最高,丢弃优先级也是最高(适用与语音流量)。
CS:分类选择,共分为7种,兼容IP Precedence,CS6(确切的讲OSPF、BGP流量在其中)/CS7 动态路由协议(CS6/CS7转发优先级最高,丢弃优先级最低,一般是控制流量)。
三. 实施方法:
首先利用Class-Map这个工具把流量匹配上,然后通过Policy-Map对这个流量采取标记动作。(除了用Class/Policy Map组合外,我们还可以利用Route-Map组合来为流量打上标识,前提是我们必须捕获到这个流量,用ACL就可以,根据IP五元组包括TOS值都可以作为捕获目标的参数)。
- 流量的管制与整形技术(门票机制):
令牌桶技术(通过算法来控制流速):
bc(一定时间发送的令牌数) ;
tc(时间) ;
be(超发);
cir(承诺信息速率):保证是这个量(但是实际上不一定)。
cir=bc/tc;
实现的三种方式:
单速率单筒双色标记,取到令牌标记为绿色,取不到令牌就标记为红色。如图所示,令牌数是无积存的,当流量数小与令牌数时,可以得到很好的转发;当流量数大于令牌数时,最多只能转发令牌数个量。
单速率双桶三色,第一个桶取到令牌为绿色,第二个桶取到的令牌为红色,取不到的为红色 ;假设如图所示,第一个桶内令牌下发,当第一次令牌有剩余的时候就将剩余的令牌存于第二个桶中,当下一次数据流量大于第一个桶下发的令牌数时就会获得第一个桶加第二个桶的令牌数获得转发<切记第二个桶的令牌数总是上一次第一个桶的剩余量,当下一次数据流量转发后第二个桶中的令牌数是要根据第一个桶来更新的,无积存> (对于用户是友好的,因为传输效率偶尔会获得超发,而对于设备的接口是不友好的,因为会使接口的转发效率忽高忽低)依赖于上一次令牌的剩余获得超发。
单速率双桶三色详细解释:
-------------------------------------------
这里首先要理解“单速率”是什么意思,那就是算法中的两个令牌桶有同样的承诺信息速率(CIR),也就是具有相同平均访问速率。这两个令牌桶分别是正常使用的令牌桶(也就是下面将要说到的C桶)和超出令牌桶容量的突发令牌桶(也就是下面将要说到的E桶),可以理解为两个水桶,一个是正常使用的水桶,另一个是用来当正常使用的水桶满后装多余的水的水桶。下面具体解释单速率三色标记算法原理。
单速率三色标记(srTCM)算法关注的是数据包的突发尺寸,数据包的色标记评估依据以下3个参数:承诺信息速率(CommittedInformation Rate,CIR)、承诺突发尺寸(Committed BurstSize,CBS)和超额突发尺寸(Excess Burst Size,EBS)。CIR是指向令牌桶中填充令牌的平均速率,即允许的通信流平均速度;CBS是指每次突发所允许的最大的流量尺寸,也相当于允许的最大取令牌的速率,等于桶的容量(最大时就是一个包就可以全部领取桶中的全部令牌)。EBS是指每次突发允许超出CBS的最大流量尺寸。CBS和EBS的单位都是bit(位)。
单速率三色机制采用双桶结构:C桶和E桶(之所以用这两个字母来表示,为的就是与前面说的CBS和EBS两种速率的头个字母一致,便于描述),且两个令牌桶的CIR一样。C令牌桶中任何未用的令牌都被放入E令牌桶中,用做以后临时超过CIR的突发流量的令牌;另外,当C令牌桶满时,超出的令牌也都会放在E令牌桶中。
Tc和Te分别表示C令牌桶和E令牌桶中的令牌数,也就是桶中当前的容量(单位也为bit),两桶的总容量分别为CBS和EBS,也就是对应前面介绍的承诺突发尺寸和超额突发尺寸,最初它们都是满的,即Tc和Te初始值分别等于CBS和EBS。正常情况下,不会使用第二个令牌桶(也就是E桶),而是把任何CBS(也就是C桶)中未使用的令牌都放入E桶中,只有当C令牌桶满后,后面来的令牌才放到E令牌桶中,为可能出现的突发数据提供信用令牌(也就是经过允许的令牌)。
在这种单速率三色标记算法中,两个令牌桶中令牌的添加是按照相同的CIR速率进行的。即每隔1/CIR时间添加一个令牌。添加的顺序是先添加C桶再添加E桶,当两个令牌桶中的令牌都满时,再产生的令牌就会被丢弃。至于在发送数据包时,令牌的使用IEEE又定义了三种颜色(分别为红色、黄色和绿色)以及两种模式:色盲(color-blind)模式和感色(color-aware)模式,默认为色盲模式。三种颜色的功能与我们日常生活中的交通指示灯中的三种颜色类似,红色表示违规数据,直接丢弃,黄色表示数据包虽然违法,但不直接丢弃,而是延迟发送,绿争为合法数据包,直接发送。
在色盲(color-blind)模式下是假设包都是没有经过“着色”处理的(不辨别包中原来标记的颜色),是根据包长度来确定包被标记的颜色。现假设到达的包长度为B(单位为bit)。若包长度B小于C桶中的令牌数Tc(也就是C桶中的令牌数足够该包发送所需),则包被标记为绿色,表示包符合要求,包发送后C桶中的令牌数Tc减少B。如果Tc<B<Te(也就是包长度大于C桶中的令牌数,而小于E桶中的令牌数),则标记为黄色,则从E桶中取出所需令牌,E桶中的令牌数Te减少B;若B >Te,标记为红色,表示是违反规定的包,直接丢弃,两令牌桶中的总令牌数都不减少。
在感色(color-aware)模式下是假设包在此之前已经过“着色”处理(会辨别包中原来标记的颜色),如果包已被标记为绿色,或包长度B<Tc(注意只要满足其中一个条件即可,下同),则包被标记为绿色,C桶中的令牌数Tc值随之也相应减少B;如果包已被标记为黄色,或Tc<B<Te,则包被标记为黄色,同时E桶中的令牌数Te也随之相应减少B;如果包已被标记为红色,或B >Te,则包被标记为红色,Tc和Te都不减少。
-------------------------------------------
双速率双桶三色,两个桶按照不同的时间间隔下放不同的令牌数量,假设如图所示,第一个桶每0.2s下发4个令牌,第二个桶每0.25s下发8个令牌,那麽当流量数小于第一个桶令牌数的时候,取第一个桶的令牌,当流量数大于第一个桶的令牌数时,直接去第二个桶拿令牌(最大的发送量便是令牌数最多的桶的令牌数)。一般做限速用(运营商做的),可以很好的获得超发效果。
双速率双桶三色详细解释:
-------------------------------------------
这里同样首先要稿清楚“双速率”是什么意思,它是指该算法中两个令牌桶中的CIR速率不同,存在两个令牌填充速率。
IETF的双速率三色标记(trTCM)算法主要是根据四种流量参数来评估:CIR、CBS、峰值信息速率(Peak InformationRate,PIR),峰值突发尺寸(Peak Burst Size,PBS)。CIR和CBS参数与单速率三色算法中的含义相同,PIR就是允许的最大突发信息传输速率,当然它的值肯定不会小于CIR的;PBS是允许的最大突发信息尺寸,它的值也不会小于CBS。
与单速率三色标记算法不同,双速率三色标记算法中的两个令牌桶是C桶和P桶(不是C桶和E桶),但它们的令牌填充速率是不同的,C桶填充速率为CIR,P桶为PIR;两桶的容量分别为CBS和PBS(之所以用C桶和P桶表示也是基于方便描述,因为表示不同速率的参数与对应桶的容量参数相同,第一个字母对应为C,或者P)。用Tc和Tp表示两桶中的令牌数目,初始状态时两桶是满的,即Tc和Tp初始值分别等于CBS和PBS。
双速率三色标记算法关注的是速率的突发,但它不像单速率三色标记算法那样把第一个桶中未使用的令牌放到第二个桶中,而是使用两个独立的令牌桶。第一个令牌桶为PIR,大小为PBS,第二个令牌桶为CIR,大小为CBS。数据的测量是先比较PIR,然后再比较CIR。也就是在双速率三色标记中,首先判断的是数据发送速率是否符合规定的突发要求,而不是正常情况下的色标方法。
双速率三色标记算法也有色盲模式和感色模式两种。
在色盲模式下,当包速率大于PIR,此时未超过Tp+Tc部分的包会分别从P桶和C桶中获取令牌,而且从P桶中获取令牌的部分包被标记为黄色,从C桶中获取令牌的部分包被标记为绿色,超过Tp+Tc部分无法得到令牌的包被标记为红色;当包速率小于PIR,而大于CIR时,包可以得到令牌,但超过Tc部分的包将从P桶中获取令牌,此时这部分包都被标记为黄色,而从C桶中获取令牌的包被标记为绿色;当包速率小于CIR时,包所需令牌数不会超过Tc,只需从C桶中获取令牌,包被标记为绿色。
在感色模式下,如果包已被标记为红色,或者超过Tp+Tc部分无法得到令牌的包,被标记为红色;如果标记为黄色,或者超过Tc但未超过Tp部分包记为黄色;如果包被标记为绿,或者未超过Tc部分包,被标记为绿色。
-------------------------------------------
对于企业来讲利用令牌桶技术是能对企业内的不同业务实现限速的效果,保证企业重要流的传输。
令牌桶技术的两个应用:限速(红色流量直接丢弃);整形(把红色流量缓存下来,下一次再过令牌桶;机制上保障流量整体不变,时间上压后了)。
整形的场景:整形一般用于大带宽接口与小带宽接口的对接。
整形的目的:防止大带宽接口堵塞小带宽接口,如果发现小带宽接口堵塞了,可以进一步降低CIR值。
限速和整形,揭示的是令牌桶算法限制的最大流速(防干扰机制)。
流量的管理(通过调度算法------队列机制):
PQ绝对优先队列:四个队high、medium、normal、low,高队列有流量调度高队列,高优先级队列转发完还得等待一会才会转发低优先级的(会存在饿死现象,如果高队列一直有流量,就会一直转发高队列的流量,为忽略低队列的流量)。
CQ:ROBIN,存在16个队列0-15,本质上是一种轮询算法,0队列为优先队列,有它就得发,发完0队列才会对1-15队列实施轮询转发。
WFQ:加权公平队列,存在256个队列 (本质上也是一种循环算法) 每一个队列都有发送机会,根据你的权重来决定,自动队列(人无法操作),五元组一样是一个队,五元组不一样另开一个队。(低于2.048串行线路的默认队列,大于2.048默认队列FIFO)。
CBWFQ:(手动版的WFQ),手动设置队列和占用的带宽值,可以根据优先级抢占,对语音流量不太友好(带宽的百分比占用默认不能大于75%)。
LLQ:低延时队列,专门为VOIP(语音流量)设定的,可以插到所有队列的最前方。
拥塞避免(丢弃机制,早期的丢弃机制是尾丢弃机制,存在的风险是有的重要流量会被丢弃,例如:丢弃TCP的握手包就会引起TCP的全局同步问题):
RED早期检测随机丢弃会避免这种现象(原理就是不能让这个队满,如果发现队满了就会挑一个丢弃,保证下一个数据包到达有位置,存在的缺点还是随机丢,会丢掉重要的数据);
WRED加权的RED根据优先级来对数据进行丢弃(有选择性的丢弃,这个权重就是通过DSCP的丢弃维度实现的)。
弹性带宽管理 :
以下载限速为例,比如总带宽为10Mbit ( 总最大下载速度为1000KBytes/s) 。共20 人使用,限速为保证下载速度100KBytes/s , 最大下载速度200KBytes/s 。详细阐述如下:
1 、带宽空闲时, 速度可达到“最大速度”
如果带宽有空闲(上网的人比较少,带宽使用率在50% 左右,比如只有10 人在线),则下载速度最大可以达到200K ,200K 是下载的峰值速度,即使带宽只有一个人在使用,也不会超过这个峰值速度。这200K 里面的100K 是暂时借用他人的,当别人需要时,将会自动退让出来。
2 、带宽有一定的使用率,速度在“保证速度”和“最大速度”之间
如果带宽有一定的使用率(有一定的上网人数,带宽使用率在80% 左右,比如有15 人在线),则下载速度会降低到“保证下载速度”和“最大下载速度”之间,即100K ~ 200K 。
通常,这种情况占多数。
3 、带宽使用率较高或全部使用,速度等于或小于“保证速度”
如果带宽使用率比较高(上网的人比较多,带宽使用率在90% 以上,比如20 人全部上线),则下载速度将会不会超过100K ,即:如果总带宽不能满足每人都可以达到“保证速度”,那么最终每个人的速度将会小于“保证速度”(平均分配后)。
例如,如果20 人全部同时下载,1000KBytes/s 的总下载速度,即每人分得50K 的速度。
总结:通常我们所应用QoS技术都是在带宽不够用的情况下保障数据的合理转发;也就是说只要带宽足够大,那麽并不需要实施QoS技术。
四. 处理流程
Classifying即分类,其过程是根据信任策略或者根据分析每个报文的内容来确定将这些报文归类到以CoS值来表示的各个数据流中,因此分类动作的核心任务是确定输入报文的CoS值。分类发生在端口接收输入报文阶段,当某个端口关联了一个表示QoS策略的Policy-map后,分类就在该端口上生效,它对所有从该端口输入的报文起作用。
(1) 协议
应用可以通过它们的EtherType进行识别。譬如,AppleTalk协议采用0x809B,IPX使用0x8137。根据协议进行优先级处理是控制或阻止少数较老设备所使用的“健谈”协议的一种强有力方法。
许多应用都采用一些TCP或UDP端口进行通信,如HTTP采用TCP端口80。通过检查IP数据包的端口号码,智能网络可以确定数据包是由哪类应用产生的,这种方法也称为第四层交换,因为TCP和UDP都位于OSI模型的第四层。
(3) 源IP地址
许多应用都是通过其源IP地址进行识别的。由于服务器有时是专门针对单一应用而配置的,如电子邮件服务器,所以分析数据包的源IP地址可以识别该数据包是由什么应用产生的。当识别交换机与应用服务器不直接相连,而且许多不同服务器的数据流都到达该交换机时,这种方法就非常有用。
(4) 物理端口号码
与源IP地址类似,物理端口号码可以指示哪个服务器正在发送数据。这种方法取决于交换机物理端口和应用服务器的映射关系。虽然这是最简单的分类形式,但是它依赖于直接与该交换机连接的服务器。
Policing 即策略,发生在数据流分类完成后,用于约束被分类的数据流所占用的传输带宽。Policing动作检查被归类的数据流中的每一个报文,如果该报文超出了作用于该数据流的Police所允许的限制带宽,那么该报文将会被做特殊处理,它或者要被丢弃,或者要被赋予另外的DSCP 值。
在QoS 处理流程中,Policing 动作是可选的。如果没有Policing 动作,那么被分类的数据流中的报文的DSCP 值将不会作任何修改,报文也不会在送往Marking 动作之前被丢弃。
Marking即标识,经过Classifying 和Policing 动作处理之后,为了确保被分类报文对应DSCP的值能够传递给网络上的下一跳设备,需要通过Marking 动作将为报文写入QoS 信息,可以使用QoS ACLs 改变报文的QoS信息,也可以使用Trust 方式直接保留报文中QoS 信息,例如,选择Trust DSCP 从而保留IP 报文头的DSCP 信息。
(7) 队列
Queueing即队列,负责将数据流中报文送往端口的某个输出队列中,送往端口的不同输出队列的报文将获得不同等级和性质的传输服务策略。
每一个端口上都拥有8 个输出队列,通过设备上配置的DSCP-to-CoS Map 和Cos-to-Queue Map 两张映射表来将报文的DSCP 值转化成输出队列号,以便确定报文应该被送往的输出队列。
Scheduling即调度,为QoS 流程的最后一个环节。当报文被送到端口的不同输出队列上之后,设备将采用WRR 或者其它算法发送8 个队列中的报文。
可以通过设置WRR算法的权重值来配置各个输出队列在输出报文的时候所占用的每循环发送报文个数,从而影响传输带宽。或通过设置DRR算法的权重值来配置各个输出队列在输出报文的时候所占用的每循环发送报文字节数,从而影响传输带宽。