CN117220833A - Crc计算电路、芯片、报文处理方法及网络安全设备 - Google Patents

Crc计算电路、芯片、报文处理方法及网络安全设备 Download PDF

Info

Publication number
CN117220833A
CN117220833A CN202311485879.9A CN202311485879A CN117220833A CN 117220833 A CN117220833 A CN 117220833A CN 202311485879 A CN202311485879 A CN 202311485879A CN 117220833 A CN117220833 A CN 117220833A
Authority
CN
China
Prior art keywords
exclusive
initial value
data
message
processing module
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
CN202311485879.9A
Other languages
English (en)
Other versions
CN117220833B (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.)
Xinhua San Network Information Security Software Co ltd
Original Assignee
Xinhua San Network Information Security Software 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 Xinhua San Network Information Security Software Co ltd filed Critical Xinhua San Network Information Security Software Co ltd
Priority to CN202311485879.9A priority Critical patent/CN117220833B/zh
Publication of CN117220833A publication Critical patent/CN117220833A/zh
Application granted granted Critical
Publication of CN117220833B publication Critical patent/CN117220833B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请提出一种CRC计算电路、芯片、报文处理方法及网络安全设备。该CRC计算电路通过报文数据处理模块和初值处理模块分别对报文数据和初值进行异或处理,再通过合并处理模块将报文数据和初值的异或处理结果进行并行异或。其中报文数据处理模块和初值处理模块可以并行处理,计算效率很高,大大节省了计算时间。还可以将一个周期内的报文数据拆成多个数据段,多个数据段的异或处理并行进行,同样地一个周期内的初值拆分成多个初值段,多个初值段的异或处理并行进行,进一步缩短CRC计算耗费的时间,提高处理速率,降低计算复杂度,缩短计算的延时,能够满足高速率报文传输场景下的实时性要求,提升了防火墙的报文快转性能。

Description

