[发明专利]IPv6地址前缀压缩存储方法及设备有效

专利信息
申请号: 201010611546.2 申请日: 2010-12-28
公开(公告)号: CN102045412A 公开(公告)日: 2011-05-04
发明(设计)人: 黄友俊;李星;吴建平;胡松;张辉 申请(专利权)人: 赛尔网络有限公司
主分类号: H04L29/12 分类号: H04L29/12
代理公司: 中科专利商标代理有限责任公司 11021 代理人: 赵伟
地址: 100084 北京市海淀区中*** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: ipv6 地址 前缀 压缩 存储 方法 设备
【说明书】:

技术领域

发明涉及下一代互联网领域,更具体地,涉及一种IPv6地址前缀存储方法和设备。

背景技术

众所周知,IPv6地址长度是128比特,而IPv4地址长度是32比特。就地址长度而言,IPv6比IPv4扩大了4倍;就容量而言,则扩大了296倍。由于IPv6地址容量的急剧增长,因此需要一种高效可行的IPv6地址存储和查找方式。

随着技术的发展,人们提出了基于多分支Trie树的IPv6地址前缀存储和查找算法。字典树(Trie)是一种用于快速字符串检索的多叉树结构。其原理是利用字符串的公共前缀来降低时空开销,从而达到提高程序效率的目的。Trie树在本质上是一个确定的有限状态自动机,每个结点代表一个状态,根据输入变量的不同,进行状态转移。用Trie树搜索一个关键码的时间与关键码自身及其长度有关,最快是0(1),即在第一层即可判断是否搜索到,最坏的情况是0(n),n为Trie树的层数。由于很多时候Trie树的大多数结点分支很少,因此Trie树结构空间浪费比较多。如果把每次查找检查的字符个数定义为步长,传统的Trie树步长为1,多分支Trie树的查找步长大于1。利用多分支Trie树可以有效减少查找过程中的存储器访问次数。

虽然该算法在查找速度上获得了很大的提高,但仍然需要较大的存储空间。图1示出了步长为K=16、层数为128/16=8的多分支Trie树(MT)的示意结构。如图1所示,多分支Trie树的每一个节点都包含216=65536个分支节点。因此,每个节点包含一块连续的大小为65536个单元的内存,分别指向65536个子节点。由于IPv6地址长度为128比特,因此MT的最大层数(深度)为8(128/16=8)。MT的实际层数由存储的IPv6地址前缀决定,当MT中不存储任何IPv6地址前缀时,MT中只包含根节点,层数为0,当存储的IPv6地址前缀中包含长度为16的前缀时,层数为1。依此类推,当存储的IPv6地址前缀中包含长度为128的前缀时,层数为8。

因此,当IPv6地址前缀较多且比较分散时,需要非常大的存储空间,同时产生了很多的空指针,一方面会造成内存的巨大浪费,另一方面会影响查找效率。

发明内容

本发明提出了一种IPv6地址前缀存储方法,可以在使用有限内存的情况下实现IPv6地址前缀的存储,并且能够实现高效查找。

根据本发明的一个方面,提供了一种用于存储IPv6地址前缀的方法,包括:将IPv6地址前缀划分为具有固定长度K的L个部分,其中K和L均为正整数;使用步长为K、层数为L的多分支Trie树结构存储IPv6地址前缀,其中每一个节点使用长度为2K的数组来存储节点指针,节点指针在数组中的位置表示IPv6地址前缀的K个比特;以及利用额外数组对生成的多分支Trie树中的每一个节点进行压缩存储。

优选地,所述压缩存储包括:针对多分支Trie树中的每一个节点,利用两个数组来代替,第一数组存储该节点中的非空指针值,而第二数组存储每一个非空指针值在该节点中的对应位置。

优选地,初始化多分支Trie树结构,使得与根节点相对应的数组中均为空指针。

优选地,针对多分支Trie树中的每一个节点,通过遍历与该节点相对应的数组,将非空指针和其相应的位置分别存储在第一数组和第二数组中。

优选地,所述方法还包括:如果需要查找已存储的IPv6地址前缀,则使用二分法依次查找每一层节点的第二数组。

优选地,步长K等于16。

根据本发明的另一个方面,提供了一种用于存储IPv6地址前缀的设备,包括:划分单元,将IPv6地址前缀划分为具有固定长度K的L个部分,其中K和L均为正整数;存储单元,使用步长为K、层数为L的多分支Trie树结构存储IPv6地址前缀,其中每一个节点使用长度为2K的数组来存储节点指针,节点指针在数组中的位置表示IPv6地址前缀的K个比特;以及压缩单元,利用额外数组对生成的多分支Trie树中的每一个节点进行压缩存储。

优选地,所述压缩单元针对多分支Trie树中的每一个节点,利用两个数组来代替,第一数组存储该节点中的非空指针值,而第二数组存储每一个非空指针值在该节点中的对应位置。

优选地,所述存储单元初始化多分支Trie树结构,使得与根节点相对应的数组中均为空指针。

优选地,所述压缩单元针对多分支Trie树中的每一个节点,通过遍历与该节点相对应的数组,将非空指针和其相应的位置分别存储在第一数组和第二数组中。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于赛尔网络有限公司,未经赛尔网络有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201010611546.2/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top