CN102664803A - 一种ef队列的实现方法和设备 - Google Patents

一种ef队列的实现方法和设备 Download PDF

Info

Publication number
CN102664803A
CN102664803A CN2012101193623A CN201210119362A CN102664803A CN 102664803 A CN102664803 A CN 102664803A CN 2012101193623 A CN2012101193623 A CN 2012101193623A CN 201210119362 A CN201210119362 A CN 201210119362A CN 102664803 A CN102664803 A CN 102664803A
Authority
CN
China
Prior art keywords
formation
fpga
interface
virtual
message
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2012101193623A
Other languages
English (en)
Other versions
CN102664803B (zh
Inventor
李佳
王厚雪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New H3C Semiconductor Technology Co Ltd
Original Assignee
Hangzhou H3C Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou H3C Technologies Co Ltd filed Critical Hangzhou H3C Technologies Co Ltd
Priority to CN201210119362.3A priority Critical patent/CN102664803B/zh
Publication of CN102664803A publication Critical patent/CN102664803A/zh
Application granted granted Critical
Publication of CN102664803B publication Critical patent/CN102664803B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种EF队列的实现方法和设备,通过应用本发明的技术方案,当在FPGA的一个接口上定义多个类规则,并分别指定EF队列时,CPU在该接口上采用CAR方式将其实现为多个虚拟EF队列,同时,CPU只为该接口分配一个FPGA EF队列,并设置该FPGA EF队列的带宽值为各虚拟EF队列的带宽值之和,从而,使各虚拟EF队列共享该FPGA EF队列的资源。通过这样的处理,不仅可以节省FPGA队列资源,而且,在进行队列调度时,由于每个接口只有一个FPGA EF队列,即采用严格优先调度的队列只有一个,不必考虑多个严格优先调度队列之间的公平调度问题,降低了队列调度算法的复杂度。

Description

一种EF队列的实现方法和设备
技术领域
本发明涉及通信技术领域,特别涉及一种EF队列的实现方法和设备。
背景技术
在采用FPGA(Field Programmable Gate Array,现场可编程阵列)作为核心完成高速报文转发的网络设备(路由器、防火墙等)中,将以前由CPU(CentralProcessing Unit,中央处理器)软件实现的报文转发、业务等处理下移到FPGA转发引擎上来实现。FPGA转发引擎能够快速处理报文,但难以支撑复杂业务,且FPGA资源较为有限。CPU将控制信息下发到FPGA,FPGA根据这些控制信息对报文进行转发和业务处理。
如图1所示,为现有技术中FPGA转发引擎数据平面控制平面的示意图。其中,具体的报文处理过程如下:
FPGA转发引擎收到报文(即图1中所示的步骤1),如果该报文是首包,或者本机报文,或者根据控制平面的信息确定该报文是需要上送CPU的报文,则将该报文上送CPU(即图1中所示的步骤2),CPU将处理后的报文下发到FPGA转发引擎的数据平面(即图1中所示的步骤3),数据平面查询控制平面获取控制信息,并将统计信息等写回控制平面(即图1中所示的步骤7和8),然后,数据平面将处理后的报文进行发送(即图1中所示的步骤4)。后续报文都会按照控制平面的控制信息进行处理。
需要指出的是,上述的FPGA转发引擎的控制平面中的控制信息是由CPU协助下发的,而FPGA转发引擎也会向CPU进行相应的信息反馈,具体说明如下:
一方面,CPU会将配置信息和控制信息,一并下发到FPGA转发引擎的控制平面(即图1中所示的步骤5),用于指导数据平面进行报文处理。
另一方面,控制平面也会将FPGA转发引擎的状态信息、统计信息等上送到CPU(即图1中所示的步骤6)。
在具体应用中,为了适应复杂的网络环境,丰富的QoS(Quality of service,服务质量)功能是路由器必不可少的特性。
在QoS拥塞管理中,CBQ(Class Based Queuing,基于类的队列)是对WFQ(Weighted Fair Queuing,加权公平排队)功能的扩展,为用户提供了定义类的支持。在网络拥塞时,CBQ根据用户定义的类规则对报文进行匹配,并使其进入相应的队列,在入队列之前必须进行拥塞避免机制和带宽限制的检查。在报文出队列时,加权公平调度每个类对应的队列中的报文。
CBQ包括以下队列:
紧急队列:CBQ提供一个紧急队列,紧急报文入该队列,该队列采用FIFO(First Input First Output,先入先出)调度,没有带宽限制。
BQ(Bandwidth Queuing,带宽保证队列):即AF(Assured Forwarding,确保转发)队列。为AF业务提供严格、精确的带宽保证,并且保证各类AF业务之间按一定的比例关系进行队列调度。
缺省队列:一个WFQ(Weighted Fair Queuing,加权公平队列)队列,用来支撑BE(Best Effort,尽力服务)业务,使用接口剩余带宽进行发送。
LLQ(Low Latency Queuing,低延迟队列):即EF(Expedited Forwarding,快速转发)队列。如果CBQ加权公平对待所有类的队列,实时业务报文(包括语音与视频业务,对延迟比较敏感)就可能得不到及时发送。为此引入一个EF队列,为实时业务报文提供严格优先发送服务。LLQ将严格优先队列机制与CBQ结合起来使用,用户在定义类时可以指定其享受严格优先服务,这样的类称作优先类。所有优先类的报文将进入同一个优先队列,在入队列之前需对各类报文进行带宽限制的检查。报文出队列时,将首先发送优先队列中的报文,直到发送完后才发送其他类对应的队列的报文。为了不让其他队列中的报文延迟时间过长,在使用LLQ时将会为每个优先类指定可用最大带宽,该带宽值用于拥塞发生时监管流量。如果拥塞未发生,优先类允许使用超过分配的带宽。如果拥塞发生,优先类超过分配带宽的数据包将被丢弃。
在接口上,用户可以定义多个类规则,并分别为其指定EF队列及其带宽,这样,就需要根据用户配置为接口分配多个EF队列。受FPGA资源限制,FPGA队列数量较为有限,因此,现有技术提出了一种可以节约FPGA队列资源的EF队列实现方法,同时,降低了FPGA队列调度的复杂度。
在接口上,当用户定义多个类规则,并分别为其指定EF队列时,根据用户配置为接口上的每个类规则都分配一个相应的EF队列。
报文入队处理流程如下:当报文匹配某个类规则,需要入指定EF队列时,首先判断该EF队列状态。如果队列未拥塞(队列为空),则将报文直接入队;如果队列拥塞(队列不空),则需要根据配置的带宽对报文进行评估,相当于CAR(Committed Access Rate,约定访问速率)评估。如果评估结果为超过指定带宽,则将报文丢弃,否则,将报文入队。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
在现有技术中,接口下的每个EF队列都占用一个FPGA队列,浪费FPGA队列资源,同时,由于需要调度多个FPGA EF队列,还增加了队列调度处理的复杂度。
发明内容
本发明提供一种EF队列的实现方法和设备,解决现有技术中各EF队列需要分别占用FPGA队列所带来的资源浪费和调度复杂的问题。
为达到上述目的,本发明一方面提供了一种EF队列的实现方法,至少包括以下步骤:
当接收到在现场可编程门阵列FPGA的接口上对类规则配置EF队列及其带宽的配置信息时,中央处理器CPU判断所述接口是否已经分配了FPGA EF队列;
如果判断结果为否,所述CPU为所述接口分配一个FPGA EF队列,并设置所述FPGA EF队列的带宽值为所述配置信息所配置的EF队列的带宽值;
所述CPU向所述接口下发相应的约定访问速率流量策略表项,为所述接口配置与所述配置信息相对应的虚拟EF队列,并将所述虚拟EF队列指定到所述FPGA EF队列。
另一方面,本发明还提供了一种报文转发系统,包括CPU和FPGA,其中,所述CPU,包括:
接收模块,用于接收在所述FPGA的接口上配置EF队列及其带宽的配置信息;
判断模块,用于在所述接收模块接收到在FPGA的接口上对类规则配置EF队列及其带宽的配置信息时,判断所述接口是否已经分配了FPGA EF队列;
第一配置模块,用于在所述判断模块的判断结果为否时,为所述接口分配一个FPGAEF队列,并设置所述FPGAEF队列的带宽值为所述配置信息所配置的EF队列的带宽值;
发送模块,用于根据所述第一配置模块的配置结果,向所述接口下发相应的流量策略表项,为所述接口配置与所述配置信息相对应的虚拟EF队列,并将所述虚拟EF队列指定到所述FPGA EF队列。
与现有技术相比,本发明所提出的技术方案具有以下优点:
通过应用本发明的技术方案,当在FPGA的一个接口上定义多个类规则,并分别指定EF队列时,CPU在该接口上采用CAR方式将其实现为多个虚拟EF队列,同时,CPU只为该接口分配一个FPGA EF队列,并设置该FPGA EF队列的带宽值为各虚拟EF队列的带宽值之和,从而,使各虚拟EF队列共享该FPGAEF队列的资源。通过这样的处理,不仅可以节省FPGA队列资源,而且,在进行队列调度时,由于每个接口只有一个FPGA EF队列,即采用严格优先调度的队列只有一个,不必考虑多个严格优先调度队列之间的公平调度问题,降低了队列调度算法的复杂度。
附图说明
图1为现有技术中FPGA转发引擎数据平面控制平面的示意图;
图2为本发明实施例所提出的一种EF队列的实现方法的流程示意图;
图3为本发明实施例所提出的一种EF队列的实现方法中的队列配置过程的流程示意图;
图4为本发明实施例所提出的一种EF队列在FPGA中的配置的示意图;
图5为本发明实施例所提出的一种具体应用场景下的虚拟EF队列处理场景的示意图;
图6为本发明实施例所提出的一种EF队列的实现方法中的报文处理过程的流程示意图;
图7为本发明实施例所提出的一种报文转发系统的结构示意图。
具体实施方式
针对现有技术中每个EF队列都需要分别占用一个FPGA队列,从而造成FPGA资源浪费,以及FPGA队列调度困难的问题,本发明提出一种EF队列的实现方法,通过在一个接口上为不同的类规则分别建立虚拟EF队列,并将多个虚拟EF队列指定到同一个FPGA EF队列的方式,实现多个虚拟EF队列对同一个FPGA EF队列的共享,从而,节约宝贵的FPGA队列资源,并且,可以降低队列调度算法的复杂度。
如图2所示,为本发明实施例所提出的一种EF队列的实现方法的流程示意图,该方法具体包括以下步骤:
步骤S201、当接收到在FPGA的接口上对类规则配置EF队列及其带宽的配置信息时,CPU判断所述接口是否已经分配了FPGA EF队列。
如果判断结果为否,则执行步骤S202;
如果判断结果为是,则执行步骤S204。
在本步骤中,相应的类规则配置EF队列及其带宽的配置信息可以是直接配置给FPGA的,也可以是通过第三方网络设备所发送的配置指令,具体的配置信息的形式变化并不会影响本发明的保护范围。
步骤S202、所述CPU为所述接口分配一个FPGA EF队列,并设置所述FPGAEF队列的带宽值为所述配置信息所配置的EF队列的带宽值。
本步骤为CPU对FPGA的FPGA EF队列配置过程。
由于该接口之前并没有分配FPGA EF队列,因此,需要先为该接口分配一个FPGA EF队列,作为所配置的虚拟EF队列所共享的FPGA队列资源,并根据配置信息所配置的带宽值设定该FPGA EF队列的带宽值,即保证该FPGA EF队列可以为该虚拟EF队列提供足够的FPGA队列资源。
步骤S203、所述CPU向所述接口下发相应的流量策略表项,为所述接口配置与所述配置信息相对应的虚拟EF队列,并将所述虚拟EF队列指定到所述FPGA EF队列。
需要指出的是,本步骤所提出的流量策略表项实现了对虚拟EF队列的流量进出速率限定,通过这样的流量策略表项,可以实现对该虚拟EF队列所接收到的报文进行流量评估,从而,确定该虚拟EF队列所接收到的报文的流量是否超过了该虚拟EF队列的预设带宽,在具体的处理场景中,这样的流量策略表项可以具体为CAR策略表项,或者其他能够设定流量限制的策略类型,具体策略表项类型的变化,并不会影响本发明的保护范围。
本步骤为CPU对FPGA的虚拟EF队列配置过程。
通过前述的步骤S201,CPU确认需要为该接口配置EF队列,通过前述的步骤S202,CPU通过对该接口配置FPGA EF队列,并设置相应的带宽,为在该接口配置虚拟EF队列准备了相应的FPGA队列资源,最后,通过本步骤,将相应的流量策略表项发给FPGA,在FPGA的相应接口上实现相应的虚拟EF队列的配置,同时,通过将虚拟EF队列指定到步骤S202中所配置的FPGAEF队列,来实现虚拟EF队列对FPGAEF队列资源的共享。
步骤S204、所述CPU调整所述接口上所分配的FPGA EF队列的带宽值为所述配置信息所配置的EF队列的带宽值和所述接口上已配置的EF队列的带宽值之和。
本步骤为CPU对FPGA的FPGA EF队列的带宽调整过程。
由于该接口之前已经分配了FPGA EF队列,但是该FPGA EF队列的带宽是按照之前该接口上所配置的虚拟EF队列的资源需要进行配置的,由于需要新增虚拟EF队列,其所共享的FPGA EF队列的带宽需求必然进一步增加,因此,需要对FPGA EF队列的带宽值进行调整,其调整后的带宽值为所述配置信息所配置的EF队列的带宽值和该接口上已配置的EF队列的带宽值之和,即保证在新增虚拟EF队列后,该FPGA EF队列可以同时为所有的虚拟EF队列提供FPGA队列资源。
本步骤完成后,CPU同样执行步骤S203,按照相应配置信息,对该接口增加相应的流量策略表项。
通过前述的步骤S201,CPU根据接收到的配置信息确认需要为该接口配置EF队列,同时,判断之前已经为该接口配置了FPGA EF队列,通过前述的步骤S204,CPU通过对该接口已配置的FPGA EF队列的带宽值进行调整,为在该接口配置虚拟EF队列准备了相应的FPGA队列资源,最后,通过步骤S203,将相应的流量策略表项发给FPGA,并在FPGA的相应接口上实现相应的虚拟EF队列的配置。
通过上述的步骤S201至步骤S204的处理,CPU完成了在相应的接口上对于虚拟EF队列的配置,并对各虚拟EF队列指定了共享的FPGA EF队列。通过这样的处理,不仅可以节省FPGA队列资源,而且,在进行队列调度时,由于每个接口只有一个FPGA EF队列,即采用严格优先调度的队列只有一个,不必考虑多个严格优先调度队列之间的公平调度问题,降低了队列调度算法的复杂度。
进一步的,本发明还提出了相应的虚拟EF队列,以及FPGA EF队列的取消配置流程,具体说明如下。
当接收到在所述接口上对虚拟EF队列的取消配置信息时,所述CPU在所述接口上对取消配置信息所对应的流量策略表项进行删除,取消相对应的虚拟EF队列。
在本步骤中,相应的对虚拟EF队列的取消配置信息可以是直接配置给FPGA的,也可以是通过第三方网络设备所发送的配置指令,具体的配置信息的形式变化并不会影响本发明的保护范围。
在取消了相应的虚拟EF队列后,CPU判断当前该接口上是否还剩余至少一个虚拟EF队列。
如果判断结果为否,则表明该接口上不再有任何需要共享该FPGA EF队列的虚拟EF队列,因此,该接口上也就没有了继续配置FPGA EF队列的必要,为了及时回收FPGA队列资源,CPU释放该接口上当前所分配的FPGA EF队列。
如果判断结果为是,则表明该接口上还有其他需要共享该FPGA EF队列的虚拟EF队列,但由于已经取消了一个虚拟EF队列,剩余的其他虚拟EF队列所需要占用的资源必然减小,因此,为了节约宝贵的FPGA队列资源,需要对为当前该接口所配置的FPGA EF队列的带宽资源进行及时调整,具体的调整同样由CPU通过以下过程来实现。
CPU调整所述接口已经分配的FPGA EF队列的带宽值,调整后的带宽值为该接口当前剩余的虚拟EF队列的带宽值之和,即在取消虚拟EF队列后,该接口所剩余的全部虚拟EF队列的带宽值之和。
通过以上的处理过程,在对一个接口取消虚拟EF队列的配置后,CPU及时对该接口所分配的FPGA EF队列的带宽进行调整,将被取消的虚拟EF队列所共享的FPGA队列资源进行释放,直至在该接口上没有虚拟EF队列后,将为该接口分配的FPGA EF队列释放,通过这样的处理,CPU可以根据接口上的虚拟EF队列的配置情况,及时调整为该接口所分配的FPGA EF队列的带宽值,从而,最大限度的节约为相应的接口所分配的FPGA队列资源。
进一步的,在所述CPU完成上述的步骤S203的处理,即为所述接口配置了虚拟EF队列,并将各虚拟EF队列指定到共享的FPGA EF队列之后,本发明还进一步提出了在FPGA转发引擎上通过相应的虚拟EF队列进行报文处理的技术方案,具体包括以下步骤:
(1)当FPGA转发引擎(以下简称FPGA)上配置了相应的虚拟EF队列和FPGA EF队列的接口接收到匹配优先类的报文时,所述FPGA确定所述报文所对应的虚拟EF队列,及所述虚拟EF队列所指定到的所述FPGA EF队列。
通过此处理,FPGA完成对接收到的报文所对应的队列的识别,由于之前所配置的各虚拟EF队列分别对应了不同的类规则,因此,可以根据相应的配置找到报文相对应的虚拟EF队列,并且,由于各虚拟EF队列均制定了FPGAEF队列,在确定了虚拟EF队列后,相应的FPGA EF队列也就随之确定。
需要指出的是,在本发明实施例所提出的技术方案中,在一个接口上,所有的虚拟EF队列均指定到同一个FPGA EF队列,因此,只要是此接口所接收到的报文,无论对应哪个虚拟EF队列,最终所指定到的FPGA EF队列均相同。
(2)所述FPGA根据所述虚拟EF队列所对应的流量策略表项对所述报文的流量进行评估。
具体的,FPGA对当前虚拟EF队列所接收到的报文需要占用的带宽进行评估,然后将评估结果与前述步骤S203为该虚拟EF队列所设置的流量策略表项进行比较,从而,确定当前该虚拟EF队列所接收到的报文的流量是否超过了该虚拟EF队列的分配带宽。
(3)如果所述报文的流量未超过所述虚拟EF队列的分配带宽,所述FPGA对所述报文添加第一标识,如果所述报文的流量超过了所述虚拟EF队列的分配带宽,所述FPGA对所述报文添加第二标识。
通过这样的标识添加处理,将超过分配带宽的流量和未超过分配带宽的流量进行区分,以便在后续步骤中进行区分处理。
FPGA对于添加了所述第一标识的报文直接发送到所述FPGA EF队列;对于添加了所述第二标识的报文,根据所述FPGA EF队列的拥塞状态,按照预设的处理策略进行相应的处理。
由于添加第一标识的报文没有超过分配带宽,因此,可以直接进行后续处理。
而添加第二标识的报文超过了分配带宽,之前并没有为这样的流量分配足够的带宽资源,不能直接进行后续处理,而由于后续的FPGA EF队列是多个虚拟EF队列所共享的,因此,可以识别当前分配给其他虚拟EF队列的资源是否闲置,如果闲置,则可以暂时占用这样的闲置资源进行超过分配带宽的报文的传输,相反,如果没有闲置资源,则直接将超过分配带宽的报文进行丢弃。
在具体的处理场景中,此处所提及的对于添加了第二标识的报文进行处理所应用的处理策略,具体可以为:
所述FPGA判断所述FPGA EF队列当前是否处于拥塞状态。
如果判断结果为否,所述FPGA将添加了所述第二标识的报文直接发送到所述FPGA EF队列。
如果判断结果为是,所述FPGA将添加了所述第二标识的报文丢弃。
与现有技术相比,本发明所提出的技术方案具有以下优点:
通过应用本发明的技术方案,当在FPGA的一个接口上定义多个类规则,并分别指定EF队列时,CPU在该接口上采用CAR方式将其实现为多个虚拟EF队列,同时,CPU只为该接口分配一个FPGA EF队列,并设置该FPGA EF队列的带宽值为各虚拟EF队列的带宽值之和,从而,使各虚拟EF队列共享该FPGAEF队列的资源。通过这样的处理,不仅可以节省FPGA队列资源,而且,在进行队列调度时,由于每个接口只有一个FPGA EF队列,即采用严格优先调度的队列只有一个,不必考虑多个严格优先调度队列之间的公平调度问题,降低了队列调度算法的复杂度。
为了进一步阐述本发明的技术思想,现结合具体的应用场景,对本发明的技术方案进行说明。
根据本发明实施例所提出的技术方案,对于FPGA转发引擎的一个接口,如果同时定义了多个类规则,并分别为各类规则指定了EF队列及其带宽,那么,可以采用约定流量(例如CAR)的方式,将这样的EF队列配置实现为多个虚拟EF队列,并共享同一个FPGA EF队列。
这样,可以节省宝贵的FPGA队列资源,同时,由于实际只有一个FPGAEF队列配置给该接口,相应的队列调度复杂度也得到了降低。
具体的,本发明实施例分别通过队列配置和报文处理两个阶段对相应的技术方案进行说明。
1、队列配置过程。
基于本发明实施例节约FPGA队列资源的目的,限定对FPGA转发引擎的每个接口最多只能分配一个FPGA EF队列。
当该接口上配置第一个虚拟EF队列时,CPU可以为该接口分配一个FPGA EF队列,作为该虚拟EF队列所使用的FPGA队列资源。
后续再增加或取消虚拟EF队列的配置时,只需要调整该FPGA EF队列的带宽,匹配相应的虚拟EF队列的资源需求即可。
而当该接口上取消最后一个EF队列配置时,则表示该接口不再需要占用FPGA队列资源,因此,取消该接口上所分配的FPGA EF队列,即将配置给该接口的FPGA队列资源进行释放。
基于上述的处理思路,如图3所示,为本发明实施例所提出的一种EF队列的实现方法中的队列配置过程的流程示意图。
步骤S301、接收到在一个接口上对某个类规则配置EF队列及其带宽的配置信息。
步骤S302、CPU判断该接口是否已经分配了FPGA EF队列。
如果否,则执行步骤S303;
如果是,则执行步骤S304。
步骤S303、CPU为该接口分配一个FPGA EF队列。
步骤S304、CPU设置该接口上所分配的FPGA EF队列的带宽,取值为EF队列的配置下发后,该接口上EF队列的带宽之和。
步骤S305、CPU根据前述配置的EF队列带宽向该接口下发FPGA CAR策略表项,实现虚拟EF队列的配置,并将该虚拟EF队列指定到该接口所分配的FPGA EF队列。
通过这样的处理,此接口上的EF队列在FPGA中的配置如图4所示。
在此接口上,匹配某个类规则的报文需要进入指定的EF队列,而每个EF队列在FPGA中用CAR实现为虚拟EF队列,并且,此接口上所有的(虚拟)EF队列共享1个FPGA EF队列,该FPGA EF队列的带宽值为此接口上EF队列的带宽值之和。
2、报文处理过程。
按照现有技术中的配置,EF队列的带宽值用于在拥塞发生时监管流量。如果发生拥塞,优先类超过分配带宽的数据包将被丢弃;如果未发生拥塞,允许优先类使用超过分配的带宽。
而在本发明实施例所提出的技术方案中,采用CAR等流量策略来实现虚拟EF队列,对超出分配带宽(例如CAR限速)的流量不能直接丢弃,否则,达不到未拥塞时允许优先类使用超过分配的带宽的目的。
基于上述思路,对于报文流量的评估结果(例如CAR评估结果),对相应的流量添加不同的流量标识,例如,将报文所对应的流量根据其是否超过相应的虚拟EF队列的分配带宽,分别添加不同颜色的标记,例如绿色标记和红色标记,其中,绿色标记代表未超过分配带宽,红色标记代表已经超出分配带宽。
相应的虚拟EF队列处理场景如图5所示,报文通过虚拟EF队列的CAR评估后,携带绿色或红色标记,到达指定FPGA EF队列。
标记为绿色的报文直接入FPGA EF队列;而在对标记为红色的报文进行入队处理前,需要先评估FPGA EF队列的拥塞情况,如果当前FPGA EF队列长度达到或超过某个阈值(比如队列允许最大长度的2/3),则认为FPGA EF队列发送拥塞,将标记为红色的报文直接丢弃;否则,认为当前FPGA EF队列未拥塞,标记为红色的报文可以入FPGA EF队列。
最后,通过相应的队列调度处理将队列中的报文出队。
基于上述的处理思路,如图6所示,为本发明实施例所提出的一种EF队列的实现方法中的报文处理过程的流程示意图。
步骤S601、FPGA转发引擎的一个接口接收到报文。
步骤S602、FPGA转发引擎对该报文匹配优先类,确定该报文所对应的虚拟EF队列,以及FPGA EF队列的信息。
步骤S603、FPGA转发引擎根据相应的虚拟EF队列所对应的CAR策略表项,对该报文进行CAR评估。
步骤S604、FPGA转发引擎确定当前报文是否通过CAR评估。
如果通过,即当前报文的所对应的流量没有超过虚拟EF队列的分配带宽,则执行步骤S605;
如果没有通过,即当前报文的所对应的流量超过了虚拟EF队列的分配带宽,则执行步骤S606。
步骤S605、FPGA转发引擎为该报文添加绿色标识。
本步骤完成后,FPGA转发引擎在对该报文进行后续处理时,可以直接执行步骤S608。
步骤S606、FPGA转发引擎为该报文添加红色标识。
本步骤完成后,FPGA转发引擎在对该报文进行后续处理时,执行步骤S607。
步骤S607、FPGA转发引擎判断FPGA EF队列当前是否处于拥塞状态。
具体的判断标砖可以根据实际需要进行设置,例如,FPGA转发引擎评估FPGA EF队列的拥塞情况,如果当前FPGA EF队列长度达到或超过某个阈值(比如队列允许最大长度的2/3),则认为FPGA EF队列处于拥塞状态,相反,则认为FPGA EF队列未处于拥塞状态。
如果FPGA EF队列当前未处于拥塞状态,则执行步骤S608。
如果FPGA EF队列当前处于拥塞状态,执行步骤S609。
步骤S608、FPGA转发引擎将该报文转入FPGA EF队列进行转发。
步骤S609、FPGA转发引擎将该报文丢弃。
与现有技术相比,本发明所提出的技术方案具有以下优点:
通过应用本发明的技术方案,当在FPGA的一个接口上定义多个类规则,并分别指定EF队列时,CPU在该接口上采用CAR方式将其实现为多个虚拟EF队列,同时,CPU只为该接口分配一个FPGA EF队列,并设置该FPGA EF队列的带宽值为各虚拟EF队列的带宽值之和,从而,使各虚拟EF队列共享该FPGAEF队列的资源。通过这样的处理,不仅可以节省FPGA队列资源,而且,在进行队列调度时,由于每个接口只有一个FPGA EF队列,即采用严格优先调度的队列只有一个,不必考虑多个严格优先调度队列之间的公平调度问题,降低了队列调度算法的复杂度。
为了实现本发明的技术方案,本发明还提出了一种报文转发系统,包括CPU71和FPGA72,其结构示意图7所示。
其中,所述CPU71,包括:
接收模块711,用于接收在所述FPGA的接口上配置EF队列及其带宽的配置信息;
判断模块712,用于在所述接收模块711接收到在FPGA的接口上对类规则配置EF队列及其带宽的配置信息时,判断所述接口是否已经分配了FPGAEF队列;
第一配置模块713,用于在所述判断模块712的判断结果为否时,为所述接口分配一个FPGA EF队列,并设置所述FPGA EF队列的带宽值为所述配置信息所配置的EF队列的带宽值;
发送模块714,用于根据所述第一配置模块713的配置结果,向所述接口下发相应的流量策略表项,为所述接口配置与所述配置信息相对应的虚拟EF队列,并将所述虚拟EF队列指定到所述FPGA EF队列。
在另一种场景下,所述第一配置模块713,还用于在所述判断模块712的判断结果为是时,调整所述接口上所分配的FPGA EF队列的带宽值为所述配置信息所配置的EF队列的带宽值和所述接口上已配置的EF队列的带宽值之和;
所述发送模块714,还用于根据所述第一配置模块713的调整结果,向所述接口下发相应的流量策略表项,为所述接口配置与所述配置信息相对应的虚拟EF队列,并将所述虚拟EF队列指定到所述FPGA EF队列。
进一步的,对应于虚拟EF队列取消配置的应用场景:
所述接收模块711,还用于接收在所述FPGA的接口上对虚拟EF队列的取消配置信息;
所述第一配置模块713,还用于在所述接收模块711接收到在所述接口上对虚拟EF队列的取消配置信息时,在所述接口上对所述取消配置信息所对应的流量策略表项进行删除,取消相对应的虚拟EF队列;
所述判断模块712,还用于在所述第一配置模块713取消所述虚拟EF队列之后,判断所述接口上是否还剩余至少一个虚拟EF队列,其中:
如果所述判断模块712的判断结果为是,通知所述第一配置模块713调整所述接口已经分配的FPGA EF队列的带宽值为所述接口当前剩余的虚拟EF队列的带宽值之和;
如果所述判断模块712的判断结果为否,则通知所述第一配置模块713释放所述接口上所分配的FPGA EF队列。
另一方面,所述FPGA72,包括:
至少一个接口721,用于接收和转发报文;
第二配置模块722,用于接收所述CPU71所发送的与所述FPGA的一个接口722相应的流量策略表项,为接口722配置相对应的虚拟EF队列,并将所述虚拟EF队列指定到所述FPGA EF队列;
确定模块723,用于在所述接口721接收到匹配优先类的报文时,根据所述第二配置模块722的配置信息确定所述报文所对应的虚拟EF队列,及所述虚拟EF队列所指定的所述FPGA EF队列;
评估模块724,用于根据所述第二配置模块722所接收到的所述虚拟EF队列所对应的流量策略表项,对所述报文的流量进行评估;
标识模块725,用于根据所述评估模块724的评估结果,对未超过所述虚拟EF队列的分配带宽的报文添加第一标识,对超过所述虚拟EF队列的分配带宽的流量添加第二标识;
处理模块726,用于将添加了所述第一标识的流量直接发送到所述FPGAEF队列,根据所述FPGA EF队列的拥塞状态,按照预设的处理策略对添加了所述第二标识的流量进行相应的处理。
在具体的应用场景中,所述处理模块726,具体用于:
判断所述FPGA EF队列当前是否处于拥塞状态;
如果判断结果为否,将添加了所述第二标识的流量直接发送到所述FPGAEF队列;
如果判断结果为是,将添加了所述第二标识的流量丢弃。
与现有技术相比,本发明所提出的技术方案具有以下优点:
通过应用本发明的技术方案,当在FPGA的一个接口上定义多个类规则,并分别指定EF队列时,CPU在该接口上采用CAR方式将其实现为多个虚拟EF队列,同时,CPU只为该接口分配一个FPGA EF队列,并设置该FPGA EF队列的带宽值为各虚拟EF队列的带宽值之和,从而,使各虚拟EF队列共享该FPGAEF队列的资源。通过这样的处理,不仅可以节省FPGA队列资源,而且,在进行队列调度时,由于每个接口只有一个FPGA EF队列,即采用严格优先调度的队列只有一个,不必考虑多个严格优先调度队列之间的公平调度问题,降低了队列调度算法的复杂度。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施场景所述的方法。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施场景的优劣。
以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

Claims (10)

1.一种加速转发EF队列的实现方法,其特征在于,至少包括以下步骤:
当接收到在现场可编程门阵列FPGA的接口上对类规则配置EF队列及其带宽的配置信息时,中央处理器CPU判断所述接口是否已经分配了FPGA EF队列;
如果判断结果为否,所述CPU为所述接口分配一个FPGAEF队列,并设置所述FPGAEF队列的带宽值为所述配置信息所配置的EF队列的带宽值;
所述CPU向所述接口下发相应的流量策略表项,为所述接口配置与所述配置信息相对应的虚拟EF队列,并将所述虚拟EF队列指定到所述FPGAEF队列。
2.如权利要求1所述的方法,其特征在于,所述CPU判断所述接口是否已经分配了FPGA EF队列之后,还包括:
如果判断结果为是,所述CPU调整所述接口上所分配的FPGA EF队列的带宽值为所述配置信息所配置的EF队列的带宽值和所述接口上已配置的EF队列的带宽值之和;
所述CPU向所述接口下发相应的流量策略表项,为所述接口配置与所述配置信息相对应的虚拟EF队列,并将所述虚拟EF队列指定到所述FPGA EF队列。
3.如权利要求1或2所述的方法,其特征在于,所述CPU为所述接口配置与所述配置信息相对应的虚拟EF队列,并将所述虚拟EF队列指定到所述FPGA EF队列之后,还包括:
当接收到在所述接口上对虚拟EF队列的取消配置信息时,所述CPU在所述接口上对所述取消配置信息所对应的流量策略表项进行删除,取消相对应的虚拟EF队列;
所述CPU判断所述接口上是否还剩余至少一个虚拟EF队列;
如果判断结果为是,所述CPU调整所述接口已经分配的FPGAEF队列的带宽值为所述接口当前剩余的虚拟EF队列的带宽值之和;
如果判断结果为否,所述CPU释放所述接口上所分配的FPGA EF队列。
4.如权利要求1或2所述的方法,其特征在于,所述CPU为所述接口配置与所述配置信息相对应的虚拟EF队列,并将所述虚拟EF队列指定到所述FPGA EF队列之后,还包括:
当所述接口接收到匹配优先类的报文时,所述FPGA确定所述报文所对应的虚拟EF队列,及所述虚拟EF队列所指定的所述FPGAEF队列;
所述FPGA根据所述虚拟EF队列所对应的流量策略表项对所述报文的流量进行评估;
如果所述报文的流量未超过所述虚拟EF队列的分配带宽,所述FPGA对所述报文添加第一标识,如果所述报文的流量超过了所述虚拟EF队列的分配带宽,所述FPGA对所述报文添加第二标识;
所述FPGA对于添加了所述第一标识的报文直接发送到所述FPGA EF队列,对于添加了所述第二标识的报文,根据所述FPGA EF队列的拥塞状态,按照预设的处理策略进行相应的处理。
5.如权利要求4所述的方法,其特征在于,所述对于添加了所述第二标识的报文,根据所述FPGA EF队列的拥塞状态,按照预设的处理策略进行相应的处理,具体包括:
所述FPGA判断所述FPGAEF队列当前是否处于拥塞状态;
如果判断结果为否,所述FPGA将添加了所述第二标识的报文直接发送到所述FPGA EF队列;
如果判断结果为是,所述FPGA将添加了所述第二标识的报文丢弃。
6.一种报文转发系统,包括CPU和FPGA,其特征在于,所述CPU,包括:
接收模块,用于接收在所述FPGA的接口上配置EF队列及其带宽的配置信息;
判断模块,用于在所述接收模块接收到在FPGA的接口上对类规则配置EF队列及其带宽的配置信息时,判断所述接口是否已经分配了FPGA EF队列;
第一配置模块,用于在所述判断模块的判断结果为否时,为所述接口分配一个FPGA EF队列,并设置所述FPGA EF队列的带宽值为所述配置信息所配置的EF队列的带宽值;
发送模块,用于根据所述第一配置模块的配置结果,向所述接口下发相应的流量策略表项,为所述接口配置与所述配置信息相对应的虚拟EF队列,并将所述虚拟EF队列指定到所述FPGAEF队列。
7.如权利要求6所述的报文转发系统,其特征在于,
所述第一配置模块,还用于在所述判断模块的判断结果为是时,调整所述接口上所分配的FPGA EF队列的带宽值为所述配置信息所配置的EF队列的带宽值和所述接口上已配置的EF队列的带宽值之和;
所述发送模块,还用于根据所述第一配置模块的调整结果,向所述接口下发相应的流量策略表项,为所述接口配置与所述配置信息相对应的虚拟EF队列,并将所述虚拟EF队列指定到所述FPGA EF队列。
8.如权利要求6或7所述的报文转发系统,其特征在于,
所述接收模块,还用于接收在所述FPGA的接口上对虚拟EF队列的取消配置信息;
所述第一配置模块,还用于在所述接收模块接收到在所述接口上对虚拟EF队列的取消配置信息时,在所述接口上对所述取消配置信息所对应的流量策略表项进行删除,取消相对应的虚拟EF队列;
所述判断模块,还用于在所述第一配置模块取消所述虚拟EF队列之后,判断所述接口上是否还剩余至少一个虚拟EF队列,其中:
如果所述判断模块的判断结果为是,通知所述第一配置模块调整所述接口已经分配的FPGA EF队列的带宽值为所述接口当前剩余的虚拟EF队列的带宽值之和;
如果所述判断模块的判断结果为否,则通知所述第一配置模块释放所述接口上所分配的FPGA EF队列。
9.如权利要求6所述的报文转发系统,其特征在于,所述FPGA,包括:
至少一个接口,用于接收和转发报文;
第二配置模块,用于接收所述CPU所发送的与所述FPGA的一个接口相应的流量策略表项,为所述接口配置相对应的虚拟EF队列,并将所述虚拟EF队列指定到所述FPGAEF队列;
确定模块,用于在所述接口接收到匹配优先类的报文时,根据所述第二配置模块的配置信息确定所述报文所对应的虚拟EF队列,及所述虚拟EF队列所指定的所述FPGA EF队列;
评估模块,用于根据所述第二配置模块所接收到的所述虚拟EF队列所对应的流量策略表项,对所述报文的流量进行评估;
标识模块,用于根据所述评估模块的评估结果,对未超过所述虚拟EF队列的分配带宽的报文添加第一标识,对超过所述虚拟EF队列的分配带宽的报文添加第二标识;
处理模块,用于将添加了所述第一标识的报文直接发送到所述FPGA EF队列,根据所述FPGA EF队列的拥塞状态,按照预设的处理策略对添加了所述第二标识的报文进行相应的处理。
10.如权利要求9所述的报文转发系统,其特征在于,所述处理模块,具体用于:
判断所述FPGAEF队列当前是否处于拥塞状态;
如果判断结果为否,将添加了所述第二标识的报文直接发送到所述FPGAEF队列;
如果判断结果为是,将添加了所述第二标识的报文丢弃。
CN201210119362.3A 2012-04-23 2012-04-23 一种ef队列的实现方法和设备 Active CN102664803B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210119362.3A CN102664803B (zh) 2012-04-23 2012-04-23 一种ef队列的实现方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210119362.3A CN102664803B (zh) 2012-04-23 2012-04-23 一种ef队列的实现方法和设备

Publications (2)

Publication Number Publication Date
CN102664803A true CN102664803A (zh) 2012-09-12
CN102664803B CN102664803B (zh) 2015-04-15

Family

ID=46774221

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210119362.3A Active CN102664803B (zh) 2012-04-23 2012-04-23 一种ef队列的实现方法和设备

Country Status (1)

Country Link
CN (1) CN102664803B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104243348A (zh) * 2014-09-22 2014-12-24 曙光信息产业(北京)有限公司 一种数据处理方法和装置
CN107707492A (zh) * 2017-11-22 2018-02-16 杭州迪普科技股份有限公司 一种上报和下发报文的方法及装置
WO2019129023A1 (zh) * 2017-12-27 2019-07-04 华为技术有限公司 基于nof的读取控制方法、装置及系统
CN112968845A (zh) * 2021-01-29 2021-06-15 新华三信息安全技术有限公司 一种带宽管理方法、装置、设备及机器可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030145012A1 (en) * 2002-01-31 2003-07-31 Kurth Hugh R. Shared resource virtual queues
US20050220128A1 (en) * 2004-04-05 2005-10-06 Ammasso, Inc. System and method for work request queuing for intelligent adapter
CN1826768A (zh) * 2003-08-25 2006-08-30 思科技术公司 利用动态资源分配进行的大规模排队的可扩展方法
CN101667144A (zh) * 2009-09-29 2010-03-10 北京航空航天大学 一种基于共享内存的虚拟机通信方法
CN101819564A (zh) * 2009-02-26 2010-09-01 国际商业机器公司 协助在虚拟机之间进行通信的方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030145012A1 (en) * 2002-01-31 2003-07-31 Kurth Hugh R. Shared resource virtual queues
CN1826768A (zh) * 2003-08-25 2006-08-30 思科技术公司 利用动态资源分配进行的大规模排队的可扩展方法
US20050220128A1 (en) * 2004-04-05 2005-10-06 Ammasso, Inc. System and method for work request queuing for intelligent adapter
CN101819564A (zh) * 2009-02-26 2010-09-01 国际商业机器公司 协助在虚拟机之间进行通信的方法和装置
CN101667144A (zh) * 2009-09-29 2010-03-10 北京航空航天大学 一种基于共享内存的虚拟机通信方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘刚,等: "虚拟输入队列与队列管理算法的公平性", 《计算机工程》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104243348A (zh) * 2014-09-22 2014-12-24 曙光信息产业(北京)有限公司 一种数据处理方法和装置
CN104243348B (zh) * 2014-09-22 2018-03-23 曙光信息产业(北京)有限公司 一种数据处理方法和装置
CN107707492A (zh) * 2017-11-22 2018-02-16 杭州迪普科技股份有限公司 一种上报和下发报文的方法及装置
CN107707492B (zh) * 2017-11-22 2020-05-12 杭州迪普科技股份有限公司 一种上报和下发报文的方法及装置
WO2019129023A1 (zh) * 2017-12-27 2019-07-04 华为技术有限公司 基于nof的读取控制方法、装置及系统
US11301163B2 (en) 2017-12-27 2022-04-12 Huawei Technologies Co., Ltd. NOF-based read control method, apparatus, and system
CN112968845A (zh) * 2021-01-29 2021-06-15 新华三信息安全技术有限公司 一种带宽管理方法、装置、设备及机器可读存储介质

Also Published As

Publication number Publication date
CN102664803B (zh) 2015-04-15

Similar Documents

Publication Publication Date Title
US9185047B2 (en) Hierarchical profiled scheduling and shaping
KR101670642B1 (ko) 클라이언트 디바이스 상에서의 패킷 송신을 스케줄링하기 위한 시스템 및 방법
US8000247B2 (en) Bandwidth management apparatus
WO2019157978A1 (zh) 调度报文的方法、第一网络设备及计算机可读存储介质
US20080298397A1 (en) Communication fabric bandwidth management
CN102325092B (zh) 一种报文处理方法和设备
US7843825B2 (en) Method and system for packet rate shaping
Sun et al. Enhancing the user experience in vehicular edge computing networks: An adaptive resource allocation approach
CN102780630B (zh) 一种基于FPGA队列实现QoS队列的方法和设备
CN102664803B (zh) 一种ef队列的实现方法和设备
CN108259377A (zh) 队列分配方法及装置
CN114884899A (zh) 一种多模态核心网转发和调度方法及装置
KR101737516B1 (ko) 공평한 대역 할당 기반 패킷 스케줄링 방법 및 장치
CN102333026A (zh) 报文转发方法及装置
CN112995058A (zh) 一种令牌的调整方法及装置
CN112995056A (zh) 一种流量调度方法、电子设备及存储介质
CN104283805A (zh) 一种sdn网络报文发送方法及设备
US20210135999A1 (en) Packet Control Method, Flow Table Update Method, and Node Device
CN113765796A (zh) 流量转发控制方法及装置
Ewaisha et al. Delay optimal joint Scheduling-and-Power-Control for cognitive radio uplinks
JP7122871B2 (ja) 車載用ゲートウェイ装置、方法及びプログラム
KR102113641B1 (ko) 소프트웨어 정의 네트워크 시스템에서 다중 중요도 모드에 따른 패킷 스케줄링 방법, 그 방법을 구현한 컴퓨터프로그램 및 그 방법을 수행하는 스위치 장치
US10270701B2 (en) Management node, terminal, communication system, communication method, and program storage medium
KR20190064286A (ko) 보안이 강화된 무선 통신 장치
US11038811B2 (en) Waterfall granting

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address

Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Patentee after: Xinhua three Technology Co., Ltd.

Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base

Patentee before: Huasan Communication Technology Co., Ltd.

CP03 Change of name, title or address
TR01 Transfer of patent right

Effective date of registration: 20190826

Address after: 610041 China (Sichuan) Free Trade Pilot Zone

Patentee after: Xinhua San Semiconductor Technology Co., Ltd.

Address before: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Patentee before: Xinhua three Technology Co., Ltd.

TR01 Transfer of patent right