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

文档序号:9600517阅读:411来源:国知局
循环冗余校验实现方法、装置和网络设备的制造方法【
技术领域
】[0001]本发明涉及网络通信领域,尤其涉及循环冗余校验(cyclicredundancycheck,简称CRC)实现方法、装置和网络设备。【
背景技术
】[0002]在数据报文传输过程中,通常采用循环冗余校验(cyclicredundancycheck,简称CRC)算法计算得到巾贞校验序列(framechecksequence,简称FCS)字段的校验位,将该校验位添加在报文尾部以验证报文传输的正确性。[0003]随着芯片处理性能的提高,负责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)的两倍。再加上其他一些可能的逻辑扩充,虽然位宽是两倍的关系,但是整体资源占用是四倍以上,规模过于巨大甚至超出一些主要功能所需资源。[0004]以现场可编程门阵列(fie1d-programmab1egatearray,简称FPGA)作为负责CRC计算的处理器为例,图1示出了现有技术中所需的四输入(4-1nput)查找表(lookuptable,简称LUT)数量与数据位宽的关系,其中横坐标为数据位宽,纵坐标为LUT数量。LUT数量反映了占用资源的大小,从图1中可以看出,所需的LUT数量不是随着数据位宽线性增力口,而是几何级增长。【
发明内容】[0005]本发明实施例提供了一种CRC实现方法和装置,根据MOD修正待计算报文,节省计算CRC时所需计算模块数,从而节省CRC计算中所占用资源,提高计算效率和资源利用率。[0006]第一方面,提供了一种CRC实现方法,包括:[0007]CRC实现装置根据所述CRC实现装置的数据位宽对输入数据进行修正,得到修正数据,所述修正数据的长度为所述数据位宽的整数倍;[0008]所述CRC实现装置将所述修正数据作为被除数,CRC多项式作为除数,进行CRC计算得到中间CRC结果;[0009]所述CRC实现装置对所述中间CRC结果进行逆向修正,得到所述输入数据对应的最终CRC结果。[0010]在第一方面的第一种可能的实现方式中,所述CRC实现装置根据所述CRC实现装置的数据位宽对输入数据进行修正,得到修正数据包括:[0011]在所述输入数据的长度不是所述CRC实现装置的数据位宽整数倍的情况下,根据所述CRC实现装置的数据位宽,在所述输入数据的尾部填充0得到所述修正数据。[0012]根据第一方面或第一方面的第一种可能实现方式,在第一方面的第二种可能的实现方式中,所述对所述中间CRC结果进行逆向修正,得到所述输入数据对应的最终CRC结果包括:[0013]将所述中间CRC结果的高低位翻转后作为被除数,将所述CRC多项式的高低位翻转后作为除数,进行CRC计算得到计算结果,再将所述计算结果的高低位翻转后得到所述最终CRC结果。[0014]第二方面,提供了一种CRC实现装置,包括数据修正模块,CRC计算模块和结果修正模块;[0015]所述数据修正模块,用于根据所述CRC实现装置的数据位宽对输入数据进行修正,得到修正数据,所述修正数据的长度为所述数据位宽的整数倍;[0016]所述CRC计算模块,用于将所述修正数据作为被除数,CRC多项式作为除数,进行CRC计算得到中间CRC结果;[0017]所述结果修正模块,用于对所述中间CRC结果进行逆向修正,得到所述输入数据对应的最终CRC结果。[0018]在第二方面的第一种可能实现方式中,所述数据修正模块,具体用于在所述输入数据的长度不是所述CRC实现装置的数据位宽整数倍的情况下,根据所述CRC实现装置的数据位宽,在所述输入数据的尾部填充0得到所述修正数据。[0019]根据第二方面或第二方面的第一种可能实现方式,在第二方面的第二种可能实现方式中,所述结果修正模块,具体用于将所述中间CRC结果的高低位翻转后作为被除数,将所述CRC多项式的高低位翻转后作为除数,进行CRC计算得到计算结果,再将所述计算结果的高低位翻转后得到所述最终CRC结果。[0020]第三方面,提供了一种网络设备,包括转发芯片和通信接口;所述转发芯片包括上述第二方面所述的CRC实现装置;[0021]所述转发芯片,用于接收从所述通信接口收到的第一数据报文,从所述第一数据报文中获取净荷作为第一输入数据,从所述第一数据报文的前向校验序列FCS字段获取第一校验值;将所述第一输入数据提供给所述CRC实现装置,并从所述CRC装置获取所述第一输入数据对应的最终CRC结果;根据所述第一校验值和所述第一输入数据对应的最终CRC结果对所述第一数据报文进行校验。[0022]在第三方面的第一种可能实现方式中,所述转发芯片,还用于从第二数据报文中获取净荷作为第二输入数据,将所述第二输入数据提供给所述CRC实现装置,并从所述CRC装置获取所述第二输入数据对应的最终CRC结果;将所述第二输入数据对应的最终CRC结果作为校验值插入所述第二数据报文的FCS字段中,并从所述通信接口发送所述插入了校验值的数据报文。[0023]本发明实施例提供的CRC实现方法、装置及网络设备,根据所述CRC实现装置的数据位宽对输入数据进行修正,得到修正数据,所述修正数据的长度为所述数据位宽的整数倍;这样,可以保证MOD指示是固定的而不存在多种可能性,计算模块的数量不会随着数据位宽增加而增加,可以减少计算CRC时所需计算模块数。然后,将所述修正数据作为被除数,CRC多项式作为除数,进行CRC计算得到中间CRC结果;再对所述中间CRC结果进行逆向修正,得到所述输入数据对应的最终CRC结果;从而可以得到所述输入数据对应的正确的CRC计算结果。本发明提供的技术方案,CRC计算所需的计算资源基本上随数据位宽线性增加,相比于现有技术中所需的计算资源随着数据位宽成几何级增长,可以显著地减少CRC计算所占用的资源,提高计算效率和资源利用率,从而提高设备性能。【附图说明】[0024]图1是现有技术中CRC计算消耗资源的示意图;[0025]图2是本发明实施例提供的一种CRC实现方法流程图;[0026]图3是本发明实施例提供的对修正数据进行CRC计算的过程示意图;[0027]图4是本发明实施例提供的对中间CRC结果进行逆向修正的过程示意图;[0028]图5是本发明实施例提供的一种CRC实现装置结构示意图;[0029]图6是本发明实施例提供的一种网络设备结构示意图。【具体实施方式】[0030]为使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图和【具体实施方式】对本发明实施例作进一步详细的说明。[0031]本发明实施例提供了一种CRC实现方法,如图2所示,包括:[0032]201、对输入数据进行修正,得到修正数据;[0033]本发明实施例中,所述CRC实现方法可以由CRC实现装置执行。所述CRC实现装置可以是处理器,包括网络处理器(networkprocessor,简称NP),专用集成电路(applicat1n-specificintegratedcircuit,简称ASIC)芯片,或可编程逻辑器件,例如FPGA。[0034]CRC实现装置根据所述CRC实现装置的数据位宽,对输入数据进行修正。在所述输入数据的长度不是所述CRC实现装置的数据位宽整数倍的情况下,根据所述CRC实现装置的数据位宽,在所述输入数据的尾部填充0得到所述修正数据;所述修正数据的长度为所述数据位宽的整数倍。这样,进行CRC计算的数据长度固定,可以保证MOD指示是固定的而不存在多种可能性,从而可以减少计算模块的数量。[0035]举例来说,所述数据位宽为256bit,若所述数据的长度为248bit,则在所述输入数据的尾部填充8bit的0,所得到的修正数据的长度为256bit,为所述数据位宽的整数倍。若所述输入数据的长度为376bit,则在所述输入数据当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1