QOS技术分析

2019-09-18 17:57:16 阅读量:


天给大家带来的技术是QOS,要学好QOS,首先得明白什么是QoS?
 
随着网络的发展,网络环境中的流量类型也日渐增多,用户对网络的要求也越来越高,那么我们如何在有限的网络资源下,让用户体验到更好的网络服务呢?这时候Qos应运而生。Qos(Quality of Service),顾名思义,就是提供服务保证质量。那对于网络来说QoS又是起什么作用?通常来说QoS就是对网络中带宽、延时、丢包率、抖动有一个控制。让我们网络中的数据以一个低延时,低丢包率,低抖动的形式在网络中传输,当然QoS的功能也不局限于此,站在高层面来看,只要是在提高我们的网络通信质量,就是在做QoS。

\
 
在传统网络下存在哪些问题使得我们需要QoS呢?如图传统设备在转发报文的时候会依照先到先发的原则对报文执行统一的转发,那么当入口的速率远远高于出口的速率时,我的流量将得不到及时转发,导致流量拥塞,这使得一些关键性业务的数据(语音、视频)在传输的时候得不到保证,进而使用户的体验变差。上面我们讲到了报文在转发的时候,如果链路有拥塞,报文在传输的过程中会出现问题,那么影响端到端通信质量的因素有哪些呢?这里我们简单介绍几个:

· 带宽:在一个单位时间,链路所能传输的数据量就是指带宽。那我们的链路带宽是如何计算的呢,如下图,在一条链路上最大是100Mbps的带宽,最小只有256Kbps的带宽可以使用,假设在链路传输的过程中,user-1端报文以100Mbps速率进入网络,当报文到达B路由器后,由于B的出口带宽较低,无法将user-1的数据及时的转发出去,此时流量就会因为得不到转发而产生拥塞,进而导致业务不正常。所以传输的过程中最大的带宽是我们链路的最小带宽。

\

· 网络时延:一份报文从发送端到接收端所需要的时间。时延通常包括传输时延、串行化时延、处理时延、队列时延,那么他们具体是如何计算的呢?我们来逐一解释:首先什么是传输时延,传输时延指的是链路一端设备发出的第一份报文的第一个数据位到达链路另外一端接收方所需要的时间,影响传输时延的因素一般有传输介质、传输距离;第二个串行化时延,它的计算是发送方发出报文的第一个比特到报文的最后一个比特所需要的时间,影响到串行化时延的因素有链路带宽和报文的大小;第三个处理时延,这个就比较好理解,处理时延的计算是报文从路由器入接口到出接口队列所需要的时间,影响到处理时延的因素主要是路由器的性能;最后一个队列时延,他指的是报文在队列中等待处理的时间,影响到队列时延的因素有报文的大小,队列中报文的大小及数量,以及队列调度机制。

以上就是我们所说的网络时延。

\

· 丢包率:丢包率指的是在一次报文的发送过程中,丢的包所占全部报文的比重,我们称之为丢包率,通过定义我们可以知道丢包率是影响我们通信质量的一个很重要的因素,那么丢包(packet loss)会在哪些过程中产生呢?以下我们简单说几个,第一、在处理过程中,路由器在收到报文cpu处理的时候,因为处理器较忙,导致数据产生丢包;第二、在排队过程中,由于队列占满产生丢包;第三、在传输过程中,由于链路故障等问题产生丢包。通常极少的丢包对于网络通信的影响是很小的,但是大量的丢包会影响到我们正常的通信,以下我们以语音传输举例,如图:

\

语音数据在传输的过程中产生大量的丢包,导致通信的不可靠。

· 抖动:在网络传输的过程中,由于端到端的时延不一样,导致报文不能在相同的时间间隔下到达接收端,这就叫抖动。通常来说时延越小,抖动也就越小。那么抖动会带来什么问题呢?

\

