System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及通信,特别是涉及一种前缀压缩方法、装置、电子设备及存储介质。
技术介绍
1、目前,网络交换机或路由器等网络设备使用转发信息库(forwardinginformation base,fib)指导互联网协议(internet protocol,ip)报文的转发,目前可以采用trie树(也称为字典树或前缀树)存储fib中的前缀,以实现最长前缀匹配(longestprefix match,lpm)。trie树是一种多叉树结构,trie树中的每个节点代表一段前缀,从根节点到叶子节点的路径表示一个前缀。每个节点可以有多个子节点,每个子节点对应一种可能的下一段前缀。
2、然而,需要使用最长前缀匹配技术的网络设备的存储空间是有限的,目前的trie树需要占用大量的存储空间。
技术实现思路
1、本申请实施例的目的在于提供一种前缀压缩方法、装置、电子设备及存储介质,以节省前缀占用的存储空间。具体技术方案如下:
2、第一方面,本申请实施例提供一种前缀压缩方法,包括:
3、提取并存储多个待压缩前缀的公共前缀;
4、针对每个待压缩前缀,确定该待压缩前缀的非公共前缀长度,所述非公共前缀长度为该待压缩前缀的长度与所述公共前缀的长度之间的差值;
5、确定该待压缩前缀的非公共前缀在满二叉树中的位置为第p层第i个位置,其中,p为所述非公共前缀长度的数值,i为该待压缩前缀的非公共前缀部分的十进制值;
6、按照所述满二叉树中各待压缩前缀的非公
7、在一种可能的实现方式中,在按照所述满二叉树中各待压缩前缀的非公共前缀的排列顺序,依次存储各待压缩前缀对应的转发信息之前,所述方法还包括:
8、针对所述满二叉树中的每一层,确定所述满二叉树中该层和该层之前包括的非公共前缀总数量,并判断所述总数量是否大于2的j次方,其中,j为该层的层数;
9、若判断结果均为否,则执行所述按照所述满二叉树中各待压缩前缀的非公共前缀的排列顺序,依次存储各待压缩前缀对应的转发信息的步骤;
10、若存在至少一个判断结果为是,则确定判断结果为是的最大层数;
11、对所述满二叉树中从第0层至所述最大层数层包括的非公共前缀进行再次压缩,得到更新后的满二叉树,并基于更新后的满二叉树,执行所述按照所述满二叉树中各待压缩前缀的非公共前缀的排列顺序,依次存储各待压缩前缀对应的转发信息的步骤。
12、在一种可能的实现方式中,所述对所述满二叉树中从第0层至所述最大层数层包括的非公共前缀进行再次压缩,得到更新后的满二叉树,包括:
13、针对所述满二叉树中从所述第0层至所述最大层数中的每一层,依次进行以下处理:
14、针对该层中的每一个节点,判断该节点的左子节点和右子节点是否包括非公共前缀;
15、若所述左子节点不包括非公共前缀,则将该节点的非公共前缀复制到所述左子节点;若所述右子节点不包括非公共前缀,则将该节点的非公共前缀复制到所述右子节点;
16、将该节点处存储的非公共前缀清除。
17、在一种可能的实现方式中,所述满二叉树以位图bitmap的形式存储,所述bitmap从高位至低位依次对应所述满二叉树的根节点至最后一个叶子节点,针对所述bitmap包括的每个比特位置对应的节点,若该比特位置对应的节点包括非公共前缀,则该比特位置的值为1。
18、在一种可能的实现方式中,所述满二叉树的节点数量为2的d次方减1,d为所述多个待压缩前缀中最长的前缀长度与所述公共前缀的长度之间的差值加1。
19、第二方面,本申请实施例还提供一种前缀压缩装置,包括:
20、提取模块,用于提取并存储多个待压缩前缀的公共前缀;
21、确定模块,用于针对每个待压缩前缀,确定该待压缩前缀的非公共前缀长度,所述非公共前缀长度为该待压缩前缀的长度与所述公共前缀的长度之间的差值;确定该待压缩前缀的非公共前缀在满二叉树中的位置为第p层第i个位置,其中,p为所述非公共前缀长度的数值,i为该待压缩前缀的非公共前缀部分的十进制值;
22、存储模块,用于按照所述满二叉树中各待压缩前缀的非公共前缀的排列顺序,依次存储各待压缩前缀对应的转发信息。
23、在一种可能的实现方式中,所述装置还包括:
24、判断模块,用于针对所述满二叉树中的每一层,确定所述满二叉树中该层和该层之前包括的非公共前缀总数量,并判断所述总数量是否大于2的j次方,其中,j为该层的层数;若判断结果均为否,则触发所述存储模块执行所述按照所述满二叉树中各待压缩前缀的非公共前缀的排列顺序,依次存储各待压缩前缀对应的转发信息的步骤;
25、所述确定模块,还用于若存在至少一个判断结果为是,则确定判断结果为是的最大层数;
26、压缩模块,用于对所述满二叉树中从第0层至所述最大层数层包括的非公共前缀进行再次压缩,得到更新后的满二叉树,并触发所述存储模块基于更新后的满二叉树,执行所述按照所述满二叉树中各待压缩前缀的非公共前缀的排列顺序,依次存储各待压缩前缀对应的转发信息的步骤。
27、在一种可能的实现方式中,所述压缩模块,具体用于:
28、针对所述满二叉树中从所述第0层至所述最大层数中的每一层,依次进行以下处理:
29、针对该层中的每一个节点,判断该节点的左子节点和右子节点是否包括非公共前缀;
30、若所述左子节点不包括非公共前缀,则将该节点的非公共前缀复制到所述左子节点;若所述右子节点不包括非公共前缀,则将该节点的非公共前缀复制到所述右子节点;
31、将该节点处存储的非公共前缀清除。
32、在一种可能的实现方式中,所述满二叉树以位图bitmap的形式存储,所述bitmap从高位至低位依次对应所述满二叉树的根节点至最后一个叶子节点,针对所述bitmap包括的每个比特位置对应的节点,若该比特位置对应的节点包括非公共前缀,则该比特位置的值为1。
33、在一种可能的实现方式中,所述满二叉树的节点数量为2的d次方减1,d为所述多个待压缩前缀中最长的前缀长度与所述公共前缀的长度之间的差值加1。
34、第三方面,本申请实施例还提供一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
35、存储器,用于存放计算机程序;
36、处理器,用于执行存储器上所存放的程序时,实现上述第一方面所述的方法。
37、第四方面,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的方法。
38、第五方面,本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上本文档来自技高网...
【技术保护点】
1.一种前缀压缩方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,在按照所述满二叉树中各待压缩前缀的非公共前缀的排列顺序,依次存储各待压缩前缀对应的转发信息之前,所述方法还包括:
3.根据权利要求2所述的方法,其特征在于,所述对所述满二叉树中从第0层至所述最大层数层包括的非公共前缀进行再次压缩,得到更新后的满二叉树,包括:
4.根据权利要求1-3任一项所述的方法,其特征在于,所述满二叉树以位图bitmap的形式存储,所述bitmap从高位至低位依次对应所述满二叉树的根节点至最后一个叶子节点,针对所述bitmap包括的每个比特位置对应的节点,若该比特位置对应的节点包括非公共前缀,则该比特位置的值为1。
5.根据权利要求1所述的方法,其特征在于,所述满二叉树的节点数量为2的D次方减1,D为所述多个待压缩前缀中最长的前缀长度与所述公共前缀的长度之间的差值加1。
6.一种前缀压缩装置,其特征在于,包括:
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
8.根据权利要求7所述的
9.根据权利要求6-8任一项所述的装置,其特征在于,所述满二叉树以位图bitmap的形式存储,所述bitmap从高位至低位依次对应所述满二叉树的根节点至最后一个叶子节点,针对所述bitmap包括的每个比特位置对应的节点,若该比特位置对应的节点包括非公共前缀,则该比特位置的值为1。
10.根据权利要求6所述的装置,其特征在于,所述满二叉树的节点数量为2的D次方减1,D为所述多个待压缩前缀中最长的前缀长度与所述公共前缀的长度之间的差值加1。
11.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-5任一所述的方法。
...【技术特征摘要】
1.一种前缀压缩方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,在按照所述满二叉树中各待压缩前缀的非公共前缀的排列顺序,依次存储各待压缩前缀对应的转发信息之前,所述方法还包括:
3.根据权利要求2所述的方法,其特征在于,所述对所述满二叉树中从第0层至所述最大层数层包括的非公共前缀进行再次压缩,得到更新后的满二叉树,包括:
4.根据权利要求1-3任一项所述的方法,其特征在于,所述满二叉树以位图bitmap的形式存储,所述bitmap从高位至低位依次对应所述满二叉树的根节点至最后一个叶子节点,针对所述bitmap包括的每个比特位置对应的节点,若该比特位置对应的节点包括非公共前缀,则该比特位置的值为1。
5.根据权利要求1所述的方法,其特征在于,所述满二叉树的节点数量为2的d次方减1,d为所述多个待压缩前缀中最长的前缀长度与所述公共前缀的长度之间的差值加1。
6.一种前缀压缩装置,其特征在于,包括:
7.根...
【专利技术属性】
技术研发人员:胡卓,
申请(专利权)人:格创通信浙江有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。