CN112732241B - 一种多级并行高速处理下的可编程解析器及其解析方法 - Google Patents

一种多级并行高速处理下的可编程解析器及其解析方法 Download PDF

Info

Publication number
CN112732241B
CN112732241B CN202110026163.7A CN202110026163A CN112732241B CN 112732241 B CN112732241 B CN 112732241B CN 202110026163 A CN202110026163 A CN 202110026163A CN 112732241 B CN112732241 B CN 112732241B
Authority
CN
China
Prior art keywords
que
analysis
sram
delay
packet header
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.)
Active
Application number
CN202110026163.7A
Other languages
English (en)
Other versions
CN112732241A (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.)
Fiberhome Telecommunication Technologies Co Ltd
Wuhan Fisilink Microelectronics Technology Co Ltd
Original Assignee
Fiberhome Telecommunication Technologies Co Ltd
Wuhan Fisilink Microelectronics 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 Fiberhome Telecommunication Technologies Co Ltd, Wuhan Fisilink Microelectronics Technology Co Ltd filed Critical Fiberhome Telecommunication Technologies Co Ltd
Priority to CN202110026163.7A priority Critical patent/CN112732241B/zh
Publication of CN112732241A publication Critical patent/CN112732241A/zh
Application granted granted Critical
Publication of CN112732241B publication Critical patent/CN112732241B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/37Compiler construction; Parser generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • G06F8/4452Software pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence

Abstract

本发明涉及IP通信技术领域,提供了一种多级并行高速处理下的可编程解析器及其解析方法。解析器中的均衡cell解析引擎间的流量,将获取到的数据包按照负载均衡分配到各个cell解析引擎中解析;根据多个并行匹配引擎的状态跳转的时隙,进行数据包解析任务的分配;从数据包头提取出待解析协议头所包含字段的匹配信息,解析出相应待解析协议头的字段写入数据包头向量中;与所述二级排序管理模块交互,管理多个cell解析引擎所解析得到包头向量的出包选择。本发明通过一级分发均衡模块关联下的多个cell解析引擎,以及各个cell解析引擎内部中TCAM和SRAM关联的多个匹配引擎,实现了并行处理提高整体的解析速率。

Description

