哈希函数电路、芯片及通信设备制造技术

技术编号:30827157 阅读:13 留言:0更新日期:2021-11-18 12:28
本发明专利技术实施例公开了一种哈希函数电路、芯片和通信设备,应用于芯片技术领域,可以实现SpookyHash的硬件应用。包括:求余运算模块,用于根据输入的第一字段的字节数,对所述第一字段进行第一逻辑运算得到第二字段,并输出所述第二字段,所述第一逻辑运算与所述第一字段的字节数对应,所述第一字段的字节数小于16字节;结束运算模块,用于对所述求余运算模块输出的所述第二字段进行多级第二逻辑运算,以得到目标哈希字段,所述第二逻辑运算为进行异或运算和左移运算之后,再将异或运算结果和左移运算结果进行加法运算的运算。运算结果进行加法运算的运算。运算结果进行加法运算的运算。

【技术实现步骤摘要】
哈希函数电路、芯片及通信设备


[0001]本专利技术实施例涉及芯片
,尤其涉及一种哈希函数电路、芯片及通信设备。

技术介绍

[0002]在网络数据处理的应用中,针对同一个客户端的会话请求,需要路由到同一台机器,以保证数据的一致性,在该路由过程中就需要借助哈希(Hash)算法来实现,哈希算法是把任意长度的输入,压缩变换成固定长度的输出,该输出称为哈希值,具体的,可以通过提取输入的网络数据包中的IP地址和端口地址等关键字段,进行哈希计算,得到哈希值,并将哈希至与目的地址对应保存,作为哈希变的地址查表,以实现负载均衡。近年来提出的奇异哈希(SpookyHash)算法可以实现更好的均衡效果,SpookyHash可以根据任意长度的输入,生成128位、64位和32位的哈希值。但是SpookyHash因为计算过程较复杂,因此并未在专用集成电路(Application Specific Integrated Circuit,ASIC)中进行硬件应用,因此实现SpookyHash的硬件应用是亟需解决的问题。

技术实现思路