如图:在通信的过程中因为抖动使得语句的意思发生了改变,这在网络中是无法容忍的,所以传输过程中我们要保证一个较低的网络抖动。以上我们介绍了影响端到端通信质量的因素,或者说我们Qos所需要解决的问题。那么QoS如何解决这些问题呢?

QoS模型
 
网络通信都是由各种流量组成,其中有语音流量、视频流量、上网流量、数据流量,而每一种流量他们所希望得到的服务又不相同,比如说,语音流量它在传输的过程中希望能保证尽量少的延迟和抖动,下载业务希望保证较高的带宽,但是这些流量所希望得到的保证又取决于网络QoS所提供的能力,根据所实现的服务不同,我们将QoS分为三个模型:

· Best-Effort  Services Model

Best-Effort是一个比较单一的服务模型,也是一个比较简单的服务模型,设备根据先进先出的原则转发报文,不会事先做处理,也不会考虑所经过的网络情况,在Best-Effort服务模型下尽最大的可能性来发送报文,但对时延、抖动、丢包率等性能不提供任何保证,但他适用于绝大多数的应用,所以Best-Effort模型是网络缺省的服务模型,通过FIFO队列实现。

· Integrated  Services  Model 

IntServ服务模型,他是一个比较复杂的服务模型,在这种服务模型下,需要用到RSVP协议(资源预留协议),该模型在工作的时候,节点在发送报文前,首先通过RSVP信令构建一条专属于这个流的资源预留路径,从而确保网络能够数据流的需求。但是在IntServ服务模型下的每一台设备都需要启用RSVP,并且周期性的交互状态信息,这使得我们的网络开销比较大,当前Internet中有成千上万条网络流,因此IntServ在大型网络中得不到广泛的应用。

· Differentiated  Services Model

DiffSer服务模型也叫区分服务模型,它的工作原理是将我们网络中的数据流进行分类、标记,对不同的类进行不同的处理,使其拥有不同的优先级转发、时延、丢包率、抖动等服务。DiffSer服务模型的分类和标记是在DS边界节点路由器上实现的,边界节点路由器通过MQC(Modular QoS Command-Line Interface)中的traffic classfail基于多种条件灵活的对报文进行分类,然后对不同类型的报文打上不同的标记,而节点外其他的路由器只需要简单的识别报文上所携带的标记,对其进行资源分配和流量管理即可,这样减少了网络中路由器的开销,也满足了不同的流需要不同的服务的需求。同是根据以上的特点,说明了DiffSer是一个基于流的QoS服务模型。DiffSer服务模型充分的利用了IP网络的灵活性,扩展性强等特点,将复杂的服务质量保证通过数据报文自身携带的信息转换为单跳行为,从而减少了DS节点的工作。使得该模型是目前应用最广的一种服务模型。

QoS工作机制

上面我们介绍了QoS的一些基本的概念,接下来我们就说一下QoS的工作机制,如图,这是Qos的一个理论框架,本章节我们先讲一下这里面的分类与标记

\

为什么要对报文进行分类呢?在网络中要想实现差分服务就必须进行流量的分类,对进入DiffSer域的报文按照一定的分类原则(如通过ACL定义的规则)分类,对分类完成的流量打上标记,然后对不同标记的流量提供不同的服务。报文分类和标记依靠的就是QoS优先级,我们的设备在收到报文后,根据报文所携带的QoS优先级与设备内部优先级(设备内部区分报文服务等级的优先级)之间的转换,然后设备根据内部优先级提供有差别的QoS服务质量。在规划网络的时候用户可以在不同的网络使用不同的QoS优先级,比如说在valn使用802.1p,在ip网络中使用DSCP,在MPLS网络中我们去使用EXP。接下来我们详细讲一下QoS的优先级。在目前的Internet网络中为了针对不同的业务流量提供有差别的QoS服务质量,我们通过报文中的一些字段来标记一份业务流量,让设备依靠这些标记对流量提供差别服务,QoS中标记分为二层标记和三层标记。

· 二层标记

· Vlan帧中tag字段中的802.1P优先级

