循环冗余校验实现方法、装置和网络设备制造方法及图纸

技术编号:12919634 阅读:53 留言:0更新日期:2016-02-25 01:25
本发明专利技术实施例公开了一种CRC实现方法和装置,通过对输入数据进行修正,得到修正数据,对所述修正数据进行CRC计算,得到中间CRC结果,再对所述中间CRC结果进行逆向修正,得到所述输入数据对应的最终CRC结果。可以减少计算CRC时所需计算模块数,从而节省CRC计算中所占用资源,提高计算效率和资源利用率。

【技术实现步骤摘要】

本专利技术涉及网络通信领域,尤其涉及循环冗余校验(cyclic redundancy check,简称CRC)实现方法、装置和网络设备。
技术介绍
在数据报文传输过程中,通常采用循环冗余校验(cyclic redundancy check,简称CRC)算法计算得到巾贞校验序列(frame check sequence,简称FCS)字段的校验位,将该校验位添加在报文尾部以验证报文传输的正确性。随着芯片处理性能的提高,负责CRC计算的处理器,一拍时序的数据位宽越来越大。例如,目前数据位宽可达到256比特(英文:bit)。但是,由于数据报文的长度不确定,导致最后一拍时序的t旲(modulus,符号:M0D)指7K不确定,存在N种可能性(Ν =数据位览/8bit)。为了保证处理效率,最后一拍通常采用并行计算所有可能性再通过选择器根据MOD指示选择的处理方式。这样,占用的计算资源随着数据位宽的增大会成几何级数增长。例如,数据位宽为256bit的处理器,CRC计算所需的计算模块数为:256bit/8bit,即32,而数据位宽为128bit的处理器,CRC计算所需的计算模块数为:128bit/8bit,S卩16。数据位宽为256bit的处理器所需的计算模块数是数据位宽为128bit的处理器的两倍。同时,数据位宽为256bit的处理器的每个计算模块所占用的资源规模(256bit)又是数据位宽为128bit的处理器的每个计算模块所占用的资源规模(128bit)的两倍。再加上其他一些可能的逻辑扩充,虽然位宽是两倍的关系,但是整体资源占用是四倍以上,规模过于巨大甚至超出一些主要功能所需资源。以现场可编程门阵列(fie 1 d-programmab 1 e gate array,简称FPGA)作为负责CRC计算的处理器为例,图1示出了现有技术中所需的四输入(4-1nput)查找表(lookuptable,简称LUT)数量与数据位宽的关系,其中横坐标为数据位宽,纵坐标为LUT数量。LUT数量反映了占用资源的大小,从图1中可以看出,所需的LUT数量不是随着数据位宽线性增力口,而是几何级增长。
技术实现思路
本专利技术实施例提供了一种CRC实现方法和装置,根据MOD修正待计算报文,节省计算CRC时所需计算模块数,从而节省CRC计算中所占用资源,提高计算效率和资源利用率。第一方面,提供了一种CRC实现方法,包括:CRC实现装置根据所述CRC实现装置的数据位宽对输入数据进行修正,得到修正数据,所述修正数据的长度为所述数据位宽的整数倍;所述CRC实现装置将所述修正数据作为被除数,CRC多项式作为除数,进行CRC计算得到中间CRC结果;所述CRC实现装置对所述中间CRC结果进行逆向修正,得到所述输入数据对应的最终CRC结果。在第一方面的第一种可能的实现方式中,所述CRC实现装置根据所述CRC实现装置的数据位宽对输入数据进行修正,得到修正数据包括:在所述输入数据的长度不是所述CRC实现装置的数据位宽整数倍的情况下,根据所述CRC实现装置的数据位宽,在所述输入数据的尾部填充0得到所述修正数据。根据第一方面或第一方面的第一种可能实现方式,在第一方面的第二种可能的实现方式中,所述对所述中间CRC结果进行逆向修正,得到所述输入数据对应的最终CRC结果包括:将所述中间CRC结果的高低位翻转后作为被除数,将所述CRC多项式的高低位翻转后作为除数,进行CRC计算得到计算结果,再将所述计算结果的高低位翻转后得到所述最终CRC结果。第二方面,提供了一种CRC实现装置,包括数据修正模块,CRC计算模块和结果修正模块;所述数据修正模块,用于根据所述CRC实现装置的数据位宽对输入数据进行修正,得到修正数据,所述修正数据的长度为所述数据位宽的整数倍;所述CRC计算模块,用于将所述修正数据作为被除数,CRC多项式作为除数,进行CRC计算得到中间CRC结果;所述结果修正模块,用于对所述中间CRC结果进行逆向修正,得到所述输入数据对应的最终CRC结果。在第二方面的第一种可能实现方式中,所述数据修正模块,具体用于在所述输入数据的长度不是所述CRC实现装置的数据位宽整数倍的情况下,根据所述CRC实现装置的数据位宽,在所述输入数据的尾部填充0得到所述修正数据。根据第二方面或第二方面的第一种可能实现方式,在第二方面的第二种可能实现方式中,所述结果修正模块,具体用于将所述中间CRC结果的高低位翻转后作为被除数,将所述CRC多项式的高低位翻转后作为除数,进行CRC计算得到计算结果,再将所述计算结果的高低位翻转后得到所述最终CRC结果。第三方面,提供了一种网络设备,包括转发芯片和通信接口 ;所述转发芯片包括上述第二方面所述的CRC实现装置;所述转发芯片,用于接收从所述通信接口收到的第一数据报文,从所述第一数据报文中获取净荷作为第一输入数据,从所述第一数据报文的前向校验序列FCS字段获取第一校验值;将所述第一输入数据提供给所述CRC实现装置,并从所述CRC装置获取所述第一输入数据对应的最终CRC结果;根据所述第一校验值和所述第一输入数据对应的最终CRC结果对所述第一数据报文进行校验。在第三方面的第一种可能实现方式中,所述转发芯片,还用于从第二数据报文中获取净荷作为第二输入数据,将所述第二输入数据提供给所述CRC实现装置,并从所述CRC装置获取所述第二输入数据对应的最终CRC结果;将所述第二输入数据对应的最终CRC结果作为校验值插入所述第二数据报文的FCS字段中,并从所述通信接口发送所述插入了校验值的数据报文。本专利技术实施例提供的CRC实现方法、装置及网络设备,根据所述CRC实现装置的数据位宽对输入数据进行修正,得到修正数据,所述修正数据的长度为所述数据位宽的整数倍;这样,可以保证MOD指示是固定的而不存在多种可能性,计算模块的数量不会随着数据位宽增加而增加,可以减少计算CRC时所需计算模块数。然后,将所述修正数据作为被除数,CRC多项式作为除数,进行CRC计算得到中间CRC结果;再对所述中间CRC结果进行逆向修正,得到所述输入数据对应的最终CRC结果;从而可以得到所述输入数据对应的正确的CRC计算结果。本专利技术提供的技术方案,CRC计算所需的计算资源基本上随数据位宽线性增加,相比于现有技术中所需的计算资源随着数据位宽成几何级增长,可以显著地减少CRC计算所占用的资源,提高计算效率和资源利用率,从而提高设备性能。【附图说明】图1是现有技术中CRC计算消耗资源的示意图;图2是本专利技术实施例提供的一种CRC实现方法流程图;图3是本专利技术实施例提供的对修正数据进行CRC计算的过程示意图;图4是本专利技术实施例提供的对中间CRC结果进行逆向修正的过程示意图;图5是本专利技术实施例提供的一种CRC实现装置结构示意图;图6是本专利技术实施例提供的一种网络设备结构示意图。【具体实施方式】为使本专利技术实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图和【具体实施方式】对本专利技术实施例作进一步详细的说明。本专利技术实施例提供了一种CRC实现方法,如图2所示,包括:201、对输入数据进行修正,得到修正数据;本专利技术实施例中,所述CRC实现方法可以由CRC实现装置执行。所述CRC实现装置可以是处理器,包括网络处理器(本文档来自技高网
...

【技术保护点】
一种循环冗余校验CRC实现方法,其特征在于,包括:CRC实现装置根据所述CRC实现装置的数据位宽对输入数据进行修正,得到修正数据,所述修正数据的长度为所述数据位宽的整数倍;所述CRC实现装置将所述修正数据作为被除数,CRC多项式作为除数,进行CRC计算得到中间CRC结果;所述CRC实现装置对所述中间CRC结果进行逆向修正,得到所述输入数据对应的最终CRC结果。

【技术特征摘要】

【专利技术属性】
技术研发人员:邹龙吟刘轶徐正华
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1