一种层次化UDF的芯片处理方法及装置与流程

文档序号:18010022发布日期:2019-06-25 23:54阅读:189来源:国知局
本发明涉及一种udf的实现方案,尤其是涉及一种层次化udf的芯片处理方法及装置。
背景技术
::结合图1所示,目前硬件中实现udf(userdefinedfield,用户自定义字段)的时候,在报文解析后,根据得到的解析结果(parserresult)信息去查一个udf表(udftable),查询结果会得到一个索引(index),根据这个index从预先配置的内存中读出配置,根据这个配置来决定怎么从报文中抽取出udf数据(udfdata);udfdata一般是2byte的单位,可以有8个或者16个,这个取决于硬件代价的权衡,然后这个udfdata在硬件处理的各个阶段被使用。但是上述方案存在以下缺点:1、udf表一般是和报文解析器在一起,因此规格不会很大,从16条到512条这样的规格。2、udf查找(lookup)的时候,只有parserresult,没有报文处理的信息,不能精确的按需使能udf。3、一旦udf被取出后,各个处理阶段都必须使用这个udfdata,比如对于同一个报文,在不同阶段需要的udfdata不一样就没法支持了。4、当需要复杂报文时,需要多级udf处理时,第一级udf查表处理后,需要出新的udf控制信息,在第二级或更后面的阶段,使用新的udfdata进行处理,目前的方案支持不了。技术实现要素:本发明的目的在于克服现有技术的缺陷,提供一种层次化udf的芯片处理装置及方法。为实现上述目的,本发明提出如下技术方案:一种层次化udf的芯片处理装置,芯片中包括报文解析器、udf表和依次级联的多级流水线,每级流水线包括查找模块和处理模块,报文依次经过报文解析器和udf表,查找得到一udf索引送入多级流水线,每一级流水线根据前一级流水线的udf索引从报文中抽取得到一udf数据供本级流水线的查找模块使用,且每一级流水线的处理模块会查找得到一新的udf索引,供后一级流水线的处理模块使用。优选地,所述查找模块至少为隧道查找、流表查找、acl查找模块中的一种。优选地,所述udf数据的数目和带宽至少为8个4byte或8个2byte或16个2byte或16个4byte。优选地,所述报文解析器对报文解析后,得到一解析结果,根据所述解析结果查找所述udf表得到所述udf索引。优选地,所述报文和解析结果会依次经过udf表和多级流水线。本发明还揭示了另外一种技术方案:一种层次化udf的芯片处理方法,包括:s1,报文依次经过报文解析器和udf表,查找得到一udf索引送入多级流水线;s2,每一级流水线根据前一级流水线的udf索引从报文中抽取得到一udf数据供本级流水线的查找模块使用,且每一级流水线的处理模块会查找得到一新的udf索引,供后一级流水线的处理模块使用。优选地,s1中,报文解析器对报文解析后,得到一解析结果,根据所述解析结果查找所述udf表得到所述udf索引。优选地,所述报文和解析结果会依次经过udf表和多级流水线。本发明的有益效果是:1、udf数据的抽取,可以在不同的流水线阶段进行,对于同一个报文,根据流水线的不同,可以选择抽取本流水线需要的udfdata。2、各个流水线阶段都可以使能udf,这样可以结合报文信息和流水线处理信息来决定udf的抽取,udf处理上更为精细。3、不同流水线都有各自的表项,这样能够借用流水线的表项来增大udf的使能。4、由于udfdata可以参加本级流水线的处理,并且可以出下一级别udf的使能,这样的架构下,支持了udf的级联,实现层次化udf的效果。附图说明图1是现有udf处理装置的结构示意图;图2是本发明装置的结构示意图;图3是本发明方法的流程示意图。具体实施方式下面将结合本发明的附图,对本发明实施例的技术方案进行清楚、完整的描述。本发明所揭示的一种层次化udf的芯片处理装置及方法,通过packet穿过芯片各个流水线阶段,各个流水线阶段抽取udf,且各个流水线处理后出新的udf使能,供下一级流水线使能udf,实现了层次化udf的效果。结合图2所示,本发明所揭示的一种层次化udf的芯片处理装置,包括芯片中包括报文解析器、udf表和多级流水线,其中,报文解析器(parser)和udf表(udftable)对报文的解析查找与现有相同,具体地,报文(packet)进入报文解析器后进行报文解析,解析得到一解析结果(parserresult),该解析结果和报文被送入udf表;根据该解析结果查找udf表,会查找得到一个udf索引(udfindex0),这个udfindex0索引会被送入后续的多级流水线,用于抽取udfdata。且上述解析结果和报文也会进入后续的多级流水线。多级流水线依次级联,流水线的数目和类型不限,其与硬件设计有关。本实施例中,示意出了3个级联的flow处理流水线(流水线1~3),作为可替换的,也可以第一个流水线为隧道(tunnel)处理流水线,第二个流水线是流表(flow)处理流水线,第三个流水线是acl处理流水线。当然也可根据需要级联其他功能的流水线。每级流水线主要包括查找模块和处理模块,与上述流水线举例对应的,如可以包括隧道查找(tunnellookup)模块和隧道处理(tunnelprocess)模块,或者包括流表查找(forwardlookup)模块和流表处理(forwardprocess)模块,或者包括acl查找(acllookup)模块和acl处理(aclprocess)模块。每个一级流水线根据前一级流水线的udf索引从报文中抽取得到一udf数据供本级流水线的查找模块使用,如流水线1根据udfindex0从预先配置的内存中读出配置,并根据这个配置来决定怎么从报文中抽取出udfdata;udfdata的数目和带宽也是和硬件设计相关,带宽一般是2byte的单位,数据可以有8个或者16个,这个取决于硬件代价的权衡。本实施例是8个2byte,即udfdata{0…7}[15:0]。且每一级流水线的处理模块会查找得到一新的udf索引,供后一级流水线的处理模块使用,如流水线1根据取出的udfdata查找得到新的udfindex1,与udfindex0一起送入选择器,经选择后送给后一级流水线使用。同样的,流水线2根据udfindex1或udfindex0从预先配置的内存中读出配置,并根据这个配置来决定怎么从报文中抽取出udfdata,流水线2根据取出的udfdata查找得到新的udfindex2,与udfindex1一起送入选择器,经选择后送给后一级流水线3使用,流水线3的原理与流水线1、2同,这里不再赘述。结合图3所示,本发明所揭示的一种次化udf的芯片处理方法,包括以下步骤:s1,报文依次经过报文解析器和udf表,查找得到一udf索引送入多级流水线。s2,每一级流水线根据前一级流水线的udf索引从报文中抽取得到一udf数据供本级流水线的查找模块使用,且每一级流水线的处理模块会查找得到一新的udf索引,供后一级流水线的处理模块使用。步骤s1、s2的具体流程可参照上述装置中的介绍,这里也不再赘述。本发明根据前一级流水线的udf索引从报文中得到udf数据,这个udf数据会参与本级的查找处理。且本级的处理过程中,可以出新的udf索引,这个udf索引可以给流水线中下一级处理使用,实现了层次化udf的效果。本发明的技术内容及技术特征已揭示如上,然而熟悉本领域的技术人员仍可能基于本发明的教示及揭示而作种种不背离本发明精神的替换及修饰,因此,本发明保护范围应不限于实施例所揭示的内容,而应包括各种不背离本发明的替换及修饰,并为本专利申请权利要求所涵盖。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1