当我们需要对二层做标记的时候,由于缺省的二层报文是没有地方可以携带标记的,如图:
 
\

所以二层设备通常通过交换vlan帧,根据IEEE 802.1Q定义的Vlan帧中tag字段中的PRI字段(也可以称之为CoS)来表示QoS优先级,如图:

\

根据802.1Q头部中包含3比特长的PRI字段。我们定义了8种业务优先级CoS,按照优先级从高到低顺序取值为7、6、5、4、3、2、1和0。

· MPlS报文中的EXP

MPLS报文跟IP报文相比他多了一个标签字段,这个标签字段的大小是四个字节大,如图:

\

对于MPLS我们通常将exp域作为MPLS的cos域,用来进行区分流量和支持MPLS网络的区分服务。EXP字段也是3bit大小,表示8个传输优先级,按照优先级从高到低顺序取值为7、6、5、4、3、2、1和0。

· 三层标记

三层标记通常所说的就是ipv4报文中的ToS域,ToS域有8个比特长,在QoS里面对于Tos域有两种应用方式:

· IP-Precedence

\

跟据RFC791中的定义,我们将IPV4报文中的TOS字段的三个比特划为Precedence字段,用来表示IP报文的优先级,如图:

IPP将0~2比特定义成了优先级字段,也就是说IPP定义了8个报文传输优先级,分别是0、1、2、3、4、5、6、7,6和7是优先级最高的,路由协议之间通信通常使用这两个优先级,0~5是用户应用所使用的。以下每个优先级的使用:

· 111 - Network Control
· 110 - Internetwork Control
· 101 - CRITIC/ECP
· 100 - Flash Override
· 011 – Flash
· 010 - Immediate
· 001 - Priority
· 000 - Routine

在IPP中除了Preference字段,还定义了三个比特,分别是D、T、R。D是delay代表延时,0代表正常延时,1代表着低延时;T是Throughput代表吞吐量,0代表者是正常的吞吐量,1代表着高吞吐量;R是reliability代表可靠性的,0表示正常可靠性,1代表高可能性,使用的时候三个比特,只能将一个比特置位,如果都为零,那就说明是普通服务。

· DSCP

根据上面我们讲到IP-Precedence字段最多只能将IP报文分为8类,而在实际网络部署时,这些优先级是远远不够的,不能对数据流进行精细化的控制。所以RFC1349对我们的TOS域又进行了重新的定义,将第六个比特定义为C比特(Monetary Cost传输开销),之后,RFC2474将IPv4报文中的ToS域里面的0~5比特定义为DSCP,称之为DS
字段,如图

\

在DS字段中0~5位用作区DSCP,同时将0~3位用作CSCP(相同CSCP的视为一类DSCP),6~7位我们将其保留。DS节点会根据DSCP去选择相对应的PHB,什么是PHB呢?DS节点对通过某一条链路的具有相同DSCP值的报文所执行的转发行为我们称之为PHB。目前我们通过DSCP值定义了四类PHB:

· CS PHB:CSCP(类选择代码点),他的范围是0~2总共三个比特,表示为“XXX000”X可以为0也可以为1,也就是说CSCP将DSCP的64个优先级分为了7类(没有000,全零为default PHB),分别是CS1(001)、CS2(010)、CS3(011)、CS4(100)、CS5(101)、CS6(110)、CS7(111),CS6和CS7最优,通常在网间、网内协议控制报文中使用,因为这些报文无法接收的话会引起协议中断,CS1和CS5一般是用户去应用。

· Default PHB:DSCP值为000000,每个DS节点都需要一个默认PHB,这个PHB就是现在网络中我们多见到的尽力而为(BE)转发行为,通常一份数据流,在没有可识别的DSCP时,节点就应该假设该流属于default PHB,执行转发行为。

