CN112866139A - 一种多规则流分类的实现方法、设备和存储介质 - Google Patents

一种多规则流分类的实现方法、设备和存储介质 Download PDF

Info

Publication number
CN112866139A
CN112866139A CN201911183380.6A CN201911183380A CN112866139A CN 112866139 A CN112866139 A CN 112866139A CN 201911183380 A CN201911183380 A CN 201911183380A CN 112866139 A CN112866139 A CN 112866139A
Authority
CN
China
Prior art keywords
hash
field
original
key
width
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.)
Withdrawn
Application number
CN201911183380.6A
Other languages
English (en)
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.)
Sanechips Technology Co Ltd
Original Assignee
Sanechips Technology 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 Sanechips Technology Co Ltd filed Critical Sanechips Technology Co Ltd
Priority to CN201911183380.6A priority Critical patent/CN112866139A/zh
Priority to PCT/CN2020/131891 priority patent/WO2021104393A1/zh
Publication of CN112866139A publication Critical patent/CN112866139A/zh
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/74591Address table lookup; Address filtering using content-addressable memories [CAM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q11/00Selecting arrangements for multiplex systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q11/00Selecting arrangements for multiplex systems
    • H04Q11/0001Selecting arrangements for multiplex systems using optical switching
    • H04Q11/0062Network aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q11/00Selecting arrangements for multiplex systems
    • H04Q11/0001Selecting arrangements for multiplex systems using optical switching
    • H04Q11/0062Network aspects
    • H04Q11/0067Provisions for optical access or distribution networks, e.g. Gigabit Ethernet Passive Optical Network (GE-PON), ATM-based Passive Optical Network (A-PON), PON-Ring

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提出一种多规则流分类的实现方法、设备和存储介质。该方法包括:在检测到哈希HASH查找指令触发的情况下,基于原始字段结构,并根据原始输入信息中的待提取字段生成对应的原始字段;根据原始字段和预先配置的***设备表SDT中的表项内容,生成对应的中间字段;按照中间字段从预设HASH桶中查找与待提取字段的位宽和HASH表宽度匹配的至少一个目标字段;按照至少一个目标字段的优先级顺序,将优先级最高的目标字段作为输出结果进行输出。

Description

一种多规则流分类的实现方法、设备和存储介质
技术领域
本申请涉及通信,具体涉及一种多规则流分类的实现方法、设备和存储介质。
背景技术
千兆无源光网络(Gigabit-capable Passive Optical Networks,GPON)是PON系列技术中架构最完备、标准内容最完整的网络技术,现在已大量使用于接入网,是用于取代非对称数字用户环路(Asymmetric Digital Subscriber Line,ADSL)接入技术的最佳方案。GPON网络终端设备(Optical Network Unit,ONU)是GPON套片的核心芯片之一。芯片的以太网报文的探测和处理是一个非常重要的环节,它需要识别网络中形形色色的各种报文,针对不同的报文有不同的处理方式。
随着业务的不断丰富,并且不同报文有不同的处理方式,并且在不同的场景下,相同报文的处理方式也不尽相同。因此,使用NP技术处理报文业务就变得非常重要。因为网络处理器(Network Processor,NP)技术中的微码编辑可以根据不同处理方式进行不同的组合。
在NP技术中,进行流分类目前主要是基于三态内容寻址存储器(Ternary ContentAddressable Memory,TCAM)进行;使用TCAM有一个好处:针对某特定场景,可以将需要提取的特征字段固化。
但是使用TCAM有几个方面需要考虑:一个是针对GPON终端的场景中,需要的条目数非常多,而TCAM的容量一般不大;二是TCAM的功能很多,ONU终端使用到的其中的功能只是一小部分,存在浪费,不仅是从购买IP上,还是在面积消耗上,终端来看,成本是一个敏感因素;三是TCAM使用时,存在一个良率问题。这也使得成本进一步增加。
在NP架构之前,进行流分类处理时,可以不使用TCAM,此时查表一个规则需要至少3类查表,第一类是规则提取索引表,第二类是提取规则表,第三类是HASH查找。如果将原来查表流程直接借用到当前NP架构中,因为查表返回位宽的限制,查表次数会变得非常多,而查表是存在延时的,延时增加会使得NP内部的线程的处理时间变长,变相地降低了性能,为了提升性能,只能在逻辑上增加更多的线程以满足应用。但是这样做又会导致面积增加,也就是成本又提高了。
通过上面描述可知,直接在NP架构下使用TCAM对于GPON终端应用并不是非常理想的选择,同时使用非NP架构下的流分类规则,也不能和NP架构完美契合。
发明内容
有鉴于此,本申请实施例提供一种多规则流分类的实现方法、设备和存储介质,在保证业务报文能灵活处理的前提下,从架构上降低NP进行流分类规则的查表延时,同时降低GPON终端芯片的成本。
本申请实施例提供一种多规则流分类的实现方法,包括:
在检测到哈希HASH查找指令触发的情况下,基于原始字段结构,并根据原始输入信息中的待提取字段生成对应的原始字段;
根据所述原始字段和预先配置的***设备表SDT中的表项内容,生成对应的中间字段;
按照所述中间字段从预设HASH桶中查找与所述待提取字段的位宽和HASH表宽度匹配的至少一个目标字段;
按照所述至少一个目标字段的优先级顺序,将优先级最高的目标字段作为输出结果进行输出。
本申请实施例提供一种设备,包括:存储器,以及,一个或多个处理器;器
存储器,设置为存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一实施例所述的方法。
本申请实施例提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述的方法。
附图说明
图1是本申请实施例提供的一种多规则流分类的实现方法的流程图;
图2是本申请实施例提供的一种流分类的流程示意图;
图3是本申请实施例提供的一种流分类中从HASH KEY预处理至多HASH结果比较之间的处理流程图;
图4是本申请实施例提供的一种HASH条目结构示意图;
图5是本申请实施例提供的一种扩展端口获取条目的流程图;
图6是本申请实施例提供的一种HASH条目可重构结构示意图;
图7是本申请实施例提供的一种多规则流分类的实现装置的结构框图;
图8是本申请实施例提供的一种设备的结构示意图。
具体实施方式
下文中将结合附图对本申请的实施例进行说明。在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在本申请的实施例中,通过对对已有NP微码特性、流分类流程的深入分析,一方面要避免使用TCAM,一方面又需要满足当前应用,从而解决GPON终端应用遇到查表的时延问题。
在已有流分类流程中,包括如下步骤:
S1、输入信息包含128字节包头数据、端口号以及前级模块输入的其他预处理信息。
S2、基于端口号查提取规则索引表,得到提取规则的对应地址以及各个提取规则是否有效指示。
S3、基于每个有效的提取规则索引查找提取规则表。
S4、基于提取规则表得到的内容,从128字节包头数据中提取相应字段,以及一些预处理信息组成key,进行HASH查找匹配操作。HASH匹配为精确匹配。
S5、如果所有规则均没有匹配,该报文按照提取规则索引表的“全部未匹配的默认动作”进行处理,如果有且仅有一个规则匹配,那么按照该规则的结果输出,如果有多个规则有效,那么按照规则结果的优先级高低,取优先级最高的结果输出。
若按照已有流分类流程,在进行一次规则查找,则查表如下:一次规则提取索引表,一次提取规则表,以及一次HASH查找。而NP查表一次的返回结果是有限的,即一次规则查表需要至少3次,并且大概率是超过3次。
根据当前GPON终端应用来看,业务报文规则超过3次很常见。因此规则查表相当于至少需要10次以上,两层报文(即L2)的基本业务处理至少还包含MAC地址的学习和查找,包修改,以及其他分支功能,从而使得查表次数变得非常多。
而NP架构下,在理想情况下64字节达到线速,查表次数必须尽可能少。因此,NP架构下如果按照原有流程操作,很难满足GPON终端应用。查表次数过多,依次分析每次查表,考虑是否可优化以及如何优化,如之前所述,查表包含3类:规则提取索引表,提取规则表,HASH查找。
根据已有NP架构中微码的作用,可以得到提取数据都可以由微码完成,而查找规则提取索引表和查找提取规则表的目的是为了提取数据。因此可以在NP架构下,对这两类表进行优化。然后分析HASH查找。通过之前描述可知,NP架构下解决流分类功能的解决方案是使用TCAM,则可以分析TCAM在GPON终端产品中的使用情况。TCAM在GPON终端应用了其两个特性:
其一,在TCAM内部,每个条目有独立的MASK位,TCAM将输入KEY&&MASK,得到真正该条目关注的KEY,此步骤即完成了原有规则提取索引和规则提取表的功能。TCAM的条目和对应MASK位可以动态添加和删除,即软件可以动态添加规则以及对应的条目了。
其二,将MASK后的数据与条目进行精确匹配,此时存在多个条目匹配的情况,TCAM根据条目的优先级不同选择优先级最高的匹配条目作为最终的结果,输出对应信息反馈给微码。此步骤类似与HASH的精确匹配查找。
TCAM内部每个条目都有一个MASK位。TCAM支持的条目数不多,它可以做到每个条目都进行比较。纯逻辑如果完成这个工作,相当于就是一个TCAM了。因此这个位置需要根据当前ONU项目的应用场景进行分析,以满足GPON终端应用为通过准则。而多个条目匹配的优先级比较结果输出,也属于TCAM的特性。
在一实现方式中,图1是本申请实施例提供的一种多规则流分类的实现方法的流程图。本实施例应用于降低NP进行流分类规则的查表延时的情况。本实施例可以由设备来执行,示例型地,设备可以为光网络终端。
如图1所示,本实施例中的方法包括S110-S140。
S110、在检测到哈希(HASH)查找指令触发的情况下,基于原始字段结构,并根据原始输入信息中的待提取字段生成对应的原始字段。
在实施例中,HASH查找指令指的是微码发现流分类的流程进入到字段查找阶段的指令。在实施例中,在微码检测到流程进入到字段查找阶段时,开始进行字段拼接组装,以生成对应的原始字段。
在一实施例中,基于原始字段结构,并根据原始输入信息中的待提取字段生成对应的原始字段,包括:按照原始字段结构,将待查找***设备表(System Device Table,SDT)的地址、当前微码的线程号和原始输入信息中的待提取字段进行组合,生成对应的原始字段。在实施例中,原始字段结构指的是用于查找SDT表请求的字段结构。也就是说,在微码组成对应的原始字段之后,发起查找SDT表请求。示例性地,原始字段结构可以包括:待提取字段、待查找SDT表的地址和当前微码的线程号。在实施例中,在进入到字段查找阶段的情况下,微码按照原始字段结构,将待提取字段、待查找SDT表的地址和当前微码的线程号进行组装,以生成对应的原始字段。在实施例中,待提取字段指的是微码根据需要所要提取的字段。
S120、根据原始字段和预先配置的SDT表中的表项内容,生成对应的中间字段。
在实施例中,SDT表的表项内容可以包括:多HASH访问标志位、HASH表id号标志位、HASH字段大小标志位和HASH表宽度标志位。在实施例中,在微码根据原始字段结构生成原始字段之后,发起查找SDT表请求,首先基于待查找SDT表的地址查找SDT表,以及读取SDT表中的表项内容,然后按照预先配置的中间字段结构对SDT表中的表项内容和原始字段中的内容进行结合,以生成对应的中间字段。其中,中间字段结构可以包括:当前微码的线程号、多HASH访问标志位、HASH表id号标志位、HASH字段大小标志位、HASH表宽度标志位和待提取字段。在微码从SDT表中读取到对应的表项内容之后,按照中间字段结构对表项内容和原始字段中的当前微码的线程号以及待提取字段进行组装,以生成对应的中间字段。
S130、按照中间字段从预设HASH桶中查找与待提取字段的位宽和HASH表宽度匹配的至少一个目标字段。
在实施例中,预设HASH桶指的是预先配置的存储多种字段的空间。预设HASH桶可以用于存储多种不同字段宽度、不同类型以及不同HASH表宽度对应的各种字段,对此并不进行限定。在实施例中,待提取字段具备自身属性,比如,自身的位宽和所属HASH表宽度。在得到中间字段之后,可以根据中间字段中待提取字段的位宽和HASH表宽度对预设HASH桶进行查找,以得到与待提取字段的位宽和HASH表宽度匹配的至少一个目标字段。在实施例中,预设HASH桶是预先配置的,即无需根据待提取字段,执行规则提取索引的查找以及提取规则的相关操作,从而大大降低了流分类规则的查表延时。
S140、按照至少一个目标字段的优先级顺序,将优先级最高的目标字段作为输出结果进行输出。
在实施例中,按照至少一个目标字段的优先级排序,将优先级最高的目标字段作为输出结果进行输出,指的是在存在多个规则同时生效且需要匹配的情况下,按照约定的优先级顺序选择优先级最高的结果进行输出。在保证业务报文灵活处理的前提下,从架构上降低NP进行流分类规则的查表延时,同时降低GPON终端芯片的成本。
在一实施例中,根据原始字段和预先配置的***设备表SDT中的表项内容,生成对应的中间字段,包括:根据原始字段中的待查找SDT表的地址读取预先配置的SDT表,得到对应的表项内容;基于中间字段结构,对表项内容、原始字段中的当前微码的线程号和待提取字段进行组合,生成对应的中间字段。
在实施例中,微码基于原始字段中的待查找SDT表的地址查找SDT表,在查找到对应的SDT表之后,读取SDT表中的每个表项内容;然后根据中间字段结构,将SDT表中的每个表项内容和原始字段中的当前微码的线程号以及待提取字段进行组合,生成对应的中间字段。
在一实施例中,在按照中间字段从预设HASH桶中查找与待提取字段的位宽和HASH表宽度匹配的至少一个目标字段之前,还包括:根据中间字段中的多HASH标志位确定对应的HASH查找策略,多HASH标志位用于表示当前多HASH查找请求的HASH规则数目。
在实施例中,可根据中间字段中的多HASH标志位来确定对应的HASH查找策略。也就是说,HASH查找策略与多HASH标志位有关。在实施例中,HASH查找策略可以包括:单HASH查找策略和多HASH查找策略。单HASH查找策略用于表征流分类流程通过单HASH通路进行处理;多HASH查找策略用于表征流分类流程通过多HASH通路进行处理。
在一实施例中,在多HASH标志位为第一数值的情况下,按照中间字段从预设HASH桶中查找与待提取字段的位宽和HASH表宽度匹配的至少一个目标字段,包括:基于多HASH查找策略,并按照中间字段中的HASH表id号查找对应的多HASH规则索引表;根据多HASH规则索引表中的HASH表id号确定目标字段对应的字段位宽和HASH表宽度;根据字段位宽和HASH表宽度生成对应的至少一个目标字段。
在实施例中,多HASH标志位可通过第一数值和第二数值进行表示。示例性地,第一数值为1,第二数值为0。在实施例中,在多HASH标志位为1的情况下,表明流分类流程进行多次HASH查找,即采用多HASH查找策略确定对应的目标字段,即采用多HASH查找策略进行第一次HASH查找,并基于中间字段中的HASH表id号查找对应的多HASH规则索引表,然后根据多HASH规则索引表中的HASH表id号从预设映射表中查找到目标字段对应的字段位宽和HASH表宽度;然后将目标字段对应的字段位宽和HASH表宽度替换掉待提取字段的字段位宽和HASH表宽度,以得到对应的至少一个目标字段。在完成第一次HASH查找之后,将规则索引号执行减一操作,然后重新执行上述的单次HASH查找策略,直至将规则索引号减到0为止。
在一实施例中,按照至少一个目标字段的优先级顺序,将优先级最高的目标字段作为输出结果进行输出,包括:确定每个目标字段的优先级顺序;将优先级最高的目标字段作为输出结果进行输出。
在实施例中,在从HASH桶中查找到多个目标字段之后,对每个目标字段的优先级进行排序,并将优先级最高的目标字段作为输出结果进行输出。在实施例中,对目标字段的优先级进行排序,可以指的是存在多个规则同时生效且需要匹配的情况,对每个规则进行优先级的排序。
在一实施例中,多规则流分类的实现方法,还包括:采用空闲指针队列和随机存取存储器(Random Access Memory,RAM)的方式,对原始输入信息和至少一个输出结果进行存储。
在实施例中,对执行多HASH查找策略得到的输出结果进行存储的情况下,可采用空闲指针队列和RAM结合的方式进行存储。在一实施例中,RAM深度与线程总数有关。在实施例中,RAM深度可以设置为N,N取决于线程的总数。在实施例中,在存储的过程中,可以存储原始输入信息,也可以存储N个输出结果,对此并不进行限定。
在一实施例中,图2是本申请实施例提供的一种流分类的流程示意图。如图2所示,在流分类处理过程中,包括如下步骤:
S210、提取HASH KEY。
S220、HASH KEY预处理。
S230、查找HASH桶。
S240、多HASH结果比较。
S250、结果输出。
在实施例中,HASH KEY指的是上述实施例中的字段。在实施例中,提取HASH KEY的过程中包括:对流分类的处理流程初始化的情况下,根据应用需要使用微码命令进行KEY组合。
HASH KEY预处理的过程中包括:自定义一个SDT表,灵活应对各种HASH输入情况,并针对不同的输入情况可以灵活地对HASH KEY进行重新处理。在实施例中,根据应用需要定义不同的HASH表宽度、不同的HASH KEY宽度以及不同的结果位宽,从而满足了流分类的多规则仲裁的情况。
查找HASH桶的过程中包括:与HASH KEY预处理部分中的HASH KEY对应,可以灵活地针对不同的HASH KEY位宽进行匹配,并灵活地根据不同的HASH表宽度匹配,并输出匹配后的对应结果。
多HASH结果比较的过程中包括:在存在多个规则同时生效且需要匹配的情况下,根据预先配置的优先级顺序选择优先级最高的结果输出。
在一实施例中,图3是本申请实施例提供的一种流分类中从HASH KEY预处理至多HASH结果比较之间的处理流程图。如图3所示,该处理流程包括如下步骤:
S310、微码检测到流分类流程进入HASH KEY提取阶段,进行KEY提取。
S320、微码进行KEY组装,生成原始字段。
S330、微码组成原始字段后,发起查表请求,并查找SDT表。
S340、读取SDT表之后,结合SDT表中的表项内容和原始字段,生成中间字段。
S350、在中间字段中的多HASH标志位为1的情况下,进行多次HASH查找。
S360、执行第一次HASH查找,并基于KEY中的HASH表id号查找ALG内部的一个表,并将查找结果替换原始字段中的HASH KEY。
S370、执行第二次直到最后一次HASH查找,并基于HASH KEY中的HASH表id号加1作为索引查找表,并将查找结果替换原始字段中的HASH KEY。
S380、采用空闲指针队列和RAM结合的方式,对查找结果进行存储。
S390、完成HASH KEY组装之后,送入原有的ALG功能模块进行处理。
在实施例中,在微码检测到流分类流程进入到HASH KEY提取阶段,开始进行拼接。首先,微码按照原始字段结构进行HASH KEY组装,以生成对应的原始字段。表1是本申请实施例提供的一种原始字段结构示意表。如表1所示,原始字段结构包括:待提取字段、待查找SDT表的地址和当前微码的线程号。
表1 一种原始字段结构示意表
待查找SDT表的地址 当前微码的线程号 待提取字段
在实施例中,可采用HASH KEY表示微码根据需要提取的字段,即待提取字段;sdt_num表示待查找SDT表的地址;np_no表示当前微码的线程号。
在微码生成原始字段止呕,发起查表请求,首先基于sdt_num查找SDT表。表2是本申请实施例提供的一种SDT表的结构示意表。
表2 一种SDT表的结构示意表
Figure BDA0002291840850000101
在实施例中,可采用multi_hash表示多HASH标志位;multi_table_id表示HASH表号;hash_key_size表示HASH KEY大小标志位;multi_tbl_width表示HASH表宽度标志位。
示例性地,在multi_hash为0,表示访问HASH模块的健值长度,HASH健值总共384bit。比如,hash_key_keytype为128bit支持的最小粒度为1byte,keysize的值范围为1-14,分别对应HASH健值长度(以8bit为单位)为:000001-1*8bit,000010-2*8bit,001110-14*8bit,其他情况保留;hash_key_keytype为256bit支持的最小粒度为2byte,keysize的值范围为1-15,分别对应HASH健值长度(以16bit为单位)为:000001-1*16bit,000010-2*16bit,001111-15*16bit,其他情况保留;hash_key_keytype为384bit支持的最小粒度为4byte,keysize的值范围为1-12,分别对应HASH健值长度(以32bit为单位)为:000001-1*32bit,000010-2*32bit,001100-12*32bit,其他情况保留;hash_key_keytype为512bit支持的最小粒度为4byte,keysize的值范围为1-12,分别对应HASH健值长度(以32bit为单位)为:000001-1*32bit,000010-2*32bit,001100-12*32bit,其他情况保留。在实施例中,multi_tbl_width表示HASH表宽度标志位,用于存储位宽。key type为2bit,表示该查找对应的HASH表项长度类型:01-128bit,10-256bit,11-512bit,00-384bit。
在读取SDT表之后,结合SDT表中的每个表项内容和HASH KEY进行组装,以生成对应的中间字段。表3是本申请实施例提供的一种中间字段结构的示意表。如表3所示,中间字段结构包括:当前微码的线程号、多HASH标志位、HASH表号、HASH KEY大小标志位、HASH表宽度标志位和待提取字段。
表3 一种中间字段结构的示意表
np_no
multi_hash
multi_table_id
hash_key_size
multi_tbl_width
HASH KEY
在HASH处理过程中,先通过预处理模块进行提前分流,在中间字段中的multi_hash为0的情况下,则执行基本的HASH通路(即单HASH查找策略),但是在高位新增8bit信息,即1bit multi hash+7bit multi hash index;在中间字段中的multi hash为1的情况下,则表示需要进行多次HASH,执行多HASH通路(即多HASH查找策略)。
如果是多HASH通路进行第一次HASH查找的情况下,先基于中间字段中的hash_table_id查找ALG内部的一个表。表4是本申请实施例提供的一种多HASH规则索引表。
表4 一种多HASH规则索引表
Figure BDA0002291840850000111
表5是本申请实施例提供的一种hash_table_id配置表。如表5所示,包括:HASH表宽度、HASH KEY大小和HASH KEY位置。
表5 一种hash_table_id配置表
Figure BDA0002291840850000121
Figure BDA0002291840850000131
将查SDT表得到的hash_table_id、hash_key_size、hash_table_width依次替换原始key中的hash_key_size、hash_key_type。HASH KEY根据查表得到的hash_key_size、hash_key_location、hash_key_mask重新生成,参数具体含义如上表所示,举例,当hash_key_size设置为64bit,hash_key_location设置为5,那么hash_key(504bit)为{320’b0,(HASH_KEY[383:320]&hash_key_mask[63:0],120’b0}。
在第二次直到最后一次进行HASH查找的情况下,基于表4的hash_mul_next_addr的作为索引查找表4,其他流程与同S350。每查一次HASH,表4中读到的multi_num就减一,当减到0表示当前处理的多hash_key已经申请结束,开始下一个多hash_key的申请。
另一方面,预处理模块对于multi_hash拉高的key由于并非立刻返回结果,需要进行存储,存储采用空闲指针队列+RAM的方式,RAM深度设置为N(N取决于线程的总数)。存储不仅是存储原始输入的信号,以及存储N个输出结果(bit位宽根据应用自行确定,其中最高位为hit)。在实施例中,输出结果的次高5bit作为优先级仲裁使用。(在HASH表项中为紧跟key的最高5bit,在全部结果都读取完之后,取最高优先级对应的结果)还需要一个待处理指针FIFO(即存储的是multi_index)。N个KEY之间采取先进先出的原则,一个复制完之后复制下一个。
复制次数基于表4中对应的multi_num参数,每复制一次,该参数减一,直到减到0,表示复制结束,开始下一次复制。组装好key之后,送入基本HASH的功能模块,存在多HASH的key和原始通路的key之间的调度,目前采用RR轮询的方式,两者同等优先级,基本HASH功能模块进行查找后,返回对应输出结果的相关参数。采用本技术方案,不仅可以配合微码的固化部分,使得提取字段固定,更重要是大大降低了在业务种类复杂时ONU的流分类功能查表时延,设计了能与微码灵活配套的HASH查找方案特别是可重构的HASH条目结构,提高了RAM的利用率,减少了NP的线程数,降低了芯片成本。
图4是本申请实施例提供的一种HASH条目结构示意图。如图4所示,HASH条目结构包括:条目有效标志位(即valid)、key类型标志位(key_type)、HASH表id(即table_id)、业务健值(即key)和输出结果(即result)。
在实施例中,可定义valid为0时,当前条目为无效HASH条目;vaild为1时,当前条目有效。key_type定义如下:00时,无效;01时,128bit;10时,256bit;11时,512bit。table_id定义如下:0-31,表示32张HASH表。key表示用户自定义的业务健值,长度必须为n*8bit(n=1,2,3……48),最大业务健值长度为384bit,n在[0:48]之间。result为用户自定义的结果数据,最高1bit的no_result位预留给芯片硬件,用以指示微码查HASH是否命中(比如,0表示命中,1表示未命中)。实际返回给微码的result的长度由SDT属性中的rsp_mode决定,当条目中实际存放的result长度大于rsp_mode时,返回给微码时数据被截断,反之,result的低位采用0补齐至rsp_mode位宽。
在一实施例中,以执行两次HASH查找为例,对多规则流分类的流程进行说明。图5是本申请实施例提供的一种扩展端口获取条目的流程图。如图5所示,本流程包括如下步骤:
S410、HASH请求输入。
S420、HASH请求基于HASH表宽度或HASH KEY大小截取有效的key,并和HASH表id号进行HASH计算。
S430、HASH请求基于HASH表宽度或HASH KEY大小截取有效的key,并和HASH表id号进行HASH计算。
S440、HASH计算得到HASH地址之后,从HASH桶中读取Nbit数据。
S450、在存在匹配条目的情况下,根据条目位宽得到结果在条目中所在的位置。
图6是本申请实施例提供的一种HASH条目可重构结构示意图。在实施例中,在HASH请求输入时,可包括:np_no、multi_hash_index、multi_hash、multi_table_id、hash_key_size和multi_tbl_width。然后,HASH请求基于multi_tbl_width或者hash_key_size截取有效的key,然后加上multi_table_id进行hash计算,将该hash计算的步骤执行两次。然后hash计算得到hash地址后,从hash桶中读取Nbit数据。示例性地,以512为例,hash匹配条目以128bit为例,判断[510:509]bit是否为128bit的取值,如果是,则用[511:384]与请求的128bit进行匹配,同时判断[382:381]是否为128bit的取值。如果是,则用[383:256]与请求的128bit进行匹配,依次类推,对[255:128]、[127:0]与请求的128bit进行匹配,可重构结构参见图6所示。
在一实施例中,以配置3层报文(即L3)的ACL规则为例,对多规则流分类的实现过程进行说明。
对于L3报文,可包括:7元组,6元组,5元组等情况。在实施例中,以7元组为例,对多规则流分类的实现过程进行说明。在KEY提取时,先将7元组的所有参数全部提取拼接成key(即原始字段),并且该KEY位宽在64~128之间。软件预先配置好一个sdt_num与这个多hash规则对应;然后配置sdt_num对应的sdt表,参数依次说明如下:multi_hash:设置为1,表示多hash查找使能;hash table width:在此无意义;multi_hash_addr:(即原Hash key size+hash table id)在此表示多hash查找的首地址。一实现方式中,根据当前使用情况进行预留,比如先预留8次多hash查找,首地址配置为0,下一个多hash的首地址则设置为8,这种情况的话可能存在浪费。如果软件实现方便,在当前用到多少次多hash规则索引表,该值就配为已使用的次数值,比如一开始没有使用,则配置为0,第二次配置时,该参数设置为1,也就是下一个空闲指针的位置。
然后,配置多HASH规则索引表,首先地址为multi_hash_addr。在多HASH规则索引表中,multi_num:该参数如表4所述,只有首地址有效,比如当前只是进行一次7元组查找,那么该参数配置为1,如果后续新增了一个三元组查找,那么该参数需要修改为2。
hash_id:hash_id和hash_table_id是一起配置的,对应为真正的业务表号,比如当前的7元组业务,如果其他端口已经设置了7元组业务与当前提取条件完全相同,则当前设置的hash_id和hash_table_id与之前的hash_id和hash_table_id匹配,从而节省业务表号;hash_table_id:同上;hash_mul_next_addr:如果剩余需要复制的次数的值大于1,那么hash_mul_next_addr就有意义,该参数与sdt表中的multi_hash_addr配置思想类似,可采用下述两种配置方式来实现。一种实现方式为:预留+递增法,采用该实现方式时,表示每次使用multi_hash_addr后直接预留N个位置(N小于等于8),hash_mul_next_addr=multi_hash_addr+当前复制次数-1,举例,比如新增了一个三元组规则,那么相当于当前复制次数为2(原来只有一次7元组规则),hash_mul_next_addr=multi_hash_addr+2-1;一种实现方式为:空闲指针法,采用该实现方式时,软件记录当前未使用的多hash规则索引表的最小编号的地址。比如一开始全部未使用,那么空闲指针就用0,如果使用了一次,第二次使用时,空闲指针就用1,依次类推。
然后,配置hash_table_id配置表。在实施例中,hash_table_width,这个和表项预想位宽对应,比如当前key长度为64~128之间,并且结果使用级联获取,此时该参数配置为01,即128bit;
hash_key_size:表示当前key长度为64~128,在key长度为128bit的位宽时,值为0,如果key长度为64bit,那么值为8;
hash_key_location:当前总***宽只用了不到128bit,并且key位宽也是128bit,则选0,其他更多取值说明见表5;
hash_key_mask:当前总***宽只用了不到128bit,并且key位宽也是128bit,则mask位为[127:0]有效,并且根据当前实际7元组的位宽进行真实地截取,比如说7元组使用了低90bit,那么mask[89:0]配置为1,[127:90]配置为0。
在一实施例中,当前ONU工作的情况下,已经在512bit RAM的位宽中配置了个128bit条目,占据了[511:384]bit,当新的条目又HASH到同一个地址时,配置了第二个128bit的条目,占据了[383:256]bit。当又有条目HASH到同一个地址时,并且需要256bit,此时可配置在[255:0]。
图7是本申请实施例提供的一种多规则流分类的实现装置的结构框图。本实施例应用于降低NP进行流分类规则的查表延时的情况。如图7所示,本实施例中的装置包括:第一生成模块510、第二生成模块520、查找模块530和输出模块540。
其中,第一生成模块510,设置为在检测到哈希HASH查找指令触发的情况下,基于原始字段结构,并根据原始输入信息中的待提取字段生成对应的原始字段;
第二生成模块520,设置为根据原始字段和预先配置的***设备表SDT中的表项内容,生成对应的中间字段;
查找模块530,设置为按照中间字段从预设HASH桶中查找与待提取字段的位宽和HASH表宽度匹配的至少一个目标字段;
输出模块540,设置为按照至少一个目标字段的优先级顺序,将优先级最高的目标字段作为输出结果进行输出。
本实施例提供的多规则流分类的实现装置设置为实现图1所示实施例的多规则流分类的实现方法,本实施例提供的多规则流分类的实现装置实现原理和技术效果类似,此处不再赘述。
在一实施例中,第一生成模块,设置为按照原始字段结构,将待查找SDT表的地址、当前微码的线程号和原始输入信息中的待提取字段进行组合,生成对应的原始字段。
在一实施例中,第二生成模块,包括:
读取单元,设置为根据原始字段中的待查找SDT表的地址读取预先配置的SDT表,得到对应的表项内容;
第一生成单元,设置为基于中间字段结构,对表项内容、原始字段中的当前微码的线程号和待提取字段进行组合,生成对应的中间字段。
在一实施例中,多规则流分类的实现装置,还包括:
确定模块,设置为在按照中间字段从预设HASH桶中查找与待提取字段的位宽和HASH表宽度匹配的至少一个目标字段之前,还包括:根据中间字段中的多HASH标志位确定对应的HASH查找策略,多HASH标志位用于表示当前多HASH查找请求的HASH规则数目。
在一实施例中,在多HASH标志位为第一数值的情况下,查找模块,包括:
查找单元,设置为基于多HASH查找策略,并按照中间字段中的HASH表id号查找对应的多HASH规则索引表;
第一确定单元,设置为根据多HASH规则索引表中的HASH表id号确定目标字段对应的字段位宽和HASH表宽度;
第二生成单元,设置为根据字段位宽和HASH表宽度生成对应的至少一个目标字段。
在一实施例中,输出模块,包括:
第二确定单元,设置为确定每个目标字段的优先级顺序;
输出单元,设置为将优先级最高的目标字段作为输出结果进行输出。
在一实施例中,多规则流分类的实现装置,还包括:
存储模块,设置为采用空闲指针队列和RAM的方式,对原始输入信息和至少一个输出结果进行存储。
在一实施例中,RAM深度与线程总数有关。
图8是本申请实施例提供的一种设备的结构示意图。如图8所示,本申请提供的设备,包括:处理器610和存储器620。该设备中处理器610的数量可以是一个或者多个,图8中以一个处理器610为例。该设备中存储器620的数量可以是一个或者多个,图8中以一个存储器620为例。该设备的处理器610和存储器620以通过总线或者其他方式连接,图8中以通过总线连接为例。在该实施例中,该设备为光网络终端。
存储器620作为一种计算机可读存储介质,可设置为存储软件程序、计算机可执行程序以及模块,如本申请任意实施例的设备对应的程序指令/模块(例如,多规则流分类的实现装置中的第一生成模块、第二生成模块、查找模块和输出模块)。存储器620可包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器620可进一步包括相对于处理器610远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述提供的设备可设置为执行上述任意实施例提供的多规则流分类的实现方法,具备相应的功能和效果。
本申请实施例还提供一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行一种多规则流分类的实现方法,该方法包括:在检测到哈希HASH查找指令触发的情况下,基于原始字段结构,并根据原始输入信息中的待提取字段生成对应的原始字段;根据原始字段和预先配置的***设备表SDT中的表项内容,生成对应的中间字段;按照中间字段从预设HASH桶中查找与待提取字段的位宽和HASH表宽度匹配的至少一个目标字段;按照至少一个目标字段的优先级顺序,将优先级最高的目标字段作为输出结果进行输出。
本领域内的技术人员应明白,术语用户设备涵盖任何适合类型的无线用户设备,例如移动电话、便携数据处理装置、便携网络浏览器或车载移动台。
一般来说,本申请的多种实施例可以在硬件或专用电路、软件、逻辑或其任何组合中实现。例如,一些方面可以被实现在硬件中,而其它方面可以被实现在可以被控制器、微处理器或其它计算装置执行的固件或软件中,尽管本申请不限于此。
本申请的实施例可以通过移动装置的数据处理器执行计算机程序指令来实现,例如在处理器实体中,或者通过硬件,或者通过软件和硬件的组合。计算机程序指令可以是汇编指令、指令集架构(Instruction Set Architecture,ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码。
本申请附图中的任何逻辑流程的框图可以表示程序步骤,或者可以表示相互连接的逻辑电路、模块和功能,或者可以表示程序步骤与逻辑电路、模块和功能的组合。计算机程序可以存储在存储器上。存储器可以具有任何适合于本地技术环境的类型并且可以使用任何适合的数据存储技术实现,例如但不限于只读存储器(Read-Only Memory,ROM)、随机访问存储器(Random Access Memory,RAM)、光存储器装置和***(数码多功能光碟(Digital Video Disc,DVD)或光盘(Compact Disk,CD))等。计算机可读介质可以包括非瞬时性存储介质。数据处理器可以是任何适合于本地技术环境的类型,例如但不限于通用计算机、专用计算机、微处理器、数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑器件(Field-Programmable Gate Array,FGPA)以及基于多核处理器架构的处理器。

Claims (10)

1.一种多规则流分类的实现方法,其特征在于,包括:
在检测到哈希HASH查找指令触发的情况下,基于原始字段结构,并根据原始输入信息中的待提取字段生成对应的原始字段;
根据所述原始字段和预先配置的***设备表SDT中的表项内容,生成对应的中间字段;
按照所述中间字段从预设HASH桶中查找与所述待提取字段的位宽和HASH表宽度匹配的至少一个目标字段;
按照所述至少一个目标字段的优先级顺序,将优先级最高的目标字段作为输出结果进行输出。
2.根据权利要求1所述的方法,其特征在于,所述基于原始字段结构,并根据原始输入信息中的待提取字段生成对应的原始字段,包括:
按照原始字段结构,将待查找SDT表的地址、当前微码的线程号和原始输入信息中的待提取字段进行组合,生成对应的原始字段。
3.根据权利要求1所述的方法,其特征在于,所述根据所述原始字段和预先配置的***设备表SDT中的表项内容,生成对应的中间字段,包括:
根据所述原始字段中的待查找SDT表的地址读取预先配置的SDT表,得到对应的表项内容;
基于中间字段结构,对所述表项内容、所述原始字段中的当前微码的线程号和待提取字段进行组合,生成对应的中间字段。
4.根据权利要求1所述的方法,其特征在于,在所述按照所述中间字段从预设HASH桶中查找与所述待提取字段的位宽和HASH表宽度匹配的至少一个目标字段之前,还包括:
根据所述中间字段中的多HASH标志位确定对应的HASH查找策略,所述多HASH标志位用于表示当前多HASH查找请求的HASH规则数目。
5.根据权利要求4所述的方法,其特征在于,在所述多HASH标志位为第一数值的情况下,所述按照所述中间字段从预设HASH桶中查找与所述待提取字段的位宽和HASH表宽度匹配的至少一个目标字段,包括:
基于多HASH查找策略,并按照所述中间字段中的HASH表id号查找对应的多HASH规则索引表;
根据所述多HASH规则索引表中的HASH表id号确定目标字段对应的字段位宽和HASH表宽度;
根据所述字段位宽和HASH表宽度生成对应的至少一个目标字段。
6.根据权利要求1所述的方法,其特征在于,所述按照所述至少一个目标字段的优先级顺序,将优先级最高的目标字段作为输出结果进行输出,包括:
确定每个目标字段的优先级顺序;
将所述优先级最高的目标字段作为输出结果进行输出。
7.根据权利要求1-6任一所述的方法,其特征在于,所述方法,还包括:
采用空闲指针队列和随机存取存储器RAM的方式,对原始输入信息和至少一个输出结果进行存储。
8.根据权利要求7所述的方法,其特征在于,所述RAM深度与线程总数有关。
9.一种设备,其特征在于,包括:存储器,以及,一个或多个处理器;
存储器,设置为存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-8任一所述的方法。
10.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-8任一项所述的方法。
CN201911183380.6A 2019-11-27 2019-11-27 一种多规则流分类的实现方法、设备和存储介质 Withdrawn CN112866139A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201911183380.6A CN112866139A (zh) 2019-11-27 2019-11-27 一种多规则流分类的实现方法、设备和存储介质
PCT/CN2020/131891 WO2021104393A1 (zh) 2019-11-27 2020-11-26 多规则流分类的实现方法、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911183380.6A CN112866139A (zh) 2019-11-27 2019-11-27 一种多规则流分类的实现方法、设备和存储介质

Publications (1)

Publication Number Publication Date
CN112866139A true CN112866139A (zh) 2021-05-28

Family

ID=75985768

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911183380.6A Withdrawn CN112866139A (zh) 2019-11-27 2019-11-27 一种多规则流分类的实现方法、设备和存储介质

Country Status (2)

Country Link
CN (1) CN112866139A (zh)
WO (1) WO2021104393A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023125116A1 (zh) * 2021-12-30 2023-07-06 苏州盛科通信股份有限公司 报文的处理方法、装置、存储介质和电子装置
CN117828487A (zh) * 2024-02-23 2024-04-05 深圳赋乐科技集团有限公司 一种流分类规则匹配结果的判定方法、***、设备及介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114205115B (zh) * 2021-11-12 2023-07-14 苏州浪潮智能科技有限公司 一种数据包处理优化方法、装置、设备及介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100454902C (zh) * 2006-08-02 2009-01-21 华为技术有限公司 一种多域流分类的实现方法
CN101800707B (zh) * 2010-04-22 2011-12-28 华为技术有限公司 建立流转发表项的方法及数据通信设备
US9769290B2 (en) * 2014-05-23 2017-09-19 Intel Corporation Packet flow classification
CN106326234A (zh) * 2015-06-18 2017-01-11 深圳市中兴微电子技术有限公司 流分类方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023125116A1 (zh) * 2021-12-30 2023-07-06 苏州盛科通信股份有限公司 报文的处理方法、装置、存储介质和电子装置
CN117828487A (zh) * 2024-02-23 2024-04-05 深圳赋乐科技集团有限公司 一种流分类规则匹配结果的判定方法、***、设备及介质

Also Published As

Publication number Publication date
WO2021104393A1 (zh) 2021-06-03

Similar Documents

Publication Publication Date Title
US11102120B2 (en) Storing keys with variable sizes in a multi-bank database
US10455063B2 (en) Packet flow classification
JP3734704B2 (ja) パケット分類エンジン
WO2021104393A1 (zh) 多规则流分类的实现方法、设备和存储介质
US8799507B2 (en) Longest prefix match searches with variable numbers of prefixes
US7281085B1 (en) Method and device for virtualization of multiple data sets on same associative memory
CN108833299B (zh) 一种基于可重构交换芯片架构的大规模网络数据处理方法
US10313240B2 (en) Technologies for efficient network flow classification with vector bloom filters
US8626955B2 (en) Directing packets to a processor unit
US8555374B2 (en) High performance packet processing using a general purpose processor
WO2020114239A1 (zh) 组播报文的处理方法及装置、存储介质、处理器
WO2021135491A1 (zh) 流表的匹配方法及装置
US7403526B1 (en) Partitioning and filtering a search space of particular use for determining a longest prefix match thereon
CN113132202B (zh) 一种报文传输方法及相关设备
CN113411380B (zh) 基于fpga可编程会话表的处理方法、逻辑电路和设备
CN114710467B (zh) Ip地址存储方法、装置和硬件网关
US20050262294A1 (en) Method for policy matching using a hybrid TCAM and memory-based scheme
WO2020248690A1 (zh) 报文匹配查表方法、***、存储介质和终端
Ding et al. A split architecture approach to terabyte-scale caching in a protocol-oblivious forwarding switch
US9590897B1 (en) Methods and systems for network devices and associated network transmissions
CN114079634B (zh) 一种报文转发方法、装置及计算机可读存储介质
CN107517161B (zh) 一种网络处理器查表方法、网络处理器和查表***
JP7133037B2 (ja) メッセージ処理方法、装置およびシステム
JP2008085886A (ja) パケット処理装置、パケット処理方法及びパケット処理プログラム
US11314711B2 (en) Network switch with network analysis data producer-consumer shared memory

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WW01 Invention patent application withdrawn after publication

Application publication date: 20210528

WW01 Invention patent application withdrawn after publication