CRC计算电路、芯片、报文处理方法及网络安全设备
技术领域
本申请涉及信息安全技术领域,更为具体来说,本申请涉及一种CRC计算电路、芯片、报文处理方法及网络安全设备。
背景技术
过滤型防火墙通常部署在客户端与服务器之间,用于对客户端与服务器之间的IP报文进行快速转发。过滤型防火墙需要对输入/输出的以太网报文内容进行CRC(CyclicRedundancy Check,循环冗余校验)计算。
相关技术中,CRC校验值是利用线性编码理论,根据要传送的报文,以一定的规则产生一个校验用的CRC校验值。在线性编码理论中每个时钟周期只能输入报文的1bit数据,当报文的全部数据位输入完时寄存器内部的值即为该报文的CRC校验值。
但每个时钟只能输入1bit数据,报文的各个数据位需要线性计算,导致CRC计算的延时很大,无法满足高速率报文传输的实时性要求,容易产生丢包现象。
发明内容
基于上述技术缺陷,本申请提出了一种CRC计算电路、芯片、报文处理方法及网络安全设备,报文数据和初值的处理能够并行执行,提高了处理速率,降低了CRC计算复杂度,缩短了CRC计算的延时,能够满足高速率报文传输场景下的实时性要求,提升了防火墙的报文快转性能。
本申请第一方面提供了一种CRC计算电路,包括:相互连接的报文数据处理模块、初值处理模块和合并处理模块;
所述报文数据处理模块,用于基于当前时钟周期输入的报文数据,输出当前时钟周期的数据异或结果给所述初值处理模块和所述合并处理模块;
所述初值处理模块,用于基于当前时钟周期的初值,输出当前时钟周期的初值异或结果给所述合并处理模块;
所述合并处理模块,用于基于当前时钟周期的数据异或结果和初值异或结果,获得当前时钟周期的校验值;若当前时钟周期为报文的最后一个周期,则将所述校验值作为报文的CRC值输出;若当前时钟周期不是所述最后一个周期,则将所述校验值传输给所述初值处理模块;
所述初值处理模块,还用于基于当前时钟周期的初值、所述数据异或结果及所述校验值,生成下一时钟周期的初值;所述报文数据处理模块与所述初值处理模块是并行运行的。
本申请第二方面提供了一种CRC处理模块,包括上述第一方面所述的CRC计算电路。
本申请第三方面提供了一种FPGA芯片,包括上述第二方面所述的CRC处理模块。
本申请第四方面提供了一种网络安全设备,包括相互连接的处理器和上述第三方面所述的FPGA芯片。
本申请第五方面提供了一种报文处理方法,应用于网络安全设备,所述方法包括:
接收上一跳设备发送的报文,计算所述报文的CRC值;
基于所述CRC值对所述报文进行处理,将处理后的所述报文发送给下一跳设备;
其中,计算所述报文的CRC值,包括:
基于当前时钟周期输入的报文数据,生成所述当前时钟周期的数据异或结果;基于所述当前时钟周期的初值,生成所述当前时钟周期的初值异或结果;
对所述数据异或结果和所述初值异或结果进行并行异或运算,得到当前时钟周期的校验值;
若所述当前时钟周期为所述报文的最后一个周期,则对所述校验值进行修正操作得到所述报文的CRC值;若所述当前时钟周期不是所述最后一个周期,则基于所述校验值、所述数据异或结果和所述当前时钟周期的初值,生成下一个时钟周期的初值。
本申请的有益效果至少包括:
在本申请实施例中,通过设计CRC计算电路,在一个时钟周期可以计算很多位报文数据,计算效率很高,大大节省了计算时间。报文数据和初值的处理能够并行执行,提高了处理速率,降低了CRC计算复杂度,缩短了CRC计算的延时,能够满足高速率报文传输场景下的实时性要求,提升了防火墙的报文快转性能。
附图说明
构成说明书的一部分的附图描述了本申请的实施例,并且连同描述一起用于解释本申请的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本申请,其中:
图1示出了相关技术中CRC32线性反馈移位寄存器的示意图;
图2示出了本申请一示例性实施例提供的一种CRC计算电路的结构示意图;
图3示出了本申请一示例性实施例提供的一种CRC计算电路的另一结构示意图;
图4示出了本申请一示例性实施例提供的一种CRC计算电路的另一结构示意图;
图5示出了本申请一示例性实施例提供的一种CRC计算电路的另一结构示意图;
图6示出了本申请一示例性实施例提供的一种CRC计算电路的另一结构示意图;
图7示出了本申请一示例性实施例提供的一种CRC计算电路的另一结构示意图;
图8示出了本申请一示例性实施例提供的一种CRC计算电路的另一结构示意图;
图9示出了本申请一示例性实施例提供的一种CRC计算电路的另一结构示意图;
图10示出了本申请一示例性实施例提供的一种CRC计算电路的另一结构示意图;
图11示出了本申请一示例性实施例提供的一种CRC计算电路的另一结构示意图;
图12示出了本申请一示例性实施例提供的一种CRC处理模块的结构示意图;
图13示出了本申请一示例性实施例提供的一种CRC处理模块的另一结构示意图;
图14示出了本申请一示例性实施例提供的一种CRC处理模块的另一结构示意图;
图15示出了本申请一示例性实施例提供的一种CRC处理模块的另一结构示意图;
图16示出了本申请一示例性实施例提供的一种FPGA芯片的结构示意图;
图17示出了本申请一示例性实施例提供的一种FPGA芯片的另一结构示意图;
图18示出了本申请一示例性实施例提供的一种FPGA芯片的另一结构示意图;
图19示出了本申请一示例性实施例提供的一种网络安全设备的结构示意图;
图20示出了本申请一示例性实施例提供的一种报文转发系统的结构示意图;
图21示出了本申请一示例性实施例提供的一种报文转发系统的另一结构示意图;
图22示出了本申请一示例性实施例提供的一种报文处理方法的流程示意图;
图23示出了图22中步骤101计算报文的CRC值的流程示意图;
图24示出了本申请一示例性实施例所提供的一种电子设备的结构示意图;
图25示出了本申请一示例性实施例所提供的一种存储介质的示意图。
具体实施方式
以下,将参照附图来描述本申请的实施例。但是应该理解的是,这些描述只是示例性的,而并非要限制本申请的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本申请的概念。对于本领域技术人员来说显而易见的是,本申请可以无需一个或多个这些细节而得以实施。在其他的例子中,为了避免与本申请发生混淆,对于本领域公知的一些技术特征未进行描述。
应予以注意的是,这里所使用的术语仅是为了描述具体实施例,而非意图限制根据本申请的示例性实施例。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式。此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或附加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组合。
现在,将参照附图更详细地描述根据本申请的示例性实施例。然而,这些示例性实施例可以多种不同的形式来实施,并且不应当被解释为只限于这里所阐述的实施例。附图并非是按比例绘制的,其中为了清楚表达的目的,可能放大了某些细节,并且可能省略了某些细节。图中所示出的各种区域、层的形状以及它们之间的相对大小、位置关系仅是示例性的,实际中可能由于制造公差或技术限制而有所偏差,并且本领域技术人员根据实际所需可以另外设计具有不同形状、大小、相对位置的区域/层。
下面描述根据本申请的示例性实施方式。需要注意的是,下述实施方式仅是为了便于理解本申请的精神和原理而示出,本申请的实施方式在此方面不受任何限制。相反,本申请的实施方式可以应用于适用的任何场景。
当前,在网络安全设备中,可通过某一过滤型防火墙实现对IP报文的快速转发。例如,对于企业的内部局域网,过滤型防火墙可以加速用户终端对线上会议、线上办公等与工作相关的网站的访问。过滤型防火墙通常部署在客户端与服务端之间,用于对客户端与服务端之间的IP报文进行快速转发。
该过滤型防火墙采用FPGA(Field Programmable Gate Arra,现场可编程门阵列)与CPU(中央处理器)相结合的架构模式,其中FPGA处于前级交换设备和后级CPU之间,与前级网络交换设备通过接口进行通信,与后级CPU通过接口进行通信。在与前级网络交换设备的数据交互中,FPGA收/发端需要对输入/输出的以太网报文内容进行CRC(CyclicRedundancy Check,循环冗余校验)计算。
在当前的实际应用中,由于IP报文长度是实时变化的,长度范围可以在46字节~1500字节之间,那么FPGA接收端/发送端需要考虑不同长度报文的传输效率问题。
相关技术中CRC计算是利用线性编码理论,根据要传送的K位二进制码序列,以一定的规则产生一个校验用的CRC值。如图1示出了CRC32线性反馈移位寄存器的示意图,图1中Gx表示链路通断(x=1,2,…,31),与CRC32的多项式系数相对应,系数为1时连接,系数为0时断开。报文数据Din在每个时钟周期从左侧输入1bit,且寄存器(Cn,n=0,1,…,31)数据左移一位。如此移位反馈异或的过程即为待发送数据移位后对生成多项式做模2除的过程,当全部数据位输入完毕,寄存器内部的值即为CRC32值。
上述相关技术中每个时钟周期只能输入1bit数据,计算一个报文的CRC值需要很多个时钟周期。报文数据量很大的情况下,其CRC计算复杂度很大,延时很长,FPGA逻辑资源的占用率高。而延时过大,在高速率报文传输下,FPGA实时性处理要求达不到,将产生丢包等现象,从而影响过滤防火墙的快转业务性能。
基于此,本申请实施例提供了一种CRC计算电路,该电路能够对报文数据和初值分别进行处理,且报文数据和初值的处理可以是并行进行的,最后将二者处理的结果进行合并处理得到报文的CRC值。能够缓解相关技术中CRC计算复杂度大和延时大的问题,占用的逻辑资源更少,能够达到报文转发的实时性要求,提高过滤防火墙的快转业务性能。
在本申请实施例中,CRC计算电路通过接口与外部连接,接收外部输入的报文。其中,该接口具有一定的位宽,该位宽可以表示一个时钟周期中该接口传输的数据量。位宽的大小与接口的传输速率相关,接口的传输速率越高,则接口的位宽越大。例如,100GE接口的位宽可以是512bit。
在报文的长度小于等于上述接口的位宽的情况下,报文的全部数据能够在一个时钟周期内传输完毕。在报文的长度大于上述接口的位宽的情况下,报文的全部数据需要多个时钟周期才能传输完毕。本申请实施例通过上述CRC计算电路对报文的每个时钟周期内的报文数据进行处理,最终得到报文的CRC值。
由于报文的每个时钟周期的数据处理过程均相同,因此为了便于理解及描述,本申请实施例以当前时钟周期的处理过程为例进行详细说明。
本申请实施例中的CRC计算所采用的计算标准可以是CRC8、CRC16、CRC32、CRC64等中的任意一种。在接口的位宽以及CRC计算所采用的标准确定的情况下,能够推导出CRC计算所需的异或表达式,具体推导方式由确定的CRC计算标准决定,本申请实施例对推导过程不再赘述。
基于预先推导的CRC计算所需的异或表达式,基于异或的交换律运算规则,将推导出的异或表达式中报文数据的异或运算和初值的异或运算拆解开,在本申请实施例的CRC计算电路中设计分别进行报文数据的异或运算的异或电路,以及进行初值的异或运算的异或电路,以及将报文数据的异或结果与初值的异或结果进行合并运算的异或电路。如此将报文数据和初值分别进行单独的异或运算,从而实现了将报文数据和初值的异或运算进行并行执行,从而节省CRC计算所需的时间,提高计算效率。
其中,上述初值可以理解成图1中表示链路通断的Gx,与CRC计算的多项式系数相对应。
参见图2,本申请实施例的CRC计算电路包括相互连接的报文数据处理模块、初值处理模块和合并处理模块。
报文数据处理模块,用于基于当前时钟周期输入的报文数据,输出当前时钟周期的数据异或结果给初值处理模块和合并处理模块。初值处理模块,用于基于当前时钟周期的初值,输出当前时钟周期的初值异或结果给合并处理模块。
合并处理模块,用于基于当前时钟周期的数据异或结果和初值异或结果,获得当前时钟周期的校验值;若当前时钟周期为报文的最后一个周期,则将校验值作为报文的CRC值输出;若当前时钟周期不是最后一个周期,则将校验值传输给初值处理模块。
初值处理模块,还用于基于当前时钟周期的初值、数据异或结果及校验值,生成下一时钟周期的初值;报文数据处理模块与初值处理模块是并行运行的。
其中,上述报文数据处理模块、初值处理模块和合并处理模块中都包含有异或电路。报文数据处理模块接收到外部输入的当前时钟周期的报文数据,处理得到该报文数据对应的数据异或结果。初值处理模块负责对当前时钟周期的初值进行处理,得到当前时钟周期的初值异或结果。合并处理模块负责对当前时钟周期的数据异或结果和初值异或结果进行合并处理,得到当前时钟周期的校验值。如果当前时钟周期是报文的最后一个时钟周期,则将该校验值输出作为报文的CRC值。如果当前时钟周期不是报文的最后一个周期,则将该校验值反馈给初值处理模块,初值处理模块基于当前时钟周期的校验值及数据异或结果、当前时钟周期的初值,运算生成下一个时钟周期的初值。然后再按照上述方式继续进行下一个时钟周期的运算,直至报文的最后一个时钟周期得到报文的CRC值。
其中,初值处理模块中预设了第一个时钟周期的初值,该预设的初值的位宽与CRC计算采用的计算标准规定的位宽相同。例如,对于CRC32计算来说,预设的第一时钟周期的初值可以为32位的数值序列,该数值序列每一位的取值均为1,即该预设的初值可以为32’HFFFF-FFFF。
在上述CRC计算电路中,一个时钟周期中输入的报文数据的数据量最大可以为接口的位宽,无需如图1所示相关技术中逐位输入报文数据进行计算,因此本申请实施例中一个时钟周期可以计算很多位报文数据,相对于相关技术来说计算效率很高,大大节省了计算时间。而且上述报文数据处理模块和初值处理模块能够并行执行,进一步提高了处理速率,降低了CRC计算复杂度,缩短了CRC计算的延时,能够满足高速率报文传输场景下的实时性要求,提升了防火墙的报文快转性能。
如图3所示,上述报文数据处理模块包括依次连接的数据调整模块、第一直接异或电路和第一寄存电路。
其中,数据调整模块与外部连接,用于接收外部输入的报文数据。数据调整模块用于对当前时钟周期的报文数据的有效位进行字节内倒序操作;若有效位的长度小于预设位宽,则对倒序操作后的报文数据进行位域调整;将处理后的报文数据传输给第一直接异或电路。
第一直接异或电路,用于对接收到的报文数据进行异或运算,得到当前时钟周期的数据异或结果并存储在第一寄存电路中。以使初值处理模块和合并处理模块能够从第一寄存电路中读取数据异或结果。
上述报文数据的有效位是指外部输入的数据中属于报文的数据。由于数据调整模块通过接口接收输入的报文数据,接口的位宽是确定的,因此每个时钟周期都会接收到该位宽的数据,但每个时钟周期的报文数据并不一定正好是该位宽长度的数据,尤其是报文的最后一个周期的数据的长度可能小于该位宽。在这种情况下,报文数据调整模块接收到的还是接口位宽长度的数据,不过该数据中可能只有低位的一定位数是报文的数据,而部分高位是0。例如,接口位宽为512bit,而报文的最后一个周期的数据只有8bit,则报文数据处理模块接收到512bit数据,该数据中0-7位是有效数据,8-511位都是0。
数据调整模块对报文数据的有效位进行字节内倒序操作,是指将报文数据的有效位以字节为单位进行反序排列。例如,假设有效位为11011001,则字节内倒序操作后为10011011。进行字节内倒序操作是为CRC计算作数据准备。
上述预设位宽可以为接口的位宽,对于报文数据的有效位小于预设位宽的情况,由于接口可以通过多路进行传输,例如对于100GE接口的位宽是512bit,可以通过4路数据进行传输,每一路128bit。在这种情况下,将4路128bit的数据合成1路512bit数据后,报文数据的有效位可能不是排在输入数据的低位段,可能排在中间位段或高位段上。因此对于有效位的长度小于预设位宽的情况,需要将倒序操作后的报文数据中的有效位调整成低位数。例如,倒序操作后的数据为000…10011011…0000,其中省略号表示省略了多个0,则将有效位调整成低位数后为000…10011011。
上述低位段可以是从报文数据的最低位开始的从右往左的位域,高位段可以是从报文数据的最高位开始从左往右的位域,中间位段是位于高位段与低位段之间的位域。
在本申请实施例中,数据调整模块基于预设的接口协议接收外部输入的报文数据,该预设的接口协议可以包括FIFO(First in First out,先进先出)协议。表1示出了FIFO接口协议说明。
表1
FIFO接口协议的读/写数据格式具体定义如下:
typedef struct packed {
reg[0:0]eop;//519:519,最后1拍标志
reg[0:0]sop;//518:518,最先1拍标志
reg [5:0] mod ;//517:512,每拍的字节数
reg[511:0] data ;//511:0,报文内容
} DATA_S;
其中mod表示每拍的有效字节数,假设mod的取值范围是0~63(0表示64),比如某个以太网报文长度为100字节,那么需要2拍才能完成传输,第1拍为64字节(512bit全有效),mod值为0即可,第二拍为36字节(高288bit有效,低224 bit无效),mod值为36。
对于mod值不为0(即每拍不是64字节)的情况,比如上面的第2拍,还需要进行相应的位域调整,将原先数据[511:0]调整为{224’b0,[511:224]}。表2是数据调整模块的位域调整说明:
表2
数据调整模块通过上述方式对报文数据进行字节内倒序操作,对于有效位的长度小于预设位宽的情况,按照上述方式进行位域调整之后,即可将处理后的数据传输给第一直接异或电路进行异或运算。
第一直接异或电路是基于预先推导的CRC计算的异或表达式来设计现场可编程门阵列而实现的。假设采用CRC32进行计算,每个时钟周期的数据位宽为512bit,则预先推导的异或表达式可以为D511^C31^D510^C30…D0^C0,其中^表示异或运算。基于异或的交换律运算规则,将上述异或表达式转换成(D511^D510…D0)^(C31^C30…C0),然后将该异或表达式拆分成对报文数据进行运算的D511^D510…D0,以及对初值进行运算的C31^C30…C0。上述第一直接异或电路可以是基于异或表达式D511^D510…D0来设计的。对于采用其他CRC标准以及其他不同位宽的应用场景,表达式推导及第一直接异或电路的设计都是相似的,在此就不一一举例说明了。
将数据调整模块处理的数据输入第一直接异或电路,对输入的多位数据进行异或运算,得到当前周期的数据异或结果。将该数据异或结果存储在第一寄存电路中。通过第一寄存电路可以实现报文数据处理与初值处理的时钟同步,使得后续合并处理模块从第一寄存电路中读取的数据异或结果与初值处理模块传输的初值异或结果的属于同一个时钟周期。
通过设计第一直接异或电路能够实现同时对一个时钟周期中报文数据的所有有效位进行异或运算,无需逐位进行运算,缩短了CRC计算的时间,提高了计算效率。
在本申请的一些实施例中,如图4所示,初值处理模块包括依次连接的初值选择模块、初值调整模块、第二直接异或电路和第三寄存电路。初值选择模块分别与初值调整模块、报文数据处理模块和合并处理模块连接,第二直接异或电路分别与初值调整模块和第三寄存电路连接,第三寄存电路还与合并处理模块连接。
在报文数据处理模块的结构为如图3所示的结构的情况下,初值选择模块与报文数据处理模块中的第一寄存电路连接。在报文数据处理模块的结构为如图6所示的结构的情况下,初值选择模块与报文数据处理模块中的第一并行异或电路连接。
初值选择模块基于当前时钟周期的初值、报文数据处理模块传输的当前时钟周期的数据异或结果及合并处理模块传输的当前时钟周期的校验值,生成下一时钟周期的初值;以及,将当前时钟周期的初值传输给初值调整模块。初值选择模块中还设置有第一个时钟周期的初值,在对报文的第一个时钟周期的数据进行处理的过程中采用预设的该初值来进行初值处理。
初值调整模块,用于对当前时钟周期的初值进行位域调整,将调整后的初值传输给第二直接异或电路。第二直接异或电路,用于对调整后的初值进行异或运算,得到当前时钟周期的初值异或结果,将初值异或结果存储至第三寄存电路,以使合并处理模块能够从第三寄存电路中读取该初值异或结果。
由于报文数据的异或表达式与初值的异或表达式是基于高位对齐的,因此上述初值调整模块对初值进行的位域调整,就是为了将当前时钟周期的初值与当前时钟周期的报文数据进行高位对齐。
上文中对于接口协议的读/写数据格式中定义了用于表示每拍(每个时钟周期)字节数的参数mod,对于mod的不同取值,初值调整模块基于mod取值对初值进行位域调整的调整方式如表3所示。
表3
基于当前时钟周期输入的报文数据的字节数,初值调整模块按照上述方式将当前时钟周期的初值与当前时钟周期的报文数据进行高位对齐。将调整后的初值传输给第二直接异或电路。
第二直接异或电路是基于预先推导的CRC计算的异或表达式来设计现场可编程门阵列而实现的。假设采用CRC32进行计算,每个时钟周期的数据位宽为512bit,则预先推导的对初值进行处理的异或表达式可以为C31^C30…C0。上述第二直接异或电路可以是基于异或表达式C31^C30…C0来设计的。对于采用其他CRC标准以及其他不同位宽的应用场景,表达式推导及第一直接异或电路的设计都是相似的,在此就不一一举例说明了。
第二直接异或电路对输入的初值的多位数据进行异或运算,得到当前周期的初值异或结果。将该初值异或结果存储在第三寄存电路中。通过第三寄存电路可以实现报文数据处理与初值处理的时钟同步,使得后续合并处理模块从第三寄存电路读取的初值异或结果与报文数据处理模块传输的数据异或结果的属于同一个时钟周期。
通过设计第二直接异或电路能够实现同时对一个时钟周期中初值的所有有效位进行异或运算,缩短了CRC计算的时间,提高了计算效率。
在本申请的另一些实施例中,如图5所示,上述初值选择模块包括多路数据选择器、第二并行异或电路、第三直接异或电路和第四寄存电路。第二并行异或电路分别与报文数据处理模块、多路数据选择器及第四寄存电路连接,第三直接异或电路分别与多路数据选择器及第四寄存电路连接;多路数据选择器还与初值调整模块及合并处理模块连接。
在报文数据处理模块的结构如图3所示的结构的情况下,第二并行异或电路与报文数据处理模块中的第一寄存电路连接。在报文数据处理模块的结构如图6所示的结构的情况下,第二并行异或电路与报文数据处理模块中的第一并行异或电路连接。
多路数据选择器,用于在当前时钟周期不是报文的最后一个周期的情况下,接收合并处理模块传输的当前时钟周期的校验值,将该校验值与当前时钟周期的初值进行异或运算,将运算结果传输给第三直接异或电路;还将当前时钟周期的初值传输给初值调整模块。多路数据选择器中预设有第一个时钟周期的初值,在报文的第一个时钟周期将预设的该初值传输给初值调整模块。
第三直接异或电路,用于对上述运算结果进行异或运算,将得到的结果存储在第四寄存电路中。第四寄存电路用于保持时钟的一致性。第二并行异或电路,用于接收报文数据处理模块传输的当前时钟周期的数据异或结果以及读取第四寄存电路存储的当前时钟周期内的上述结果,对数据异或结果和第四寄存电路存储的结果进行并行异或运算得到下一时钟周期的初值,将下一时钟周期的初值传输给多路数据选择器。在下一时钟周期到达时多路数据选择器将下一时钟周期的初值传输给初值调整模块,以进行下一时钟周期的初值处理过程。
上述第二并行异或电路是将来自报文数据处理模块的数据和来自第四寄存电路的数据进行异或,也就是对两路数据进行并行异或,因此第二并行异或电路可以采用2阶并行异或电路。
通过上述初值选择模块,可以基于当前时钟周期的校验值及数据异或结果以及当前时钟中期的初值生成下一时钟周期的初值,如此通过循环反馈自动生成每个时钟周期的初值,为将初值与报文数据的独立异或处理提供数据支持。
上述各实施例中,是将CRC计算中的报文数据与初值拆分成两部分分别单独进行异或运算。例如前文例子中,将异或表达式D511^C31^D510^C30…D0^C0拆分成D511^D510…D0和C31^C30…C0两个异或表达式。为了进一步提高CRC计算的效率,还可以将报文数据的异或表达式拆分成多个子异或表达式,和/或,将初值的异或表达式拆分成多个子异或表达式。拆分出的子异或表达式可以并行运行,从而进一步缩短CRC计算所需的时间。
在本申请的一些实施例中,报文数据处理模块中的第一直接异或电路可以包括第一数目个第一直接异或子电路,相应地,第一寄存电路包括第一数目个第一子寄存电路,第一直接异或子电路与第一子寄存电路一一对应连接。报文数据处理模块还包括第一并行异或电路,第一并行异或电路分别与各第一子寄存电路和初值处理模块连接。
数据调整模块,还用于将处理后的报文数据进行串并转换处理,以拆分成第一数目个数据段,将各数据段一一对应地分别传输给各第一直接异或子电路;第一并行异或电路,用于从各第一子寄存电路读取各数据段的异或结果,对各数据段的异或结果进行并行异或运算,得到当前时钟周期的数据异或结果,将数据异或结果传输给初值处理模块。
其中,第一数目可以为大于1的任意整数,如第一数目可以为2、4、5、8等。如图6示出了8个第一直接异或子电路及8个第一子寄存电路。在图6中8个第一直接异或子电路包括直接异或子电路0-7,直接异或子电路0-7分别采用异或公式0-7来设计实现的,8个第一寄存电路均以32bit寄存电路为例。直接异或子电路0-7分别与一个32bit寄存电路连接,8个32bit寄存电路均与第一并行异或电路连接,第一并行异或电路与合并处理模块连接。在初值选择模块的结构为图5所示的结构的情况下,第一并行异或电路与初值选择模块中的第二并行异或电路连接,如图6所示。
在本申请的另一些实施例中,CRC计算电路还包括第二寄存电路,第二寄存电路分别与上述第一并行异或电路及合并处理模块连接;第一并行异或电路,还用于将数据异或结果存储在第二寄存电路中,以使合并处理模块能够从第二寄存电路读取数据异或结果,如图7所示。
第二寄存电路起到时钟同步的作用,能够使得合并处理模块从第二寄存电路读取的数据异或结果与从初值处理模块处获得的初值异或结果是属于同一个时钟周期的结果。
在实际应用中,第一直接异或子电路可以是其他数目个,第一寄存电路的位数与所采用CRC计算标准规定的位宽相等。
其中,第一数目个第一直接异或子电路,是分别基于第一数目个子异或表达式设计的,这些子异或表达式是从预先推导的对报文数据进行异或运算的异或表达式中拆分出来的。例如,假设对报文数据进行异或运算的异或表达式为D511^D510…D0,若需要拆分出8个子异或表达式,则拆分结果可以如表4所示。
表4
上述第一数目个第一直接异或子电路是并行执行的,缩短了对一个时钟周期的报文数据的异或运算所花费的时间,提高了CRC计算的效率。上述第一数目个第一子寄存电路分别用于存储各自连接的第一直接异或子电路的运算结果,并保持时钟的一致性,以在同一时间将各第一直接异或子电路的运算结果传输给第一并行异或电路。第一并行异或电路对属于同一个时钟周期内的多个异或子公式的运算结果进行并行异或运算,得到该时钟周期的数据异或结果,并将该数据异或结果存储在第二寄存电路中。
上述第一并行异或电路是对多少路数据进行并行异或,则第一并行异或电路就可以采用多少阶的并行异或电路。例如,假设共有8个第一直接异或子电路,则第一并行异或电路需要对8路数据进行并行异或,则第一并行异或电路可以采用8阶并行异或电路。
在本申请的另一些实施例中,初值处理模块中的第二直接异或电路可以包括第二数目个第二直接异或子电路,相应地第三寄存电路包括第二数目个第二子寄存电路,第二直接异或子电路与第二子寄存电路一一对应连接;各第二子寄存电路均与合并处理模块连接。
在该实施例中,初值调整模块,还用于将调整后的初值拆分成第二数目个初值段,将各初值段一一对应地分别传输给各第二直接异或子电路。各第二直接异或子电路分别对接收到的初值段进行异或运算,并将运算结果存储到各自连接的第二子寄存电路中。
其中,第二数目与上述实施例中报文数据处理模块中包括的第一直接异或子电路的第一数目,二者可以相同也可以不同。第二数目可以是大于1的整数,如3、5、8等。如图8示出了8个第二直接异或子电路及8个第二子寄存电路。在图8中8个第二直接异或子电路包括直接异或子电路0-7,直接异或子电路0-7分别基于异或公式0-7进行设计实现的,8个第二寄存电路均以32bit寄存电路为例。直接异或子电路0-7分别与一个32bit寄存电路连接,各32bit寄存电路均与合并处理模块连接。
在实际应用中,第二直接异或子电路可以是其他数目个,第二寄存电路的位数与所采用CRC计算标准规定的位宽相等。
上述第二数目个第二直接异或子电路,是分别基于第二数目个子异或表达式设计的,这些子异或表达式是从预先推导的对初值进行异或运算的异或表达式中拆分出来的。由于初值调整模块对初值进行了位域调整,使得初值与报文数据高位对齐,因此对初值进行异或运算可以与对报文数据进行异或运算公用相同的异或表达式。对初值处理的异或表达式的拆分可以与上文中对报文数据处理的异或表达式的拆分相同,在此不再赘述。
上述第二数目个第二直接异或子电路是并行执行的,缩短了对一个时钟周期的初值的异或运算所花费的时间,提高了CRC计算的效率。上述第二数目个第二子寄存电路分别用于存储各自连接的第二直接异或子电路的运算结果,并保持时钟的一致性,以使合并处理模块能够在同一时间从各第二直接异或子电路读取各运算结果。
在本申请的另一些实施例中,如图9所示,初值处理模块还可以包括第三并行异或电路;第三并行异或电路分别与各第二子寄存电路及合并处理模块连接。第三并行异或电路,用于对从各第二子寄存电路读取的各初值段的异或结果进行并行异或运算,将得到的当前时钟周期的初值异或结果传输给合并处理模块。
上述第三并行异或电路是对多少路数据进行并行异或,则第三并行异或电路就可以采用多少阶的并行异或电路。例如,假设共有8个第二直接异或子电路,则第三并行异或电路需要对8路数据进行并行异或,则第三并行异或电路可以采用8阶并行异或电路。
通过设置第三并行异或电路先将各初值段的异或结果进行并行异或得到当前时钟周期的初值异或结果,然后再将初值异或结果发送给合并处理模块与当前时钟周期的数据异或结果进行合并处理。
在本申请的另一些实施例中,如图10所示,合并处理模块包括依次连接的第四并行异或电路和终值修正模块;第四并行异或电路分别与报文数据处理模块和初值处理模块连接,终值修正模块还与初值处理模块连接。
其中,在初值处理模块的结构如图8所示的结构的情况下,第四并行异或电路与初值处理模块中的8个32bit寄存电路连接,终值修正模块与初值选择模块中的多路数据选择器连接。在报文数据处理模块的结构为图8中报文数据处理模块的结构的情况下,第四并行异或电路与报文数据处理模块中的第二寄存电路连接。
第四并行异或电路,用于对报文数据处理模块传输的当前时钟周期的数据异或结果和初值处理模块传输的当前时钟周期的初值异或结果进行并行异或运算,将得到的结果传输给终值修正模块。
终值修正模块,用于若当前时钟周期不是报文的最后一个周期,将第四并行异或电路传输的结果作为当前时钟周期的校验值反馈给初值处理模块;若当前时钟周期为最后一个周期,则对第四并行异或电路传输的结果进行修正处理,得到报文的CRC值并输出。
上述第四并行异或电路是对多少路数据进行并行异或,则第四并行异或电路就可以采用多少阶的并行异或电路。例如,假设对报文数据处理模块传输的数据异或电路以及从初值处理模块中8个第二子寄存电路读取的各初值段的异或结果进行并行异或运算,则第四并行异或电路可以采用9阶并行异或电路。若初值处理模块中设置第三并行异或电路先将各初值段的异或结果进行了并行异或运算,则第四并行异或电路只需对数据异或结果和初值异或结果两路数据进行并行异或运算,则第四并行异或电路可以采用2阶并行异或电路。
若当前时钟周期不是报文的最后一个周期,则终值修正模块将第四并行异或电路传输的结果作为当前时钟周期的校验值反馈给初值处理模块,以供初值处理模块基于当前时钟周期的校验值生成下一时钟周期的初值。
若当前时钟周期为最后一个周期对第四并行异或电路传输的结果依次进行特殊字节处理、字节内倒序处理及取反处理,得到该报文的CRC值。
其中,特殊字节处理是针对报文最后一个时钟周期的有效位的长度小于预设位宽的情况。对于采用CRC32计算标准的,特殊字节处理可以是如表5所示。
表5
其中,Pre_CRC为第四并行异或电路输出的值,Left_CRC为上一时钟周期的校验值。MOD值用于表征当前时钟周期报文数据的字节数。上述特殊字节处理的目的是,对于字节数少于预设位宽的情况,将上一时钟周期的校验值中的低位段补偿到当前时钟周期的校验值的高位段,补偿的位数即为预设位宽与当前时钟周期的有效位数之间的差值。其中,低位段为上一时钟周期的校验值的最低位开始从右往左的上述差值位数据。上述高位段为当前时钟周期的校验值的最高位开始从左往右的上述差值位数据。
通过上述补偿处理之后,当前时钟周期的校验值的位数与所采用的CRC计算标准规定的位数相同。然后对处理后的校验值进行字节内倒序处理,再对倒序处理后的数据进行按位取反,最终得到当前该报文的CRC值。
如图11所示,在该CRC计算电路中,第一并行异或电路可以采用8阶并行异或电路,第二并行异或电路可以采用2阶并行异或电路,第四并行异或电路可以采用9阶并行异或电路。电路中所有的寄存电路均可以采用32bit寄存电路。第三直接异或电路可以采用直接异或子电路7。其中图11中MUX为多路数据选择器。
在本申请实施例中,设计了一种CRC计算的并行处理的电路架构,每个时钟周期能够并行对多位数据进行处理,如对于接口位宽为512bit,该电路可以每个时钟周期都处理512bit的数据,报文数据和初值的异或运算并行计算。该电路架构可以看成是多级流水线的设计架构,如图11所示,可以将该电路架构看成是第0-5级共6级的流水线执行架构。假设该CRC计算电路所在的物理处理单元(如FPGA芯片)内部的主频为250Hz,则每个时钟周期是4ns。则将图11中的6级流水线执行完成耗时24ns。因此若报文的长度小于等于接口位宽,则在24ns的时间内即可计算出该报文的CRC值。例如,若报文的长度为512bit,则本申请实施例的CRC计算电路只需6个时钟周期,也就是24ns即可完成计算。而图1所示的相关技术需要512个时钟周期,也就是2048ns才能完成计算。可见本申请实施例大大缩短了CRC计算延时。
而对于报文长度大于接口位宽的情况,本申请实施例的延时会大于24ns,最多为24ns的整数倍,具体倍数是报文长度与接口位宽的商,如果有余数的话,倍数是报文长度与接口位宽的商加1。而且由于报文数据与初值的处理是并行执行的,如图11中第2和3级是并行处理的,所以于报文长度大于接口位宽的情况下延时比上述24ns的整数倍还要少一些。
通过上述举例,说明了报文长度小于等于接口位宽的情况下,本申请实施例CRC计算的延时值是固定的,不受限于以太网报文的长度。而对于报文长度大于接口位宽的情况下,CRC计算的延时与报文长度有关,但整体延时远小于相关技术中的延时。
而且由于本申请实施例中CRC计算的速率很快,因此接收到报文之后可以在极短的时间内计算出报文的CRC值,因此不需要像相关技术中那样先存储报文再将报文一位一位的输入计算,从而不用占用太多的存储资源,节省FPGA的逻辑资源。
需要说明的是,本申请实施例中,第一直接异或电路、第二直接异或电路、第三直接异或电路等中的“直接异或”是指对一路数据进行异或运算。而第一并行异或电路、第二并行异或电路、第三并行异或电路中的“并行异或”是指对多路数据进行异或运算,如图6中第一并行异或电路是对8个32bit寄存电路中存储的数据进行异或运算。
在本申请的一些实施例中,CRC计算电路的产品形态可以是FPGA芯片中用于计算报文的CRC值的电路。在另一些实施例中,CRC计算电路的产品形态还可以是IP核(Intellectual Property core)产品,即CRC计算电路可以是具有能够按照本申请实施例计算报文的CRC值的功能的硬件描述语言程序,该硬件描述语言程序能够移植到不同的半导体工艺中去生产需要计算CRC值的集成电路芯片。
本申请的一些实施例提供了一种CRC处理模块,如图12所示,CRC处理模块包括上述任一实施例的CRC计算电路。
在本申请的一些实施例中,如图13所示,CRC计算电路包括第一CRC计算电路;CRC处理模块还包括第一数据重组模块和报文校验模块。其中图13中箭头指示数据的传输方向。
第一CRC计算电路分别与第一数据重组模块和报文校验模块连接;第一数据重组模块将来自外部的报文传输给第一CRC计算电路;第一CRC计算电路计算报文的第一CRC校验值,将报文和第一CRC校验值传输给报文校验模块;报文校验模块比较第一CRC校验值与报文携带的CRC校验值,若二者一致,删除报文携带的CRC校验值,输出删除后的报文。
CRC处理模块通过接口驱动接收外部输入的报文数据,该接口驱动可以是通过多路数据传输通路与CRC处理模块连接。例如该接口驱动可以是100GE接口驱动,通过4路serdes串行通信链路与CRC处理模块进行数据传输。则上述第一数据重组模块可以是将接口驱动的多路数据重组成一路数据的模块。如将4路serdes传输的数据,每路128bit,重组成一路512bit的数据。
上述CRC处理模块用于对接收到的报文进行安全性校验,如果CRC计算电路计算出的CRC值与报文自身携带的CRC值一致,则确定该报文符合安全性要求,则将该报文输出给后续的模块处理。若CRC计算电路计算出的CRC值与报文自身携带的CRC值不一致,则确定该报文不符合安全性要求,丢弃该报文。
在本申请的另一些实施例中,如图14所示,CRC计算电路包括第二CRC计算电路,CRC处理模块还包括第二数据重组模块和封装模块;封装模块分别与第二CRC计算电路和第二数据重组模块连接;第二CRC计算电路计算来自外部的报文的第二CRC校验值,将报文和第二CRC校验值传输给封装模块;封装模块将第二CRC校验值封装在报文中,将封装后的报文经由第二数据重组模块传输给外部。
上述第二数据重组模块的作用可以是与上述第一数据重组模块的作用相反的,即第二数据重组模块是将一路数据重组成多路数据。例如,若接口驱动通过4路串行通信链路与CRC处理模块进行数据传输,则第二数据重组可以是将封装有CRC值的报文,由一路数据拆分成4路数据,从而能够经由接口驱动的4路串行通信链路传输出去。
上述CRC处理模块用于对接收到的未携带CRC值的报文,为该报文生成CRC值,并封装到报文中,将该报文传输给外部,以便后续接收到该报文的模块或设备可以基于封装在该报文中的CRC值验证该报文是否符合安全性要求。
在本申请实施例中,CRC处理模块中可以仅为图13所示的结构,也可以为图14所示的结构,或者也可以仅为图15所示的结构。图13-15中的箭头均指示数据的传输方向。
在本申请的一些实施例中,CRC处理模块的产品形态可以是FPGA芯片中用于对报文进行处理的电路部分。在另一些实施例中,CRC处理模块的产品形态还可以是IP核(Intellectual Property core)产品,即CRC处理模块可以是具有能够按照本申请实施例处理报文的功能的硬件描述语言程序,该硬件描述语言程序能够移植到不同的半导体工艺中去生产用于进行报文处理的集成电路芯片。
在本申请实施例中,CRC处理模块在一个时钟周期可以计算很多位报文数据,计算效率很高,大大节省了计算时间。报文数据和初值的处理能够并行执行,提高了处理速率,降低了CRC计算复杂度,缩短了CRC计算的延时,能够满足高速率报文传输场景下的实时性要求,提升了防火墙的报文快转性能。
本申请的一些实施例还提供了一种FPGA芯片,如图16所示,FPGA芯片包括上述任一实施例所述的CRC处理模块。
如图17所示,该FPGA芯片还包括第一接口驱动、第二接口驱动、业务处理模块和调度模块;CRC处理模块分别与第一接口驱动、业务处理模块和调度模块连接,第二接口驱动分别与业务处理模块和调度模块连接,业务处理模块还与调度模块连接。图17中的箭头指示数据的传输方向。
其中,第一接口驱动可以是任意通信速率的接口驱动,如可以是100GE接口、80GE接口、200GE接口等。第二接口驱动可以是PCIE接口驱动,或其他可以用于与CPU进行数据通信的接口驱动。
业务处理模块进行相关业务处理并根据报文特征进行分流处理,一路分流至第二接口驱动,经由第二接口驱动传输给其他处理模块或设备,然后由其他处理模块或设备处理后又通过第二接口驱动进入调度模块。另一路直接分流至调度模块。进入调度模块的报文再次传输给CRC处理模块,CRC处理模块处理之后传输给第一接口驱动,由第一接口驱动传输给外部。
如图18所示,第一接口驱动采用100GE接口,100GE接口采用4路进行数据传输,每路128bit。第一数据重组模块为图18中的4合1模块,用于将4路128bit的数据合成1路512bit的数据。第二数据重组模块为图18中的1分4模块,将1路512bit的数据拆分成4路128bit的数据。图18中CRC32计算与判决模块以及CRC32计算与封装模块中CRC32计算的部分均采用上述任一实施例的CRC计算电路来实现,且采用的计算标准为CRC32。
本申请实施例提供的FPGA芯片与本申请实施例提供的CRC计算电路出于相同的申请构思,具有与其采用、运行或实现的方法相同的有益效果。
本申请的一些实施例还提供了一种网络安全设备,如图19所示,该网络安全设备包括相互连接的处理器和上述任一实施例所述的FPGA芯片。
其中,网络安全设备可以是防火墙设备等。图19中的处理器是以CPU为例进行示意的。
本申请实施例提供的网络安全设备与本申请实施例提供的CRC计算电路出于相同的申请构思,具有与其采用、运行或实现的方法相同的有益效果。
本申请的一些实施例提供了一种报文转发系统,如图20所示,该系统包括客户端、网络交换设备、服务端和上述任一实施例所述的网络安全设备;网络交换设备分别与客户端、服务端和网络安全设备连接。
如图20所示,正向报文首先从客户端流向网络交换设备,然后通过基于第一接口驱动进入网络安全设备的FPGA,在FPGA内部的CRC处理模块中生成CRC值并校验通过后,再输出至业务处理模块,业务处理模块进行相关业务处理并根据报文特征进行分流处理,一路分流至第二接口驱动进入CPU,然后CPU处理后又通过第二接口驱动进入调度模块;另一路直接分流至调度模块;调度模块接收到的报文再传输给CRC处理模块,在CRC处理模块中计算出报文的CRC值,并将CRC值封装在报文中,然后通过第一接口进入网络交换设备,最后进入服务端。
反向报文首先从服务端流向网络交换设备,然后通过第一接口驱动进入网络安全设备的FPGA,在FPGA内部的CRC处理模块中生成CRC值并校验通过后,再输出至业务处理模块,业务处理模块进行相关业务处理并根据报文特征进行分流处理,一路分流至第二接口驱动进入CPU,然后CPU处理后又通过第二接口驱动进入调度模块;另一路直接分流至调度模块;调度模块接收到的报文再传输给CRC处理模块,在CRC处理模块中计算出报文的CRC值,并将CRC值封装在报文中,然后通过第一接口进入网络交换设备,最后进入客户端。
如图21所示,网络安全设备以防火墙设备为例,第一接口驱动采用100GE接口驱动,第二接口驱动采用PCIE(Peripheral Component Interconnect Express)接口驱动。
本申请实施例提供的报文转发系统与本申请实施例提供的CRC计算电路出于相同的申请构思,具有与其采用、运行或实现的方法相同的有益效果。
本申请的一些实施例还提供一种报文处理方法,应用于网络安全设备,如图22所示,该方法包括以下步骤。
步骤101:接收上一跳设备发送的报文,计算报文的CRC值。
步骤102:基于计算的CRC值对报文进行处理,将处理后的报文发送给下一跳设备。
如图23所示,步骤101计算报文的CRC值的过程具体包括以下步骤S1-S3。
S1:基于当前时钟周期输入的报文数据,生成当前时钟周期的数据异或结果;基于当前时钟周期的初值,生成当前时钟周期的初值异或结果。
上述生成当前时钟周期的数据异或结果的具体过程可以包括:
将当前时钟周期输入的报文数据拆分成第一数目个数据段;并行计算第一数目个数据段各自的异或结果;对各数据段的异或结果进行并行异或运算,得到当前时钟周期的数据异或结果。
上述方式中将当前时钟周期的报文数据拆分成多个数据段,并行对这多个数据段进行异或运算,提高了报文数据处理的速度,缩短了CRC计算所耗费的时间。
在本申请的另一些实施例中,生成当前时钟周期的初值异或结果的具体过程可以包括:将当前时钟周期的初值拆分成第二数目个初值段;并行计算第二数目个初值段各自的异或结果;对各初值段的异或结果进行并行异或运算,得到当前时钟周期的初值异或结果。
上述方式中将当前时钟周期的初值拆分成多个初值段,并行对这多个初值段进行异或运算,提高了初值处理的速度,缩短了CRC计算所耗费的时间。
在本申请的一些实施例中,在生成当前时钟周期的数据异或结果之前,还包括:对当前时钟周期的报文数据中的有效位进行字节内倒序操作;若有效位的长度小于预设位宽,对倒序操作后的报文数据进行位域调整。
对报文数据的有效位进行字节内倒序操作,是指将报文数据的有效位以字节为单位进行反序排列。例如,假设有效位为11011001,则字节内倒序操作后为10011011。进行字节内倒序操作是为CRC计算作数据准备。
上述预设位宽可以为接口的位宽,对于报文数据的有效位小于预设位宽的情况,由于接口可以通过多路进行传输,例如对于100GE接口的位宽是512bit,可以通过4路数据进行传输,每一路128bit。在这种情况下,报文数据的有效位可能不是排在输入数据的低位,可能排在中间位或高位上。因此对于有效位的长度小于预设位宽的情况,需要将倒序操作后的报文数据中的有效位调整成低位数。例如,倒序操作后的数据为000…10011011…0000,其中省略号表示省略了多个0,则将有效位调整成低位数后为000…10011011。对报文数据的有效位的调整方式可以如上文中表2所示。
在本申请的另一些实施例中,在生成当前时钟周期的初值异或结果之前,还包括:对当前时钟周期的初值进行位域调整,使当前时钟周期的初值与当前时钟周期的报文数据高位对齐。
对初值进行位域调整的方式可以如上文中表3所示,在此不再赘述。对初值进行位域调整之后,初值与报文数据是高位对齐的,所以对初值进行异或处理和对报文数据进行异或处理可以共用一套异或表达式。
S2:对数据异或结果和初值异或结果进行并行异或运算,得到当前时钟周期的校验值。
S3:若当前时钟周期为报文数据所属报文的最后一个周期,则对校验值进行修正操作得到报文的CRC值;若当前时钟周期不是最后一个周期,则基于校验值、数据异或结果和当前时钟周期的初值,生成下一个时钟周期的初值。
上述对校验值进行修正的操作具体可以包括:
确定预设位数与校验值的有效位数之间的位数差;从最后一个周期的上一个时钟周期的校验值的最低位开始获取位数差的低位段;将位数差的低位段补偿为当前时钟周期的校验值中位数差的高位段,得到补偿后的数值序列;对数值序列进行字节内倒序处理;对倒序处理后的数值序列进行取反,得到报文的CRC值。其中,低位段为上一时钟周期的校验值的最低位开始从右往左的上述位数差的数据。上述高位段为当前时钟周期的校验值的最高位开始从左往右的上述位数差的数据。
上述对校验值进行补偿的操作是针对报文最后一个时钟周期的有效位的长度小于预设位宽的情况。通过上述补偿处理之后,当前时钟周期的校验值的位数与所采用的CRC计算标准规定的位数相同。然后再依次进行字节内倒序和取反操作,得到报文的CRC值。
本申请实施例并不限定各处理过程执行的先后顺序,在实际应用中不具有依赖关系的处理过程均可并行执行,也可按照任意顺序先后执行。其中,一个处理过程的输出作为另一个处理过程的输入,则认为这两个处理过程之间具有依赖关系。
本申请实施例中,各步骤的处理细节均可参考前述CRC计算电路中的相关处理过程,在此不再一一赘述。
本申请实施例提供的报文处理方法与本申请实施例提供的CRC计算电路出于相同的申请构思,具有与其采用、运行或实现的方法相同的有益效果。
下面请参考图24,其示出了本申请的一些实施方式所提供的一种电子设备的示意图。如图24所示,所述电子设备7包括:处理器700,存储器701,总线707和通信接口703,所述处理器700、通信接口703和存储器701通过总线707连接;所述存储器701中存储有可在所述处理器700上运行的计算机程序,所述处理器700运行所述计算机程序时执行本申请前述任一实施方式所提供的报文处理方法。
其中,存储器701可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口703(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网、广域网、本地网、城域网等。
总线707可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。其中,存储器701用于存储程序,所述处理器700在接收到执行指令后,执行所述程序,前述本申请实施例任一实施方式揭示的报文处理方法可以应用于处理器700中,或者由处理器700实现。
处理器700可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器700中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器700可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器701,处理器700读取存储器701中的信息,结合其硬件完成上述方法的步骤。
本申请实施例提供的电子设备与本申请实施例提供的报文处理方法出于相同的申请构思,具有与其采用、运行或实现的方法相同的有益效果。
本申请实施方式还提供一种与前述实施方式所提供的报文处理方法对应的计算机可读存储介质,请参考图25,图25示出的计算机可读存储介质为光盘30,其上存储有计算机程序(即程序产品),所述计算机程序在被处理器运行时,会执行前述任意实施方式所提供的报文处理方法。
另外,所述计算机可读存储介质的例子还可以包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器(RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他光学、磁性存储介质,在此不再一一赘述。
本申请的上述实施例提供的计算机可读存储介质与本申请实施例提供的报文处理方法出于相同的申请构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
需要说明的是:在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备有固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本申请也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本申请的内容,并且上面对特定语言所做的描述是为了披露本申请的最佳实施方式。
类似地,应当理解,为了精简本申请并帮助理解各个申请方面中的一个或多个,在上面对本申请的示例性实施例的描述中,本申请的各个特征有时被一起分组到单个实施例、图或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本申请要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,申请方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本申请的单独实施例。
本申请的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器( DSP )来实现根据本申请实施例的虚拟机的创建装置中的一些或者全部部件的一些或者全部功能。本申请还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序。实现本申请的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
以上所述,仅为本申请较佳的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (20)

1.一种CRC计算电路,其特征在于,包括:相互连接的报文数据处理模块、初值处理模块和合并处理模块;
所述报文数据处理模块,用于基于当前时钟周期输入的报文数据,输出当前时钟周期的数据异或结果给所述初值处理模块和所述合并处理模块;
所述初值处理模块,用于基于当前时钟周期的初值,输出当前时钟周期的初值异或结果给所述合并处理模块;
所述合并处理模块,用于基于当前时钟周期的数据异或结果和初值异或结果,获得当前时钟周期的校验值;若当前时钟周期为报文的最后一个周期,则将所述校验值作为报文的CRC值输出;若当前时钟周期不是所述最后一个周期,则将所述校验值传输给所述初值处理模块;
所述初值处理模块,还用于基于当前时钟周期的初值、所述数据异或结果及所述校验值,生成下一时钟周期的初值;所述报文数据处理模块与所述初值处理模块是并行运行的。
2.根据权利要求1所述的CRC计算电路,其特征在于,所述报文数据处理模块包括依次连接的数据调整模块、第一直接异或电路和第一寄存电路;
所述数据调整模块,用于对所述报文数据的有效位进行字节内倒序操作;若所述有效位的长度小于预设位宽,则对倒序操作后的报文数据进行位域调整;将处理后的报文数据传输给所述第一直接异或电路;
所述第一直接异或电路,用于对接收到的报文数据进行异或运算,得到当前时钟周期的数据异或结果并存储在所述第一寄存电路中,以使所述初值处理模块和所述合并处理模块从所述第一寄存电路中读取所述数据异或结果。
3.根据权利要求2所述的CRC计算电路,其特征在于,所述第一直接异或电路包括第一数目个第一直接异或子电路,所述第一寄存电路包括所述第一数目个第一子寄存电路,所述第一直接异或子电路与所述第一子寄存电路一一对应连接;
所述报文数据处理模块还包括第一并行异或电路,所述第一并行异或电路分别与各第一子寄存电路和所述初值处理模块连接;
所述数据调整模块,还用于将所述处理后的报文数据进行串并转换处理,以拆分成所述第一数目个数据段,将各数据段一一对应地分别传输给各第一直接异或子电路;
所述第一并行异或电路,用于从各第一子寄存电路读取所述各数据段的异或结果,对所述各数据段的异或结果进行并行异或运算,得到当前时钟周期的数据异或结果,将所述数据异或结果传输给所述初值处理模块;
和/或,
所述CRC计算电路还包括第二寄存电路,所述第二寄存电路分别与所述第一并行异或电路及所述合并处理模块连接;所述第一并行异或电路,还用于将所述数据异或结果存储在所述第二寄存电路中,以使所述合并处理模块从所述第二寄存电路读取所述数据异或结果。
4.根据权利要求1-3任一项所述的CRC计算电路,其特征在于,所述初值处理模块包括依次连接的初值选择模块、初值调整模块、第二直接异或电路和第三寄存电路;
所述初值选择模块与所述报文数据处理模块和所述合并处理模块连接,基于当前时钟周期的初值、所述报文数据处理模块传输的当前时钟周期的数据异或结果及所述合并处理模块传输的当前时钟周期的所述校验值,生成下一时钟周期的初值;以及,将所述当前时钟周期的初值传输给所述初值调整模块;
所述初值调整模块,用于对当前时钟周期的初值进行位域调整,将调整后的初值传输给第二直接异或电路;
第二直接异或电路,用于对所述调整后的初值进行异或运算,得到当前时钟周期的初值异或结果,将所述初值异或结果存储在所述第三寄存电路中,以使所述合并处理模块从所述第三寄存电路读取所述初值异或结果。
5.根据权利要求4所述的CRC计算电路,其特征在于,所述初值选择模块包括多路数据选择器、第二并行异或电路、第三直接异或电路和第四寄存电路;
所述第二并行异或电路分别与所述报文数据处理模块、所述多路数据选择器及所述第四寄存电路连接,所述第三直接异或电路分别与所述多路数据选择器及所述第四寄存电路连接;所述多路数据选择器还与所述初值调整模块及所述合并处理模块连接;
所述多路数据选择器,用于接收所述合并处理模块传输的当前时钟周期的校验值,将所述校验值与当前时钟周期的初值进行异或运算,将运算结果传输给所述第三直接异或电路;还将所述当前时钟周期的初值传输给所述初值调整模块;
所述第三直接异或电路,用于对所述运算结果进行异或运算,将得到的结果存储在所述第四寄存电路中;
所述第二并行异或电路,用于接收所述报文数据处理模块传输的当前时钟周期的数据异或结果以及读取所述第四寄存电路存储的结果,对所述数据异或结果和所述第四寄存电路存储的结果进行并行异或运算得到下一时钟周期的初值,将所述下一时钟周期的初值传输给所述多路数据选择器。
6.根据权利要求4所述的CRC计算电路,其特征在于,所述第二直接异或电路包括第二数目个第二直接异或子电路,所述第三寄存电路包括所述第二数目个第二子寄存电路,所述第二直接异或子电路与所述第二子寄存电路一一对应连接;各所述第二子寄存电路均与所述合并处理模块连接;
所述初值调整模块,还用于将所述调整后的初值拆分成所述第二数目个初值段,将各初值段一一对应地分别传输给各第二直接异或子电路。
7.根据权利要求6所述的CRC计算电路,其特征在于,所述初值处理模块还包括第三并行异或电路;
所述第三并行异或电路分别与各所述第二子寄存电路及所述合并处理模块连接;
所述第三并行异或电路,用于从各所述第二子寄存电路读取各初值段的异或结果进行并行异或运算,将得到的当前时钟周期的初值异或结果传输给所述合并处理模块。
8.根据权利要求1-3任一项所述的CRC计算电路,其特征在于,所述合并处理模块包括依次连接的第四并行异或电路和终值修正模块;
所述第四并行异或电路分别与所述报文数据处理模块和所述初值处理模块连接,所述终值修正模块还与所述初值处理模块连接;
所述第四并行异或电路,用于对所述报文数据处理模块传输的当前时钟周期的数据异或结果和所述初值处理模块传输的当前时钟周期的初值异或结果进行并行异或运算,将得到的结果传输给所述终值修正模块;
所述终值修正模块,用于若当前时钟周期不是报文的最后一个周期,将所述第四并行异或电路传输的结果作为当前时钟周期的校验值反馈给所述初值处理模块;若当前时钟周期为所述最后一个周期,则对所述第四并行异或电路传输的结果进行修正处理,得到报文的CRC值并输出。
9.一种CRC处理模块,其特征在于,包括权利要求1-8任一项所述的CRC计算电路。
10.根据权利要求9所述的CRC处理模块,其特征在于,所述CRC计算电路包括第一CRC计算电路;所述CRC处理模块还包括第一数据重组模块和报文校验模块;
所述第一CRC计算电路分别与所述第一数据重组模块和所述报文校验模块连接;
所述第一数据重组模块将来自外部的报文传输给所述第一CRC计算电路;所述第一CRC计算电路计算所述报文的第一CRC校验值,将所述报文和所述第一CRC校验值传输给所述报文校验模块;所述报文校验模块比较所述第一CRC校验值与所述报文携带的CRC校验值,若二者一致,删除所述报文携带的CRC校验值,输出删除后的报文。
11.根据权利要求9或10所述的CRC处理模块,其特征在于,所述CRC计算电路包括第二CRC计算电路,所述CRC处理模块还包括第二数据重组模块和封装模块;
所述封装模块分别与所述第二CRC计算电路和所述第二数据重组模块连接;
所述第二CRC计算电路计算来自外部的报文的第二CRC校验值,将所述报文和所述第二CRC校验值传输给所述封装模块;所述封装模块将所述第二CRC校验值封装在所述报文中,将封装后的报文经由所述第二数据重组模块传输给外部。
12.一种FPGA芯片,其特征在于,包括权利要求9-11任一项所述的CRC处理模块。
13.根据权利要求12所述的FPGA芯片,其特征在于,还包括第一接口驱动、第二接口驱动、业务处理模块和调度模块;
所述CRC处理模块分别与所述第一接口驱动、所述业务处理模块和所述调度模块连接,所述第二接口驱动分别与所述业务处理模块和所述调度模块连接,所述业务处理模块还与所述调度模块连接。
14.一种网络安全设备,其特征在于,包括相互连接的处理器和权利要求12或13所述的FPGA芯片。
15.一种报文处理方法,其特征在于,应用于网络安全设备,所述方法包括:
接收上一跳设备发送的报文,计算所述报文的CRC值;
基于所述CRC值对所述报文进行处理,将处理后的所述报文发送给下一跳设备;
其中,计算所述报文的CRC值,包括:
基于当前时钟周期输入的报文数据,生成所述当前时钟周期的数据异或结果;基于所述当前时钟周期的初值,生成所述当前时钟周期的初值异或结果;
对所述数据异或结果和所述初值异或结果进行并行异或运算,得到当前时钟周期的校验值;
若所述当前时钟周期为所述报文的最后一个周期,则对所述校验值进行修正操作得到所述报文的CRC值;若所述当前时钟周期不是所述最后一个周期,则基于所述校验值、所述数据异或结果和所述当前时钟周期的初值,生成下一个时钟周期的初值。
16.根据权利要求15所述的方法,其特征在于,所述基于当前时钟周期输入的报文数据,生成所述当前时钟周期的数据异或结果,包括:
将当前时钟周期输入的报文数据拆分成第一数目个数据段;
并行计算所述第一数目个数据段各自的异或结果;
对各数据段的异或结果进行并行异或运算,得到所述当前时钟周期的数据异或结果。
17.根据权利要求15或16所述的方法,其特征在于,所述基于所述当前时钟周期的初值,生成所述当前时钟周期的初值异或结果,包括:
将当前时钟周期的初值拆分成第二数目个初值段;
并行计算所述第二数目个初值段各自的异或结果;
对各初值段的异或结果进行并行异或运算,得到所述当前时钟周期的初值异或结果。
18.根据权利要求15所述的方法,其特征在于,所述基于当前时钟周期输入的报文数据,生成所述当前时钟周期的数据异或结果之前,还包括:
对当前时钟周期的报文数据中的有效位进行字节内倒序操作;
若所述有效位的长度小于预设位宽,对倒序操作后的报文数据进行位域调整。
19.根据权利要求15所述的方法,其特征在于,所述基于所述当前时钟周期的初值,生成所述当前时钟周期的初值异或结果之前,还包括:
对当前时钟周期的初值进行位域调整,使当前时钟周期的初值与当前时钟周期的报文数据高位对齐。
20.根据权利要求15所述的方法,其特征在于,所述对所述校验值进行修正操作得到所述报文的CRC值,包括:
确定预设位数与所述校验值的有效位数之间的位数差;
从所述最后一个周期的上一个时钟周期的校验值的最低位开始获取所述位数差的低位段;
将所述位数差的低位段补偿为当前时钟周期的校验值中所述位数差的高位段,得到补偿后的数值序列;
对所述数值序列进行字节内倒序处理;
对倒序处理后的数值序列进行取反,得到所述报文的CRC值。
CN202311485879.9A 2023-11-09 2023-11-09 Crc计算电路、芯片、报文处理方法及网络安全设备 Active CN117220833B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311485879.9A CN117220833B (zh) 2023-11-09 2023-11-09 Crc计算电路、芯片、报文处理方法及网络安全设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311485879.9A CN117220833B (zh) 2023-11-09 2023-11-09 Crc计算电路、芯片、报文处理方法及网络安全设备

Publications (2)

Publication Number Publication Date
CN117220833A true CN117220833A (zh) 2023-12-12
CN117220833B CN117220833B (zh) 2024-01-26

Family

ID=89046691

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311485879.9A Active CN117220833B (zh) 2023-11-09 2023-11-09 Crc计算电路、芯片、报文处理方法及网络安全设备

Country Status (1)

Country Link
CN (1) CN117220833B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117749912A (zh) * 2024-02-19 2024-03-22 浙江双元科技股份有限公司 一种基于fpga模块的数据传输控制方法及系统

Citations (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60218139A (ja) * 1984-04-13 1985-10-31 Hitachi Ltd プログラム破壊検出方式
JPS62132433A (ja) * 1985-12-02 1987-06-15 アドバンスト・マイクロ・デイバイシズ・インコ−ポレ−テツド Crcチェックビット計算装置およびそのプリセット方法
KR20020087823A (ko) * 2001-05-16 2002-11-23 손승일 입력 파라미터를 이용한 가변 길이의 crc-32 계산 및 검증블록 회로
CN101478369A (zh) * 2009-01-05 2009-07-08 深圳华为通信技术有限公司 一种crc校验的方法和系统及crc初值影响矩阵
CN101630997A (zh) * 2009-04-14 2010-01-20 华中科技大学 一种环形总线数据报文crc校验字的动态修正方法
EP2187526A1 (en) * 2008-11-07 2010-05-19 Alcatel Lucent Fast computation of frame check sequences (FCS/CRC)
BRPI1001987A2 (pt) * 2010-05-07 2011-08-16 Ministerio Das Cidades Departamento Nac De Transito sistema de comunicação seguro baseado na identificação e na troca de informações por meio de radiofrequência
WO2014015516A1 (en) * 2012-07-27 2014-01-30 Alcatel-Lucent Shanghai Bell Co., Ltd Method and apparatus for performing pipelined operations on parallel input data with feedback
CN103701566A (zh) * 2013-12-18 2014-04-02 华为技术有限公司 一种校验方法和装置
CN105721107A (zh) * 2016-02-03 2016-06-29 华信塞姆(成都)科技有限公司 一种分块计算crc以提高时钟频率的装置和方法
CN107451008A (zh) * 2017-06-29 2017-12-08 北京邮电大学 一种crc计算方法及装置
US20180041308A1 (en) * 2016-08-03 2018-02-08 Renesas Electronics Corporation Crc calculation circuit, semiconductor device, and radar system
CN108270508A (zh) * 2016-12-30 2018-07-10 华为技术有限公司 一种循环冗余校验crc实现方法、装置及网络设备
US10171108B1 (en) * 2015-12-29 2019-01-01 Altera Corporation Parallel CRC calculation for multiple packets without requiring a shifter
CN109462458A (zh) * 2019-01-11 2019-03-12 深圳市常茂信科技开发有限公司 一种多级流水电路实现并行crc的方法
US20200081767A1 (en) * 2017-05-11 2020-03-12 Gree Electric Appliances (Wuhan) Co., Ltd. Cyclic redundancy check circuit and method and apparatus thereof, chip and electronic device
CN111130562A (zh) * 2018-11-01 2020-05-08 中国科学院微电子研究所 Crc并行计算方法及系统
CN113110954A (zh) * 2021-04-23 2021-07-13 合肥恒烁半导体有限公司 一种crc码并行计算方法、装置及其应用
CN113821370A (zh) * 2021-01-22 2021-12-21 北京诺芮集成电路设计有限公司 一种用于数据传输错误校验的高速crc产生方法和装置
CN114679239A (zh) * 2022-04-02 2022-06-28 北京诺芮集成电路设计有限公司 一种高速网络中crc分段计算方法及装置
CN114884517A (zh) * 2022-04-21 2022-08-09 珠海一微半导体股份有限公司 一种crc硬件计算系统及芯片
CN117014017A (zh) * 2023-07-19 2023-11-07 西安邮电大学 一种基于高位宽数据计算多项式除法余数的crc计算方法

Patent Citations (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60218139A (ja) * 1984-04-13 1985-10-31 Hitachi Ltd プログラム破壊検出方式
JPS62132433A (ja) * 1985-12-02 1987-06-15 アドバンスト・マイクロ・デイバイシズ・インコ−ポレ−テツド Crcチェックビット計算装置およびそのプリセット方法
KR20020087823A (ko) * 2001-05-16 2002-11-23 손승일 입력 파라미터를 이용한 가변 길이의 crc-32 계산 및 검증블록 회로
EP2187526A1 (en) * 2008-11-07 2010-05-19 Alcatel Lucent Fast computation of frame check sequences (FCS/CRC)
CN101478369A (zh) * 2009-01-05 2009-07-08 深圳华为通信技术有限公司 一种crc校验的方法和系统及crc初值影响矩阵
CN101630997A (zh) * 2009-04-14 2010-01-20 华中科技大学 一种环形总线数据报文crc校验字的动态修正方法
BRPI1001987A2 (pt) * 2010-05-07 2011-08-16 Ministerio Das Cidades Departamento Nac De Transito sistema de comunicação seguro baseado na identificação e na troca de informações por meio de radiofrequência
WO2014015516A1 (en) * 2012-07-27 2014-01-30 Alcatel-Lucent Shanghai Bell Co., Ltd Method and apparatus for performing pipelined operations on parallel input data with feedback
CN103701566A (zh) * 2013-12-18 2014-04-02 华为技术有限公司 一种校验方法和装置
US10171108B1 (en) * 2015-12-29 2019-01-01 Altera Corporation Parallel CRC calculation for multiple packets without requiring a shifter
CN105721107A (zh) * 2016-02-03 2016-06-29 华信塞姆(成都)科技有限公司 一种分块计算crc以提高时钟频率的装置和方法
US20180041308A1 (en) * 2016-08-03 2018-02-08 Renesas Electronics Corporation Crc calculation circuit, semiconductor device, and radar system
CN108270508A (zh) * 2016-12-30 2018-07-10 华为技术有限公司 一种循环冗余校验crc实现方法、装置及网络设备
US20200081767A1 (en) * 2017-05-11 2020-03-12 Gree Electric Appliances (Wuhan) Co., Ltd. Cyclic redundancy check circuit and method and apparatus thereof, chip and electronic device
CN107451008A (zh) * 2017-06-29 2017-12-08 北京邮电大学 一种crc计算方法及装置
CN111130562A (zh) * 2018-11-01 2020-05-08 中国科学院微电子研究所 Crc并行计算方法及系统
CN109462458A (zh) * 2019-01-11 2019-03-12 深圳市常茂信科技开发有限公司 一种多级流水电路实现并行crc的方法
CN113821370A (zh) * 2021-01-22 2021-12-21 北京诺芮集成电路设计有限公司 一种用于数据传输错误校验的高速crc产生方法和装置
CN113110954A (zh) * 2021-04-23 2021-07-13 合肥恒烁半导体有限公司 一种crc码并行计算方法、装置及其应用
CN114679239A (zh) * 2022-04-02 2022-06-28 北京诺芮集成电路设计有限公司 一种高速网络中crc分段计算方法及装置
CN114884517A (zh) * 2022-04-21 2022-08-09 珠海一微半导体股份有限公司 一种crc硬件计算系统及芯片
CN117014017A (zh) * 2023-07-19 2023-11-07 西安邮电大学 一种基于高位宽数据计算多项式除法余数的crc计算方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117749912A (zh) * 2024-02-19 2024-03-22 浙江双元科技股份有限公司 一种基于fpga模块的数据传输控制方法及系统
CN117749912B (zh) * 2024-02-19 2024-05-10 浙江双元科技股份有限公司 一种基于fpga模块的数据传输控制方法及系统

Also Published As

Publication number Publication date
CN117220833B (zh) 2024-01-26

Similar Documents

Publication Publication Date Title
CN117220833B (zh) Crc计算电路、芯片、报文处理方法及网络安全设备
CN107154836B (zh) 一种基于fpga的并行循环冗余crc校验方法
US9106259B2 (en) Method and apparatus for performing a CRC check
CN101540654B (zh) 一种交织速率匹配和解交织解速率匹配方法
US20040194000A1 (en) System and method for optimizing iterative circuit for cyclic redundancy check (crc) calculation
WO2020082986A1 (zh) 一种发送数据的方法、接收数据的方法、设备及系统
KR20150130494A (ko) 모듈식 및 스케일러블 순환 중복 검사 계산 회로
US7403964B2 (en) Galois field multiplier array for use within a finite field arithmetic unit
WO2011103741A1 (zh) 数据的校验处理方法及装置
JP2009534895A (ja) Crcエラー検出装置およびcrcエラー検出コード計算方法
Anand Design of high speed CRC algorithm for ethernet on FPGA using reduced lookup table algorithm
JP4260688B2 (ja) データ送信装置、データ送受信システム、データ送信装置の制御方法およびデータ送受信システムの制御方法
KR101314301B1 (ko) 통신 네트워크에서 데이터를 인코딩하기 위한 방법 및 장치
CN116881188B (zh) 一种晶片到晶片接口互联的方法、设备及介质
US11868209B2 (en) Method and system for sequencing data checks in a packet
US6876869B1 (en) Coding assisting equipment, decoding assisting equipment, radio transmitter, and radio receiver
US20060075311A1 (en) Techniques to perform error detection
Cabal et al. High-speed computation of crc codes for fpgas
CN106209307A (zh) 多颗fpga片间互联方法与系统
EP2621121A2 (en) Supercharged codes
US20200412649A1 (en) Crc update mechanism
US8245103B2 (en) Arithmetic circuit for concatenated codes and address control method
CN113821370A (zh) 一种用于数据传输错误校验的高速crc产生方法和装置
JP2017175495A (ja) 送信装置、受信装置、通信システム、方法およびプログラム
JP3775597B2 (ja) データ配列の方法およびその装置

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