· AF PHB:AF(AssuredForwarding)确保转发,由RFC2597定义,假设在实际传输的时候,如果流量超过了我们预定的信息速率特征描述,那么超出预定速率特征描述的流量和在预定范围内的流量不应该得到同样的发送概率,在这个情况下,一个节点流量可以超过预定特征描述,但是属于同一CSCP的包不应该被重新排序,不论这个包是否在预定特征描述内,那么问题来了,属于同一CSCP的数据流,可能存在多种业务流量,他们不重要的可能的在特征描述内,重要的在外边,反而得不到高的转发速率。AF PHB就为该问题提供了一种解决办法,AF定义了四个保证转发类,每一个DS节点为每一个保证转发类提供一定的转发资源,保证转发类分别是001、010、011、100,同时又将第3比特和第4特定义为丢弃位,这样在同一类数据中有根据丢弃位又可以分为三类01、10、11,这样使得流量能够得到较好的转发或者处理。所以AF的DSCP值为:
 
AF11
AF12
AF13
AF21
AF22
AF23
AF31
AF32
AF33
AF41
AF42
AF43
 

第一个十进制位越高转发可能性越高;第二个十进制位越高丢弃可能性越高;

· EF PHB:

快速转发PHB,由RFC2598定义,固定值为101110,EFPHB适用于承载语音的流量,因为语音要求低延迟,低抖动,低丢包率,是仅次于协议报文的最重要的报文。

差分服务

差分服务,他目的在于:在不需要规定每一条数据流的动作以及每一跳都需要有所动作的情况下,使其能够对不同的要求进行区分对待。不同的服务类型可以从配置于网络节点中的小的、以定义了的构造块(功能)中来构造。服务可能是端到端或域内的; 它们包括那些能够满足一定性能要求(例如,峰值带宽)和基于相对性能(例如,“类”区分)的。服务可以通过以下方式构建:

· 在网络边界(自治系统边界,内部管理边界或主机)的IP头域中的置位.
· 使用这些位来确定数据包如何由网络内的节点转发.
· 根据每个服务的要求或规则对网络边界处的标记数据包进行调整。

拥塞管理

\


分类和标记我们已经介绍完了,今天我们先聊一下拥塞管理,什么是拥塞管理呢?定义上这么说道:在网络间歇性出现拥塞,时延敏感业务要求得到比其它业务更高质量的QoS服务时,通过调整报文的调度次序来满足时延敏感业务高QoS服务的一种流量控制机制。这里我们可以读到一个词“调度次序”,拥塞管理一般采用队列技术,使用不同的调度算法来发送队列中的报文流。设备上一般有四或八个队列,以队列索引号的形式表示,分别是0、1、2、3或0、1、2、3、4、5、6、7,流量(报文)进入到设备后根据优先级跟队列的映射关系,将分类好的报文放进对应的队列,然后根据队列的调度机制,对队列中的报文进行转发处理。关于队列调度方式,常见的有FIFO、RR、DRR、WRR、PQ、WFQ、Q-Prefile、CBQ,下面我们对这几种队列调度方式一一介绍:FIFO:First In First Out(先进先出)FIFO队列不对报文进行分类,当报文进入接口的速度大于出接口能发送的速度时,FIFO按报文到达接口的先后顺序让报文进入队列,同时,FIFO在队列的出口让报文按进队的顺序出队,先进的报文将先出队,后进的报文将后出队。调度过程如图: 
 
\

如图:FIFO队列不对报文进行分类,当报文进入接口的速度大于出接口能发送的速度时,FIFO按报文到达接口的先后顺序让报文进入队列,同时,FIFO在队列的出口让报文按进队的顺序出队,先进的报文将先出队,后进的报文将后出队。此调度方式下,FIFO队列具有处理简单,开销小的优点。但FIFO不区分报文类型,采用尽力而为的服务模型,使得对时延敏感的实时应用的延迟得不到保证,关键业务的带宽也不能得到保证。