一种多级并行高速处理下的可编程解析器及其解析方法
【技术领域】
本发明涉及IP通信技术领域,特别是涉及一种多级并行高速处理下的可编程解析器及其解析方法。
【背景技术】
交换机转发引擎的数据包解析器就是针对网络协议报文首部进行解析,它把来自转发引擎的数据帧首部和对应的端口信息、存储地址等描述信息(描述符)作为输入数据,并对这些数据中的关键字段进行解析、识别和提取操作,用来输出给转发引擎中后续的搜索引擎。在实际的数据包解析器模块中除了对报文头部的解析和字段提取,还会携带原始输入的描述符,跟随报文沿着流水线向后级传递,但不参与提取过程。
软件定义网络(Software Defined Network,简写为:SDN)是一种新型网络创造架构,网络虚拟化的一种实现方式。对于网络协议数据报文头的解析技术而言,SDN的需求体现在支持用户自定义的协议,即通过软件编程使得芯片能够识别并解析不同的数据帧格式,这就要求数据包解析器的硬件设计具有一定的灵活性,即通过软件配置能够使得同一硬件支持用户自定义的协议的报文解析。
在高性能以太网交换机芯片中,目前数据包解析器普遍采用流水线结构,所有输入的数据包都按照相同的流水线逐级传递,中间不能停顿以确保数据在交换机芯片内部不会出现拥塞。包解析的各步操作按照协议封装层次顺序依次排列在流水线中,大多数网络数据包解析过程都可以看成是多叉树结构,在每一层针对本层树节点的对应域进行提取、匹配,从而实现本层协议的解析。鉴于此,克服该现有技术所存在的缺陷是本技术领域亟待解决的问题。
【发明内容】
本发明要解决的技术问题在普遍的可编程解析器的流水线设计结构中,解析过程严格按照流水线逐级传递,中间不能停顿也不能跳转,以保证最后的出包顺序和入包顺序一致。在可编程的应用中,由于考虑到现有协议的支持和用户自定义协议的支持,可编程解析器需要预留大量的包头解析信息包括现有应用协议的包头信息和一定数量的用户自定义处理空间,在这种情况下,流水线结构的劣势是显而易见的:
流水线延时长度=最大协议数+最大用户自定义协议数;
整个可编程解析器的延时,由预留的最大的流水线延时决定,该延时不区分芯片所在应用,并且不区分长短包。业内NPU架构在处理短包应用时,同样会遇到效率低的问题。
本发明采用如下技术方案:
第一方面,本发明提供了一种多级并行高速处理下的可编程解析器,包括一级分发均衡模块、cell解析引擎和一级排序管理模块,其中,在每一个cell解析引擎中还包含二级分发均衡模块和二级排序管理模块,具体的:
所述一级分发均衡模块,用于均衡cell解析引擎间的流量,将获取到的数据包按照负载均衡分配到各个cell解析引擎中解析;
所述二级分发均衡模块,用于根据cell解析引擎内部多个并行匹配引擎的状态跳转的时隙,进行数据包解析任务的分配;
所述cell解析引擎中的多个并行匹配引擎从数据包头提取出待解析协议头所包含字段的匹配信息传递给二级排序管理模块,在二级排序管理模块中解析出相应待解析协议头的字段写入数据包头向量中;
所述一级排序管理模块,用于与所述二级排序管理模块交互,管理多个cell解析引擎所解析得到包头向量的出包选择。
优选的,所述对应于cell解析引擎内部多个并行匹配引擎的状态跳转的时隙,进行数据包解析任务的分配,具体包括:
所述匹配引擎的状态跳转的时隙具体为解析的时隙,所述解析时延=内容寻址存储器访问时间+静态随机存取存储器访问时间+engine解析时间;
其中,所述engine解析时间包括匹配引擎和二级排序管理模块的针对包头的处理时间;
根据所述解析时延的时隙数,设置对应数量的匹配引擎并行解析,从而占满因为解析时延,带来的内容寻址存储器和静态随机存取存储器的访问空闲时隙,使所述内容寻址存储器和静态随机存取存储器满载运行。
优选的,还包括:
正在解析的匹配引擎优先访问内容寻址存储器,保证正在解析的匹配引擎解析时延的时间为固定值;新进来的内容寻址存储器访问请求等待到空闲时隙,待执行所述空闲时隙时,再为其分配内容寻址存储器访问权限。
优选的,所述从数据包头提取出待解析协议头所包含字段的匹配信息传递给二级排序管理模块,具体包括:
所述匹配信息在内容寻址存储器中做匹配,所述内容寻址存储器匹配后输出的索引值作为静态随机存取存储器SRAM中的访问地址;其中,所述内容寻址存储器中保存着所有用户应用定义的关键字段,以及协议包头定义字段;
所述二级排序管理模块从静态随机存取存储器中读出相应下一次协议头的各个域段的提取信息。
优选的,在一级分发均衡模块分配来数据包到cell解析引擎时,给每一个数据包一个编号pkt_id,所述编号pkt_id跟随数据包传输到二级排序管理模块,辅助所述二级排序管理模块在从连接的多个cell解析引擎中选择一个包头解析向量PHV,具体的:
所述包头解析向量中包含的编号pkt_id,被作为QUE_SRAM的写地址,将包头解析向量写入QUE_SRAM;同时,寄存器write_que,用于记录QUE_SRAM的当前存储状态;
其中,QUE_SRAM是一级排序管理模块中用来负责存储包头解析向量的存储区域;其中,寄存器write_que的比特位宽是编号pkt_id的总长度,每一次有对应编号pkt_id的PHV写入到QUE_SRAM时,相应的把寄存器write_que寄存器中对应与编号pkt_id值大小对应的比特位的比特值置为高。
优选的,所述寄存器write_que,用于记录QUE_SRAM的当前存储状态,具体包括:
寄存器write_que的比特位宽是编号pkt_id的字节总长度,每一次写入时,将寄存器write_que的与编号pkt_id值大小对应的比特拉的比特值置为高;
read_que是一个多比特的计数器,复位释放后从0开始记数;每次抵达第i拍计数时,读取寄存器write_que的第i比特位;如果所述第i比特位的值为高,确认第i个数据包已经解析完毕并且准备输出,从SRAM中读出包头向量PHV,read_que计数器加1,寄存器write_que的第i比特位置零;
如果所述第i比特位的值为低,确认第i个数据包没有解析完毕,二级排序管理模块会向每个cell解析引擎发送Search信号,告知当前最高优先调度目标编号是与所述write_que的第i比特位值相对应的编号pkt_id,一旦目标编号解析完成,就优先发送至二级排序管理模块,二级排序管理模块优先写入目标编号的包头向量PHV到QUE_SRAM,会在下一拍计数时监测到目标编号并从QUE_SRAM中读出这个包头向量PHV输出。
优选的,编号长度支持数编号pkt_id的长度为:
编号pkt_id的长度=(最大解析时延+调度时延)*(pps/Fclk);
其中,所述最大解析时延由解析深度和解析时延乘积得到;所述调度时延由cell解析引擎数量Ncell解析引擎决定;pps是每秒包数;Fclk是时钟频率。
优选的,编号长度支持数编号pkt_id的长度为:
编号pkt_id的长度=(最大解析时延-最小解析时延+调度时延(Tsch))*(pps/Fclk);
其中,所述最大解析时延由解析深度和解析时延乘积得到,最小解析时延由最小解析深度和解析时延乘积得到;所述调度时延由cell解析引擎数量Ncell解析引擎决定;pps是每秒包数;Fclk是时钟频率。
第二方面,本发明还提供了一种多级并行高速处理下的可编程解析器的解析方法,每一个接收到的待解析的数据包会被赋值一个编号pkt_id,解析方法包括:
当有数据包被解析生成包头向量PHV时,所述包头向量所继承自数据包的编号pkt_id,将作为QUE_SRAM的写地址,并将所述PHV写入QUE_SRAM;其中,所述QUE_SRAM是SRAM中专门用来存储PHV的;
用寄存器write_que记录QUE_SRAM的当前存储状态;其中,寄存器write_que的比特位宽是编号pkt_id的总长度,每一次有对应编号pkt_id的PHV写入到QUE_SRAM时,相应的把寄存器write_que寄存器中对应与编号pkt_id值大小对应的比特位的比特值置为高;
在每次抵达第i拍计数时,多比特的计数器read_que,会触发读取寄存器write_que的第i比特位,如果所述第i比特位的值为高,则从QUE_SRAM中读出PHV,read_que计数器加1,寄存器write_que的第i比特位置零;其中,多比特的计数器read_que,复位释放后重新从0开始记数。
优选的,解析方法还包括:
如果所述第i比特位的值为低,确认第i个数据包没有解析完毕,向每个cell解析引擎发送包含目标编号的Search信号,告知当前最高优先调度目标是编号是与所述write_que的第i比特位值相对应的编号pkt_id,一旦目标解析完成,就优先调度将目标编号的PHV写入到QUE_SRAM中;
read_que会在下一拍监测到目标编号,并从QUE_SRAM中读出这个PHV输出。
优选的,编号长度支持数编号pkt_id的长度为:
编号pkt_id的长度=(最大解析时延+调度时延)*(pps/Fclk);
其中,所述最大解析时延由解析深度和解析时延乘积得到;所述调度时延由cell解析引擎数量Ncell解析引擎决定;pps是每秒包数;Fclk是时钟频率。第三方面,本发明还提供了一种多级并行高速处理下的可编程解析器及其解析方法,用于实现第一方面所述的多级并行高速处理下的可编程解析方法,所述装置包括:
至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,用于执行第一方面所述的多级并行高速处理下的可编程解析方法。
第四方面,本发明还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,用于完成第一方面所述的多级并行高速处理下的可编程解析方法。
本发明通过一级分发均衡模块关联下的多个cell解析引擎,以及各个cell解析引擎内部中TCAM和SRAM关联的多个匹配引擎,实现了并行处理提高整体的解析速率。基于上述的两级分发和两级聚合实现保序和包(包括待分析的数据包和分析出来的包头向量)的最大速率调度。
【附图说明】
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种多级并行高速处理下的可编程解析器的架构示意图;
图2是本发明实施例提供的一级分发流程图示意图;
图3是本发明实施例提供的可编程解析流程图;
图4是本发明实施例提供的一种多级并行高速处理下的可编程解析方法的流程示意图;
图5是本发明实施例提供的一种多级并行高速处理下的可编程解析装置结构示意图。
【具体实施方式】
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明的描述中,术语“内”、“外”、“纵向”、“横向”、“上”、“下”、“顶”、“底”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明而不是要求本发明必须以特定的方位构造和操作,因此不应当理解为对本发明的限制。
本发明提出的多个parser解析单元(在本发明实施例中具体表现为多个cell解析引擎)并行处理能减小线上延时,提高线上解析速率。并且引入的最大延时可根据所在应用通过软件配置,大大增加了可编程灵活性。
另外,大多数并行处理结构都需要解决排序的问题,由于来包的解析复杂度不一样,每个包消耗的处理时间也不一样,包信息在出口处是乱序的。保序的基本思路是在入口对来包编号,在出口做存储吸收延时,但仅通过编号无法达到排序的目的,这是因为存储深度和编号长度正相关,过长的编号会消耗SRAM的资源(即便是小到1个编号之间相差8bit,一旦涉及大流量数据处理,积少成多会成为资源浪费的重灾区之一),而过小的编号深度会导致排序时存在多轮次的相同编号,同时存在的编号会使保序失效。
本发明将通过多个实施例提出一种多级并行高速处理下保序和算法实现效率(线上速率和资源)最优化的可编程解析器子系统实现机制。
在本发明各实施例中,时隙可以理解为解析引擎,或者特定的模块在获取到指令后,完成相应指令执行时间所需的时钟周期。而在本发明实施例中,还涉及“拍”的概念,相应拍的概念也可以理解为是时钟周期的等同表述。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
实施例1:
本发明实施例1提供了一种多级并行高速处理下的可编程解析器,如图1所示,包括一级分发均衡模块、cell解析引擎和一级排序管理模块,其中,在每一个cell解析引擎中还包含二级分发均衡模块和二级排序管理模块,具体的:
所述一级分发均衡模块,用于均衡cell解析引擎间的流量,将获取到的数据包按照负载均衡分配到各个cell解析引擎中解析;
如图2所示,展示了一级分发均衡模块的一种分发流程的实例,每个时钟周期,一级分发均衡模块收集来自每个cell解析引擎中的匹配引擎(即loc_Eng状态是空闲/忙碌)信号得到当前时钟下的cell解析引擎状态,然后根据这个状态确定下一个包应该分发到哪一个cell解析引擎中处理。
所述二级分发均衡模块,用于根据cell解析引擎内部多个并行匹配引擎(在图1中实示例为多个loc_Eng)的状态跳转的时隙,进行数据包解析任务的分配;
所述cell解析引擎中的多个并行匹配引擎从数据包头提取出待解析协议头所包含字段的匹配信息传递给二级排序管理模块,在二级排序管理模块中解析出相应待解析协议头的字段写入数据包头向量中;
如图3所示,为cell解析引擎的部分处理流程的实例,当来一个新的包,首先通过寄存器配置的首次匹配偏移在包头中提取出解析包头所需的一个关键字段,用来识别当前包头的类型,例如解析ethernet包头的ethtype,解析ip包的next_header,这个字段会作为key送到TCAM中做匹配。TCAM保存着所有用户应用定义的关键字段,以及协议包头定义字段。如果TCAM匹配中,TCAM会返回一个访问SRAM的地址,TCAM和SRAM的条目是一一对应的。
所述一级排序管理模块,用于与所述二级排序管理模块交互,管理多个cell解析引擎所解析得到包头向量的出包选择。
在本发明实施例中,在出口的一级排序管理模块中用一块SRAM(即后续展开内容中所涉及的QUE_SRAM)吸收最大包解析时延,通过入口的包编号完成保序,这将在本发明后续实施例中具体展开阐述。
本发明实施例通过一级分发均衡模块关联下的多个cell解析引擎,以及各个cell解析引擎内部中TCAM和SRAM关联的多个匹配引擎,实现了并行处理提高整体的解析速率。基于上述的两级分发和两级聚合实现保序和包(包括待分析的数据包和分析出来的包头向量)的最大速率调度。
在本发明实施例中,所述从数据包头提取出待解析协议头所包含字段的匹配信息传递给二级排序管理模块,结合图1中cell解析引擎0中的结构具体阐述如下:
所述匹配信息在内容寻址存储器(图1中实例为采用TCAM0,其全称为TernaryContent Addressable Memory,在本发明后续实施例内中描述中,也用TCAM直接作为内容寻址存储器的代名词)中做匹配,所述内容寻址存储器匹配后输出的索引值作为静态随机存取存储器(图1中实例内容为SRAM,其全称为Static Random-Access Memory)中的访问地址(在具体实现过程中,除了可以采用所述SRAM外还可以采用寄存器);其中,所述内容寻址存储器中保存着所有用户应用定义的关键字段,以及协议包头定义字段;
所述二级排序管理模块从静态随机存取存储器中读出相应下一次协议头的各个域段的提取信息。
在具体实例实现过程中,图中loc_Eng从包头提取出解析下一次协议字段的匹配信息(key),所述key在TCAM中做匹配(命中指定一条),TCAM匹配后输出的索引值作为访问SRAM的访问地,其中,TCAM和SRAM的条目优选的是一一对应的,例如TCAM的第5个条目描述的是ethernet头的关键字,匹配中后会返回hit=5,SRAM中的条目5就保存着ethernet协议头的解析信息,所述解析信息包括包头的每个字段的提取描述,这些描述给出字段在包头中的位置,字段在包头中的长度,以及解析后的字段在包头向量(Packet Head Vector,简写为:PHV)中的存储位置等等。二级排序管理模块收到SRAM的信息描述后(包括上述的各字段在包头中的位置和字段在包头中的长度)从包头中提取出当前协议头的字段信息,然后根据解析后的字段在包头向量PHV中的存储位置信息,将相应提取出的字段信息写入PHV的相应位置。由于解析深度和协议支持的复杂度完全由用户编程决定,包头解析完成后即送往二级排序管理模块,最大的解析时延就是用户编程的复杂度决定,而不像现有技术中的流水线结构,其最大解析时延是所支持的最大解析深度决定。
在本发明实施例实现过程中,涉及的,所述对应于cell解析引擎内部多个并行匹配引擎的状态跳转的时隙,进行数据包解析任务的分配过程中,存在一种更为优化的解决方案,具体包括:
所述匹配引擎的状态跳转的时隙具体为解析的时隙,所述解析时延=内容寻址存储器访问时间+静态随机存取存储器访问时间+engine解析时间;
以图1所示的实例场景,对于cell解析引擎0而言,其解析时延0=TCAM0访问时间+SRAM0访问时间+engine解析时间,其中,所述engine解析时间包括单个loc_Eng和二级排序管理模块的针对包头的处理时间之和。
根据所述解析时延,设置对应数量的匹配引擎并行解析,从而占满因为解析时延,带来的内容寻址存储器和静态随机存取存储器的访问空闲时隙,使所述内容寻址存储器和静态随机存取存储器满载运行。这里主要是考虑到,解析过程涉及多个模块节点,而各个模块节点处理所需的时隙不尽相同,此时,如何能够将整个系统的资源进行有效的利用,就需要上述改进方案。
此处需要做说明的事,此处的解析时延并不受包头的大小和包头总量影响,因为,所述解析时延是相对与程序中固定执行一个解析任务而言的,例如:当前包头的大小为60byte,而对于程序设定的每次执行解析任务的数据大小为20byte,则相应的60byte大小的包头会被拆分成三次解析过程,而上述的解析时延就是针对每一次解析过程而言的,因此,相应的解析时延一旦确认,则可适用于任何包头的解析过程中的解析时延的认定。
假设解析时延=5clk cycle,也就表明TCAM的时序会产生5个时隙,为了充分利用TCAM和SRAM资源,需要用5个匹配引擎(即图1中所示的loc_Eng)并行解析,从而占满这5个时隙,使TCAM和SRAM满载运行。例如:逻辑向TCAM发查找请求,TCAM两拍(此处的“拍”即上述的“时隙”概念)之后给出匹配地址,然后把地址送到SRAM,SRAM两拍之后向解析引擎给出解析信息,SRAM应答后,逻辑一拍后再发出请求。这样的5拍完成一次解析,上述的时隙也就是单个解析单元5拍对TCAM/SRAM访问一次,所以需要5个单元占满TCAM/SRAM的5个时隙,保持TCAM/SRAM工作不停。
在本发明实施例实现过程中,正在解析的匹配引擎优先访问内容寻址存储器,保证正在解析的匹配引擎解析时延的时间为固定值;新进来的内容寻址存储器访问请求等待到空闲时隙,待执行所述空闲时隙时,再为其分配内容寻址存储器访问权限。其中,空闲时隙相当于在内容寻址存储器中形成了队列的概念,例如上述的TCAM的时序会产生5个时隙,并且TCAM的一轮解析时延中消耗1个时隙理解的话,相应的空闲时隙可以分别被编号为2,3,4,5,而编号为1的时隙此时正在执行访问操作,在正常的执行状态下,可以按照上述编号顺序大小依次执行完上述编号为2,3,4,5的空闲时隙中的访问操作内容。
在本发明实施例中,为了能够完成管理多个cell解析引擎所解析得到包头向量的出包选择;结合本发明实施例,还给予了一种优选的实现方式,在一级分发均衡模块分配来数据包到cell解析引擎时,给每一个数据包一个编号pkt_id,所述编号pkt_id跟随数据包传输到二级排序管理模块,辅助所述二级排序管理模块在从连接的多个cell解析引擎中选择一个包头解析向量PHV,具体执行为:
所述包头解析向量中包含的编号pkt_id,被作为QUE_SRAM的写地址,将包头解析向量写入QUE_SRAM;同时,SRAM_status_reg会保存所述编号pkt_id,用于记录QUE_SRAM的当前存储状态,用寄存器write_que寄存器维护。
在本发明实施例中,所述寄存器write_que,用于记录QUE_SRAM的当前存储状态,具体包括:
寄存器write_que的比特位宽是编号pkt_id的字节总长度(例如pkt_id从0-63,那么write_que就是64bit位宽的寄存器),每一次写入时,将寄存器write_que的第编号pkt_id比特的比特值拉高(例如由比特值为0更替为比特值为1);
read_que是一个多比特的计数器,复位释放后从0开始记数;每次抵达第i拍计数时,读取寄存器write_que的第i比特位;如果所述第i比特位的值为高,确认第i个数据包已经解析完毕并且准备输出,从SRAM中读出包头向量PHV,read_que计数器加1,寄存器write_que的第i比特位置零;
如果所述第i比特位的值为低,确认第i个数据包没有解析完毕,二级排序管理模块会向每个cell解析引擎发送Search信号,告知当前最高优先调度目标编号是与所述write_que的第i比特位值相对应的编号pkt_id,一旦目标编号解析完成,就优先发送至二级排序管理模块,二级排序管理模块优先写入目标编号的包头向量PHV到QUE_SRAM,会在下一拍计数时监测到目标编号并从QUE_SRAM中读出这个包头向量PHV输出。
在本发明实施例中,针对所述编号pkt_id的长度的设计也给予了一种优选的实现方式,使其长度能够在满足当前解析任务的情况下,尽可能少的带来资源的浪费。编号长度支持数编号pkt_id的长度为:编号pkt_id的长度=(解析时延(Tmax_delay)+调度时延(Tsch))*(pps/Fclk);其中,QUE_SRAM的深度Dsram=编号pkt_id的长度。其中,所述最大解析时延由解析深度和解析时延乘积得到;所述调度时延由cell解析引擎数量Ncell解析引擎决定(其之间关系为本领域技术人员公知,在此不做赘述);pps是每秒包数;Fclk是时钟频率。
在本发明实施例中,解析深度是基于应用决定,例如:一个TCP/TPRAN应用所要支持的最大解析深度为21跳,如果用户自定义的解析深度为3跳,那么该系统所要支持的应用解析深度(Pdepth)为:21+3=24。
有了前面的理想消化情况下,即根据所述解析时延,设置对应数量的匹配引擎并行解析,从而占满因为解析时延,带来的内容寻址存储器和静态随机存取存储器的访问空闲时隙,使所述内容寻址存储器和静态随机存取存储器满载运行,那么cell解析引擎并行的个数为:
Ncell解析引擎=(pps/Fclk)*24;其中pps是每秒包数;Fclk是时钟频率;
对于两拍(即两个时钟频率)一个数据包的线上速率要求,Ncell解析引擎=12。
最大的解析时延为:
Tmax_delay=Pdepth*解析时延;
所述解析时延的获取方式,源自上文描述的:解析时延=内容寻址存储器访问时间+静态随机存取存储器访问时间+engine解析时间。
可编程解析器内最大同时解析的包个数为:
Npip=Tmax_delay*(pps/Fclk);
对于这里的应用,Npip=60。最大解析时延是最大解析深度24次解析×每次解析的时间5拍,在450Mpps,900M时钟时,需要60个包同时解析以达到450Mpps的速率要求。
排序时编号的长度的确定决定了资源的消耗,也决定了排序能否成功。作为优选的实现方案之一,可以进一步压缩编号pkt_id的长度,这里编号确定的原则可以是,编号的长度需要支持最深的包(24)和最简单的包(2)的延时差,而不会出现相同编号同时出现。所以这里的编号长度支持数(可以理解为编号的长度上限)为:
编号pkt_id的长度=(解析时延(Tmax_delay-Tmin_delay)+调度时延(Tsch))*(pps/Fclk);
其中,调度时延(Tsch)由所需轮询的cell解析引擎数量Ncell解析引擎决定。原本应该还包括对TCAM的调度时延,但是,此处考虑到前述的使所述内容寻址存储器和静态随机存取存储器满载运行的改进方案后,此处仅剩余调度时延(Tsch)由所需轮询的cell解析引擎数量Ncell解析引擎的调度时延。
而QUE_SRAM的深度Dsram,设定为:Dsram=编号pkt_id的长度;
至此,由一级分发均衡模块引出的Ncell解析引擎数量的解析引擎之间的均衡流量,cell解析引擎内针对解析时延设定的匹配引擎数量的优化,以及经由QUE_SRAM、寄存器write_que和read_que计数器实现的包头向量排序和输出方法实现了共同目的:尽量减少可编程解析器内的延时消耗,尽量提高单个cell解析引擎的处理能力,尽量减少序号靠前的包在系统内的停留时间。
在本发明中,二级排序管理模块通过记录入包的顺序,维护一个5成员的输出队列,该队列根据每个时钟的入包出包状态刷新,当命中target,就给出id=target的包头向量PHV,否则会输出最优先的包头向量PHV给一级排序管理模块待选调度。这样,所有cell解析引擎输出给一级排序管理模块的都是cell内最优先的候选。一级排序管理模块会检索12(此处延续上述实例得到的Ncell解析引擎参数值,在具体实现过程中相应值不限定于此)个cell解析引擎的target标识,如果某一cell解析引擎有该标识,那么目标包头向量PHV就会被立刻写入QUE_SRAM并输出出去,如果没有,一级排序管理模块会采用无权重轮询调度,让每个cell解析引擎在12个时钟周期内至少被访问一次。采用这种机制,最大的调度时延(没有命中target)被控制在Tsch=12clk。
编号pkt_id的长度=Tmax_delay-Tmin_delay+Tsch=((24-2)*5+12)*pps/Fclk=61。
其中,Tmax_delay是最大解析时延24*5,Tmin_delay是最小解析时延2*5,两者的差值是22,每次解析5拍,所以包解析时延是110拍,加上调度时延12拍,一共122拍,为了维持系统调度稳定不冲突,在2拍一个包的处理速率下,需要的ID是61个。故当前编号pkt_id的长度和QUE_SRAM深度设定在64。以上参数值为本发明实施例实例所列举的参数值,其他可能的参数值可以根据实际情况不同做适应性调整。
综合上述的分析可以看出,本发明提出的调度机制解决了用标号缓存时存在的标号轮数可能出现的前后轮冲突,如果只有轮询调度,调度时延可能因为有效包不能被及时调出而翻倍,最差的情况是当一级排序管理模块访问时刚好错过而要再过60个时钟周期,这时为了避免排序失效,SRAM和ID数也要翻倍。
实施例2:
本发明实施例还提供了一种多级并行高速处理下的可编程解析器的解析方法,作为共同的发明构思,所述解析方法可以应用于实施例1所述的可编程解析器中运行。并且,在实施例1中所进行的技术方案的扩展和细节展示内容,同样适用于本发明实施例,其中,处于说明书内容简介的考虑,相应的实施例1中扩展内容将不再本发明实施例中重复赘述。
在本发明实施例的解析方法中,每一个接收到的待解析的数据包会被赋值一个编号pkt_id,如图4所示,解析方法包括:
在步骤201中,当有数据包被解析生成包头向量PHV时,所述包头向量所继承自数据包的编号pkt_id,将作为QUE_SRAM的写地址,并将所述PHV写入QUE_SRAM;其中,所述QUE_SRAM是SRAM中专门用来存储PHV的。
在步骤202中,用寄存器write_que记录QUE_SRAM的当前存储状态;其中,寄存器write_que的比特位宽是编号pkt_id的总长度,每一次有对应编号pkt_id的PHV写入到QUE_SRAM时,相应的把寄存器write_que寄存器中对应与编号pkt_id值大小对应的比特位的比特值置为高。
在步骤203中,在每次抵达第i拍计数时,多比特的计数器read_que,会触发读取寄存器write_que的第i比特位,如果所述第i比特位的值为高,则从QUE_SRAM中读出PHV,read_que计数器加1,寄存器write_que的第i比特位置零;其中,多比特的计数器read_que,复位释放后重新从0开始记数。
本发明实施例通过。
在本发明实施例中,以i为1为例,解析方法还包括:
如果所述第1比特位的值为低,确认第1个数据包没有解析完毕,向每个cell解析引擎发送包含目标编号的Search信号,告知当前最高优先调度目标是编号是与所述write_que的第i比特位值相对应的编号pkt_id,一旦目标解析完成,就优先调度将目标编号的PHV写入到QUE_SRAM中;
会在read_que下一拍计数时,监测到目标编号,并从QUE_SRAM中读出这个PHV输出。
结合本发明实施例,还存在一种优选的实现方式,所述编号长度支持数编号pkt_id的长度为:
编号pkt_id的长度=(解析时延(Tmax_delay)+调度时延(Tsch))*(pps/Fclk);
其中,QUE_SRAM的深度Dsram=编号pkt_id的长度。
在本发明实施例中还针对cell解析引擎个数可配实现低功耗和灵活的应用,以及,QUE_SRAM深度可配实现资源的合理分配,仍然沿用实施例1中的解析深度的例子,阐述如下:
首先,预设该解析器需要支持的最大解析深度是24次,如果由前面的分析,cell解析引擎内部状态停留的时隙由多个匹配引擎并行运行吸收掉,那么需要配置的并行最大cell解析引擎个数为:
Ncell解析引擎=(pps/Fclk)*24
该公式说明,解析包速率的提高意味着cell解析引擎个数的提高。因而,这里可以提出低功耗的技术方案:
cell解析引擎的个数是可配的,即可以通过控制每个cell解析引擎的时钟,配置当前应用所需要打开的cell解析引擎个数,如果不需要高速率解析,或者应用解析复杂度低,那么可以关闭部分cell解析引擎的时钟,从而功耗为:
P=Ptotal*(Ncell_open/Nprcell);
其中,Ptotal为所有cell解析引擎工作时的总功耗;Ncell_open是开起的cell解析引擎数量;Nprcell是总的cell解析引擎数量。
对于两拍一个包的线上速率要求,N=12;最大的解析时延为:
Tmax_delay=Pdepth*Text;其中,Pdepth是解析深度;Text是每次解析的时延。
Parser内最大同时解析的包个数为:
Npip=Tmax_delay*(pps/Fclk);
对于这里的应用,Npip=60。
排序时编号的长度的确定决定了资源的消耗,也决定了排序能否成功。这里编号确定的原则是,编号的长度需要支持最深的包(24)和最简单的包(2)的延时差,而不会出现相同编号同时出现。所以这里的编号长度支持数为:
编号pkt_id的长度=(解析时延(Tmax_delay)+调度时延(Tsch))*(pps/Fclk)。
而QUE_SRAM的深度Dsram,根据实施例1中的分析:
QUE_SRAM的深度Dsram=编号pkt_id的长度;
根据这个分析,我们可以看出,存储空间的可配,可以实现不同的速率的灵活解析和资源合理配置。存储SRAM通过表项共享资源池访问,通过配置分配需要存储的空间。
实施例3:
如图5所示,是本发明实施例的多级并行高速处理下的可编程解析装置的架构示意图。本实施例的多级并行高速处理下的可编程解析装置包括一个或多个处理器21以及存储器22。其中,图5中以一个处理器21为例。
处理器21和存储器22可以通过总线或者其他方式连接,图5中以通过总线连接为例。
存储器22作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序和非易失性计算机可执行程序,如实施例1中的多级并行高速处理下的可编程解析方法。处理器21通过运行存储在存储器22中的非易失性软件程序和指令,从而执行多级并行高速处理下的可编程解析方法。
存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器22可选包括相对于处理器21远程设置的存储器,这些远程存储器可以通过网络连接至处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述程序指令/模块存储在所述存储器22中,当被所述一个或者多个处理器21执行时,执行上述实施例1中的多级并行高速处理下的可编程解析方法,例如,执行以上描述的图4所示的各个步骤。
值得说明的是,上述装置和系统内的模块、单元之间的信息交互、执行过程等内容,由于与本发明的处理方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (11)

