一种查找表更新、表项查找方法、装置、网络设备及介质与流程

文档序号:37925698发布日期:2024-05-11 00:04阅读:7来源:国知局
一种查找表更新、表项查找方法、装置、网络设备及介质与流程

本技术涉及通信,特别是涉及一种查找表更新、表项查找方法、装置、网络设备及介质。


背景技术:

1、哈希(hash)查找及其各种变种是一种很常用的技术族,在报文处理领域(packetprocessing,pp)应用很广泛。

2、网络设备一般通过按表的规格对哈希值取模,来决定一个数据要插入查找表的位置。为避免哈希冲突,按表的规格对哈希值取模后得到的值要求均匀分布,为了保证按表的规格对哈希值取模之后得到的值能维持均匀分布,要求表的规格是2的幂次方。另外,由于hash算法无法做到100%的装载率,表的规格不仅需要是2的幂次方,且需要大于需要存储的表项数量。这对存储空间的要求很高,导致查找表的空间浪费较大。


技术实现思路

1、本技术实施例的目的在于提供一种查找表更新、表项查找方法、装置、网络设备及介质,以降低查找表的空间浪费。具体技术方案如下:

2、第一方面,本技术实施例提供了一种查找表更新方法,所述方法包括:

3、采用预设的多种编码格式中的第一编码格式,提取待存储地址的第一公共前缀和第一特殊标识,所述待存储地址由所述第一公共前缀和所述第一特殊标识组成,所述编码格式与公共前缀的长度对应;

4、根据所述第一公共前缀,计算第一哈希值;

5、将所述第一编码格式、所述第一公共前缀和所述第一特殊标识写入预设查找表中所述第一哈希值指示的第一表项;

6、若所述预设查找表中已存储的表项数量大于等于预设门限,则按照预设的编码格式顺序,依次采用多种编码格式,对所述预设查找表中已存储的表项进行更新处理,使得更新后的预设查找表中已存储的表项数量小于所述预设门限。

7、在一些实施例中,所述根据所述第一公共前缀,计算第一哈希值的步骤,包括:

8、对所述第一公共前缀和所述第一编码格式的标识进行哈希计算,得到第一哈希值。

9、在一些实施例中,所述方法还包括:

10、将所述待存储地址添加至所述预设查找表对应的二叉树的叶子节点中,从所述二叉树的根节点至叶子节点的多个枝干值构成所述叶子节点的值;

11、所述按照预设的编码格式顺序,依次采用多种编码格式,对所述预设查找表中已存储的表项进行更新处理的步骤,包括:

12、按照预设的编码格式顺序,依次采用多种编码格式,对所述二叉树进行自底向上扫描,得到更新处理后的预设查找表。

13、在一些实施例中,所述方法还包括:

14、在将所述第一编码格式、所述第一公共前缀和所述第一特殊标识写入预设查找表中所述第一哈希值指示的第一表项之前,判断预设查找表中所述第一哈希值所指示的位置是否存在第二表项;

15、若不存在所述第二表项,则在所述第一哈希值所指示的位置处,构建所述第一哈希值指示的第一表项,执行所述将所述第一编码格式、所述第一公共前缀和所述第一特殊标识写入预设查找表中所述第一哈希值指示的第一表项的步骤。

16、在一些实施例中,所述方法还包括:

17、若存在所述第二表项,则判断所述第二表项中包括的特殊标识的数量是否小于所述第一预设编码格式对应的标识数量;

18、若小于所述第一预设编码格式对应的标识数量,则将所述第一特殊标识写入所述第二表项。

19、在一些实施例中,所述方法还包括:

20、若大于等于所述第一预设编码格式对应的标识数量,则确定所述多种编码格式中的第二编码格式,所述第二编码格式对应的公共前缀的长度大于所述第一编码格式对应的公共前缀的长度;

21、将所述待存储地址以及所述第二表项所对应的地址作为新的待存储地址,将第二编码格式作为新的第一编码格式,返回执行所述采用预设的多种编码格式中的第一编码格式,提取待存储地址的第一公共前缀和第一特殊标识的步骤。

22、在一些实施例中,所述方法还包括:

23、在确定所述多种编码格式中的第二编码格式之前,判断所述第一编码格式对应的公共前缀的长度是否小于预设的最大前缀长度;

