哈希计算处理方法及装置的制作方法

文档序号:6358964阅读:162来源:国知局
专利名称:哈希计算处理方法及装置的制作方法
技术领域
本发明涉及数据处理技术领域,特别涉及一种哈希计算处理方法及装置。
背景技术
哈希表(Hash Table)也叫散列表,它是一种用途很广且查找效率很高的数据表。 通过映射函数将关键字映射成一个值,这个映射函数叫做哈希函数,该值称之为哈希值。哈希值通常作为表的位置来访问记录,以加快查找的速度。但是,对于不同的关键字在执行哈希计算时,可能得到同一个哈希值,即关键字keyl兴Key2,而哈希值H(keyl) = H(Key2), 这种现象称为哈希冲突。为解决哈希冲突,通常做法是在同一个哈希值下建立哈希桶,每个哈希桶存储N 个记录,形成冲突链表,在查找时,首先通过哈希函数H找到给定值K的哈希地址H(K),然后以H(K)为地址读出其哈希桶内的N个记录,最后以关键字K对读出的N个记录进行精确匹配,如果发现有匹配的记录,则查找成功,否则查找失败。但是,这种方法存在的问题是在对报文中的关键字进行哈希计算时产生的哈希冲突链的长度无法控制,如果哈希冲突链的长度太长会导致报文的存储的效率很低。三态内容寻址存储器 CTernary Content Addressable Memory,简称 TCAM)是一种专用于进行查找操作的硬件芯片,主要用于快速查找访问控制列表(Access Control List, ACL)、路由等表项,将冲突表项放入TCAM中,能够使得哈希冲突链的长度可控。在实现本发明的过程中,发明人发现现有技术中至少存在如下问题现有技术中为解决报文的哈希冲突的问题而采用建立哈希桶的方法,无法控制哈希冲突链的长度,如果哈希冲突链的长度太长会导致报文的存储的效率很低;而通过TCAM实现哈希处理的方法,虽然能够控制哈希冲突链的长度,但是实现成本较高。

发明内容
本发明的实施例提供一种哈希计算处理方法及装置,用于解决现有技术存在着的哈希冲突链长度控制成本较高的问题。本发明实施例采用的技术方案为一种哈希计算处理方法,包括接收报文,提取所述报文中需要进行哈希计算的关键字;使用主用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的主用哈希值;判断与所述主用哈希值对应的主用哈希存储块中的第一冲突表项数是否小于预设的最大冲突数;其中,所述主用哈希存储块包括至少一个所述第一冲突表项,每个所述第一冲突表项对应一个关键字,每个所述第一冲突表项对应的关键字通过所述主用哈希函数计算后得到的所述主用哈希值相同;如果所述主用哈希存储块中的第一冲突表项数小于所述最大冲突数,则在所述主用哈希存储块中建立与所述关键字对应的第一冲突表项;如果所述主用哈希存储块中的第一冲突表项数不小于所述最大冲突数,使用备用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的备用哈希值,在与所述备用哈希值对应的备用哈希存储块中建立与所述关键字对应的第二冲突表项;其中,所述主用哈希值与所述备用哈希值不相同,所述备用哈希存储块包括至少一个所述第二冲突表项,每个所述第二冲突表项对应一个关键字,每个所述第二冲突表项对应的关键字通过所述备用哈希函数计算后得到的所述备用哈希值相同。一种哈希计算处理装置,包括接收模块,用于接收报文;关键字提取模块,用于提取所述报文中需要进行哈希计算的关键字;主用哈希计算模块,用于使用主用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的主用哈希值;第一判断模块,用于判断与所述主用哈希值对应的主用哈希存储块中的第一冲突表项数是否小于预设的最大冲突数;其中,所述主用哈希存储块包括至少一个所述第一冲突表项,每个所述第一冲突表项对应一个关键字,每个所述第一冲突表项对应的关键字通过所述主用哈希函数计算后得到的所述主用哈希值相同;第一冲突表项建立模块,用于当所述主用哈希存储块中的第一冲突表项数小于所述最大冲突数时,在所述主用哈希存储块中建立与所述关键字对应的第一冲突表项;备用哈希计算模块,用于当所述主用哈希存储块中的第一冲突表项数不小于所述最大冲突数时,使用备用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的备用哈希值;第二冲突表项建立模块,用于在与所述备用哈希值对应的备用哈希存储块中建立与所述关键字对应的第二冲突表项;其中,所述主用哈希值与所述备用哈希值不相同,所述备用哈希存储块包括至少一个所述第二冲突表项,每个所述第二冲突表项对应一个关键字,每个所述第二冲突表项对应的关键字通过所述备用哈希函数计算后得到的所述备用哈希值相同。本发明实施例提供的哈希计算处理方法及装置,通过提取报文中需要进行哈希计算的关键字,使用主用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的主用哈希值,判断与所述主用哈希值对应的主用哈希存储块中的第一冲突表项数是否小于预设的最大冲突数,如果所述主用哈希存储块中的第一冲突表项数小于所述最大冲突数,则在所述主用哈希存储块中建立与所述关键字对应的第一冲突表项,如果所述主用哈希存储块中的第一冲突表项数不小于所述最大冲突数,使用备用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的备用哈希值,在与所述备用哈希值对应的备用哈希存储块中建立与所述关键字对应的第二冲突表项。本发明实施例提供的哈希计算处理方法及装置,在对报文中的关键字进行哈希计算处理时,可以用低成本的方式解决现有技术对报文中的关键字进行哈希计算时生成的哈希冲突链的长度无法控制的问题,从而提高报文的存储效率。