1.一种多级并行高速处理下的可编程解析器,其特征在于,包括一级分发均衡模块、cell解析引擎和一级排序管理模块,其中,在每一个cell解析引擎中还包含二级分发均衡模块和二级排序管理模块,具体的:
所述一级分发均衡模块,用于均衡cell解析引擎间的流量,将获取到的数据包按照负载均衡分配到各个cell解析引擎中解析;
所述二级分发均衡模块,用于根据cell解析引擎内部多个并行匹配引擎的状态跳转的时隙,进行数据包解析任务的分配;
所述cell解析引擎中的多个并行匹配引擎从数据包头提取出待解析协议头所包含字段的匹配信息传递给二级排序管理模块,在二级排序管理模块中解析出相应待解析协议头的字段写入包头解析向量PHV中;
所述一级排序管理模块,用于与所述二级排序管理模块交互,管理多个cell解析引擎所解析得到包头解析向量PHV的出包选择。
2.根据权利要求1所述的多级并行高速处理下的可编程解析器,其特征在于,所述对应于cell解析引擎内部多个并行匹配引擎的状态跳转的时隙,进行数据包解析任务的分配,具体包括:
所述匹配引擎的状态跳转的时隙具体为解析的时隙,解析时延=内容寻址存储器访问时间+静态随机存取存储器访问时间+engine解析时间;
其中,所述engine解析时间包括匹配引擎和二级排序管理模块的针对包头的处理时间;
根据所述解析时延的时隙数,设置对应数量的匹配引擎并行解析,从而占满因为解析时延,带来的内容寻址存储器和静态随机存取存储器的访问空闲时隙,使所述内容寻址存储器和静态随机存取存储器满载运行。
3.根据权利要求2所述的多级并行高速处理下的可编程解析器,其特征在于,还包括:
正在解析的匹配引擎优先访问内容寻址存储器,保证正在解析的匹配引擎解析时延的时间为固定值;新进来的内容寻址存储器访问请求等待到空闲时隙,待执行所述空闲时隙时,再为其分配内容寻址存储器访问权限。
4.根据权利要求1-3任一所述的多级并行高速处理下的可编程解析器,其特征在于,所述从数据包头提取出待解析协议头所包含字段的匹配信息传递给二级排序管理模块,具体包括:
所述匹配信息在内容寻址存储器中做匹配,所述内容寻址存储器匹配后输出的索引值作为静态随机存取存储器SRAM中的访问地址;其中,所述内容寻址存储器中保存着所有用户应用定义的关键字段,以及协议包头定义字段;
所述二级排序管理模块从静态随机存取存储器中读出相应下一次协议头的各个域段的提取信息。
5.根据权利要求2所述的多级并行高速处理下的可编程解析器,其特征在于,在一级分发均衡模块分配来数据包到cell解析引擎时,给每一个数据包一个编号pkt_id,所述编号pkt_id跟随数据包传输到二级排序管理模块,辅助所述二级排序管理模块在从连接的多个cell解析引擎中选择一个包头解析向量PHV,具体的:
所述包头解析向量PHV中包含的编号pkt_id,被作为QUE_SRAM的写地址,将包头解析向量PHV写入QUE_SRAM;同时,寄存器write_que,用于记录QUE_SRAM的当前存储状态;
其中,QUE_SRAM是一级排序管理模块中用来负责存储包头解析向量PHV的存储区域;其中,寄存器write_que的比特位宽是编号pkt_id的总长度,每一次有对应编号pkt_id的包头解析向量PHV写入到QUE_SRAM时,相应的把寄存器write_que寄存器中对应与编号pkt_id值大小对应的比特位的比特值置为高。
6.根据权利要求5所述的多级并行高速处理下的可编程解析器,其特征在于,所述寄存器write_que,用于记录QUE_SRAM的当前存储状态,具体包括:
寄存器write_que的比特位宽是编号pkt_id的字节总长度,每一次写入时,将寄存器write_que的与编号pkt_id值大小对应的比特拉的比特值置为高;
read_que是一个多比特的计数器,复位释放后从0开始记数;每次抵达第i拍计数时,读取寄存器write_que的第i比特位;如果所述第i比特位的值为高,确认第i个数据包已经解析完毕并且准备输出,从SRAM中读出包头解析向量PHV,read_que计数器加1,寄存器write_que的第i比特位置零;
如果所述第i比特位的值为低,确认第i个数据包没有解析完毕,二级排序管理模块会向每个cell解析引擎发送Search信号,告知当前最高优先调度目标编号是与所述write_que的第i比特位值相对应的编号pkt_id,一旦目标编号解析完成,就优先发送至二级排序管理模块,二级排序管理模块优先写入目标编号的包头解析向量PHV到QUE_SRAM,会在下一拍计数时监测到目标编号并从QUE_SRAM中读出这个包头解析向量PHV输出。
7.根据权利要求6所述的多级并行高速处理下的可编程解析器,其特征在于,编号长度支持数编号pkt_id的长度为:
编号pkt_id的长度=(最大解析时延+调度时延)*(pps/Fclk);
其中,所述最大解析时延由解析深度和解析时延乘积得到;所述调度时延由cell解析引擎数量Ncell解析引擎决定;pps是每秒包数;Fclk是时钟频率。
8.根据权利要求6所述的多级并行高速处理下的可编程解析器,其特征在于,编号长度支持数编号pkt_id的长度为:
编号pkt_id的长度=(最大解析时延-最小解析时延+调度时延(Tsch))*(pps/Fclk);
其中,所述最大解析时延由解析深度和解析时延乘积得到,最小解析时延由最小解析深度和解析时延乘积得到;所述调度时延由cell解析引擎数量Ncell解析引擎决定;pps是每秒包数;Fclk是时钟频率。
9.一种多级并行高速处理下的可编程解析器的解析方法,其特征在于,每一个接收到的待解析的数据包会被赋值一个编号pkt_id,解析方法包括:
当有数据包被解析生成包头解析向量PHV时,所述包头解析向量PHV所继承自数据包的编号pkt_id,将作为QUE_SRAM的写地址,并将所述包头解析向量PHV写入QUE_SRAM;其中,所述QUE_SRAM是SRAM中专门用来存储包头解析向量PHV的;
用寄存器write_que记录QUE_SRAM的当前存储状态;其中,寄存器write_que的比特位宽是编号pkt_id的总长度,每一次有对应编号pkt_id的包头解析向量PHV写入到QUE_SRAM时,相应的把寄存器write_que寄存器中对应与编号pkt_id值大小对应的比特位的比特值置为高;
在每次抵达第i拍计数时,多比特的计数器read_que,会触发读取寄存器write_que的第i比特位,如果所述第i比特位的值为高,则从QUE_SRAM中读出包头解析向量PHV,read_que计数器加1,寄存器write_que的第i比特位置零;其中,多比特的计数器read_que,复位释放后重新从0开始记数。
10.根据权利要求9所述的多级并行高速处理下的可编程解析器的解析方法,其特征在于,解析方法还包括:
如果所述第i比特位的值为低,确认第i个数据包没有解析完毕,向每个cell解析引擎发送包含目标编号的Search信号,告知当前最高优先调度目标是编号是与所述write_que的第i比特位值相对应的编号pkt_id,一旦目标解析完成,就优先调度将目标编号的包头解析向量PHV写入到QUE_SRAM中;
read_que会在下一拍监测到目标编号,并从QUE_SRAM中读出这个包头解析向量PHV输出。
11.根据权利要求9所述的多级并行高速处理下的可编程解析器的解析方法,其特征在于,编号长度支持数编号pkt_id的长度为:
编号pkt_id的长度=(最大解析时延+调度时延)*(pps/Fclk);
其中,所述最大解析时延由解析深度和解析时延乘积得到;所述调度时延由cell解析引擎数量Ncell解析引擎决定;pps是每秒包数;Fclk是时钟频率。
CN202110026163.7A 2021-01-08 2021-01-08 一种多级并行高速处理下的可编程解析器及其解析方法 Active CN112732241B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110026163.7A CN112732241B (zh) 2021-01-08 2021-01-08 一种多级并行高速处理下的可编程解析器及其解析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110026163.7A CN112732241B (zh) 2021-01-08 2021-01-08 一种多级并行高速处理下的可编程解析器及其解析方法