24、若所述第一编码格式对应的公共前缀的长度小于所述最大前缀长度,则执行所述确定所述多种编码格式中的第二编码格式的步骤;

25、若所述第一编码格式对应的公共前缀的长度大于等于所述最大前缀长度,则按照预设的编码格式顺序,依次采用多种编码格式,对所述预设查找表中已存储的表项和所述待存储地址进行更新处理。

26、在一些实施例中,所述方法还包括:

27、将所述待存储地址关联的查找结果写入关联结果表中所述第一表项对应的第三表项。

28、在一些实施例中,所述第一表项包括多个特殊标识;

29、所述将所述待存储地址关联的查找结果写入关联结果表中所述第一表项对应的第三表项的步骤,包括:

30、从关联结果表中所述第一表项对应的多个表项中,确定第三表项,所述第三表项的顺序号与所述第一特殊标识在所述多个特殊标识中的顺序号相同;

31、将所述待存储地址关联的查找结果写入所述第三表项。

32、在一些实施例中,所述预设查找表的表项包括:编码格式字段、结果索引字段、公共前缀字段以及特殊标识字段;

33、所述编码格式字段用于填充编码格式的标识;

34、所述结果索引字段用于填充存储查找结果的表项的索引;

35、所述公共前缀字段用于填充公共前缀;

36、所述特殊标识字段用于填充特殊标识。

37、在一些实施例中,所述待存储地址包括媒体访问控制(media access control,mac)地址和虚拟局域网(virtual local area network,vlan)地址。

38、第二方面,本技术实施例提供了一种表项查找方法,所述方法包括:

39、按照预设的多种编码格式对待查找地址进行拆解,得到每种编码格式对应的公共前缀和特殊标识;

40、根据每种编码格式对应的公共前缀,分别计算每种编码格式对应的第二哈希值;

41、根据每种编码格式对应的第二哈希值、公共前缀和特殊标识,并行查找预设查找表,得到存储所述待查找地址关联的查找结果的表项的索引;所述预设查找表根据上述第一方面任一项所述的方法构建;

42、从所述索引对应的表项读取所述查找结果。

43、第三方面,本技术实施例提供了一种查找表更新装置,所述查找表更新装置包括:

44、提取模块,用于采用预设的多种编码格式中的第一编码格式,提取待存储地址的第一公共前缀和第一特殊标识,所述待存储地址由所述第一公共前缀和所述第一特殊标识组成,所述编码格式与公共前缀的长度对应;

45、第一计算模块,用于根据所述第一公共前缀,计算第一哈希值;

46、写入模块,用于将所述第一编码格式、所述第一公共前缀和所述第一特殊标识写入预设查找表中所述第一哈希值指示的第一表项;

47、更新模块,用于若所述预设查找表中已存储的表项数量大于等于预设门限,则按照预设的编码格式顺序,依次采用多种编码格式,对所述预设查找表中已存储的表项进行更新处理,使得更新后的预设查找表中已存储的表项数量小于所述预设门限。

48、在一些实施例中,所述第一计算模块,具体用于:对所述第一公共前缀和所述第一编码格式的标识进行哈希计算,得到第一哈希值。

49、在一些实施例中,所述装置还包括:添加模块,所述添加模块用于:将所述待存储地址添加至所述预设查找表对应的二叉树的叶子节点中,从所述二叉树的根节点至叶子节点的多个枝干值构成所述叶子节点的值;

50、所述更新模块,具体用于:按照预设的编码格式顺序,依次采用多种编码格式,对所述二叉树进行自底向上扫描,得到更新处理后的预设查找表。

51、在一些实施例中,所述写入模块,还用于:在将所述第一编码格式、所述第一公共前缀和所述第一特殊标识写入预设查找表中所述第一哈希值指示的第一表项之前,判断预设查找表中所述第一哈希值所指示的位置是否存在第二表项;

52、若不存在所述第二表项,则在所述第一哈希值所指示的位置处,构建所述第一哈希值指示的第一表项,执行所述将所述第一编码格式、所述第一公共前缀和所述第一特殊标识写入预设查找表中所述第一哈希值指示的第一表项的步骤。