PQ:Priority Queuing(优先级队列),PQ调度,针对于关键业务类型应用设计,PQ调度算法维护一个优先级递减的队列系列并且只有当更高优先级的所有队列为空时才服务低优先级的队列。这样,将关键业务的分组放入较高优先级的队列,将非关键业务(如E-Mail)的分组放入较低优先级的队列,可以保证关键业务的分组被优先传送,非关键业务的分组在处理关键业务数据的空闲间隙被传送。

\

如图:假设有4个队列,分别为高优先队列、中优先队列、正常优先队列和低优先队列,它们的优先级依次降低。在报文出队的时候,PQ会首先让高优先队列中的报文出队并发送,直到高优先队列中的报文发送完,然后发送中优先队列中的报文,同样,直到发送完,然后是正常优先队列和低优先队列。PQ调度算法对低时延业务非常有用。假定数据流X在每一个节点都被映射到最高优先级队列,那么当数据流X的分组到达时,则该分组将得到优先服务。然而PQ调度机制会使低优先级队列中的报文得不到调度机会。例如,如果映射到top队列的数据流在一段时间内以100%的输出链路速率到达,调度器将从不为Middle及以下的队列服务。为了避免队列饥饿,上游设备需要精心规定数据流的业务特性,以确保映射到top队列的业务流不超出输出链路容量的一定比例,这样top队列会经常为空,低优先级队列中的报文才能得到调度机会。

RR:Round Robin(轮询),基于报文的公平调度(Round Robin)RR,基于报文的公平调度,每个队列调度出一个报文,就转下一个队列,采用轮询的方式进行调度,如果轮询的队列不为空,则从该队列取走一个报文;如果该队列为空,则直接跳过该队列,调度器并不等待。

\

如图:RR调度,从队列1取出一个报文,就转到队列2继续,然后队列3、4,那么此种队列调度方式有什么优点和缺点呢?

l  优点:
•      隔离了不同的流,实现了队列之间对带宽的平等利用
•      剩余带宽能够被其他队列平均分配

l  缺点:
•      无法设置队列占用带宽的权重;
•      当不同队列中的报文长度不一的时候,调度不准确;
•      当调度速率低的时候,时延和抖动的问题比较突出,比如一个包到达一个空队列,而这个队列刚刚被调度完毕,则这个包要等到其他全部的队列调度完才能取得出接口的机会,这样会导致抖动比较大,但是如果调度速度非常高,则这种时延可以忽略,RR在高速路由器内部有很多应用。

WRR:Weighted Round Robin(加权轮询),权循环调度WRR(Weight Round Robin)在循环调度RR(Round Robin)的基础上演变而来,在队列之间进行轮流调度,根据每个队列的权重来调度各队列中的报文流。实际上,RR调度相当于权值为1的WRR调度。如下图:WRR为每一个队列分配一个权值,在进行WRR调度时,设备根据每个队列的权值进行轮循调度。调度一轮权值减一,权值减到零的队列不参加调度,当所有队列的权限减到0时,开始下一轮的调度。
 
\

DRR:Deficit Round Robin(赤子轮询),DRR(Deficit Round Robin)调度同样也是RR的扩展,相对于WRR来言,解决了WRR只关心报文,同等调度机会下大尺寸报文获得的实际带宽要大于小尺寸报文获得的带宽的问题,在调度过程中考虑包长的因素以达到调度的速率公平性。DRR调度中,Deficit表示队列的带宽赤字,初始值为0。每次调度前,系统按权重为各队列分配带宽,计算Deficit值,如果队列的Deficit值大于0,则参与此轮调度,发送一个报文,并根据所发送报文的长度计算调度后Deficit值,作为下一轮调度的依据;如果队列的Deficit值小于0,则不参与此轮调度,当前Deficit值作为下一轮调度的依据。如图:我们观察一下DRR调度是如何工作的:

\

\

\

第1轮调度:Deficit[7][1] = 0+400 = 400,Deficit[6][1] =0+300 = 300,从Q7队列取出一个900byte的报文发送,从Q6队列取出一个400byte的报文发送;发送后,Deficit[7][1] = 400–900 =–500,Deficit[6][1] = 300–400 =–100。

