一种基于FPGA队列实现QoS队列的方法和设备的制作方法

文档序号:7857259阅读:380来源:国知局
专利名称:一种基于FPGA队列实现QoS队列的方法和设备的制作方法
技术领域
本发明涉及通信技术领域,特别涉及一种基于FPGA队列实现QoS队列的方法和设备。
背景技术
在采用FPGA(Field Programmable Gate Array,现场可编程阵列)作为核心完成高速报文转发的网络设备(路由器、防火墙等)中,将以前由CPU(Central ProcessingUnit,中央处理器)软件实现的报文转发、业务等处理下移到FPGA转发引擎上来实现。FPGA转发引擎能够快速处理报文,但难以支撑复杂业务,且FPGA资源较为有限。CPU将控制信息下发到FPGA,FPGA根据这些控制信息对报文进行转发和业务处理。 如图I所示,为现有技术中FPGA转发引擎数据平面控制平面的示意图。其中,具体的报文处理过程如下FPGA转发引擎收到报文(即图I中所示的步骤I),如果该报文是首包,或者本机报文,或者根据控制平面的信息确定该报文是需要上送CPU的报文,则将该报文上送CPU (即图I中所示的步骤2),CPU将处理后的报文下发到FPGA转发引擎的数据平面(即图I中所示的步骤3),数据平面查询控制平面获取控制信息,并将统计信息等写回控制平面(即图I中所示的步骤7和8),然后,数据平面将处理后的报文进行发送(即图I中所示的步骤4)。后续报文都会按照控制平面的控制信息进行处理。为了适应复杂的网络环境,丰富的QoS(Quality of service,服务质量)功能是路由器等网络设备必不可少的特性。常用QoS技术包括流分类、CAR (Committed AccessRate,约定访问速率)、GTS (Generic Traffic Shaping,通用流量整形)、LR (Line Rate,接口总速率限制)、拥塞管理等。流分类采用一定的规则识别符合某类特征的报文,它是对网络业务进行区分服务的如提和基础。CAR :对进入或流出设备的特定流量进行监管。当流量超出设定值时,可以采取限制或惩罚措施,以保护网络资源不受损害。GTS: —种主动调整流的输出速率的流量控制措施,用来使流量适配下游设备可供给的网络资源,避免不必要的报文丢弃。LR :可以在一个接口上限制发送报文(包括紧急报文)的总速率。拥塞管理就是当拥塞发生时如何制定一个资源的调度策略,以决定报文转发的处理次序,如 FIFO (First Input First Output,先入先出)、WFQ (Weighted Fair Queuing,加权公平队列)和CBQ(Class Based Queuing,基于类的队列)等。拥塞管理一般采用队列技术,使用队列算法对流量进行分类,之后用某种优先级别算法将这些流量发送出去。每种队列算法都用以解决特定的网络流量问题,并对带宽资源的分配、延迟、抖动等有着十分重要的影响。队列调度对不同优先级的报文进行分级处理,优先级高的会得到优先发送。在上述QoS技术中,GTS、LR和拥塞管理(FIF0、WFQ和CBQ等)都可以基于队列实现,但又存在一些差异。(I)GTS :对超出指定速率的流量进行入队缓存,当令牌桶有足够的令牌时,再均匀的向外发送这些被缓存的报文。其队列的可用带宽是固定的。(2)LR :对接口上的所有报文进行流量控制。如果在设备的某个接口上配置了 LR,所有从该接口发送的报文首先要经过LR的令牌桶进行处理。如果令牌桶中有足够的令牌,则报文可以发送;否则,报文将进入QoS队列进行拥塞管理。(3) FIFO:按照时间到达的先后决定报文的转发次序,先进的先出,后进的后出,不需要进行流分类和队列调度,FIFO关心的只是队列的长度,队列的长度对延迟和丢包率有影响。(4)WFQ :在公平队列的基础上增加了优先权,使高优先权的报文获得优先调度的 机会多于低优先权的报文。WFQ能够按流的“会话”信息(协议类型、源和目的TCP或UDP端口号、源和目的IP地址、ToS域中的优先级等)自动进行流分类,并且尽可能多地提供队列,以将每个流均匀地放入不同队列中,从而在总体上均衡各个流的延迟。在出队的时候,WFQ按流的优先级来分配每个流应占有出口的带宽。优先级的数值越小,所得的带宽越少。优先级的数值越大,所得的带宽越多。(5)CBQ:是对WFQ功能的扩展,为用户提供了定义类的支持。在网络拥塞时,CBQ根据用户定义的类规则对报文进行匹配,并使其进入相应的队列,在入队列之前必须进行拥塞避免机制和带宽限制的检查。在报文出队列时,加权公平调度每个类对应的队列中的报文。CBQ是基于带宽保证的队列技术,在带宽有剩余时,可以进行带宽抢占。CBQ可以包括以下队列紧急队列采用FIFO调度,没有带宽限制,一般情况下,物理接口中均已预留紧急队列的资源,所以,每个物理接口自带了自身相应的紧急队列。EF (Expedited Forwarding,快速转发)队列(低延迟队列)如果没有拥塞发生,允许使用超过分配的带宽;如果发生拥塞,超过分配带宽的报文将被丢弃。AF (Assured Forwarding,确保转发)队列(带宽队列)为AF业务提供严格、精确的带宽保证,并且保证各类AF业务之间按一定的比例关系进行队列调度。缺省队列(WFQ队列)用来支撑BE(Best Effort,尽力服务)业务,使用接口剩余带宽进行发送。需要说明的是,在具体的处理场景中,上述的EF队列和AF队列可以根据实际需要选择其中的任意一种队列,或者将两种队列同时应用,来实现上述的CBQ。在现有技术中,往往采用不同的队列技术分别实现GTS、LR、FIFO、WFQ和CBQ。(I)GTS :用一个FIFO队列实现,并指定带宽。对超出指定带宽的流量进行入队缓存,当令牌桶有足够的令牌时,再均匀的向外发送这些被缓存的报文。(2) LR:设置接口带宽,对接口进行限速。所有从该接口发送的报文首先要经过LR的令牌桶进行处理。如果令牌桶中有足够的令牌,则报文可以发送;否则,报文将进入QoS队列进行拥塞管理。(3)FIFO :用一个FIFO队列实现,不需要队列调度。(4) WFQ :用一组WFQ队列实现。在出队的时候,WFQ按流的优先级来分配每个流应占有出口的带宽。
(5) CBQ :同时支持紧急队列、EF、AF和BE队列,根据用户定义的类规则对报文进行匹配,并使其进入相应的队列,在报文出队列时,加权公平调度每个类对应的队列中的报文。在带宽有剩余时,可以进行带宽抢占。在实现本发明的过程中,发明人发现现有技术至少存在以下问题如图2所示,为现有技术中的报文进行QoS队列处理过程的流程示意图,需要逐一进行GTS、LR、FIFO、WFQ和CBQ的判断处理,在最复杂的情况下,需要对一个报文进行所有配置队列的轮询后才能确定其真正对应的队列,并进行相应的处理。在现有技术中,采用不同的队列技术分别实现GTS、LR、FIFO、WFQ和FPGA实现的复杂度,缺乏可扩展性
发明内容