53、在一些实施例中,所述写入模块,还用于:若存在所述第二表项,则判断所述第二表项中包括的特殊标识的数量是否小于所述第一预设编码格式对应的标识数量;

54、若小于所述第一预设编码格式对应的标识数量,则将所述第一特殊标识写入所述第二表项。

55、在一些实施例中,所述写入模块,还用于:若大于等于所述第一预设编码格式对应的标识数量,则确定所述多种编码格式中的第二编码格式,所述第二编码格式对应的公共前缀的长度大于所述第一编码格式对应的公共前缀的长度;

56、将所述待存储地址以及所述第二表项所对应的地址作为新的待存储地址,将第二编码格式作为新的第一编码格式,返回执行所述采用预设的多种编码格式中的第一编码格式,提取待存储地址的第一公共前缀和第一特殊标识的步骤。

57、在一些实施例中,所述写入模块,还用于:在确定所述多种编码格式中的第二编码格式之前,判断所述第一编码格式对应的公共前缀的长度是否小于预设的最大前缀长度;

58、若所述第一编码格式对应的公共前缀的长度小于所述最大前缀长度,则执行所述确定所述多种编码格式中的第二编码格式的步骤;

59、若所述第一编码格式对应的公共前缀的长度大于等于所述最大前缀长度,则按照预设的编码格式顺序,依次采用多种编码格式,对所述预设查找表中已存储的表项和所述待存储地址进行更新处理。

60、在一些实施例中,所述写入模块,还用于:将所述待存储地址关联的查找结果写入关联结果表中所述第一表项对应的第三表项。

61、在一些实施例中,所述第一表项包括多个特殊标识;所述写入模块,具体用于:

62、从关联结果表中所述第一表项对应的多个表项中,确定第三表项,所述第三表项的顺序号与所述第一特殊标识在所述多个特殊标识中的顺序号相同;

63、将所述待存储地址关联的查找结果写入所述第三表项。

64、在一些实施例中,所述预设查找表的表项包括:编码格式字段、结果索引字段、公共前缀字段以及特殊标识字段;

65、所述编码格式字段用于填充编码格式的标识;

66、所述结果索引字段用于填充存储查找结果的表项的索引;

67、所述公共前缀字段用于填充公共前缀;

68、所述特殊标识字段用于填充特殊标识。

69、在一些实施例中,所述待存储地址包括mac地址和vlan地址。

70、第四方面,本技术实施例提供了一种表项查找装置,所述表项查找装置包括:

71、拆解模块,用于按照预设的多种编码格式对待查找地址进行拆解,得到每种编码格式对应的公共前缀和特殊标识;

72、第二计算模块,用于根据每种编码格式对应的公共前缀,分别计算每种编码格式对应的第二哈希值;

73、查找模块,用于根据每种编码格式对应的第二哈希值、公共前缀和特殊标识,并行查找预设查找表,得到存储所述待查找地址关联的查找结果的表项的索引;所述预设查找表根据上述第三方面任一所述的装置构建;

74、读取模块,用于从所述索引对应的表项读取所述查找结果。

75、第五方面,本技术实施例提供了一种网络设备,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口以及存储器通过通信总线完成相互间的通信;

76、存储器,用于存放计算机程序;

77、处理器,用于执行存储器上所存放的程序时,实现上述第一方面或第二方面任一所述的方法。

78、第六方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面或第二方面任一所述的方法。

79、本技术实施例有益效果:

80、本技术实施例提供的技术方案中,根据预设的第一编码格式,将待存储地址分为第一公共前缀和第一特殊标识进行存储,以将相同公共前缀的待存储地址存储在预设查找表中的同一表项中。在预设查找表中已存储的表项数量达到预设门限时,对已存储的表项进行更新处理,进一步减少存储地址所采用的表项数量。应用本技术实施例提供的技术方案,降低了待存储地址的信息冗余度,对预设查找表进行了压缩,降低了预设查找表的空间浪费,节约了预设查找表的内存占用,实现了用较少的表项规格存储大量地址。

81、另外,由于对已存储的表项进行更新处理的过程是异步的,该过程不影响待存储地址的正常存储,在降低预设查找表的空间浪费的同时,保证了存储待存储地址的时效性。

82、当然,实施本技术的任一产品或方法并不一定需要同时达到以上所述的所有优点。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1