[0003]本专利技术实施例提供哈希函数电路、芯片及通信设备,可以实现SpookyHash的硬件应用。
[0004]为了解决上述技术问题,本专利技术实施例是这样实现的:
[0005]第一方面,提供一种哈希函数电路,用于实现SpookyHash函数的运算,包括:
[0006]求余运算模块,用于根据输入的第一字段的字节数,对所述第一字段进行第一逻辑运算得到第二字段,并输出所述第二字段,所述第一逻辑运算与所述第一字段的字节数对应,所述第一字段的字节数小于16字节;
[0007]结束运算模块,用于对所述求余运算模块输出的所述第二字段进行多级第二逻辑运算,以得到目标哈希字段,所述第二逻辑运算为进行异或运算和左移运算之后,再将异或运算结果和左移运算结果进行加法运算的运算。
[0008]第二方面,提供一种芯片,包括:接口电路以及如第一方面的哈希函数电路,所述接口电路用于接收待处理字段,所述待处理字段包括所述第一字段。
[0009]第三方面,提供一种通信设备,包括:如第一方面的哈希函数电路,或者,如第二方面的芯片。
[0010]在本专利技术实施例提供一种哈希函数电路,用于实现SpookyHash函数的运算,包括:求余运算模块,用于根据输入的第一字段的字节数,对第一字段进行第一逻辑运算得到第二字段,并输出第二字段,第一逻辑运算与第一字段的字节数对应,第一字段的字节数小于16字节;结束运算模块,用于对求余运算模块输出的第二字段进行多级第二逻辑运算,以得到目标哈希字段,第二逻辑运算为进行异或运算和左移运算之后,再将异或运算结果和左移运算结果进行加法运算的运算。通过该方案,可以通过硬件电路中求余运算模块,实现SpookyHash函数中的求余运算子函数(spooky_remainder_mix),并且可以通过硬件电路中
结束运算模块,实现SpookyHash函数中的结束运算子函数(Spooky_end),从而可以实现SpookyHash的硬件应用。
附图说明
[0011]图1为本专利技术实施例提供的一种基于哈希算法的网络数据包处理流程示意图;
[0012]图2为本专利技术实施例提供的一种针对网络数据包进行哈希计算的流程示意图;
[0013]图3为本专利技术实施例提供的一种SpookyHash算法的计算流程示意图;
[0014]图4A为本专利技术实施例提供一种哈希函数电路的结构示意图一;
[0015]图4B为本专利技术实施例提供一种哈希函数电路的结构示意图二;
[0016]图4C为本专利技术实施例提供一种哈希函数电路的结构示意图三;
[0017]图5为本专利技术实施例提供的一种求余运算模块的结构示意图;
[0018]图6为本专利技术实施例提供的一种第一逻辑单元的结构示意图;
[0019]图7为本专利技术实施例提供的一种结束运算模块的结构示意图;
[0020]图8为本专利技术实施例提供的一种设置有第一寄存器的结束运算模块的结构示意图;
[0021]图9为本专利技术实施例提供的一种第二逻辑单元的结构示意图;
[0022]图10为本专利技术实施例提供的一种混合运算模块的结构示意图;
[0023]图11为本专利技术实施例提供的一种设置有第二寄存器的混合运算模块的结构示意图;
[0024]图12为本专利技术实施例提供的一种芯片的结构示意图。
具体实施方式
[0025]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0026]需要说明的是,本专利技术实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本专利技术实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
[0027]首先对本专利技术实施例的相关
技术实现思路
进行介绍:
[0028]Hash可以翻译做“哈希”或“散列”,Hash算法是把固定或任意长度的输入,变换成固定长度的输出,该输出就是哈希值。这种转换是一种压缩映射,通常哈希值的空间远小于输入的空间。简单而言Hash是一种将一定长度的消息压缩到某一固定长度的消息摘要的处理。在数据交换网络处理中,针对同一个客户端(即同一个用户)的会话请求,需要路由到同一台机器,以保证数据的一致性,就需要借助哈希算法得到哈希表来实现。
[0029]实际应用中,终端设备、路由器、交换机、服务器等数据交换网络中的设备均有可能借助哈希算法去处理网络数据包。示例性的,如图1所示为一种基于哈希算法的网络数据包处理流程示意图,在该处理流程中,首先可以针对获取的网络数据包进行数据包解析,以
提取数据包中的IP地址和端口地址等关键字段,然后针对这些关键字段进行哈希计算,最后使用哈希计算的结果作为路由信息,该路由信息可以为哈希计算后得到的固定长度字段的表格,通过这样的路由信息达到负载均衡的目的。
[0030]进一步的,如图2所示,为一种针对网络数据包进行哈希计算的流程示意图,具体的计算流程包括:
[0031]201、获取报文的信息;
[0032]对于普通的IP报文获取的报文信息可以包括:源媒体访问控制(Media Access Control,MAC)地址、目的MAC地址、源网际互连协议(Internet Protocol,IP)地址、目的IP地址、虚拟局域网(Virtual Local Area Network,VLAN)、四层(L4层)端口号等;对于隧道报文,则为报文的外层和内层报文的上述几种报文信息字段。
[0033]示例性的,如图2中所示,获取报文的报头部本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种哈希函数电路,其特征在于,用于实现奇异哈希SpookyHash函数的运算,包括:求余运算模块,用于根据输入的第一字段的字节数,对所述第一字段进行第一逻辑运算得到第二字段,并输出所述第二字段,所述第一逻辑运算与所述第一字段的字节数对应,所述第一字段的字节数小于16字节;结束运算模块,用于对所述求余运算模块输出的所述第二字段进行多级第二逻辑运算,以得到目标哈希字段,所述第二逻辑运算为进行异或运算和左移运算之后,再将异或运算结果和左移运算结果进行加法运算的运算。2.根据权利要求1所述的哈希函数电路,其特征在于,所述哈希函数电路还包括:判断控制模块,用于在确定输入字段小于16字节时,将所述输入字段作为所述第一字段输入至所述求余运算模块。3.根据权利要求2所述的哈希函数电路,其特征在于,所述哈希函数实现电路还包括:混合运算模块;所述判断控制模块,还用于在确定所述输入字段大于或等于16字节时,将第三字段输入至所述混合运算模块,所述第三字段为所述输入字段的部分或全部字段;所述混合运算模块,用于针对所述第三字段进行至少一次多级第三逻辑运算,以得到目标运算字段,并将所述目标运算字段和所述第一字段输出至所述求余运算模块,所述第一字段为所述第三字段经过所述至少一次多级逻辑运算后的第一剩余字段;所述求余运算模块,具体用于根据所述混合运算模块输出的所述第一字段的字节数和所述目标运算字段,对所述第一字段,进行第一逻辑运算得到第二字段。4.根据权利要求2所述的哈希函数电路,其特征在于,所述判断控制模块,还用于在确定所述输入字段大于或等于16字节时,将所述输入字段作为所述第一字段输入至所述求余运算模块;所述求余运算模块,具体用于根据输入的所述第一字段的字节数和预设初始字段,对所述第一字段进行第一逻辑运算得到第二字段。5.根据权利要求3所述的哈希函数电路,其特征在于,所述判断控制模块,具体用于在确定所述输入字段小于32字节,且大于或等于16字节时,将所述输入字段与预设初始字段进行异或运算得到所述第三字段,并将所述第三字段输入至所述混合运算模块;所述混合运算模块,具体用于对所述第三字段的前32个字节进行一次多级第三逻辑运算,以得到所述目标运算字段,所述第一字段为所述第三字段中除前32个字节以外的字段。6.根据权利要求3所述的哈希函数电路,其特征在于,所述判断控制模块,具体用于在确定所述输入字段大于或等于32字节时,将所述输入字段作为所述第三字段输入至所述混合运算模块;所述混合运算模块,具体用于对所述第三字段的前32个字节,进行多级第三逻辑运算以得到第一运算字段,并将所述第三字段中除前32个字节以外的第二剩余字段输入至所述判断控制模块;所述判断控制模块,还用于:在确定所述第二剩余字段大于或等于32个字节时,将所述第二剩余字段与所述第一运算字段进行异或运算,并将异或运算的结果作为所述第三字段,再次输入至所述混合运算
模块;在确定所述第二剩余字段小于16个字节时,将所述第二剩余字段作为所述第一字段输入至所述求余运算模块,所述第一运算字段作为所述目标运算字段;在确定所述第二剩余字段小于32字节,且大于或等于16字节时,将所述第二剩余字段与所述第一运算字段进行异或运算,并将异或运算的结果作为所述第三字段,再次输入至所述混合运算模块;所述混合运算模块,具体用于对所述第三字段的前32个字节进行一次多级第三逻辑运算,以得到所述目标运算字段。7.根据权利要求3或4所述的哈希函数电路,其特征在于,所述求余运算模块的结构包括:16个逻辑运算支路,每个逻辑运算支路对应于0至15个字节数;所述求余运算模块,用于根据输入的第一字段的字节数,确定用于进行第一逻辑运算的目标支路。8.根据权利要求7所述的哈希函数电路,其特征在于,所述16个逻辑运算支路包括:对应于第一字节数的逻辑运算支路包括:左移单元和第一加法单元,所述左移单元用于对所述第一字段进行左移运算,将左移运算结果输出至所述第一加法单元,所述第一加法单元用于对所述左移运算结果和目标字段进行加法运算,以得到所述第二字段;所述第一字节数为以下字节数中的一种:2、3、5、6、7、10、11、13、14、15;对应于第二字节数的逻辑运算支路包括:第二加法单元,用于对所述第一字段和所述目标字段进行加法运算,以得到所述第二字段;所述第二字节数为以下字节数中的一种:1、4、8、9;字节数为0的逻辑运算支路包括:两个第一子支路,每个第一子支路中包括一个第三加法单元,所述两个第一子支路对应不同比特数据;所述第三加法单元用于对预设常数和所述目标字段进行加法运算,以得到所述第二字段;字节数为12的逻辑运算支路包括:两个第二子支路,每个第二子支路中包括一个第四加法单元,所述两个第二子支路对应不同比特数据;所述第四加法单元用于对所述第一字段和所述目标字段进行加法运算;其中,所述目标字段为目标运算字段或者预设初始字段。9.根据权利要求1至6任一项所述的哈希函数电路,其特征在于,所述结束运算模块,包括:11级第一逻辑单元;每级第一逻辑单元中包括:异或单元、左移单元和加法单元,每级第一逻辑单元中异或单元的输出端和左移单元的输出端,分别连接所述加法单元的不同输入端。10.根据权利要求9所述的哈希函数电路,其特征在于,4≤i≤8,第i级中异...

【专利技术属性】
技术研发人员:王增丽
申请(专利权)人:OPPO广东移动通信有限公司
类型:发明
国别省市:

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

1