System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及通信,特别是涉及一种查找表更新、表项查找方法、装置、网络设备及介质。
技术介绍
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、更新模块本文档来自技高网...
【技术保护点】
1.一种查找表更新方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一公共前缀,计算第一哈希值的步骤,包括:
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
8.根据权利要求1-7任一项所述的方法,其特征在于,所述方法还包括:
9.根据权利要求8所述的方法,其特征在于,所述第一表项包括多个特殊标识;
10.根据权利要求1-7任一项所述的方法,其特征在于,所述预设查找表的表项包括:编码格式字段、结果索引字段、公共前缀字段以及特殊标识字段;
11.根据权利要求1-7任一项所述的方法,其特征在于,所述待存储地址包括媒体访问控制MAC地址和虚拟局域网VLAN地址。
12.
13.一种查找表更新装置,其特征在于,所述装置包括:
14.一种表项查找装置,其特征在于,所述装置包括:
15.一种网络设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口以及存储器通过通信总线完成相互间的通信;
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-11或12任一所述的方法。
...【技术特征摘要】
1.一种查找表更新方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一公共前缀,计算第一哈希值的步骤,包括:
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
8.根据权利要求1-7任一项所述的方法,其特征在于,所述方法还包括:
9.根据权利要求8所述的方法,其特征在于,所述第一表项包括多个特殊标识;
10.根据权利要求1-7任一项所述的方法...
【专利技术属性】
技术研发人员:杨逸,
申请(专利权)人:格创通信浙江有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。