Publications (2)

Publication Number Publication Date
CN112732241A CN112732241A (zh) 2021-04-30
CN112732241B true CN112732241B (zh) 2022-04-01

Family

ID=75591408

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110026163.7A Active CN112732241B (zh) 2021-01-08 2021-01-08 一种多级并行高速处理下的可编程解析器及其解析方法

Country Status (1)

Country Link
CN (1) CN112732241B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113746848B (zh) * 2021-09-07 2023-04-18 烽火通信科技股份有限公司 一种并行可编程组包器和方法
CN115883681B (zh) * 2023-02-08 2023-06-23 天翼云科技有限公司 报文解析方法、装置、电子设备及存储介质
CN116156026B (zh) * 2023-04-20 2023-07-04 中国人民解放军国防科技大学 一种支持rmt的解析器、逆解析器、解析方法及交换机
CN116737172B (zh) * 2023-08-11 2023-12-12 杭州初灵信息技术股份有限公司 一种小颗粒数据包的解析系统和方法

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1585379A (zh) * 2004-05-25 2005-02-23 华中科技大学 一种数据包的快速解析方法
CN1851649A (zh) * 2005-08-19 2006-10-25 华为技术有限公司 一种实现多引擎并行处理器中数据包排序的方法
EP1735970A2 (en) * 2004-03-30 2006-12-27 Extreme Networks Pipelined packet processor
US7245623B1 (en) * 2002-01-08 2007-07-17 Cisco Technology, Inc. System and method using hierarchical parallel banks of associative memories
WO2009106637A1 (en) * 2008-02-28 2009-09-03 Thomson Licensing Hardware-based parser for packect-oriented protocols
US9158713B1 (en) * 2010-04-07 2015-10-13 Applied Micro Circuits Corporation Packet processing with dynamic load balancing
US9269439B1 (en) * 2012-08-31 2016-02-23 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for TCAM based look-up
CN106961445A (zh) * 2017-04-28 2017-07-18 中国人民解放军信息工程大学 基于fpga硬件并行流水线的报文解析方法及其装置
CN108762810A (zh) * 2017-12-27 2018-11-06 北京时代民芯科技有限公司 一种基于并行微引擎的网络报文头处理器
CN108809854A (zh) * 2017-12-27 2018-11-13 北京时代民芯科技有限公司 一种用于大流量网络处理的可重构芯片架构
US10594630B1 (en) * 2017-09-28 2020-03-17 Barefoot Networks, Inc. Expansion of packet data within processing pipeline
US10601732B1 (en) * 2017-07-23 2020-03-24 Barefoot Networks, Inc. Configurable packet processing pipeline for handling non-packet data
CN111131159A (zh) * 2019-11-22 2020-05-08 中国人民解放军国防科技大学 一种报文解析器及其设计方法
CN111600796A (zh) * 2020-05-20 2020-08-28 中国电子科技集团公司第五十四研究所 一种基于可配置解析字段的流识别装置及方法
CN111897644A (zh) * 2020-08-06 2020-11-06 成都九洲电子信息系统股份有限公司 一种基于多维度的网络数据融合匹配方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7525958B2 (en) * 2004-04-08 2009-04-28 Intel Corporation Apparatus and method for two-stage packet classification using most specific filter matching and transport level sharing
US20130343181A1 (en) * 2012-06-21 2013-12-26 Jonathan Stroud Systems and methods of data processing using an fpga-implemented hash function

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7245623B1 (en) * 2002-01-08 2007-07-17 Cisco Technology, Inc. System and method using hierarchical parallel banks of associative memories
EP1735970A2 (en) * 2004-03-30 2006-12-27 Extreme Networks Pipelined packet processor
CN1585379A (zh) * 2004-05-25 2005-02-23 华中科技大学 一种数据包的快速解析方法
CN1851649A (zh) * 2005-08-19 2006-10-25 华为技术有限公司 一种实现多引擎并行处理器中数据包排序的方法
WO2009106637A1 (en) * 2008-02-28 2009-09-03 Thomson Licensing Hardware-based parser for packect-oriented protocols
US9158713B1 (en) * 2010-04-07 2015-10-13 Applied Micro Circuits Corporation Packet processing with dynamic load balancing
US9269439B1 (en) * 2012-08-31 2016-02-23 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for TCAM based look-up
CN106961445A (zh) * 2017-04-28 2017-07-18 中国人民解放军信息工程大学 基于fpga硬件并行流水线的报文解析方法及其装置
US10601732B1 (en) * 2017-07-23 2020-03-24 Barefoot Networks, Inc. Configurable packet processing pipeline for handling non-packet data
US10594630B1 (en) * 2017-09-28 2020-03-17 Barefoot Networks, Inc. Expansion of packet data within processing pipeline
CN108762810A (zh) * 2017-12-27 2018-11-06 北京时代民芯科技有限公司 一种基于并行微引擎的网络报文头处理器
CN108809854A (zh) * 2017-12-27 2018-11-13 北京时代民芯科技有限公司 一种用于大流量网络处理的可重构芯片架构
CN111131159A (zh) * 2019-11-22 2020-05-08 中国人民解放军国防科技大学 一种报文解析器及其设计方法
CN111600796A (zh) * 2020-05-20 2020-08-28 中国电子科技集团公司第五十四研究所 一种基于可配置解析字段的流识别装置及方法
CN111897644A (zh) * 2020-08-06 2020-11-06 成都九洲电子信息系统股份有限公司 一种基于多维度的网络数据融合匹配方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
Efficient Measurement on Programmable Switches Using Probabilistic Recirculation;Ran Ben Basat;《IEEE ICNP 2018》;20180813;全文 *
Low-latency Packet Parsing in Software Defined Networks;Hesam Zolfaghari;《Computer Science.2018 IEEE Nordic Circuits and System Conference(NORCAS)》;20181001;全文 *
基于FPGA的GOOSE报文解析模块设计与实现;王鑫等;《电力系统保护与控制》(第24期);全文 *
基于FPGA的软件定义协议无关解析器;苗力心等;《网络与信息安全学报》(第01期);全文 *
粗粒度数据流网络处理器体系结构及原型系统设计;李韬等;《计算机研究与发展》;20090815(第08期);全文 *

