CN114143195B - 一种数据包处理装置及方法 - Google Patents
一种数据包处理装置及方法 Download PDFInfo
- Publication number
- CN114143195B CN114143195B CN202111384740.6A CN202111384740A CN114143195B CN 114143195 B CN114143195 B CN 114143195B CN 202111384740 A CN202111384740 A CN 202111384740A CN 114143195 B CN114143195 B CN 114143195B
- Authority
- CN
- China
- Prior art keywords
- packet
- processing
- data
- header information
- instruction
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0813—Configuration setting characterised by the conditions triggering a change of settings
- H04L41/0816—Configuration setting characterised by the conditions triggering a change of settings the condition being an adaptation, e.g. in response to network events
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0813—Configuration setting characterised by the conditions triggering a change of settings
- H04L41/082—Configuration setting characterised by the conditions triggering a change of settings the condition being updates or upgrades of network functionality
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开一种数据包处理装置及方法,涉及通信技术领域,装置包括预处理模块和多个包处理节点阵列,每个包处理节点阵列均包括一个控制节点和多个包处理节点,预处理模块和所有控制节点均通过包头信息总线两两相连;预处理模块将数据包或者数据包的包头信息发送到包头信息总线上;包处理节点阵列接收配置信息和指令集,控制节点用于按照配置信息生成时分复用控制序列,为包处理节点分配时隙,以及将输入侧包头信息总线上的数据传送到输出侧包头信息总线上;包处理节点用于按照指令集执行配置操作,在所分配的时隙处理输出侧包头信息总线上的数据,并返回处理结果。当需求变化或者协议变更,能适应新的应用场景,不针对具体协议,具有通用性。
Description
技术领域
本发明涉及通信技术领域,具体是涉及一种数据包处理装置及方法。
背景技术
网络功能虚拟化产业联盟(Network Functions Virtualisation,NFV)将软件定义网络(Software Defined Networking,SDN)引入电信行业。SDN的核心技术OpenFlow通过将网络设备的控制面与数据面分离开来,用户可以自定义任何想实现的网络路由和传输规则策略,从而实现了网络流量的灵活控制,使网络作为管道变得更加智能,为核心网络及应用的创新提供了良好的平台。根据业务需求部署上线以后,如果业务需求发生变动,重新修改相应网络设备(路由器、交换机和防火墙)上的配置更加方便和灵活。但是,这些都是软件上的灵活,在硬件上仍存在着限制。随着SDN的深入应用,新的通信协议不断涌现,对硬件可编程的需求逐渐变得越来越迫切。
以包处理芯片为例,目前的交换芯片中都是支持固定的包类型。在传统的包处理芯片设计过程中,不可编程的包处理芯片都是根据当前的需求进行定制的,芯片流片后,所有的功能都固定,所处理的行为表项的大小、顺序和数量都是固定的,对行为的修改能力是有限的。随着相关通信协议的更新或者芯片功能的变更,如果应用场景变更需要增加一些功能,则需要重新设计芯片,缩短了芯片的生命周期,芯片的二次开发,以及流片的周期和成本都是要面临的现实问题。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种数据包处理装置及方法,当需求变化或者协议变更,只需要重新配置芯片的流程,就能适应新的应用场景,不针对具体协议,具有通用性。
本发明提供一种数据包处理装置,包括预处理模块和多个包处理节点阵列,每个包处理节点阵列均包括一个控制节点和多个包处理节点,预处理模块和所有控制节点均通过包头信息总线两两相连;
预处理模块用于将数据包或者数据包的包头信息发送到包头信息总线上;
包处理节点阵列用于通过引擎总线接口接收配置信息和指令集,控制节点用于按照配置信息生成时分复用控制序列,为包处理节点分配时隙,以及将输入侧包头信息总线上的数据传送到输出侧包头信息总线上;包处理节点用于按照指令集执行配置操作,在所分配的时隙处理输出侧包头信息总线上的数据,并返回处理结果;
其中,输入侧包头信息总线上的数据为数据包、数据包的包头信息、或者在前的控制节点的处理结果。
在上述技术方案的基础上,所述控制节点用于接收所述包处理节点发送的状态指示信号,当判定所述包处理节点处于空闲状态时,在为所述包处理节点分配的时隙中,通过时分控制总线发送时分控制信号;
所述包处理节点用于通过入口复用器从所述输出侧包头信息总线上接收数据,以及通过出口复用器将所述处理结果返回到所述输出侧包头信息总线上,其中,入口复用器和出口复用器均用于通过时分控制总线接收时分控制信号。
在上述技术方案的基础上,所述包处理节点包括处理接口、包头处理模块和指令存储器;
指令存储器用于按照所述指令集执行配置操作,指令存储器中的每个条目提供下一个指令指针的偏移地址和本地变量的信息;
处理接口用于按照所述指令集执行配置操作,保存配置操作结果和从所述输出侧包头信息总线上接收的数据,并生成所述状态指示信号;
包头处理模块用于获取所述指令集和处理接口中的数据并进行处理,将所述处理结果返回到处理接口。
在上述技术方案的基础上,所述处理接口包括外部接口和内部接口,内部接口包括用于存储所述本地变量的本地寄存器,外部接口包括:
包头缓存存储器,其用于保存从所述输出侧包头信息总线上接收的数据;
通用存储器,其用于保存中间计算结果和接口变量;
特殊寄存器,其用于存储数据包的边界值定义、源/目的信息和处理参数,根据所述指令存储器中的指令得到包头信息的偏移位置。
在上述技术方案的基础上,所述包头处理模块包括:
条件处理单元,其用于从所述指令存储器获取条件输入指示信号,并输出使能信号、条件输入指示信号及其编码;
算术逻辑单元,其用于接收条件输入指示信号,对从所述处理接口读取的数据进行计算,得到计算结果和条件输出指示信号;
分支运算单元,其用于响应使能信号,根据当前的指令指针、所述下一个指令指针的偏移地址以及上一级算术逻辑单元的条件输出指示信号,生成所述下一个指令指针或者分支停止指示;
比较器,其用于接收条件输入指示信号的编码,根据当前的指令指针,对从算术逻辑单元获取的待比较变量和所述指令存储器中的指定条目进行比较,生成更新后的所述接口变量。
本发明还提供一种基于上述数据包处理装置的数据包处理方法,其包括:
包处理节点阵列通过引擎总线接口接收配置信息和指令集,控制节点按照配置信息生成时分复用控制序列,包处理节点按照指令集执行配置操作;
预处理模块将数据包或者数据包的包头信息发送到包头信息总线上;
在包处理节点阵列中,控制节点为包处理节点分配时隙,将输入侧包头信息总线上的数据传送到输出侧包头信息总线上;包处理节点在所分配的时隙处理输出侧包头信息总线上的数据,返回处理结果;
其中,输入侧包头信息总线上的数据为数据包、数据包的包头信息或者在前的控制节点的处理结果。
在上述技术方案的基础上,所述控制节点接收所述包处理节点发送的状态指示信号,当判定所述包处理节点处于空闲状态时,在为所述包处理节点分配的时隙中,通过时分控制总线发送时分控制信号;
所述包处理节点通过入口复用器从所述输出侧包头信息总线上接收数据,以及通过出口复用器将所述处理结果返回到所述输出侧包头信息总线上,其中,入口复用器和出口复用器均通过时分控制总线接收时分控制信号。
在上述技术方案的基础上,所述包处理节点包括处理接口、包头处理模块和指令存储器;
指令存储器按照所述指令集执行配置操作,指令存储器中的每个条目提供下一个指令指针的偏移地址和本地变量的信息;
处理接口按照所述指令集执行配置操作,保存配置操作结果和从所述输出侧包头信息总线上接收的数据,并生成所述状态指示信号;
包头处理模块用于获取所述指令集和处理接口中的数据并进行处理,将所述处理结果返回到处理接口。
在上述技术方案的基础上,所述处理接口包括外部接口和内部接口,内部接口包括用于存储所述本地变量的本地寄存器,外部接口包括包头缓存存储器、通用存储器和特殊寄存器;
包头缓存存储器保存从所述输出侧包头信息总线上接收的数据;
通用存储器保存中间计算结果和接口变量;
特殊寄存器存储数据包的边界值定义、源/目的信息和处理参数,根据所述指令存储器中的指令得到包头信息的偏移位置。
在上述技术方案的基础上,所述包头处理模块包括条件处理单元、算术逻辑单元、分支运算单元和比较器;
条件处理单元从所述指令存储器获取条件输入指示信号,并输出使能信号、条件输入指示信号及其编码;
算术逻辑单元接收条件输入指示信号,对从所述处理接口读取的数据进行计算,得到计算结果和条件输出指示信号;
分支运算单元响应使能信号,根据当前的指令指针、所述下一个指令指针的偏移地址以及上一级算术逻辑单元的条件输出指示信号,生成所述下一个指令指针或者分支停止指示;
比较器接收条件输入指示信号的编码,根据当前的指令指针,对从算术逻辑单元获取的待比较变量和所述指令存储器中的指定条目进行比较,生成更新后的所述接口变量。
与现有技术相比,本发明实施例数据包处理装置包括预处理模块和多个包处理节点阵列,每个包处理节点阵列均包括一个控制节点和多个包处理节点(Packet HeaderProcessing Unit,PHPU),预处理模块和所有控制节点均通过包头信息总线两两相连。预处理模块用于将数据包或者数据包的包头信息发送到包头信息总线上。包处理节点阵列用于通过引擎总线接口接收配置信息和指令集,控制节点用于按照配置信息生成时分复用控制序列,为包处理节点分配时隙,以及将输入侧包头信息总线上的数据传送到输出侧包头信息总线上;包处理节点用于按照指令集执行配置操作,在所分配的时隙处理输出侧包头信息总线上的数据,并返回处理结果。其中,输入侧包头信息总线上的数据为数据包、数据包的包头信息或者在前的控制节点的处理结果。本发明实施例当需求变化或者协议变更,只需要重新配置芯片的流程,就能适应新的应用场景,不针对具体协议,具有通用性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例数据包处理装置示意图;
图2是本发明实施例包处理节点阵列的示意图;
图3是本发明实施例包处理节点的示意图;
图4是本发明实施例包头处理模块的示意图;
图5是本发明实施例数据包处理方法流程图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步的详细描述。
本发明实施例提供一种数据包处理装置,数据包处理装置包括预处理模块和多个包处理节点阵列,每个包处理节点阵列均包括一个控制节点和多个包处理节点,预处理模块和所有控制节点均通过包头信息总线两两相连。
预处理模块用于将数据包或者数据包的包头信息发送到包头信息总线上。
包处理节点阵列用于通过引擎总线接口接收配置信息和指令集,控制节点用于按照配置信息生成时分复用控制序列,为包处理节点分配时隙,以及将输入侧包头信息总线上的数据传送到输出侧包头信息总线上;包处理节点用于按照指令集执行配置操作,在所分配的时隙处理输出侧包头信息总线上的数据,并返回处理结果。
其中,输入侧包头信息总线上的数据为数据包、数据包的包头信息或者在前的控制节点的处理结果。
本发明实施例本案数据包处理装置设于包处理芯片中,提供可编程包处理芯片的设计方案,当需求变化或者协议变更,只需要重新配置芯片的流程,就能适应新的应用场景,不针对具体协议,具有通用性,解决了包处理芯片固有功能的瓶颈,延长了包处理芯片的生命周期,降低了包处理芯片的开发成本,增强了包处理芯片的核心竞争力。
具体的,预处理模块发送到包头信息总线上的可以是长数据包的包头部分,其中,包头部分包括该数据包的包头信息;预处理模块发送到包头信息总线上的也可以是整个短数据包。
为了达到一定的流量带宽,所以包处理节点和包处理节点阵列都包含了若干个,可以根据包处理芯片所支持的功能来决定包处理节点的个数。例如,包处理节点阵列的个数为32,每个包处理节点阵列中包处理节点的个数为32,每个包处理节点的面积大约为0.06mm2,每个控制节点的大小为1.3mm2,大约为9百万门。
参见图1所示,在一种可选的实施方式中,预处理模块将数据包或者数据包的包头信息发送到包头信息总线上。n个包处理节点阵列的控制节点均通过包头信息总线依次两两相连。
在第0个包处理节点阵列中,控制节点的输入侧包头信息总线直接接收预处理模块发送的数据包或者数据包的包头信息,并传送到输出侧包头信息总线上,然后由包处理节点进行处理,或者,直接传送到第1个包处理节点阵列的控制节点。
在其他实施方式中,第0个包处理节点阵列的处理结果还可以通过控制节点的输出侧包头信息总线,传送到第1个包处理节点阵列的控制节点继续进行处理。其他包处理节点阵列依次类推,不再赘述。
在时分复用模式下,在包头信息总线上,在任一个时刻只有一个包头信息到来,本发明实施例具有包串行且处理并行的特点,包处理没有额外的时延开销。
在一种可选的实施方式中,控制节点用于接收包处理节点发送的状态指示信号,当判定包处理节点处于空闲状态时,在为包处理节点分配的时隙中,通过时分控制总线发送时分控制信号。
包处理节点用于通过入口复用器从输出侧包头信息总线上接收数据,以及通过出口复用器将处理结果返回到输出侧包头信息总线上,其中,入口复用器和出口复用器均用于通过时分控制总线接收时分控制信号。
在一种可选的实施方式中,包处理节点包括处理接口、包头处理模块和指令存储器,处理接口主要包括各种寄存器。
指令存储器用于按照指令集执行配置操作,指令存储器中的每个条目提供下一个指令指针的偏移地址和本地变量的信息。
处理接口用于按照指令集执行配置操作,保存配置操作结果和从输出侧包头信息总线上接收的数据,并生成状态指示信号。
包头处理模块用于获取指令集和处理接口中的数据并进行处理,将处理结果返回到处理接口。
指令存储器只隶属于它所在的包处理节点。指令存储器定义了包头处理模块运算需要的参数。
参见图2和图3所示,每个包处理节点阵列均包括一个控制节点和多个包处理节点,每个包处理节点分别通过复用器与包头信息总线相连,这条贯穿始终的包头信息总线连接了前后两个包处理节点阵列的控制节点。另外,控制节点通过其内部的引擎总线接口接收配置信息,每个包处理节点通过其内部的引擎总线接口接收指令集。
包处理节点可以得到整个包头信息,在处理接口的寄存器信息中配置了每个处理指令所选取的包头信息的起始位置和偏移。每个包头信息会经过所有的包处理节点阵列。在每个包处理节点阵列中,包头信息可以进行更新或者不更新转发。
以控制节点的输入侧包头信息总线上接收到包头信息为例,控制节点通过时分复用模式(Time Division Multiplexing,TDM)产生时分复用控制序列,该时分复用控制序列用来管理所在的包处理节点阵列中的每个包处理节点,当包处理节点发送的状态指示信号为空闲状态时,在为该包处理节点分配的时隙中,将输入侧包头信息总线上的包头信息传送到输出侧包头信息总线上。
每个时刻,有一个空闲的包处理节点被挑选出来,经过入口复用器将输出侧包头信息总线上一个新的包头信息装载到这个包处理节点中,这个包头信息可能来自上一个相邻的控制节点,也有可能来自这个包处理节点前面的其他包处理节点。同时,经过出口复用器将该包处理节点的处理结果发送到输出侧包头信息总线上,传送到后面的包处理节点或者下一个相邻的控制节点。
在时隙之外的其他时间内,包处理节点更新包处理节点内寄存器的内容和包头信息。
各个包处理节点阵列采用了时分复用编码方式,单个数据包可以在一个包处理节点中进行循环处理。
在一种可选的实施方式中,处理接口包括外部接口和内部接口,内部接口包括用于存储本地变量的本地寄存器,内部接口只能通过包处理节点内部访问或者配置接口访问。
参见图3所示,外部接口包括包头缓存存储器、通用存储器和特殊寄存器。
包头缓存存储器用于保存从输出侧包头信息总线上接收的数据。
具体的,包头缓存存储器以8比特(bit)为单位进行地址偏移,例如包头信息为256字节,则包头缓存存储器为256*8bit;具有操作数转移的属性,其中存储的内容是长数据包的包头部分,或者,整个短数据包。
通用存储器用于保存中间计算结果和接口变量。
具体的,通用存储器具有操作数转移属性,其中存储的内容主要是程序的变量。
特殊寄存器用于存储数据包的边界值定义、源/目的信息和处理参数,根据指令存储器中的指令得到包头信息的偏移位置。例如数据包头的起始处理位置和长度等。
进一步的,包头处理模块包括条件处理单元、算术逻辑单元(Arithmetic LogicUnit,ALU)、分支运算单元和比较器。
条件处理单元用于从指令存储器获取条件输入指示信号,并输出使能信号、条件输入指示信号及其编码。
算术逻辑单元用于接收条件输入指示信号,对从处理接口读取的数据进行计算,得到计算结果和条件输出指示信号。
分支运算单元用于响应使能信号,根据当前的指令指针、下一个指令指针的偏移地址以及上一级算术逻辑单元的条件输出指示信号,生成下一个指令指针或者分支停止指示。
比较器用于接收条件输入指示信号的编码,根据当前的指令指针,对从算术逻辑单元获取的待比较变量和指令存储器中的指定条目进行比较,生成更新后的接口变量。
具体的,指令存储器按照指令集执行配置操作时,还可以对ALU的操作进行配置。
参见图4所示,具体的,ALU可以进行32bit的ALU操作,利用32bit源比特域和32bit的目的比特域屏蔽。图4中符号的说明如下:
源操作数1(source 1,Src1),
源操作数2(source 2,Src2),
源操作数输出1(source out 1,So1),
源操作数输出2(source out 2,So2),
目的数输出(destination out,Do),
目的操作数(destination,Dest)。
ALU的条件输出/输入包括一些条件输出/输入指示信号,例如:
Carry进位指示;
Negative符号位,正负数指示;
Zero,是否为0指示,
Overflow,溢出指示等。
条件处理单元是对这些条件输出/输入指示信号进行编码或者直接输出,例如:送给ALU的为直接输出,送给分支运算的为编码等。
ALU的运算式:Do=Op(So1,So2),Op为运算符,Op的具体操作可以通过配置完成,例如+、-和&等操作。运算的宽度是32bit,So1和So2以及Do都是32bit宽。Src1和Src2通过读处理接口的寄存器中得到。Src通过bit符号扩展变换成So。So1和So2进行ALU运算之后得到Do,同时会更新部分ALU条件输出的值。Do通过Bit掩码变换成Dest。Dest的值通过写端口写入到处理接口的寄存器中。下面给出本发明实施例中的Src1和Src2的来源和相关操作步骤。
Src1和Src2从处理接口的寄存器中读取。
1)本地寄存器:可提供2*32bit数据,分别对应Src1和Src2;
2)特殊寄存器:可提供1*32bit数据,对应Src1/Src2;
3)通用寄存器:可提供2*16bit数据,对应16bit宽(高16bit置0)的Src1和Src2,或者1*32bit数据,对应Src1或者Src2,即只有一个Src有意义,值得注意的是,上一指令产生的Dest信号会作用于当前指令的Src1或者Src2,即当前Src使用上一个指令的Dest;
4)包头缓存寄存器:同通用寄存器;
5)常量:1*16bit,来自指令集的条目定义。
执行步骤包括:
1)Src1/Src2(后文不区分情况下统一称为Src,同理So1/So2统一称为So)通过bit符号扩展(bit掩码或者添加符号位)变换成So。bit掩码是从Src中选取一个起始bit位n[4:0],然后提取长度为m[4:0]的内容出来,即下面将选出来的内容记为字段Field,Field=Src[m-1+n:n]。
对于16bit的数据而言,Src[31:16]被置为0,然后,将Field赋值给So的低位,即So[m-1:0]=Field。
最后,根据符号位扩展指示,将So[31:m]的内容填满,即:
So[31:m]={So[m-1],So[m-1],So[m-1]…So[m-1]}(32-m个)。
2)So1和So2进行ALU运算之后得到Do,同时会更新部分ALU条件输入的值。Do通过Bit掩码变换成Dest。
Bit掩码是从Do中取出低m位,赋值到Dest以n起始的m位上,然后将Dest的其他bit位置0,同时产生掩码(Mask)信号,与Dest信号的有效范围对齐。即,同理,
用Field标记中间变量Field=Do[m-1:0],
Dest[31:m+n]=0,Dest[m-1+n:n]=field,Dest[n-1:0]=0,
Mask[31:m+n]=32-m-n个1’b1,Mask[m-1+n:n]=0,
Mask[n-1:0]=n个1’b1;
3)Dest的值写入到寄存器中。
写入操作,首先将之前读出的数据与Mask进行与操作,即将从n开始的m个比特的内容置为全0,然后再与Dest进行或操作,即将Dest的内容更新到寄存器中。
分支运算主要是根据指令存储器的配置计算新的指令指针,以及产生停止下一跳的执行操作。
1)指令指针偏移地址:来自指令集中,是指令集中的数据;
2)条件输入:来自上一级ALU的运算;
3)条件处理单元:配置来自指令集;产生使能信号,使能分支运算;
4)指令指针:来自上一级指令产生的新的指令指针;
5)分支停止指示,由分支运算输出,分支停止运算的指示。
比较器是将ALU So1与指令存储器中一系列指令集中的数据(这个数据与指令指针偏移地址对应的数据是同一个)、或者与接口变量中得到的值进行比较判断。比较器的目的是:提供一个有效的转换指令,以及一个小型表项的有效实现。其中有效转换指令是指:将ALU So1和指令集或者接口变量中得到的值进行比较,根据得到的结果进行替换。一个小型的表项的有效实现是指:对通用寄存器中一定的地址空间内所有条目进行逐条比较,将得到的结果进行输出。
1)比较变量:来自So1。
2)指令集中的数据:来自指令集;
3)接口变量:来自处理接口的通用寄存器的用来比较的基地址和偏移。可以来自图3中的内部接口或者外部接口。接口信息中包含索引信息、匹配信息、比较使能、比较结果等信息。
参见图5所示,本发明实施例还提供一种基于前述实施例数据包处理装置的数据包处理方法,数据包处理方法包括:
S110包处理节点阵列通过引擎总线接口接收配置信息和指令集,控制节点按照配置信息生成时分复用控制序列,包处理节点按照指令集执行配置操作。
S120预处理模块将数据包或者数据包的包头信息发送到包头信息总线上。
S130在包处理节点阵列中,控制节点为包处理节点分配时隙,将输入侧包头信息总线上的数据传送到输出侧包头信息总线上。
S140包处理节点在所分配的时隙处理输出侧包头信息总线上的数据,返回处理结果。
其中,输入侧包头信息总线上的数据为数据包、数据包的包头信息或者在前的控制节点的处理结果。
在一种可选的实施方式中,控制节点接收包处理节点发送的状态指示信号,当判定包处理节点处于空闲状态时,在为包处理节点分配的时隙中,通过时分控制总线发送时分控制信号。
包处理节点通过入口复用器从输出侧包头信息总线上接收数据,以及通过出口复用器将处理结果返回到输出侧包头信息总线上,其中,入口复用器和出口复用器均通过时分控制总线接收时分控制信号。
在一种可选的实施方式中,包处理节点包括处理接口、包头处理模块和指令存储器。
指令存储器按照指令集执行配置操作,指令存储器中的每个条目提供下一个指令指针的偏移地址和本地变量的信息。
处理接口按照指令集执行配置操作,保存配置操作结果和从输出侧包头信息总线上接收的数据,并生成状态指示信号。
包头处理模块用于获取指令集和处理接口中的数据并进行处理,将处理结果返回到处理接口。
具体的,包头处理模块分三个步骤进行处理:
1)完成对于指令存储器的读取,指令指针的来源有两个:a)来自处理接口中的特殊寄存器;b)来自上一指令输出的指令指针;
2)完成寄存器的读取、分支运算和比较单元的处理以及ALU运算的准备;
3)完成ALU运算以及寄存器的写入。
在一种可选的实施方式中,处理接口包括外部接口和内部接口,内部接口包括用于存储本地变量的本地寄存器,外部接口包括包头缓存存储器、通用存储器和特殊寄存器。
包头缓存存储器保存从输出侧包头信息总线上接收的数据。
通用存储器保存中间计算结果和接口变量。
特殊寄存器存储数据包的边界值定义、源/目的信息和处理参数,根据指令存储器中的指令得到包头信息的偏移位置。
在一种可选的实施方式中,包头处理模块包括条件处理单元、算术逻辑单元、分支运算单元和比较器。
条件处理单元从指令存储器获取条件输入指示信号,并输出使能信号、条件输入指示信号及其编码。
算术逻辑单元接收条件输入指示信号,对从处理接口读取的数据进行计算,得到计算结果和条件输出指示信号。
分支运算单元响应使能信号,根据当前的指令指针、下一个指令指针的偏移地址以及上一级算术逻辑单元的条件输出指示信号,生成下一个指令指针或者分支停止指示。
比较器接收条件输入指示信号的编码,根据当前的指令指针,对从算术逻辑单元获取的待比较变量和指令存储器中的指定条目进行比较,生成更新后的接口变量。
以下以包处理芯片固有的访问控制列表(Access Control List,ACL)为例进行说明,ACL可以基于端口、二层协议、三层协议和四层协议的内容来进行流分类,其中针对不同的输入数据包,可以有不同的域段组合(Key)。
ACL查找是采用三态内容寻址存储器(Ternary Content Address Memory,TCAM)形式进行的,TCAM中的每个条目对应的每个比特都可以设置掩码位。TCAM查找引擎不是本方案的重点,这里不会过多描述。默认组成key后经过图3中的引擎总线后返回相应的行为。根据数据包的不同类型和配置选择ACL流引擎的查找Key。查找操作完成后会分别获取一个行为表项的条目查找索引,其中行为表项中存储该流的处理行为。根据处理行为进行相关的流识别操作。
在本示例中,ACL只为包处理芯片可能实现的一个功能,包处理芯片可能不止这一个功能,这只是用一个功能为例,如果只实现一个ACL功能,本发明实施例的一个包处理阵列就可以实现:
步骤1:对于实现的ACL功能,根据ACL的性质得到配置信息和指令集,并进行电路配置:
控制节点和包处理节点都会通过其内部的引擎总线接口进行配置(参见图3)。
首先,配置包处理节点的时分复用编码方式,分配时隙。例如:在一个包处理节点阵列中,控制节点配置时隙,一共有32个包处理节点,理论上就需要分为32个时隙。
其次,配置包处理节点中的指令存储器,指令存储器中需要对ALU的操作进行配置(例如,对丢弃(discard)域,需要用行为表项的discard来替换接口变量中的discard域),同时指令存储器中的每个条目提供下一个指令指针的偏移和本地变量等信息。
第三,初始化包处理节点中处理接口的寄存器配置。引擎总线所连接的表项配置:需要TCAM形式的表项来存储匹配内容(和Key相关)和行为表项的配置,行为表项的配置包含丢弃(discard)、转发类型(forward type)和期望(exception)等。
步骤2:包头信息进入到包处理节点阵列;
步骤3:根据步骤1中控制节点的时分复用配置,在某个时隙,选择一个包处理节点,通过时分控制信号使能图3中的多路入口复用器,同时本包处理节点的忙指示信号为空闲(即本包处理节点没有收到过包头信息或者收到的包头信息已经处理完毕),这时从输出侧包头信息总线接收新的包头信息,同时将本包处理节点中处理后的包头信息(如果有)传送到输出侧包头信息总线上;
步骤4:包处理节点收到包头信息,存储到处理接口中的包头缓存寄存器中,同时,包头的长度信息等存储到特殊寄存器中,包头信息的边带信息和程序计算的变量存储到通用寄存器中。本地寄存器存储本地的临时变量。
这样实现ACL实现组key功能的时候,可以根据各个寄存器的初始化信息,首先读取指令存储器的指令,根据指令完成寄存器的读取,特殊寄存器会通过指令得到包头信息的偏移位置,在包头缓存器中得到key的组成的一部分(根据ALU的宽度决定,例如32bit,如果需要的组成部分小于这个宽度,可以通过图4中的bit符号扩展进行处理,得到这个宽度的数据),同时分支运算会根据初始化和指令存储器中的指令偏移信息得到下一个指令指针,同时ALU算出组key的数据,同时给出条件输出。这完成了初始化的运算,之后,下一个指令指针,条件输出等会作为下次运行的初始信息,进行循环,直到分支运算中分支停止指示出现。
组key会在若干个循环后得到存储在通用寄存器中的key信息(每次ALU计算结果可以存储到通用寄存器中)。
步骤5:完成key的组合后,将key送往引擎总线上,引擎总线会将这些信息送到相关的表项中(例如TCAM),返回查找结果;根据返回的结果得到ACL行为表项的索引,再次查找行为表项,得到行为数据。
步骤6:行为数据也会存储到通用寄存器中,包头信息再次根据指令信息,对包头信息进行更改。
例如ACL中需要改变虚拟局域网(Virtual Local Area Network,VLAN)信息,首先指令信息根据特殊寄存器中包头信息的内容,提取包头信息中的VLAN信息(12bit),以图4为例,Src1为包含VLAN信息的输入,通过bit符号扩展得到So1,Src2来自步骤5中得到的行为数据,这样在ALU中进行替换运算,得到新的数值Do,Do可以通过bit掩码,得到Dest作为VLAN信息写到包头缓存存储器中。
分支运算会根据指令信息给出下一个指令指针,这样就会得到下一个处理行为的地址,进行循环运算。
比较器主要进行指令的转换,例如,上一条指令开启了比较器的功能,会将So1作为操作数和一个表项中的数据进行匹配运算,得到索引,根据索引跳转指令指针。例如在ACL中三层协议可能是互联网协议第4版(Internet Protocol Version 4,IPV4)或者互联网协议第6版(Internet Protocol Version 6,IPV6)等,这时可以将三层协议指示字段作为So1,和一个常量表项的每个数据进行比较,得到匹配条目的索引,这样作为指令指针的偏移,得到新的指针对后续的包头内容进行处理,如此循环,直到处理完毕。
步骤7:将图3中的忙指示信号置为0,发给包处理节点的控制器,包处理节点的控制器在所分配的时隙中将包头信息等数据发送到包头信息总线。
完成本次处理。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (10)
1.一种数据包处理装置,其特征在于,包括预处理模块和多个包处理节点阵列,每个包处理节点阵列均包括一个控制节点和多个包处理节点,预处理模块和所有控制节点均通过包头信息总线两两相连;
预处理模块用于将数据包或者数据包的包头信息发送到包头信息总线上;
包处理节点阵列用于通过引擎总线接口接收配置信息和指令集,控制节点用于按照配置信息生成时分复用控制序列,为包处理节点分配时隙,以及将输入侧包头信息总线上的数据传送到输出侧包头信息总线上;包处理节点用于按照指令集执行配置操作,在所分配的时隙处理输出侧包头信息总线上的数据,并返回处理结果;
其中,输入侧包头信息总线上的数据为数据包、数据包的包头信息、或者在前的控制节点的处理结果。
2.如权利要求1所述的数据包处理装置,其特征在于:
所述控制节点用于接收所述包处理节点发送的状态指示信号,当判定所述包处理节点处于空闲状态时,在为所述包处理节点分配的时隙中,通过时分控制总线发送时分控制信号;
所述包处理节点用于通过入口复用器从所述输出侧包头信息总线上接收数据,以及通过出口复用器将所述处理结果返回到所述输出侧包头信息总线上,其中,入口复用器和出口复用器均用于通过时分控制总线接收时分控制信号。
3.如权利要求2所述的数据包处理装置,其特征在于:
所述包处理节点包括处理接口、包头处理模块和指令存储器;
指令存储器用于按照所述指令集执行配置操作,指令存储器中的每个条目提供下一个指令指针的偏移地址和本地变量的信息;
处理接口用于按照所述指令集执行配置操作,保存配置操作结果和从所述输出侧包头信息总线上接收的数据,并生成所述状态指示信号;
包头处理模块用于获取所述指令集和处理接口中的数据并进行处理,将所述处理结果返回到处理接口。
4.如权利要求3所述的数据包处理装置,其特征在于:
所述处理接口包括外部接口和内部接口,内部接口包括用于存储所述本地变量的本地寄存器,外部接口包括:
包头缓存存储器,其用于保存从所述输出侧包头信息总线上接收的数据;
通用存储器,其用于保存中间计算结果和接口变量;
特殊寄存器,其用于存储数据包的边界值定义、源/目的信息和处理参数,根据所述指令存储器中的指令得到包头信息的偏移位置。
5.如权利要求4所述的数据包处理装置,其特征在于,所述包头处理模块包括:
条件处理单元,其用于从所述指令存储器获取条件输入指示信号,并输出使能信号、条件输入指示信号及其编码;
算术逻辑单元,其用于接收条件输入指示信号,对从所述处理接口读取的数据进行计算,得到计算结果和条件输出指示信号;
分支运算单元,其用于响应使能信号,根据当前的指令指针、所述下一个指令指针的偏移地址以及上一级算术逻辑单元的条件输出指示信号,生成所述下一个指令指针或者分支停止指示;
比较器,其用于接收条件输入指示信号的编码,根据当前的指令指针,对从算术逻辑单元获取的待比较变量和所述指令存储器中的指定条目进行比较,生成更新后的所述接口变量。
6.一种基于权利要求1所述的数据包处理装置的数据包处理方法,其特征在于,其包括:
包处理节点阵列通过引擎总线接口接收配置信息和指令集,控制节点按照配置信息生成时分复用控制序列,包处理节点按照指令集执行配置操作;
预处理模块将数据包或者数据包的包头信息发送到包头信息总线上;
在包处理节点阵列中,控制节点为包处理节点分配时隙,将输入侧包头信息总线上的数据传送到输出侧包头信息总线上;包处理节点在所分配的时隙处理输出侧包头信息总线上的数据,返回处理结果;
其中,输入侧包头信息总线上的数据为数据包、数据包的包头信息或者在前的控制节点的处理结果。
7.如权利要求6所述的数据包处理方法,其特征在于:
所述控制节点接收所述包处理节点发送的状态指示信号,当判定所述包处理节点处于空闲状态时,在为所述包处理节点分配的时隙中,通过时分控制总线发送时分控制信号;
所述包处理节点通过入口复用器从所述输出侧包头信息总线上接收数据,以及通过出口复用器将所述处理结果返回到所述输出侧包头信息总线上,其中,入口复用器和出口复用器均通过时分控制总线接收时分控制信号。
8.如权利要求7所述的数据包处理方法,其特征在于:
所述包处理节点包括处理接口、包头处理模块和指令存储器;
指令存储器按照所述指令集执行配置操作,指令存储器中的每个条目提供下一个指令指针的偏移地址和本地变量的信息;
处理接口按照所述指令集执行配置操作,保存配置操作结果和从所述输出侧包头信息总线上接收的数据,并生成所述状态指示信号;
包头处理模块用于获取所述指令集和处理接口中的数据并进行处理,将所述处理结果返回到处理接口。
9.如权利要求8所述的数据包处理方法,其特征在于:
所述处理接口包括外部接口和内部接口,内部接口包括用于存储所述本地变量的本地寄存器,外部接口包括包头缓存存储器、通用存储器和特殊寄存器;
包头缓存存储器保存从所述输出侧包头信息总线上接收的数据;
通用存储器保存中间计算结果和接口变量;
特殊寄存器存储数据包的边界值定义、源/目的信息和处理参数,根据所述指令存储器中的指令得到包头信息的偏移位置。
10.如权利要求9所述的数据包处理方法,其特征在于:
所述包头处理模块包括条件处理单元、算术逻辑单元、分支运算单元和比较器;
条件处理单元从所述指令存储器获取条件输入指示信号,并输出使能信号、条件输入指示信号及其编码;
算术逻辑单元接收条件输入指示信号,对从所述处理接口读取的数据进行计算,得到计算结果和条件输出指示信号;
分支运算单元响应使能信号,根据当前的指令指针、所述下一个指令指针的偏移地址以及上一级算术逻辑单元的条件输出指示信号,生成所述下一个指令指针或者分支停止指示;
比较器接收条件输入指示信号的编码,根据当前的指令指针,对从算术逻辑单元获取的待比较变量和所述指令存储器中的指定条目进行比较,生成更新后的所述接口变量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111384740.6A CN114143195B (zh) | 2021-11-19 | 2021-11-19 | 一种数据包处理装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111384740.6A CN114143195B (zh) | 2021-11-19 | 2021-11-19 | 一种数据包处理装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114143195A CN114143195A (zh) | 2022-03-04 |
CN114143195B true CN114143195B (zh) | 2023-05-23 |
Family
ID=80390608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111384740.6A Active CN114143195B (zh) | 2021-11-19 | 2021-11-19 | 一种数据包处理装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114143195B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116455834B (zh) * | 2023-06-19 | 2023-08-11 | 西华大学 | 一种基于控制序列的数据链分级访问控制方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9101089D0 (en) * | 1990-03-05 | 1991-02-27 | Intel Corp | Data bypass structure in a register file on a microprocessor chip to ensure data integrity |
US5590345A (en) * | 1990-11-13 | 1996-12-31 | International Business Machines Corporation | Advanced parallel array processor(APAP) |
WO2012068171A1 (en) * | 2010-11-15 | 2012-05-24 | Reed Coke S | Parallel information system utilizing flow control and virtual channels |
CN104252560A (zh) * | 2014-09-05 | 2014-12-31 | 烽火通信科技股份有限公司 | 基于现场可编程门阵列的集中缓存式装置及设计方法 |
CN113076137A (zh) * | 2021-03-11 | 2021-07-06 | 中国电子科技集团公司第五十四研究所 | 一种基于指令集的可编程流处理装置及方法 |
CN113098798A (zh) * | 2021-04-01 | 2021-07-09 | 烽火通信科技股份有限公司 | 配置共享表项资源池的方法、包交换方法、芯片以及电路 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4434465A (en) * | 1981-04-13 | 1984-02-28 | Texas Instruments Incorporated | Shared microinstruction states in control ROM addressing for a microcoded single chip microcomputer |
US6920627B2 (en) * | 2002-12-13 | 2005-07-19 | Xilinx, Inc. | Reconfiguration of a programmable logic device using internal control |
KR102139721B1 (ko) * | 2013-08-29 | 2020-07-30 | 삼성전자주식회사 | 다중 경로 프로토콜에서 이중으로 네트워크 코딩을 적용하는 방법 및 그 장치 |
US11729054B2 (en) * | 2014-07-15 | 2023-08-15 | Comcast Cable Communications, Llc | Reconfigurable device for processing signals |
-
2021
- 2021-11-19 CN CN202111384740.6A patent/CN114143195B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9101089D0 (en) * | 1990-03-05 | 1991-02-27 | Intel Corp | Data bypass structure in a register file on a microprocessor chip to ensure data integrity |
US5590345A (en) * | 1990-11-13 | 1996-12-31 | International Business Machines Corporation | Advanced parallel array processor(APAP) |
WO2012068171A1 (en) * | 2010-11-15 | 2012-05-24 | Reed Coke S | Parallel information system utilizing flow control and virtual channels |
CN104252560A (zh) * | 2014-09-05 | 2014-12-31 | 烽火通信科技股份有限公司 | 基于现场可编程门阵列的集中缓存式装置及设计方法 |
CN113076137A (zh) * | 2021-03-11 | 2021-07-06 | 中国电子科技集团公司第五十四研究所 | 一种基于指令集的可编程流处理装置及方法 |
CN113098798A (zh) * | 2021-04-01 | 2021-07-09 | 烽火通信科技股份有限公司 | 配置共享表项资源池的方法、包交换方法、芯片以及电路 |
Non-Patent Citations (1)
Title |
---|
基于FPGA的交换机芯片配置器设计;李荣乐;罗长洲;李龙华;李泽超;;计算机仿真(第02期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114143195A (zh) | 2022-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5917821A (en) | Look-up engine for packet-based network | |
US8014390B2 (en) | Policy based routing using a fast filter processor | |
KR100466083B1 (ko) | 인터페이스 디바이스를 포함하는 장치 및 데이터 플로우 핸들링 방법 | |
US7069372B1 (en) | Processor having systolic array pipeline for processing data packets | |
KR100468800B1 (ko) | 네트워크 프로세서 | |
US6799267B2 (en) | Packet processor | |
KR100498824B1 (ko) | Vlsi 네트워크 프로세서 및 방법 | |
US20060114915A1 (en) | VLAN translation in a network device | |
CN103004158A (zh) | 具有可编程内核的网络设备 | |
US20060039372A1 (en) | Method and apparatus for providing multi-protocol, multi-stage, real-time frame classification | |
JP2003508957A (ja) | ネットワーク・プロセッサ処理コンプレックス及び方法 | |
JP2003508967A (ja) | ネットワーク・プロセッサ及び方法を用いるネットワーク・スイッチ | |
US7787463B2 (en) | Content aware apparatus and method | |
US7089407B2 (en) | Packet processing device processing input packet data in a packet routing device | |
US10348603B1 (en) | Adaptive forwarding tables | |
CN103368853A (zh) | 网络分组的simd处理 | |
CN104468401A (zh) | 一种报文处理方法和装置 | |
CN114143195B (zh) | 一种数据包处理装置及方法 | |
US9258229B2 (en) | Systems and methods for accessing a multi-bank SRAM | |
CN114079634B (zh) | 一种报文转发方法、装置及计算机可读存储介质 | |
JP4209186B2 (ja) | パケットの高速ルーティング及びスイッチングに対するメモリ要件を低減するように構成されたプロセッサ | |
US7644190B2 (en) | Method and apparatus for pipelined processing of data packets | |
US8144705B1 (en) | Systems and methods for recursively accessing a multi-bank SRAM | |
KR100429543B1 (ko) | 네트워크 프로세서에서 다양한 개수의 포트들을 처리하기위한 방법 | |
US6798778B1 (en) | Communication packet processor with a look-up engine and content-addressable memory for updating context information for a core processor |
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 |