第2轮调度:Deficit[7][2] = -500+400 = -100,Deficit[6][2] =-100+300 = 200,Q7队列Deficit值小于0,此轮不参与调度,从Q6队列取出一个300byte的报文发送;发送后,Deficit[6][2] = 200–300 =–100。

第3轮调度:Deficit[7][3] = -100+400 = 300,Deficit[6][3] =-100+300 = 200,从Q7队列取出一个600byte的报文发送,从Q6队列取出一个500byte的报文发送;发送后,Deficit[7][3] = 300–600 =–300,Deficit[6][3] = 200–500 =–300。如此循环调度,最终Q7、Q6队列获取的带宽将分别占总带宽的20%、15%,因此,用户能够通过设置权重获取想要的带宽。

WDRR:Weighted Deficit Round Robin(加权差额循环调度),基于报文字节的加权调度,该算法基于两个变量:配额(quantum)和余额(credit counter),配额代表权重,以字节为单位,是可配置的参数,余额用来表示配额的积累和消耗情况,是状态参数,不可配置。初始状态下,每个队列的余额等于其配额,当队列每发送一个报文的时候,余额就减去这个报文的字节数,当余额低于0的时候就停止这个队列的调度。当所有队列都停止调度的时候就为所有队列补充配额。权重N的范围为0~127,权重为N表示配额是(N*MTU_QUANTA)字节,这个(MTU_QUANTA为2K),N为0表示严格优先级。

WFQ:Weighted Fair Queuing(加权公平队列),说WFQ之前我们先说一下FQ,FQ的出现目的在于尽可能公平地分享网络资源,使所有流的延迟和抖动达到最优,那他是如何做的呢?

1. 不同的队列获得公平的调度机会,从总体上均衡各个流的延迟。
2. 短报文和长报文获得公平的调度:如果不同队列间同时存在多个长报文和短报文等待发送,让短报文优先获得调度,从而在总体上减少各个流的报文间的抖动。

与FQ相比,WFQ(WeightedFair Queue)在计算报文调度次序时增加了优先权方面的考虑。从统计上,WFQ使高优先权的报文获得优先调度的机会多于低优先权的报文。WFQ调度在报文入队列之前,先对流量进行分类,有两种分类方式:

1. 按流的“会话”信息分类:根据报文的协议类型、源和目的TCP或UDP端口号、源和目的IP地址、ToS域中的优先级位等自动进行流分类,并且尽可能多地提供队列,以将每个流均匀地放入不同队列中,从而在总体上均衡各个流的延迟。在出队的时候,WFQ按流的优先级(precedence)来分配每个流应占有带宽。优先级的数值越小,所得的带宽越少。优先级的数值越大,所得的带宽越多。这种方式只有CBQ的default-class支持。

2. 按优先级分类:通过优先级映射把流量标记为本地优先级,每个本地优先级对应一个队列号。每个接口预分配8个队列,报文根据队列号进入队列。默认情况,队列的WFQ权重相同,流量平均分配接口带宽。用户可以通过配置修改权重,高优先权和低优先权按权重比例分配带宽。

\ 
 
如图,这是WFQ的工作过程,首先对报文流进行分类,放入到队列中,然后根据优先级对每一个队列分配一个带宽,设备依据这个带宽去执行转发。此种工作方式有什么优点和缺点呢?

· 优点:可完全按照权重分配带宽;自动分类,配置简单。
· 缺点:低时延业务仍得不到及时调度;无法实现用户自定义分类规则。

Q-Prefile:队列模板,通过以上的讲解,大家可能会发现单队列调度模式多多少少存在一些缺点,所以我们提出了一种新的队列调度模式——队列模板,将多种队列调度技术结合使用,使得我们可以尽可能的得到更好的服务质量,我们常见的结合方式有以下几种:

· PQ+WRR调度:

PQ调度和WRR调度各有优缺点,为了克服单纯采用PQ调度或WRR调度时的缺点,PQ+WRR调度以发挥两种调度的各自优势,不仅可以通过WRR调度可以让低优先级队列中的报文也能及时获得带宽,而且可以通过PQ调度可以保证了低延时需求的业务能优先得到调度。

在设备上,用户可以配置队列的WRR参数,根据配置将接口上的8个队列分为两组,一组(例如Queue7、Queue6、Queue5)采用PQ调度,另一组(例如Queue4、Queue3、Queue2、Queue1和Queue0队列)采用WRR调度。设备上只有LAN侧接口支持PQ+WRR调度。

如下图:在调度时,设备首先按照PQ方式调度Queue7、Queue6、Queue5队列中的报文流,只有这些队列中的报文流全部调度完毕后,才开始以WRR方式循环调度其他队列中的报文流。Queue4、Queue3、Queue2、Queue1和Queue0队列包含自己的权值。重要的协议报文和有低延时需求的业务报文应放入采用PQ调度的队列中,得到优先调度的机会,其余报文放入以WRR方式调度的各队列中。
 
\ 
 
· PQ+DRR调度

与PQ+WRR相似,其集合了PQ调度和DRR调度各有优缺点。单纯采用PQ调度时,低优先级队列中的报文流长期得不到带宽,而单纯采用DRR调度时低延时需求业务(如语音)得不到优先调度,如果将两种调度方式结合起来形成PQ+DRR调度,不仅能发挥两种调度的优势,而且能克服两种调度各自的缺点。设备接口上的8个队列被分为两组,用户可以指定其中的某几组队列进行PQ调度,其他队列进行DRR调度。如下图:在调度时,设备首先按照PQ方式优先调度Queue7、Queue6和Queue5队列中的报文流,只有这些队列中的报文流全部调度完毕后,才开始以DRR方式调度Queue4、Queue3、Queue2、Queue1和Queue0队列中的报文流。其中,Queue4、Queue3、Queue2、Queue1和Queue0队列包含自己的赤子值。重要的协议报文以及有低延时需求的业务报文应放入需要进行PQ调度的队列中,得到优先调度的机会,其他报文放入以DRR方式调度的各队列中。

\

· PQ+WFQ

与PQ+WRR相似,其集合了PQ调度和WFQ调度各有优缺点。单纯采用PQ调度时,低优先级队列中的报文流长期得不到带宽,而单纯采用WFQ调度时低延时需求业务(如语音)得不到优先调度,如果将两种调度方式结合起来形成PQ+WFQ调度,不仅能发挥两种调度的优势,而且能克服两种调度各自的缺点。需要注意的是:V200R008C30及以前版本,只有WAN侧接口支持PQ+WFQ调度。V200R008C50及以后版本,WAN侧接口和二层VE接口支持PQ+WFQ调度。工作方式如图:
 
\
 
CBQ调度:CBQ(Class-basedQueueing)基于类的加权公平队列是对WFQ功能的扩展,为用户提供了定义类的支持。CBQ首先根据IP优先级或者DSCP优先级、输入接口、IP报文的五元组等规则来对报文进行分类,然后让不同类别的报文进入不同的队列。对于不匹配任何类别的报文,送入系统定义的缺省类。CBQ提供四种类队列:

· EF队列(快速转发队列):满足低时延业务
· AF队列(确保转发队列):满足需要带宽保证的关键数据业务
· BE队列(默认队列):满足不需要严格QoS保证的尽力发送业务
· LLQ队列(低延时队列):满足比EF队列中的流量时延还要敏感的业务在队列优先上:BE
\

以上便是拥塞管理技术,在现在的网络环境中,根据排队的方式和调度机制的不同,我们在广域网(WAN)接口上可以使用的拥塞管理技术有:PQ、WFQ、Q-Prefile(PQ+WFQ);在LAN口上可以使用的拥塞管理技术有:PQ、DRR、WRR、Q-Prefile(PQ+WRR、PQ+DRR)。