Also Published As

Publication number Publication date
CN112732241A (zh) 2021-04-30

Similar Documents

Publication Publication Date Title
CN112732241B (zh) 一种多级并行高速处理下的可编程解析器及其解析方法
CN108809854B (zh) 一种用于大流量网络处理的可重构芯片架构
EP1242883B1 (en) Allocation of data to threads in multi-threaded network processor
US7376952B2 (en) Optimizing critical section microblocks by controlling thread execution
USRE45097E1 (en) High speed memory and input/output processor subsystem for efficiently allocating and using high-speed memory and slower-speed memory
US8505013B2 (en) Reducing data read latency in a network communications processor architecture
US6667920B2 (en) Scratchpad memory
US7742405B2 (en) Network processor architecture
US7664938B1 (en) Semantic processor systems and methods
US8514874B2 (en) Thread synchronization in a multi-thread network communications processor architecture
US8225026B2 (en) Data packet access control apparatus and method thereof
US20170351555A1 (en) Network on chip with task queues
US6996639B2 (en) Configurably prefetching head-of-queue from ring buffers
US8910171B2 (en) Thread synchronization in a multi-thread network communications processor architecture
CN103221937A (zh) 用于处理集群的加载/存储电路
US6167047A (en) Packet classification state machine
CN1593041A (zh) 具有多个首部的包的解封装和封装的方法、装置和计算机程序
US8868889B2 (en) Instruction breakpoints in a multi-core, multi-thread network communications processor architecture
US8943085B2 (en) Start pointer tracking in NFAs
CN113824706B (zh) 报文解析方法及网络设备
CN108762810B (zh) 一种基于并行微引擎的网络报文头处理器
US7039054B2 (en) Method and apparatus for header splitting/splicing and automating recovery of transmit resources on a per-transmit granularity
US20060031628A1 (en) Buffer management in a network device without SRAM
CN116955247B (zh) 一种缓存描述符管理装置及其方法、介质、芯片
CN100361084C (zh) 用于利用门管理器维护实体顺序的方法和装置

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
GR01 Patent grant
GR01 Patent grant