本发明实施例提供了一种基于FPGA队列实现QoS队列的方法和设备,解决现有技术中采用不同的队列技术分别实现GTS、LR、FIFO、WFQ和CBQ所带来的处理复杂,扩展性欠缺的问题。为达到上述目的,本发明实施例一方面提供了一种基于FPGA队列实现QoS队列的方法,至少包括以下步骤当一个接口上配置QoS策略时,FPGA转发设备根据所述QoS策略,为所述接口申请相应的队列;所述FPGA转发设备为所申请的队列分配相应的队列组,并配置所述队列组的属性,实现所述QoS策略所对应的队列配置;当所述FPGA转发设备通过所述接口转发所述QoS策略所对应的报文时,所述FPGA转发设备根据所述队列组的属性以及所述接口的属性,通过所述队列组中的队列对所述报文进行转发处理。另一方面,本发明实施例还提供了一种FPGA转发设备,至少包括队列申请模块,用于当一个接口上配置QoS策略时,根据所述QoS策略,为所述接口申请相应的队列;队列组配置模块,用于为所述队列申请模块所申请的队列分配相应的队列组,并配置所述队列组的属性,实现所述QoS策略所对应的队列配置;报文处理模块,用于在通过所述接口转发所述QoS策略所对应的报文时,根据所述队列组配置模块所配置的所述队列组的属性以及所述接口的属性,通过所述队列组中的队列对所述报文进行转发处理。与现有技术相比,本发明实施例所提出的技术方案具有以下优点通过应用本发明实施例的技术方案,在接口配置QoS策略时,由FPGA转发设备为该接口申请相应的队列,为所申请的队列分配相应的队列组,并配置所述队列组的属性,以实现该QoS策略所对应的队列配置,在该接口转发所述QoS策略所对应的报文时,根据所述队列组的属性以及所述接口的属性,通过所述队列组中的队列对所述报文进行转发处理,从而,使FPGA转发设备在报文处理过程中,只需基于队列组进行资源调度,而不需要区分用户的具体配置,便可以同时支持多种QoS策略,基于QoS策略完成对报文的处理,降低了QoS策略实现的复杂度,简化了 QoS策略下的报文处理流程,同时,根据不同的队列资源调度选择方案,可以方便的实现更丰富的QoS策略扩展。