为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。图1为本发明实施例一提供的哈希计算处理方法流程图;图2为本发明实施例二提供的哈希计算处理方法流程图;图3为本发明实施例二提供的哈希存储块的结构示意图;图4为本发明实施例二提供的第一冲突表项数小于最大冲突数时的主用哈希存储块的结构示意图;图5(a)为本发明实施例二提供的第一冲突表项数不小于最大冲突数时的主用哈希存储块的结构示意图;图5(b)为本发明实施例二提供的备用哈希存储块的结构示意图;图6为本发明实施例三提供的哈希计算处理方法流程图;图7为本发明实施例四提供的哈希计算处理方法流程图;图8为本发明实施例五提供的哈希计算处理装置结构示意图;图9为本发明实施例五提供的哈希计算处理装置工作流程图;图10为本发明实施例五提供的哈希计算处理装置的硬件电路示意图;图11为本发明实施例五提供的哈希计算处理装置结构示意图;图12为本发明实施例五提供的哈希计算处理装置结构示意图;图13为本发明实施例五提供的哈希计算处理装置结构示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。为使本发明技术方案的优点更加清楚,下面结合附图和实施例对本发明作详细说明。实施例一本实施例提供一种哈希计算处理方法,如图1所示,所述方法包括101、接收报文,提取所述报文中需要进行哈希计算的关键字;102、使用主用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的主用哈希值;103、判断与所述主用哈希值对应的主用哈希存储块中的第一冲突表项数是否小于预设的最大冲突数;其中,所述主用哈希存储块包括至少一个所述第一冲突表项,每个所述第一冲突表项对应一个关键字,每个所述第一冲突表项对应的关键字通过所述主用哈希函数计算后得到的所述主用哈希值相同;104、如果所述主用哈希存储块中的第一冲突表项数小于所述最大冲突数,则在所述主用哈希存储块中建立与所述关键字对应的第一冲突表项;
105、如果所述主用哈希存储块中的第一冲突表项数不小于所述最大冲突数,使用备用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的备用哈希值,在与所述备用哈希值对应的备用哈希存储块中建立与所述关键字对应的第二冲突表项;其中,所述主用哈希值与所述备用哈希值不相同,所述备用哈希存储块包括至少一个所述第二冲突表项,每个所述第二冲突表项对应一个关键字,每个所述第二冲突表项对应的关键字通过所述备用哈希函数计算后得到的所述备用哈希值相同。本发明实施例提供的哈希计算处理方法,通过提取报文中需要进行哈希计算的关键字,使用主用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的主用哈希值,判断与所述主用哈希值对应的主用哈希存储块中的第一冲突表项数是否小于预设的最大冲突数,如果所述主用哈希存储块中的第一冲突表项数小于所述最大冲突数,则在所述主用哈希存储块中建立与所述关键字对应的第一冲突表项,如果所述主用哈希存储块中的第一冲突表项数不小于所述最大冲突数,使用备用哈希函数对所述关键字进行哈希计算, 得到与所述关键字对应的备用哈希值,在与所述备用哈希值对应的备用哈希存储块中建立与所述关键字对应的第二冲突表项。本发明实施例提供的哈希计算处理方法,在对报文中的关键字进行哈希计算处理时,可以用低成本的方式解决现有技术对报文中的关键字进行哈希计算时生成的哈希冲突链的长度无法控制的问题,从而提高报文的存储效率。实施例二本实施例提供一种哈希计算处理方法,如图2所示,所述方法包括201、接收报文,提取所述报文中需要进行哈希计算的IP地址;202、使用主用哈希函数对所述报文的IP地址进行哈希计算,得到与所述报文的 IP地址对应的主用哈希值;203、判断与所述主用哈希值对应的主用哈希存储块中的第一冲突表项数是否小于预设的最大冲突数;其中,所述主用哈希存储块包括至少一个所述第一冲突表项,每个所述第一冲突表项对应一个报文的IP地址,每个所述第一冲突表项对应的报文的IP地址通过所述主用哈希函数计算后得到的所述主用哈希值相同;204、如果所述主用哈希存储块中的第一冲突表项数小于所述最大冲突数,则在所述主用哈希存储块中建立与所述报文的IP地址对应的第一冲突表项;其中,所述冲突表项包括是否使用备用哈希函数进行哈希计算的标记、表项有效标记以及所述报文的IP地址。如图3所示,图中的冲突表项中的是否使用备用哈希函数进行哈希计算的标记B用于标识对所述报文的IP地址使用主用哈希函数进行哈希计算,还是使用备用哈希函数进行哈希计算。例如,当B = 0时,表示使用主用哈希函数对所述报文的 IP地址进行哈希计算,当B = 1时,表示使用备用哈希函数对所述报文的IP地址进行哈希计算。图中冲突表项中的表项有效标志D用于标识所述冲突表项是否有效,当D= 1时,表示所述冲突表项有效,当D = 0时,表示所述冲突表项无效。所述哈希存储块包括一个是否存在通过备用哈希函数建立的冲突表项的标志和一个备用哈希函数类型标志。具体地,如图3所示,可以在哈希存储块中设置一个公共的备用哈希函数的计数器C,用于对通过备用哈希函数建立的第二冲突表项进行计数,当C = 0 时,表示不存在通过备用哈希函数建立的第二冲突表项,当C = 1时,表示存在一个通过备用哈希函数建立的第二冲突表项。图中的哈希存储块中的备用哈希函数类型标志T,表示是否设置了备用哈希函数,当T = 0时,表示没有设置备用哈希函数。205、当所述主用哈希存储块中的第一冲突表项数不小于所述最大冲突数时,判断所述主用哈希存储块中的所述备用哈希函数类型标志是否被设置;206、如果所述主用哈希存储块中的所述备用哈希函数类型标志已经被设置,根据所述备用哈希函数类型标志,选择与所述备用哈希函数类型标志对应的哈希函数作为备用哈希函数;207、如果所述主用哈希存储块中的所述备用哈希函数类型标志没有被设置,选择一个哈希函数作为备用哈希函数,并在所述主用哈希存储块中设置所述备用哈希函数的类型标志;具体地,可以选择一个比所述主用哈希函数产生哈希冲突少的哈希函数作为备用哈希函数;或者,通过使用至少一个哈希函数对所述报文的IP地址进行哈希计算,得到至少一个与所述报文的IP地址对应的哈希函数值,选择一个与所述至少一个哈希函数值对应的哈希存储块中的冲突表项数小于所述最大冲突数的哈希函数作为备用哈希函数。208、使用所述备用哈希函数对所述报文的IP地址进行哈希计算,得到与所述报文的IP地址对应的备用哈希值;209、在与所述备用哈希值对应的备用哈希存储块中建立与所述报文的IP地址对应的第二冲突表项。具体地,可以将所述主用哈希存储块中的公共的备用哈希函数的计数器的初始值设为一个预定的数(例如0),当所述主用哈希存储块中的第一冲突表项数不小于所述最大冲突数时,在所述备用哈希存储块中建立与所述报文的IP地址对应的第二冲突表项,并将所述主用哈希存储块中的所述公共的备用哈希函数的计数器的计数值加1。如图4所示,例如预设在哈希存储块中产生哈希冲突的最大冲突数为6,在接收到报文以后,提取所述报文需要进行哈希计算的IP地址,假设所述报文的IP地址为 10. 0. 0. 1,使用主用哈希函数对所述报文的IP地址10. 0. 0. 1进行哈希计算,得到与所述报文的IP地址10. 0. 0. 1对应的主用哈希值为1,判断与所述主用哈希值1对应的主用哈希存储块中的第一冲突表项数为0,小于所述最大冲突数6,在所述主用哈希存储块中建立与所述报文的IP地址10.0. 0. 1对应的第一冲突表项。如果又接收到报文11. 0. 0. 1,提取所述报文需要进行哈希计算的IP地址11.0. 0. 1,使用所述主用哈希函数对所述报文的 IP地址11.0. 0. 1进行哈希计算,得到与所述报文的IP地址11. 0. 0. 1对应的主用哈希值也是1,判断与所述主用哈希值1对应的主用哈希存储块中的第一冲突表项数为1,小于所述最大冲突数6,在所述主用哈希存储块中建立与所述报文的IP地址11.0. 0. 1对应的第一冲突表项,此时所述主用哈希存储块中的第一冲突表项数为2。类似地,依次接收到报文
12.0. 0. 1、报文13. 0. 0. 1、报文14. 0. 0. 1、报文15. 0. 0. 1,使用所述主用哈希函数依次对IP 地址 12. 0. 0. 1,13. 0. 0. 1,14. 0. 0. 1,15. 0. 0. 1 进行哈希计算,得到与 IP 地址 12. 0. 0. 1、
13.0. 0. 1,14. 0. 0. 1,15. 0. 0. 1对应的主用哈希值都为1,判断与所述主用哈希值1对应的主用哈希存储块中的第一冲突表项数分别为2,3,4,5,都小于所述最大冲突数6,在所述主用哈希存储块中建立与IP地址12. 0. 0. 1,13. 0. 0. 1,14. 0. 0. 1,15. 0. 0. 1对应的第一冲突表项,此时所述主用哈希存储块中的第一冲突表项数为6。
如图5所示(a)所示,假如这时接收到IP地址为16. 0. 0. 1的报文,使用所述主用哈希函数对所述报文的IP地址16. 0. 0. 1进行哈希计算,得到与所述报文的IP地址 16. 0. 0. 1对应的主用哈希值也为1,判断与所述主用哈希值1对应的主用哈希存储块中的第一冲突表项数为6,不小于所述最大冲突数6,判断所述主用哈希存储块中的所述备用哈希函数类型标志T是否被设置,如果所述主用哈希存储块中的所述备用哈希函数类型标志 T = 1,表示所述主用哈希存储块中的所述备用哈希函数类型标志已经被设置,根据所述备用哈希函数类型标志,选择与所述备用哈希函数类型标志对应的哈希函数作为备用哈希函数;如果所述主用哈希存储块中的所述备用哈希函数类型标志T = 0,表示所述主用哈希存储块中的所述备用哈希函数类型标志没有被设置,选择一个比所述主用哈希函数产生哈希冲突少的哈希函数作为备用哈希函数,或者通过使用至少一个哈希函数对所述报文的IP 地址进行哈希计算,得到至少一个与所述报文的IP地址对应的哈希函数值,选择一个与所述至少一个哈希函数值对应的哈希存储块中的冲突表项数小于所述最大冲突数的哈希函数作为备用哈希函数,使用所述备用哈希函数对所述报文的IP地址16. 0. 0. 1进行哈希计算,得到与所述报文的IP地址16. 0. 0. 1对应的备用哈希值为16,并在所述主用哈希存储块中设置所述备用哈希函数类型标志。如图5(b)所示,在与所述备用哈希值16对应的备用哈希存储块中建立与所述报文的IP地址16. 0. 0. 1对应的第二冲突表项,并将所述主用哈希存储块中的备用哈希函数的计数器的计数值加1。本发明实施例提供的哈希计算处理方法,通过在主用哈希存储块中设置一个是否存在通过备用哈希函数建立的冲突表项的标志和一个备用哈希函数类型标志,当主用哈希存储块中的第一冲突表项数不小于所述最大冲突数时,判断所述主用哈希存储块中的所述备用哈希函数类型标志是否被设置,如果所述主用哈希存储块中的所述备用哈希函数类型标志已经被设置,根据所述备用哈希函数类型标志,选择与所述备用哈希函数类型标志对应的哈希函数作为备用哈希函数,使用所述备用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的备用哈希值,在与所述备用哈希值对应的备用哈希存储块中建立与所述关键字对应的第二冲突表项。本发明实施例提供的哈希计算处理方法,在对报文中的关键字进行哈希计算处理时,可以用低成本的方式解决现有技术对报文中的关键字进行哈希计算时生成的哈希冲突链的长度无法控制的问题,从而提高报文的存储效率。实施例三本实施例提供一种哈希计算处理方法,如图6所示,所述方法包括601、使用主用哈希函数对报文的关键字进行哈希计算,得到与所述关键字对应的主用哈希值;602、在所述主用哈希存储块中查找与所述关键字对应的所述第一冲突表项,判断在所述主用哈希存储块中是否查到与所述关键字对应的所述第一冲突表项;603、如果在所述主用哈希存储块中查到与所述关键字对应的所述第一冲突表项, 返回查找结果;604、如果在所述主用哈希存储块中没有查到与所述关键字对应的所述第一冲突表项,获得所述主用哈希存储块中的所述是否存在通过备用哈希函数建立的冲突表项的标志和所述备用哈希函数类型标志;605、根据所述主用哈希存储块中的所述是否存在通过备用哈希函数建立的冲突表项的标志,判断是否存在通过备用哈希函数建立的与所述关键字对应的所述第二冲突表项;606、如果不存在通过备用哈希函数建立的与所述关键字对应的所述第二冲突表项,返回没有查到;607、如果存在通过备用哈希函数建立的与所述关键字对应的所述第二冲突表项, 使用所述主用哈希存储块中的所述备用哈希函数类型标志对应的备用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的备用哈希值;608、在与所述备用哈希值对应的备用哈希存储块中查找与所述关键字对应的所述第二冲突表项,判断在与所述备用哈希值对应的备用哈希存储块中是否查到与所述关键字对应的所述第二冲突表项;609、如果在所述备用哈希存储块中查到与所述关键字对应的所述第二冲突表项, 返回查找结果,如果在所述备用哈希存储块中没有查到与所述关键字对应的所述第二冲突表项,则返回没有查到。本发明实施例提供的哈希计算处理方法,如果在主用哈希存储块中没有查到与关键字对应的第一冲突表项,使用所述主用哈希存储块中的备用哈希函数类型标志对应的备用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的备用哈希值,在与所述备用哈希值对应的备用哈希存储块中查找与所述关键字对应的第二冲突表项,返回查找结果。和现有技术相比,本发明实施例提供的哈希计算处理方法,当在主用哈希存储块中没有找到与所述关键字对应的第一冲突表项时,则在备用哈希存储块中查找与所述关键字对应的第二冲突表项,可以缩短报文的查找时间,从而提高报文的查找效率。实施例四本实施例提供一种哈希计算处理方法,如图7所示,所述方法包括701、在主用哈希存储块中查找与报文的关键字对应的第一冲突表项;702、判断是否在所述主用哈希存储块中查到与所述关键字对应的第一冲突表项;703、如果在所述主用哈希存储块中查到与所述关键字对应的所述第一冲突表项, 删除所述与所述关键字对应的所述第一冲突表项;704、如果在所述主用哈希存储块中没有查到与所述关键字对应的第一冲突表项, 获得所述主用哈希存储块中的所述是否存在通过备用哈希函数建立的冲突表项的标志和所述备用哈希函数类型标志;705、根据所述主用哈希存储块中的所述是否存在通过备用哈希函数建立的冲突表项的标志,判断是否存在通过备用哈希函数建立的与所述关键字对应的所述第二冲突表项;具体地,可以通过所述主用哈希存储块中的公共的备用哈希函数的计数器判断是否存在通过备用哈希函数建立的第二冲突表项,如果所述主用哈希存储块中的备用哈希函数的计数器的计数值不为0,则存在通过备用哈希函数建立的冲突表项,如果所述主用哈希存储块中的备用哈希函数的计数器的计数值为0,则不存在通过备用哈希函数建立的冲突表项。706、如果不存在通过备用哈希函数建立的与所述关键字对应的所述第二冲突表项,返回没有查到;707、如果存在通过备用哈希函数建立的与所述关键字对应的所述第二冲突表项, 使用所述主用哈希存储块中的所述备用哈希函数类型标志对应的备用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的备用哈希值;708、在所述备用哈希值对应的备用哈希存储块中查找与所述关键字对应的第二的冲突表项;709、判断在所述备用哈希值对应的备用哈希存储块中是否查找与所述关键字对应的第二的冲突表项;710、如果在所述备用哈希存储块中查到与所述关键字对应的所述第二冲突表项, 删除所述与所述关键字对应的所述第二冲突表项,如果在所述备用哈希值对应的备用哈希存储块中没有查到与所述关键字对应的第二的冲突表项,则返回没有查到。具体地,在所述备用哈希存储块中删除与所述关键字对应的第二冲突表项之后, 将所述主用哈希存储块中的备用哈希函数的计数器的计数值减1。本发明实施例提供的哈希计算处理方法,如果在主用哈希存储块中查到与报文的关键字对应的第一冲突表项,在所述主用哈希存储块中删除所述与所述关键字对应的第一冲突表项,如果在所述主用哈希存储块中没有查到与所述关键字对应的第一冲突表项,在备用哈希存储块中查找与所述关键字对应的第二冲突表项,如果查到,则在所述备用哈希存储块中删除与所述关键字对应的第二冲突表项。和现有技术相比,本发明实施例提供的哈希计算处理方法,可以用低成本的方式解决现有技术对报文中的关键字进行哈希计算时生成的哈希冲突链的长度无法控制的问题,从而提高报文的存储效率。实施例五本实施例提供一种哈希计算处理装置,如图8所示,所述装置包括接收模块801,用于接收报文;关键字提取模块802,用于提取所述报文中需要进行哈希计算的关键字;主用哈希计算模块803,用于使用主用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的主用哈希值;第一判断模块804,用于判断与所述主用哈希值对应的主用哈希存储块中的第一冲突表项数是否小于预设的最大冲突数;其中,所述主用哈希存储块包括至少一个所述第一冲突表项,每个所述第一冲突表项对应一个关键字,每个所述第一冲突表项对应的关键字通过所述主用哈希函数计算后得到的所述主用哈希值相同;第一冲突表项建立模块805,用于当所述主用哈希存储块中的第一冲突表项数小于所述最大冲突数时,在所述主用哈希存储块中建立与所述关键字对应的第一冲突表项;备用哈希计算模块806,用于当所述主用哈希存储块中的第一冲突表项数不小于所述最大冲突数时,使用备用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的备用哈希值;第二冲突表项建立模块807,用于在与所述备用哈希值对应的备用哈希存储块中建立与所述关键字对应的第二冲突表项;其中,所述主用哈希值与所述备用哈希值不相同, 所述备用哈希存储块包括至少一个所述第二冲突表项,每个所述第二冲突表项对应一个关键字,每个所述第二冲突表项对应的关键字通过所述备用哈希函数计算后得到的所述备用哈希值相同。如图9所示,通过所述接收模块接收到报文以后,通过所述关键字提取模块提取所述报文中需要进行哈希计算的关键字,通过主用哈希计算模块使用主用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的主用哈希值,通过所述第一判断模块判断与所述主用哈希值对应的主用哈希存储块中的第一冲突表项数是否小于预设的最大冲突数,如果所述主用哈希存储块中的第一冲突表项数小于所述最大冲突数,通过所述第一冲突表项建立模块在所述主用哈希存储块中建立与所述关键字对应的第一冲突表项;如果所述主用哈希存储块中的第一冲突表项数不小于所述最大冲突数,通过所述备用哈希计算模块使用备用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的备用哈希值, 通过第二冲突表项建立模块在与所述备用哈希值对应的备用哈希存储块中建立与所述关键字对应的第二冲突表项。具体地,如图10所示,所述接收模块在接收到报文以后,所述关键字提取模块通过处理器(如CPU)提取所述报文中需要进行哈希计算的关键字,所述主用哈希计算模块通过所述处理器使用主用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的主用哈希值,并将所述主用哈希值发送到存储器进行存储。所述第一判断模块通过所述处理器判断与所述主用哈希值对应的主用哈希存储块中的第一冲突表项数是否小于在所述存储器中预设的最大冲突数,如果所述主用哈希存储块中的第一冲突表项数小于所述最大冲突数,所述第一冲突表项建立模块通过所述处理器在所述主用哈希存储块中建立与所述关键字对应的第一冲突表项,并通过接口单元将哈希计算处理结果发送到其他设备;如果所述主用哈希存储块中的第一冲突表项数不小于所述最大冲突数,所述备用哈希计算模块通过所述处理器使用备用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的备用哈希值,所述第二冲突表项建立模块通过所述处理器在与所述备用哈希值对应的备用哈希存储块中建立与所述关键字对应的第二冲突表项,并通过接口单元将哈希计算处理结果发送到其他设备。进一步的,所述冲突表项包括是否使用备用哈希函数进行哈希计算的标记、表项有效标记以及所述关键字。进一步的,所述哈希存储块包括一个是否存在通过备用哈希函数建立的冲突表项的标志和一个备用哈希函数类型标志。进一步的,如图11所示,所述主用哈希计算模块803包括判断单元8031,用于判断所述主用哈希存储块中的所述备用哈希函数类型标志是否被设置;第一选择单元8032,用于当所述主用哈希存储块中的所述备用哈希函数类型标志已经被设置时,根据所述主用哈希存储块中的所述备用哈希函数类型标志,选择与所述备用哈希函数类型标志对应的哈希函数作为备用哈希函数;第一计算单元8033,用于使用所述备用哈希函数对所述关键字进行哈希计算。进一步的,如图11所示,所述主用哈希计算模块803还可以包括第二选择单元8034,用于当所述主用哈希存储块中的所述备用哈希函数类型标志没有被设置时,选择一个哈希函数作为备用哈希函数;所述第一计算单元8033,还用于使用所述备用哈希函数对所述关键字进行哈希计算;设置单元8035,用于在所述主用哈希存储块中设置所述备用哈希函数类型标志。进一步的,如图11所示,所述第二选择单元8034还包括第一选择子单元80341,用于选择一个比所述主用哈希函数产生哈希冲突少的哈希函数作为备用哈希函数;第二选择子单元80342,用于通过使用至少一个哈希函数对所述关键字进行哈希计算,得到至少一个与所述关键字对应的哈希函数值,选择一个与所述至少一个哈希函数值对应的哈希存储块中的冲突表项数小于所述最大冲突数的哈希函数作为备用哈希函数。进一步的,如图12所示,所述装置还可以包括查找模块808,在所述主用哈希存储块中查找与所述关键字对应的所述第一冲突表项;返回模块809,用于当在所述主用哈希存储块中查到与所述关键字对应的所述第一冲突表项时,返回查找结果;获得模块810,用于当在所述主用哈希存储块中没有查到与所述关键字对应的所述第一冲突表项时,获得所述主用哈希存储块中的所述是否存在通过备用哈希函数建立的冲突表项的标志和所述备用哈希函数类型标志;第二判断模块811,用于根据所述主用哈希存储块中的所述是否存在通过备用哈希函数建立的冲突表项的标志,判断是否存在通过备用哈希函数建立的与所述关键字对应的所述第二冲突表项;所述返回模块809,用于当不存在通过备用哈希函数建立的与所述关键字对应的所述第二冲突表项,返回没有查到;所述备用哈希计算模块806,还用于当存在通过备用哈希函数建立的与所述关键字对应的所述第二冲突表项时,使用所述主用哈希存储块中的所述备用哈希函数类型标志对应的备用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的备用哈希值;所述查找模块808,还用于在与所述备用哈希值对应的备用哈希存储块中查找与所述关键字对应的所述第二冲突表项;所述返回模块809,还用于当在所述备用哈希存储块中查到与所述关键字对应的所述第二冲突表项时,返回查找结果;所述返回模块809,还用于当在所述备用哈希存储块中没有查到与所述关键字对应的所述第二冲突表项,返回没有查到。进一步的,如图13所示,所述装置还可以包括所述查找模块808,还用于在所述主用哈希存储块中查找与所述关键字对应的所述第一冲突表项;删除模块812,用于当在所述主用哈希存储块中查到与所述关键字对应的所述第一冲突表项时,删除所述与所述关键字对应的所述第一冲突表项。 进一步的,如图13所示,所述装置还可以包括 所述获得模块810,还用于当在所述主用哈希存储块中没有查到与所述关键字对应的所述第一冲突表项,获得所述主用哈希存储块中的所述是否存在通过备用哈希函数建立的冲突表项的标志和所述备用哈希函数类型标志;
所述第二判断模块811,还用于根据所述主用哈希存储块中的所述是否存在通过备用哈希函数建立的冲突表项的标志,判断是否存在通过备用哈希函数建立的与所述关键字对应的所述第二冲突表项;所述返回模块809,还用于当不存在通过备用哈希函数建立的与所述关键字对应的所述第二冲突表项时,返回没有查到;所述备用哈希计算模块806,还用于当存在通过备用哈希函数建立的与所述关键字对应的所述第二冲突表项时,使用所述主用哈希存储块中的所述备用哈希函数类型标志对应的备用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的备用哈希值;所述查找模块808,还用于在所述备用哈希值对应的备用哈希存储块中查找与所述关键字对应的第二的冲突表项;所述删除模块812,还用于当在所述备用哈希存储块中查到与所述关键字对应的所述第二冲突表项时,删除所述与所述关键字对应的所述第二冲突表项;所述返回模块809,还用于当在所述备用哈希值对应的备用哈希存储块中没有查到与所述关键字对应的第二的冲突表项时,返回没有查到。本发明实施例提供的哈希计算处理装置,通过关键字提取模块提取报文中需要进行哈希计算的关键字,通过主用哈希计算模块使用主用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的主用哈希值,通过第一判断模块判断与所述主用哈希值对应的主用哈希存储块中的第一冲突表项数是否小于预设的最大冲突数,如果所述主用哈希存储块中的第一冲突表项数小于所述最大冲突数,通过第一冲突表项建立模块在所述主用哈希存储块中建立与所述关键字对应的第一冲突表项,如果所述主用哈希存储块中的第一冲突表项数不小于所述最大冲突数,使用备用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的备用哈希值,通过第二冲突建立模块在与所述备用哈希值对应的备用哈希存储块中建立与所述关键字对应的第二冲突表项。本发明实施例提供的哈希计算处理装置,在对报文中的关键字进行哈希计算处理时,可以用低成本的方式解决现有技术对报文中的关键字进行哈希计算时生成的哈希冲突链的长度无法控制的问题,从而提高报文的存储效率。本发明实施例提供的哈希计算处理装置可以实现上述提供的方法实施例,具体功能实现请参见方法实施例中的说明,在此不再赘述。本发明实施例提供的哈希计算处理方法及装置可以适用于数据通信领域或无线通信领域的交换机路由器产品中,但不仅限于此。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存储记忆体(Random Access Memory, RAM)等。以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
权利要求
1.一种哈希计算处理方法,其特征在于,包括接收报文,提取所述报文中需要进行哈希计算的关键字;使用主用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的主用哈希值;判断与所述主用哈希值对应的主用哈希存储块中的第一冲突表项数是否小于预设的最大冲突数;其中,所述主用哈希存储块包括至少一个所述第一冲突表项,每个所述第一冲突表项对应一个关键字,每个所述第一冲突表项对应的关键字通过所述主用哈希函数计算后得到的所述主用哈希值相同;如果所述主用哈希存储块中的第一冲突表项数小于所述最大冲突数,则在所述主用哈希存储块中建立与所述关键字对应的第一冲突表项;如果所述主用哈希存储块中的第一冲突表项数不小于所述最大冲突数,使用备用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的备用哈希值,在与所述备用哈希值对应的备用哈希存储块中建立与所述关键字对应的第二冲突表项;其中,所述主用哈希值与所述备用哈希值不相同,所述备用哈希存储块包括至少一个所述第二冲突表项,每个所述第二冲突表项对应一个关键字,每个所述第二冲突表项对应的关键字通过所述备用哈希函数计算后得到的所述备用哈希值相同。
2.根据权利要求1述的方法,其特征在于,所述冲突表项包括是否使用备用哈希函数进行哈希计算的标记、表项有效标记以及所述关键字。
3.根据权利要求2所述的方法,其特征在于,所述哈希存储块包括一个是否存在通过备用哈希函数建立的冲突表项的标志和一个备用哈希函数类型标志。
4.根据权利要求3所述的方法,其特征在于,所述使用备用哈希函数对所述关键字进行哈希计算,具体包括判断所述主用哈希存储块中的所述备用哈希函数类型标志是否被设置,如果所述主用哈希存储块中的所述备用哈希函数类型标志已经被设置,根据所述备用哈希函数类型标志,选择与所述备用哈希函数类型标志对应的哈希函数作为备用哈希函数,使用所述备用哈希函数对所述关键字进行哈希计算。
5.根据权利要求4所述的方法,其特征在于,还包括如果所述主用哈希存储块中的所述备用哈希函数类型标志没有被设置,选择一个哈希函数作为备用哈希函数,使用所述备用哈希函数对所述关键字进行哈希计算;在所述主用哈希存储块中设置所述备用哈希函数类型标志。
6.根据权利要求5所述的方法,其特征在于,所述选择一个哈希函数作为备用哈希函数,包括选择一个比所述主用哈希函数产生哈希冲突少的哈希函数作为备用哈希函数;或者,通过使用至少一个哈希函数对所述关键字进行哈希计算,得到至少一个与所述关键字对应的哈希函数值,选择一个与所述至少一个哈希函数值对应的哈希存储块中的冲突表项数小于所述最大冲突数的哈希函数作为备用哈希函数。
7.根据权利要求3所述的方法,其特征在于,还包括在所述主用哈希存储块中查找与所述关键字对应的所述第一冲突表项,如果在所述主用哈希存储块中查到与所述关键字对应的所述第一冲突表项,返回查找结果;如果在所述主用哈希存储块中没有查到与所述关键字对应的所述第一冲突表项,获得所述主用哈希存储块中的所述是否存在通过备用哈希函数建立的冲突表项的标志和所述备用哈希函数类型标志;根据所述主用哈希存储块中的所述是否存在通过备用哈希函数建立的冲突表项的标志,判断是否存在通过备用哈希函数建立的与所述关键字对应的所述第二冲突表项,如果不存在通过备用哈希函数建立的与所述关键字对应的所述第二冲突表项,返回没有查到;如果存在通过备用哈希函数建立的与所述关键字对应的所述第二冲突表项,使用所述主用哈希存储块中的所述备用哈希函数类型标志对应的备用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的备用哈希值;在与所述备用哈希值对应的备用哈希存储块中查找与所述关键字对应的所述第二冲突表项,如果在所述备用哈希存储块中查到与所述关键字对应的所述第二冲突表项,返回查找结果;如果在所述备用哈希存储块中没有查到与所述关键字对应的所述第二冲突表项,则返回没有查到。
8.根据权利要求3所述的方法,其特征在于,还包括在所述主用哈希存储块中查找与所述关键字对应的所述第一冲突表项,如果在所述主用哈希存储块中查到与所述关键字对应的所述第一冲突表项,删除所述与所述关键字对应的所述第一冲突表项。
9.根据权利要求8所述的方法,其特征在于,还包括如果在所述主用哈希存储块中没有查到与所述关键字对应的所述第一冲突表项,获得所述主用哈希存储块中的所述是否存在通过备用哈希函数建立的冲突表项的标志和所述备用哈希函数类型标志;根据所述主用哈希存储块中的所述是否存在通过备用哈希函数建立的冲突表项的标志,判断是否存在通过备用哈希函数建立的与所述关键字对应的所述第二冲突表项,如果不存在通过备用哈希函数建立的与所述关键字对应的所述第二冲突表项,返回没有查到;如果存在通过备用哈希函数建立的与所述关键字对应的所述第二冲突表项,使用所述主用哈希存储块中的所述备用哈希函数类型标志对应的备用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的备用哈希值;在所述备用哈希值对应的备用哈希存储块中查找与所述关键字对应的第二的冲突表项,如果在所述备用哈希存储块中查到与所述关键字对应的所述第二冲突表项,删除所述与所述关键字对应的所述第二冲突表项;如果在所述备用哈希值对应的备用哈希存储块中没有查到与所述关键字对应的第二的冲突表项,则返回没有查到。
10.一种哈希计算处理装置,其特征在于,包括 接收模块,用于接收报文;关键字提取模块,用于提取所述报文中需要进行哈希计算的关键字; 主用哈希计算模块,用于使用主用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的主用哈希值;第一判断模块,用于判断与所述主用哈希值对应的主用哈希存储块中的第一冲突表项数是否小于预设的最大冲突数;其中,所述主用哈希存储块包括至少一个所述第一冲突表项,每个所述第一冲突表项对应一个关键字,每个所述第一冲突表项对应的关键字通过所述主用哈希函数计算后得到的所述主用哈希值相同;第一冲突表项建立模块,用于当所述主用哈希存储块中的第一冲突表项数小于所述最大冲突数时,在所述主用哈希存储块中建立与所述关键字对应的第一冲突表项;备用哈希计算模块,用于当所述主用哈希存储块中的第一冲突表项数不小于所述最大冲突数时,使用备用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的备用哈希值;第二冲突表项建立模块,用于在与所述备用哈希值对应的备用哈希存储块中建立与所述关键字对应的第二冲突表项;其中,所述主用哈希值与所述备用哈希值不相同,所述备用哈希存储块包括至少一个所述第二冲突表项,每个所述第二冲突表项对应一个关键字,每个所述第二冲突表项对应的关键字通过所述备用哈希函数计算后得到的所述备用哈希值相同。
11.根据权利要求10所述的装置,其特征在于,所述冲突表项包括是否使用备用哈希函数进行哈希计算的标记、表项有效标记以及所述关键字。
12.根据权利要求11所述的方法,其特征在于,所述哈希存储块包括一个是否存在通过备用哈希函数建立的冲突表项的标志和一个备用哈希函数类型标志。
13.根据权利要求12所述的装置,其特征在于,所述主用哈希计算模块还包括 判断单元,用于判断所述主用哈希存储块中的所述备用哈希函数类型标志是否被设置;第一选择单元,用于当所述主用哈希存储块中的所述备用哈希函数类型标志已经被设置时,根据所述主用哈希存储块中的所述备用哈希函数类型标志,选择与所述备用哈希函数类型标志对应的哈希函数作为备用哈希函数;第一计算单元,用于使用所述备用哈希函数对所述关键字进行哈希计算。
14.根据权利要求13所述的装置,其特征在于,所述主用哈希计算模块还包括第二选择单元,用于当所述主用哈希存储块中的所述备用哈希函数类型标志没有被设置时,选择一个哈希函数作为备用哈希函数;所述第一计算单元,还用于使用所述备用哈希函数对所述关键字进行哈希计算; 设置单元,用于在所述主用哈希存储块中设置所述备用哈希函数类型标志。
15.根据权利要求14所述的装置,其特征在于,所述第二选择单元还包括第一选择子单元,用于选择一个比所述主用哈希函数产生哈希冲突少的哈希函数作为备用哈希函数;第二选择子单元,用于通过使用至少一个哈希函数对所述关键字进行哈希计算,得到至少一个与所述关键字对应的哈希函数值,选择一个与所述至少一个哈希函数值对应的哈希存储块中的冲突表项数小于所述最大冲突数的哈希函数作为备用哈希函数。
16.根据权利要求12所述的装置,其特征在于,还包括查找模块,在所述主用哈希存储块中查找与所述关键字对应的所述第一冲突表项; 返回模块,用于当在所述主用哈希存储块中查到与所述关键字对应的所述第一冲突表项时,返回查找结果;获得模块,用于当在所述主用哈希存储块中没有查到与所述关键字对应的所述第一冲突表项时,获得所述主用哈希存储块中的所述是否存在通过备用哈希函数建立的冲突表项的标志和所述备用哈希函数类型标志;第二判断模块,用于根据所述主用哈希存储块中的所述是否存在通过备用哈希函数建立的冲突表项的标志,判断是否存在通过备用哈希函数建立的与所述关键字对应的所述第二冲突表项;所述返回模块,用于当不存在通过备用哈希函数建立的与所述关键字对应的所述第二冲突表项,返回没有查到;所述备用哈希计算模块,还用于当存在通过备用哈希函数建立的与所述关键字对应的所述第二冲突表项时,使用所述主用哈希存储块中的所述备用哈希函数类型标志对应的备用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的备用哈希值;所述查找模块,还用于在与所述备用哈希值对应的备用哈希存储块中查找与所述关键字对应的所述第二冲突表项;所述返回模块,还用于当在所述备用哈希存储块中查到与所述关键字对应的所述第二冲突表项时,返回查找结果;所述返回模块,还用于当在所述备用哈希存储块中没有查到与所述关键字对应的所述第二冲突表项,返回没有查到。
17.根据权利要求12所述的装置,其特征在于,还包括所述查找模块,还用于在所述主用哈希存储块中查找与所述关键字对应的所述第一冲突表项;删除模块,用于当在所述主用哈希存储块中查到与所述关键字对应的所述第一冲突表项时,删除所述与所述关键字对应的所述第一冲突表项。
18.根据权利要求17所述的装置,其特征在于,还包括所述获得模块,还用于当在所述主用哈希存储块中没有查到与所述关键字对应的所述第一冲突表项,获得所述主用哈希存储块中的所述是否存在通过备用哈希函数建立的冲突表项的标志和所述备用哈希函数类型标志;所述第二判断模块,还用于根据所述主用哈希存储块中的所述是否存在通过备用哈希函数建立的冲突表项的标志,判断是否存在通过备用哈希函数建立的与所述关键字对应的所述第二冲突表项;所述返回模块,还用于当不存在通过备用哈希函数建立的与所述关键字对应的所述第二冲突表项时,返回没有查到;所述备用哈希计算模块,还用于当存在通过备用哈希函数建立的与所述关键字对应的所述第二冲突表项时,使用所述主用哈希存储块中的所述备用哈希函数类型标志对应的备用哈希函数对所述关键字进行哈希计算,得到与所述关键字对应的备用哈希值;所述查找模块,还用于在所述备用哈希值对应的备用哈希存储块中查找与所述关键字对应的第二的冲突表项;所述删除模块,还用于当在所述备用哈希存储块中查到与所述关键字对应的所述第二冲突表项时,删除所述与所述关键字对应的所述第二冲突表项;所述返回模块,还用于当在所述备用哈希值对应的备用哈希存储块中没有查到与所述关键字对应的第二的冲突表项时,返回没有查到。
全文摘要
本发明实施例公开了一种哈希计算处理方法及装置,所述方法包括接收报文,提取所述报文中需要进行哈希计算的关键字;使用主用哈希函数对所述关键字进行哈希计算,判断与主用哈希值对应的主用哈希存储块中的第一冲突表项数是否小于预设的最大冲突数;如果所述主用哈希存储块中的第一冲突表项数小于所述最大冲突数,则在所述主用哈希存储块中建立与所述关键字对应的第一冲突表项;如果所述主用哈希存储块中的第一冲突表项数不小于所述最大冲突数,使用备用哈希函数对所述关键字进行哈希计算,在与备用哈希值对应的备用哈希存储块中建立与所述关键字对应的第二冲突表项。本发明适用于数据处理技术领域中的哈希计算处理。
文档编号G06F17/30GK102308296SQ201180001122
公开日2012年1月4日 申请日期2011年7月22日 优先权日2011年7月22日
发明者卢胜文 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1