图I为现有技术中FPGA转发引擎数据平面控制平面的示意图;图2为现有技术中的报文进行QoS队列处理过程的流程示意图;图3为本发明实施例所提出的一种基于FPGA队列实现QoS队列的方法的流程示意图;图4为本发明实施例所提出的一种FPGA队列资源的组织方式的示意图;图5为本发明实施例所提出的一种具体应用场景下的GTS策略的队列实现方式的示意图;
图6为本发明实施例所提出的一种具体应用场景下的FIFO策略的队列实现方式的不意图;图7为本发明实施例所提出的一种具体应用场景下的WFQ策略的队列实现方式的示意图;图8为本发明实施例所提出的一种具体应用场景下的CBQ策略的队列实现方式的示意图;图9为本发明实施例所提出的一种具体应用场景下的嵌套CBQ策略的队列实现方式的示意图;图10为本发明实施例所提出的一种存在逻辑接口的应用场景下的多种QoS策略的队列实现方式的示意图;图11为本发明实施例所提出的一种具体应用场景下的基于FPGA队列实现QoS队列进行报文处理的流程示意12为本发明实施例所提出的一种FPGA转发设备的结构示意图。
具体实施例方式如背景技术所述,现有技术中需要采取不同的队列技术才能支持不同的QoS策略,而且,为了匹配不同的队列技术,在进行报文处理时,需要逐一进行GTS、LR、FIFO、WFQ和CBQ的判断处理,在最复杂的情况下,需要对一个报文进行所有配置队列的轮询后才能确定其真正对应的队列,并进行相应的处理,这样的处理过程复杂,而且浪费了大量的系统资源进行判断处理,也降低了报文处理效率。为了克服这样的缺陷,本发明实施例提出一种基于FPGA队列实现QoS队列的方法,通过为接口申请基于对列组的队列,并进行相应的队列组和接口的限速处理,使FPGA转发设备只需要基于队列组进行队列资源的调度,便可以同时支持GTS、LR、FIFO、WFQ、CBQ、嵌套CBQ等多种QoS策略,而且,在进行报文处理时,不再需要区分用户的具体配置,简化了报文处理流程,降低了设备的复杂度。对应于一个接口,需要通过不同类型的队列资源的申请和调用来实现各种QoS策略。考虑到现有的几种主要的QoS策略中,队列规则最复杂的为CBQ策略,因此,在具体的应用过程中,相应的队列资源可以采用基于CBQ策略的队列需要的方式来实现,在一种最复杂的情况下,所应用的队列资源最终可以应用为紧急队列,EF队列,AF队列和BE队列几种形式。在具体的应用场景中,一个接口下可以配置多种QoS策略,相应的业界可以配置多个队列组,每个队列组中又可以包含多种队列资源,如图3所示,为本发明实施例所提出的一种FPGA队列资源的组织方式的示意图。在应用这样的组织方式的情况下,该接口下的队列支持以下几种限速类型物理接口限速、队列组限速、EF类报文限速和AF类报文限速。这样的多种限速类型可以通过配置相应的限速属性或规则来实现。需要说明的是,FPGA转发设备在具体的应用过程中,是通过基于队列组进行资源调度的方式来实现相应的QoS策略的,而在队列组内,相应的队列调度机制具体如下 首先,对输入流量进行基于类的流分类,对符合一条分类规则的流指定相应的队列,然后,按照该队列的指定带宽进行调度,此处,可以应用EF类报文限速和AF类报文限速。而对不匹配任何规则的流量,则实施WFQ调度。在一个队列组内,所有队列的流量均会受队列组带宽的限制,即应用队列组限速。在经过队列组内的队列调度后,报文最终从物理接口发送出去,这又会受物理接口带宽限制,即应用物理接口限速。由以上队列资源的配置规则可以看出,在具体的应用过程中,FPGA转发设备可以根据具体应用队列的灵活选择,配合相应的限速属性或规则的配置,来实现不同的QoS策略下的队列部署,具体的实现方案在后续步骤中进行说明。如图4所示,为本发明所提出的一种基于FPGA队列实现QoS队列的方法的流程示意图,该方法具体包括以下步骤步骤S401、当一个接口上配置QoS策略时,FPGA转发设备根据所述QoS策略,为该接口申请相应的队列。具体的,根据该接口上所应用的QoS策略的内容差异,本步骤中的处理可以分为以下几种情况情况一、QoS策略具体为GTS策略。FPGA转发设备直接为该接口申请一个BE队列。情况二、QoS策略具体为LR策略。在LR策略的场景下,FPGA转发设备对于队列的申请并没有具体的要求,具体申请哪种或者哪几种的队列,以及所申请的队列数量,只需要满足LR策略的传输需求或当前系统场景的要求即可,本发明实施例对此并不会加以限制。情况三、QoS策略具体为FIFO策略。FPGA转发设备根据所述FIFO策略,为该接口申请一个BE队列。情况四、QoS策略具体为WFQ策略。FPGA转发设备根据所述WFQ策略,为该接口申请多个BE队列,即申请了同一种类型的队列资源来实现该WFQ策略,这样就避免了申请不同类型的队列类型所先天带来的处理优先级差异。考虑到WFQ策略的特点,在完成上述的队列申请后,需要对各队列进行权重配置,其所依据的规则可以是不同队列所对应的IP优先级或DSCP(Differentiated ServicesCode Point,差分服务代码点)等。情况五、QoS策略具体为CBQ策略。首先,所述FPGA转发设备进行队列申请,根据所述CBQ策略,为该接口申请多个BE队列,以及一个EF队列和/或多个AF队列。需要说明的是,在具体的应用场景中,对于每个物理接口,系统均会保留一个紧急队列,因此,对于CBQ策略的实现,只需要完成上述几种队列的申请即可,紧急队列则直接利用物理接口的紧急队列,不需要再另行申请。在完成上述队列的申请后,出于实现CBQ策略的需求,还需要对所申请的队列进行如下处理如果申请了 EF队列,则对EF队列按照指定速率设置EF限速,即实现了前述的EF 类报文限速。如果申请了 AF队列,则对AF队列按照配置设置AF限速和每个AF队列的权重,即实现了前述的AF类报文限速。对BE队列根据IP优先级或DSCP为每个队列设置权重。情况六、QoS策略具体为嵌套CBQ策略。在CBQ策略的基础上,嵌套CBQ包括父策略和子策略。首先,按照情况五中的处理方式,FPGA转发设备首先申请多个BE队列,以及一个EF队列和/或多个AF队列来实现嵌套CBQ策略中的父策略,并对各队列实现相应的权重和队列限速的配置。然后,FPGA转发设备再申请多个BE队列,以及一个EF队列和/或多个AF队列(与前述申请的用于实现父策略的队列不同)来实现嵌套CBQ策略中的子策略。与情况五相类似,在本情况中,同样无需申请紧急队列,而是直接利用物理接口的紧急队列即可。需要说明的是,上述的几种情况可以独立的存在,也可以进行组合设置,具体的设置方案根据实际需要进行确定,这样的变化并不影响本发明的保护范围。步骤S402、所述FPGA转发设备为所申请的队列分配相应的队列组,并配置所述队列组的属性,实现所述QoS策略所对应的队列配置。具体的,队列组的配置过程是基于步骤S401中的队列申请结果来实现的因此,根据接口上所应用的QoS策略的内容差异,本步骤中的处理同样可以分为以下几种情况,需要说明的是,此处的情况标号与步骤S401中的情况标号相一致,是对同一种QoS情况的进
一步处理情况一、QoS策略具体为GTS策略。首先,所述FPGA转发设备分别将步骤S401中所申请的BE队列分配到一个队列组,即在具体的队列实现上,是通过只包含BE队列的一个队列组来实现GTS策略的。这样进行队列申请和队列组分配的原因在于如前所述,本发明实施例中的资源组织方案是基于CBQ策略来实现的,而GTS策略与CBQ策略不同,其带宽是固定的,不能抢占空闲的剩余带宽。但基于CBQ策略来配置的队列资源,先天的具有抢占带宽的性质。
因此,在应用GTS策略时,需要为GTS策略单独应用单一类型的队列资源(即队列资源自身不存在优先级差异)。考虑到基于CBQ策略实现的EF队列,AF队列和BE队列之间采用了绝对优先级调度(紧急队列不会参与队列组内的调度,因此,不会与上述三种队列发生带宽抢占),BE队列不会抢占其他两种队列的带宽资源,但其他两种队列却可能抢占BE队列的带宽资源,因此,可以优先申请BE队列来实现GTS策略。进一步的,为了避免同一类型的队列之间的带宽抢占,优选的,可以在一个队列组中,只分配一个BE队列,即采用一个只包含一个BE队列的队列组来实现上述的GTS策略。在完成了上述的队列申请后,通过限制为所申请的队列所分配的队列组的带宽,实现对相应的队列组的队列组限速属性的配置,即对所申请的BE队列所处的队列组配置组限速规则,使该队列组内的GTS队列没有其他可抢占的带宽资源,从而,保证GTS策略实施的正确性。
再进一步的,根据相应的GTS策略或当前系统场景的需要,还需要对所述接口配置接口限速属性,在实际应用中,可以具体为对物理接口进行限速,实现前述的物理接口限速。在具体的应用场景中,一个接口上可以同时配置多个GTS策略,例如配置匹配不同ACL规则的GTS策略。因此,为防止带宽抢占,接口上的每个GTS策略都需要单独通过一个队列组来实现,并根据配置限制组带宽。如图5所示,为本发明实施例所提出的一种具体应用场景下的GTS策略的队列实现方式的示意图。在该应用场景下,物理接口上配置了两个GTS策略(GTSI和GTS2),FPGA转发设备为这两个GTS策略分别分配了相应的队列组,在每个队列组中,分别只申请了一个BE队列,这样,避免了同一个队列组内BE队列之间,以及BE队列和其他队列之间的带宽抢占,然后,分别根据两个GTS策略的具体参数要求为两个队列组设置相同或不同的队列组限速规则,实现队列组限速,最后,在物理接口上设置接口限速规则,实现了物理接口限速。需要说明的是,上述的通过只包含BE队列的队列组来实现GTS策略的方式只是本发明实施例所给出的一种优选示例,在保证不会发生带宽抢占的情况下,其他的队列资源配置方案也可以应用于本发明实施例,这样的变化并不影响本发明的保护范围。情况二、QoS策略具体为LR策略。在接口配置LR策略的场景下,FPGA转发设备通过步骤S401为该接口申请了相应的队列资源,但是,考虑到LR策略对于流量的限制需求,可以按照具体的接口的类型进行相应的处理当配置LR策略的接口为物理接口时,所述FPGA转发设备直接根据LR策略的速率限制需求,对该物理接口配置接口限速属性,实现所述LR策略所对应的队列配置。这样,所有报文最终从接口发送出去的时候,都会受到LR策略的流量限制。情况三、QoS策略具体为FIFO策略。首先,所述FPGA转发设备通过步骤S401完成了一个BE队列的申请,然后,FPGA转发设备为该BE队列分配队列组,即在具体的队列实现上,是通过只包含一个BE队列的一个队列组来实现的,也就是说只存在唯一的队列(紧急队列除外)来实现FIFO策略。在完成了上述的队列申请和队列组分配后,通过限制该队列组的带宽,实现对相应的队列组配置队列组限速属性,即对为所申请的BE队列所分配的队列组配置组限速规贝U,保证应用FIFO策略的队列自身的流量限制。再进一步的,根据相应的FIFO策略或当前系统场景的需要,还可以进一步对所述接口配置接口限速属性,在实际应用中,可以具体为对物理接口进行限速,实现前述的物理接口限速。如图6所示,为本发明实施例所提出的一种具体应用场景下的FIFO策略的队列实现方式的示意图。这样只申请唯一队列的队列申请方式保证了报文只有唯一的处理路径,从而,确保了 FIFO策略的正确实现,而队列组限速和物理接口限速的设置,则保证了流量限制策略 的实现。需要说明的是,上述的通过只包含一个BE队列的一个队列组来实现FIFO策略的方式只是本发明实施例所给出的一种优选示例,在保证FIFO策略实现的情况下,其他的队列资源配置方案(如申请只包含一个AF队列的一个队列组来实现FIFO策略等)也可以应用于本发明实施例,这样的变化并不影响本发明的保护范围。情况四、QoS策略具体为WFQ策略。首先,所述FPGA转发设备通过步骤S401,为所述接口申请多个BE队列,并完成了
权重配置。在本步骤中,FPGA转发设备根据所述WFQ策略,将步骤S401所申请的多个BE队列分配到一个队列组中,即在具体的队列实现上,是通过只处在同一个队列组中的多个BE队列来实现上述的WFQ策略。在完成了上述的队列申请的队列组分配后,还需要通过限制该队列组的带宽,实现对该队列组配置队列组限速属性,即对上述的包含多个BE队列的队列组配置组限速规贝U,保证应用WFQ策略的队列自身的流量限制。再进一步的,根据相应的WFQ策略或当前系统场景的需要,还需要对所述接口配置接口限速属性,在实际应用中,可以具体为对物理接口进行限速,实现前述的物理接口限速。如图7所示,为本发明实施例所提出的一种具体应用场景下的WFQ策略的队列实现方式的示意图。根据WFQ策略的需求,申请η个BE队列,并根据IP优先级或DSCP为每个BE队列分配不同的权重,然后,将上述的η个队列分配到同一个队列组,并对该队列组和物理接口设置限速,这样,该物理接口就工作在WFQ模式了。情况五、QoS策略具体为CBQ策略。在上述的步骤S401中,FPGA转发设备已经申请了多个BE队列,以及一个EF队列和/或多个AF队列,并且,分别对相应的队列配置了队列的限速规则和权重。在完成了上述的队列申请和处理后,还需要将上述的BE队列,以及EF队列和/或AF队列分配到一个队列组中,并通过限制该队列组的带宽,实现对该队列组配置队列组限速属性,即对所申请的队列组配置组限速规则,保证应用CBQ策略的队列自身的流量限制。
再进一步的,根据相应的CBQ策略或当前系统场景的需要,还需要对所述接口配置接口限速属性,在实际应用中,可以具体为对物理接口进行限速,实现前述的物理接口限速。如图8所示,为本发明实施例所提出的一种具体应用场景下的CBQ策略的队列实现方式的示意图。情况六、QoS策略具体为嵌套CBQ策略。
在CBQ的基础上,嵌套CBQ包括父策略和子策略。在步骤S401中,FPGA转发设备为父策略申请多个BE队列,以及一个EF队列和/或多个AF队列,并完成相对应队列限速和权重配置,然后,同样为子策略申请多个BE队列,以及一个EF队列和/或多个AF队列,其中,为父策略所申请的队列资源与为子策略所申请的队列资源彼此不同。在本步骤中,按照前述的情况五中的处理方式,FPGA转发设备将为父策略所申请的多个BE队列,以及一个EF队列和/或多个AF队列分配到一个队列组,并对该队列组配置队列组限速属性,实现对该队列组的限速处理。然后,FPGA转发设备将为子策略所申请的多个BE队列,以及一个EF队列和/或多个AF队列分配到一个队列组,在用于实现子策略的队列组中,不再需要对各队列进行限速设置,而是直接根据实现父策略的队列组所配置的队列组限速属性,配置实现子策略的队列组的队列组限速属性,即根据实现父策略的队列组的限速处理结果,对所述子策略所对应的队列组进行限速处理。再进一步的,根据相应的嵌套CBQ策略或当前系统场景的需要,还需要对所述接口配置接口限速属性,在实际应用中,可以具体为对物理接口进行限速,实现前述的物理接口限速。如图9所示,为本发明实施例所提出的一种具体应用场景下的嵌套CBQ策略的队列实现方式的示意图。需要说明的是,上述的几种情况可以独立的存在,也可以进行组合设置,具体的设置方案根据实际需要进行确定,这样的变化并不影响本发明的保护范围。需要进一步说明的是,在路由器等网络设备中,除了物理接口外,通常还包括逻辑接口,如以太网子接口,隧道接口等,报文经过逻辑接口进行发送时,最终通过与其关联的物理接口发送出去。例如,以太网子接口主要用来实现在三层以太网接口上支持收发VLAN tagged报文,用户可以在一个以太网接口上配置多个子接口,这样,来自不同VLAN的报丈可以从不同的子接口进行转发,为用户提供了很高的灵活性。在本发明实施例所提出的FPGA队列处理机制中,一个物理接口可以对应多个队列组,因此,可以方便地支持逻辑接口的QoS队列配置。当所述逻辑接口上配置QoS策略时,所述FPGA转发设备根据所述逻辑接口上所配置的QoS策略,为每个逻辑接口分别申请相应的队列。然后,所述FPGA转发设备为所申请的队列分配相应的队列组,配置相应的限速属性,并将为各所述逻辑接口所分配的队列组指定给所述物理接口。所述FPGA转发设备根据所述物理接口和各所述逻辑接口上所配置的QoS策略,对所述物理接口配置接口限速规则,实现所述物理接口和各所述逻辑接口上所配置的QoS策略所对应的队列配置。具体的,对逻辑接口上的GTS、FIFO、WFQ、CBQ以及嵌套CBQ等各种QoS策略,可以分别按照上述的情况一,以及情况三至情况六的处理方案来实现队列申请,以及队列和队列组的限速配置,之后,将分配的队列组指定给逻辑接口对应的物理接口即可。而对于逻辑接口应用LR策略的情况,则与物理接口应用LR策略的处理方式存在区别,具体参见前述的情况二,在此不再重复说明。如图10所示,为本发明实施例所提出的一种存在逻辑接口的应用场景下的多种QoS策略的队列实现方式的示意图。在该应用场景下,逻辑接口 I和逻辑接口 2对应相同的物理接口。该物理接口配置了 CBQ策略,FPGA转发设备申请了一个紧急队列和一个EF队列, 多个AF队列和多个BE队列,并将EF队列,AF队列和BE队列分配到一个队列组中,从而,通过紧急队列和该队列组来实现该物理接口所配置的CBQ策略,其中,分别配置了 EF类报文限速和AF类报文限速。逻辑接口 I配置了 CBQ策略,FPGA转发设备申请一个EF队列,多个AF队列和多个BE队列,并将EF队列,AF队列和BE队列分配到一个队列组中,然后,通过上述物理接口所申请的紧急队列,以及为该逻辑接口所申请的队列组来实现该逻辑接口所配置的CBQ策略,在为该逻辑接口所申请的队列组中,不再设置EF类报文限速和AF类报文限速,而是直接根据CBQ策略和逻辑接口 I的限速需求,设置该队列组的队列组限速,最后,将该队列组指定给逻辑接口 I所对应的物理接口。逻辑接口 2配置了 FIFO策略,FPGA转发设备申请了一个BE队列,并为该BE队列分配一个队列组,即通过仅包含唯一的一个BE队列的队列组来实现该FIFO策略,并且,根据FIFO策略和逻辑接口 2的限速需求,设置该队列组的队列组限速,最后,将该队列组指定给逻辑接口 2所对应的物理接口。当然,逻辑接口的数量可以为其他数量,相应的队列组配置方式也可以以上述说明类推,在此不再一一列举,逻辑接口的数量,以及其所采用的QoS策略的类型并不会影响本发明的保护范围。步骤S403、当所述FPGA转发设备通过所述接口转发所述QoS策略所对应的报文时,所述FPGA转发设备根据所述队列组的属性以及所述接口的属性,通过所述队列组中的队列对所述报文进行转发处理。对于本步骤的处理过程,如图11所示,为本发明实施例所提出的一种具体应用场景下的基于FPGA队列实现QoS队列进行报文处理的流程示意图。步骤S1101、确定通过接口转发报文。步骤S1102、FPGA转发设备判断该接口当前是否配置了 QoS策略。如果判断结果为是,执彳丁步骤SI 103 ;如果判断结果为否,执彳了步骤SI 104。步骤S1103、所述FPGA转发设备获取根据所述QoS策略为所述接口所申请的队列的标识信息,将所述报文发送给所述标识信息所对应的队列,并根据所述队列所对应的队列组的属性以及所述接口的属性,对所述报文进行处理。
按照本发明实施例所提出的技术方案,对GTS、LR、FIFO、WFQ、CBQ以及嵌套CBQ等策略,FPGA转发设备不需要区分用户具体配置,只需要根据报文和和前述的步骤S401中所申请的队列资源配置,从流表等业务信息中获取到指定的FPGA队列的标识信息(例如,队列ID信息),将该报文进行入队操作即可。而在进行报文转发时,需要应用步骤S402中所配置的相应的队列组和接口的限速规则,从而,FPGA转发设备根据步骤S402中的队列组配置方式,实现了基于队列组的资源调度和报文转发处理。步骤S1104、所述FPGA转发设备按照非QoS策略的处理规则进行处理。在具体的处理场景中,这里所述的非QoS策略的处理规则可以是采用预设的非QoS队列资源进行报文处理,也可以是直接放弃对该报文的处理,或者采用默认的QoS策略对该报文进行处理,具体采用哪种方式并不会影响本发明的保护范围。与现有技术相比,本发明实施例所提出的技术方案具有以下优点 通过应用本发明实施例的技术方案,在接口配置QoS策略时,由FPGA转发设备为该接口申请相应的队列,为所申请的队列分配相应的队列组,并配置所述队列组的属性,以实现该QoS策略所对应的队列配置,在该接口转发所述QoS策略所对应的报文时,根据所述队列组的属性,通过所述队列组中的队列对所述报文进行转发处理,从而,使FPGA转发设备在报文处理过程中,只需基于队列组进行资源调度,而不需要区分用户的具体配置,便可以同时支持多种QoS策略,基于QoS策略完成对报文的处理,降低了 QoS策略实现的复杂度,简化了 QoS策略下的报文处理流程,同时,根据不同的队列资源调度选择方案,可以方便的实现更丰富的QoS策略扩展。为了实现本发明的技术方案,本发明还提出了一种FPGA转发设备,其结构示意图12所示,至少包括队列申请模块121,用于当一个接口上配置QoS策略时,根据所述QoS策略,为所述接口申请相应的队列;队列组配置模块122,用于为所述队列申请模块121所申请的队列分配相应的队列组,并配置所述队列组的属性,实现所述QoS策略所对应的队列配置;报文处理模块123,用于在通过所述接口转发所述QoS策略所对应的报文时,根据所述队列组配置模块122所配置的所述队列组的属性以及所述接口的属性,通过所述队列组中的队列对所述报文进行转发处理。其中,所述队列申请模块121,具体用于当所述QoS策略具体为GTS策略时,根据所述GTS策略,为所述接口申请一个BE队列;和/或,当所述QoS策略具体为LR策略时,根据所述LR策略,为所述接口申请相应的队列资源;和/或,当所述QoS策略具体为FIFO策略时,根据所述FIFO策略,为所述接口申请一个BE队列;和/或,当所述QoS策略具体为WFQ策略时,根据所述WFQ策略,为所述接口申请多个BE队列,并分别为所申请的每个BE队列分配权重;和/或,当所述QoS策略具体为CBQ策略时,根据所述CBQ策略,为所述接口申请多个BE队列,并为每个BE队列分配权重,同时,还申请一个EF队列,并配置EF限速规则,和/或,申请多个AF队列,并配置AF限速规则以及为每个AF队列分配权重;和/或,当所述QoS策略具体为包括父策略和子策略的嵌套CBQ策略时,根据所述父策略,为所述接口申请多个BE队列,并为每个BE队列分配权重,同时,还申请一个EF队列,并配置EF限速规则,和/或,申请多个AF队列,并配置AF限速规则以及为每个AF队列分配权重,然后,根据所述子策略,为所述接口申请多个BE队列,同时,还申请一个EF队列,和/或多个AF队列。进一步的,所述队列组配置模块122,具体用于当所述QoS策略具体为GTS策略时,将所述队列申请模块121所申请的BE队列分配到一个队列组中,并对所述队列组配置队列组限速属性,对所述接口配置接口限速属性,实现所述GTS策略所对应的队列配置;和/或, 当所述QoS策略具体为LR策略时,且所述接口为物理接口时,直接根据所述LR策 略,对所述物理接口配置接口限速属性,实现所述LR策略所对应的队列配置;和/或,当所述QoS策略具体为LR策略,且所述接口为逻辑接口时,直接根据所述LR策略,对为所述逻辑接口所分配的队列组配置队列组限速属性,实现所述LR策略所对应的队列配置;和/或,当所述QoS策略具体为FIFO策略时,为所述队列申请模块121所申请的BE队列分配一个队列组,并对所述队列组配置队列组限速属性,对所述接口配置接口限速属性,实现所述FIFO策略所对应的队列配置;和/或,当所述QoS策略具体为WFQ策略时,为所述队列申请模块121所申请的多个BE队列分配一个队列组,并对所述队列组配置队列组限速属性,对所述接口配置接口限速属性,实现WFQ策略所对应的队列配置;和/或,当所述QoS策略具体为CBQ策略时,为所述队列申请模块121所申请的多个BE队列,以及一个EF队列和/或多个AF队列分配一个队列组,并对所述队列组配置队列组限速属性,对所述接口配置接口限速属性,实现CBQ策略所对应的队列配置;和/或,当所述QoS策略具体为包括父策略和子策略的嵌套CBQ策略时,为所述队列申请模块121所申请的所述父策略所对应的多个BE队列,以及一个EF队列和/或多个AF队列分配一个队列组,并对所述队列组配置队列组限速属性,然后,为所述队列申请模块所申请的所述子策略所对应的多个BE队列,以及一个EF队列和/或多个AF队列分配一个队列组,并根据为所述父策略所对应的队列组的队列组限速属性,对所述子策略所对应的队列组配置队列组限速属性,对所述接口配置接口限速属性,实现嵌套CBQ策略所对应的队列配置。进一步的,在实际应用中,所述报文处理模块123,具体用于当通过所述接口转发所述QoS策略所对应的报文报文时,判断所述接口当前是否配置了 QoS策略;如果判断结果为是,获取所述队列申请模块121根据所述QoS策略所申请的队列的标识信息,将所述报文发送给所述标识信息所对应的队列进行处理,并根据所述队列所对应的队列组的属性以及所述接口的属性,对所述报文进行处理;如果判断结果为否,按照非QoS策略的处理规则进行处理。与现有技术相比,本发明实施例所提出的技术方案具有以下优点
通过应用本发明实施例的技术方案,在接口配置QoS策略时,由FPGA转发设备为该接口申请相应的队列,为所申请的队列分配相应的队列组,并配置所述队列组的属性,以实现该QoS策略所对应的队列配置,在该接口转发所述QoS策略所对应的报文时,根据所述队列组的属性,通过所述队列组中的队列对所述报文进行转发处理,从而,使FPGA转发设备在报文处理过程中,只需基于队列组进行资源调度,而不需要区分用户的具体配置,便可以同时支持多种QoS策略,基于QoS策略 完成对报文的处理,降低了 QoS策略实现的复杂度,简化了 QoS策略下的报文处理流程,同时,根据不同的队列资源调度选择方案,可以方便的实现更丰富的QoS策略扩展。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是⑶-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施场景所述的方法。本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。上述本发明序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
权利要求
1.一种基于现场可编程门阵列FPGA队列实现服务质量QoS队列的方法,其特征在于,至少包括以下步骤 当一个接口上配置QoS策略时,FPGA转发设备根据所述QoS策略,为所述接口申请相应的队列; 所述FPGA转发设备为所申请的队列分配相应的队列组,并配置所述队列组的属性,实现所述QoS策略所对应的队列配置; 当所述FPGA转发设备通过所述接口转发所述QoS策略所对应的报文时,所述FPGA转发设备根据所述队列组的属性以及所述接口的属性,通过所述队列组中的队列对所述报文进行转发处理。
2.如权利要求I所述的方法,其特征在于,当一个接口上配置QoS策略时,FPGA转发设备根据所述QoS策略,为所述接口申请相应的队列,具体包括 当所述QoS策略具体为通用流量整形GTS策略时,所述FPGA转发设备根据所述GTS策略,为所述接口申请一个尽力服务BE队列;和/或, 当所述QoS策略具体为接口总速率限制LR策略时,所述FPGA转发设备根据所述LR策略,为所述接口申请相应的队列资源;和/或, 当所述QoS策略具体为先入先出FIFO策略时,所述FPGA转发设备根据所述FIFO策略,为所述接口申请一个BE队列;和/或, 当所述QoS策略具体为加权公平队列WFQ策略时,所述FPGA转发设备根据所述WFQ策略,为所述接口申请多个BE队列,并分别为所申请的每个BE队列分配权重;和/或, 当所述QoS策略具体为基于类的队列CBQ策略时,所述FPGA转发设备根据所述CBQ策略,为所述接口申请多个BE队列,并为每个BE队列分配权重,同时,还申请一个加速转发EF队列,并配置EF限速规则,和/或,申请多个确保转发AF队列,并配置AF限速规则以及为每个AF队列分配权重;和/或, 当所述QoS策略具体为包括父策略和子策略的嵌套CBQ策略时,所述FPGA根据所述父策略,为所述接口申请多个BE队列,并为每个BE队列分配权重,同时,还申请一个EF队列,并配置EF限速规则,和/或,申请多个AF队列,并配置AF限速规则以及为每个AF队列分配权重,然后,所述FPGA转发设备根据所述子策略,为所述接口申请多个BE队列,同时,还申请一个EF队列,和/或多个AF队列。
3.如权利要求2所述的方法,其特征在于,所述FPGA转发设备为所申请的队列分配相应的队列组,并配置所述队列组的属性,实现所述QoS策略所对应的队列配置,具体包括 当所述QoS策略具体为GTS策略时,所述FPGA转发设备将所申请的BE队列分配到一个队列组中,并对所述队列组配置队列组限速属性,对所述接口配置接口限速属性,实现所述GTS策略所对应的队列配置;和/或, 当所述QoS策略具体为LR策略,且所述接口为物理接口时,所述FPGA转发设备直接根据所述LR策略,对所述物理接口配置接口限速属性,实现所述LR策略所对应的队列配置;和/或, 当所述QoS策略具体为LR策略,且所述接口为逻辑接口时,所述FPGA转发设备直接根据所述LR策略,对为所述逻辑接口所分配的队列组配置队列组限速属性,实现所述LR策略所对应的队列配置;和/或,当所述QoS策略具体为FIFO策略时,所述FPGA转发设备为所申请的BE队列分配一个队列组,并对所述队列组配置队列组限速属性,对所述接口配置接口限速属性,实现所述FIFO策略所对应的队列配置;和/或, 当所述QoS策略具体为WFQ策略时,所述FPGA转发设备为所申请的多个BE队列分配一个队列组,并对所述队列组配置队列组限速属性,对所述接口配置接口限速属性,实现WFQ策略所对应的队列配置;和/或, 当所述QoS策略具体为CBQ策略时,所述FPGA转发设备为所申请的多个BE队列,以及一个EF队列和/或多个AF队列分配一个队列组,并对所述队列组配置队列组限速属性,对所述接口配置接口限速属性,实现CBQ策略所对应的队列配置;和/或, 当所述QoS策略具体为包括父策略和子策略的嵌套CBQ策略时,所述FPGA转发设备为所述父策略所对应的多个BE队列,以及一个EF队列和/或多个AF队列分配一个队列组,并对所述队列组配置队列组限速属性,然后,所述FPGA转发设备为所述子策略所对应的多个BE队列,以及一个EF队列和/或多个AF队列分配一个队列组,并根据为所述父策略所对应的队列组的队列组限速属性,对所述子策略所对应的队列组配置队列组限速属性,对所述接口配置接口限速属性,实现嵌套CBQ策略所对应的队列配置。
4.如权利要求I所述的方法,其特征在于,当所述FPGA转发设备通过所述接口转发所述QoS策略所对应的报文时,所述FPGA转发设备根据所述队列组的属性以及所述接口的属性,通过所述队列组中的队列对所述报文进行转发处理,具体包括 当所述FPGA转发设备通过所述接口转发所述QoS策略所对应的报文时,所述FPGA转发设备判断所述接口当前是否配置了 QoS策略; 如果判断结果为是,所述FPGA转发设备获取根据所述QoS策略为所述接口所申请的队列的标识信息,将所述报文发送给所述标识信息所对应的队列,并根据所述队列所对应的队列组的属性以及所述接口的属性,对所述报文进行处理; 如果判断结果为否,所述FPGA转发设备按照非QoS策略的处理规则进行处理。
5.—种FPGA转发设备,其特征在于,至少包括 队列申请模块,用于当一个接口上配置QoS策略时,根据所述QoS策略,为所述接口申请相应的队列; 队列组配置模块,用于为所述队列申请模块所申请的队列分配相应的队列组,并配置所述队列组的属性,实现所述QoS策略所对应的队列配置; 报文处理模块,用于在通过所述接口转发所述QoS策略所对应的报文时,根据所述队列组配置模块所配置的所述队列组的属性以及所述接口的属性,通过所述队列组中的队列对所述报文进行转发处理。
6.如权利要求5所述的FPGA转发设备,其特征在于,所述队列申请模块,具体用于 当所述QoS策略具体为GTS策略时,根据所述GTS策略,为所述接口申请一个BE队列;和/或, 当所述QoS策略具体为LR策略时,根据所述LR策略,为所述接口申请相应的队列资源;和/或, 当所述QoS策略具体为FIFO策略时,根据所述FIFO策略,为所述接口申请一个BE队列;和/或,当所述QoS策略具体为WFQ策略时,根据所述WFQ策略,为所述接口申请多个BE队列,并分别为所申请的每个BE队列分配权重;和/或, 当所述QoS策略具体为CBQ策略时,根据所述CBQ策略,为所述接口申请多个BE队列,并为每个BE队列分配权重,同时,还申请一个EF队列,并配置EF限速规则,和/或,申请多个AF队列,并配置AF限速规则以及为每个AF队列分配权重;和/或, 当所述QoS策略具体为包括父策略和子策略的嵌套CBQ策略时,根据所述父策略,为所述接口申请多个BE队列,并为每个BE队列分配权重,同时,还申请一个EF队列,并配置EF限速规则,和/或,申请多个AF队列,并配置AF限速规则以及为每个AF队列分配权重,然后,根据所述子策略,为所述接口申请多个BE队列,同时,还申请一个EF队列,和/或多个AF队列。
7.如权利要求6所述的FPGA转发设备,其特征在于,所述队列组配置模块,具体用于 当所述QoS策略具体为GTS策略时,将所述队列申请模块所申请的BE队列分配到一个队列组中,并对所述队列组配置队列组限速属性,对所述接口配置接口限速属性,实现所述GTS策略所对应的队列配置;和/或, 当所述QoS策略具体为LR策略,且所述接口为物理接口时,直接根据所述LR策略,对所述物理接口配置接口限速属性,实现所述LR策略所对应的队列配置;和/或, 当所述QoS策略具体为LR策略,且所述接口为逻辑接口时,直接根据所述LR策略,对为所述逻辑接口所分配的队列组配置队列组限速属性,实现所述LR策略所对应的队列配置;和/或, 当所述QoS策略具体为FIFO策略时,为所述队列申请模块所申请的BE队列分配一个队列组,并对所述队列组配置队列组限速属性,对所述接口配置接口限速属性,实现所述FIFO策略所对应的队列配置;和/或, 当所述QoS策略具体为WFQ策略时,为所述队列申请模块所申请的多个BE队列分配一个队列组,并对所述队列组配置队列组限速属性,对所述接口配置接口限速属性,实现WFQ策略所对应的队列配置;和/或, 当所述QoS策略具体为CBQ策略时,为所述队列申请模块所申请的多个BE队列,以及一个EF队列和/或多个AF队列分配一个队列组,并对所述队列组配置队列组限速属性,对所述接口配置接口限速属性,实现CBQ策略所对应的队列配置;和/或, 当所述QoS策略具体为包括父策略和子策略的嵌套CBQ策略时,为所述队列申请模块所申请的所述父策略所对应的多个BE队列,以及一个EF队列和/或多个AF队列分配一个队列组,并对所述队列组配置队列组限速属性,然后,为所述队列申请模块所申请的所述子策略所对应的多个BE队列,以及一个EF队列和/或多个AF队列分配一个队列组,并根据为所述父策略所对应的队列组的队列组限速属性,对所述子策略所对应的队列组配置队列组限速属性,对所述接口配置接口限速属性,实现嵌套CBQ策略所对应的队列配置。
8.如权利要求5所述的FPGA转发设备,其特征在于,所述报文处理模块,具体用于 当通过所述接口转发所述QoS策略所对应的报文时,判断所述接口当前是否配置了QoS策略; 如果判断结果为是,获取所述队列申请模块根据所述QoS策略所申请的队列的标识信息,将所述报文发送给所述标识信息所对应的队列进行处理,并根据所述队列所对应的队列组的属性以及所述接口的属性,对所述报文进行处理 ;如果判断结果为否,按照非QoS策略的处理规则进行处理。
全文摘要
本发明实施例公开了一种基于FPGA队列实现QoS队列的方法和设备,通过应用本发明实施例的技术方案,在接口配置QoS策略时,由FPGA转发设备为该接口申请相应的队列,为所申请的队列分配相应的队列组,并配置所述队列组的属性,以实现该QoS策略所对应的队列配置,在该接口转发QoS策略所对应的报文时,根据队列组以及接口的属性,通过队列组中的队列对报文进行转发处理,从而,使FPGA转发设备在报文处理过程中,只需基于队列组进行资源调度,而不需要区分用户的具体配置,便可以同时支持多种QoS策略,基于QoS策略完成对报文的处理,降低了QoS策略实现的复杂度,简化了QoS策略下的报文处理流程,同时,根据不同的队列资源调度选择方案,可以方便的实现更丰富的QoS策略扩展。
文档编号H04L12/56GK102780630SQ201210272598
公开日2012年11月14日 申请日期2012年8月2日 优先权日2012年8月2日
发明者李佳, 王厚雪 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1