一种面向内容网络中内容名存储结构的设计方法

文档序号:6515348阅读:156来源:国知局
一种面向内容网络中内容名存储结构的设计方法
【专利摘要】本发明提供一种面向内容网络中内容名存储结构的设计方法,嵌套分段散列表的分层嵌套结构通过相同前缀的内容名聚合,减少存储空间的开销,作为嵌套分段散列表中的基础数据结构单元,分段散列表在散列表的基础上引入分段思想,通过添加布隆滤波器和Bit-map作为索引结构,对进入对应子表散列计算的数据提供预处理,减少对存储表的直接操作次数,提高查找效率;同时使用基于内容热门度参数的链表法解决散列冲突,降低热门内容名的查找时间,引入分段散列表子表、嵌套分段散列表同层节点间的并列关系,在实现中有效利用多核CPU的计算能力,高效的完成分段散列表中数据的插入、查找和删除操作,提高内容名存储结构的处理能力。
【专利说明】一种面向内容网络中内容名存储结构的设计方法【技术领域】[0001]本发明属于计算机网络领域,具体涉及面向内容网络路由器内缓存表中内容名存 储结构。【背景技术】[0002]面向内容网络是未来网络研究的重要内容,是针对现有网络体系结构限制高效内 容分发功能的实现而提出的全新的网络体系结构,典型代表有命名数据网络(Named Data Networking)、ICN(Information-Centric Networking)项目等。以网络中传播的内容数据 为核心,以内容互联取代主机互联。通过使用内容名标识每一个内容,每一个内容都有一个 可路由查找的内容名。网络中主要有两种数据包:内容请求包(Interest packet)和内容 数据包(Data packet),请求数据包用于发送对内容的请求,接收到该请求的节点如果能满 足该请求就通过内容数据包来发送响应数据。[0003]以内容名为网络中查找路由的唯一地址,面临的问题有:网络中内容海量存在,即 内容名空间巨大;内容名长度不一,与IP地址的固定长度作对比,该特点尤为明显。目前内 容命名方法主要有平坦命名和分层命名。分层结构化命名允许内容名具有任意个分层,每 一个分层可以是任意长度的字符串,解决了内容名空间的可扩展性。[0004]采用分层命名方式对内容名命名,可实现网络路由的可扩展性:分层命名可实现 名字空间的聚合、实现内容名与内容资源绑定,利用内容资源分层命名的特点可以设计出 可扩展的数据结构对内容资源进行缓存及快速查找。而平坦命名方式则不具有这些特点。[0005]面向内容网络中,如何提高路由器上内容的有效管理以及内容名的快速查找,路 由是提升网络服务能力的关键点,因此为提升网络服务能力,需要在路由器内设计内容名 存储结构以解决在路由器上缓存的内容的快速查找、插入、删除等内容名管理问题。在对路 由器上内容名存储结构与快速查找算法研究中,国内外主要有多种方法。例如:[0006](I)利用内容名分层的特点,采用基于哈希表和Trie树混合数据结构。通过对整 个内容名前缀空间进行名字关键字穷举,在Trie树结构基础上使用hash算法已取得较快 的内容查找效率,但是由于内容名的长度不定,Trie树中最大搜索深度和平均搜索深度都 很大。[0007](2)基于跳表(SkipTable)对ICN中内容名存储结构的设计方法,跳表是在线性链 表的基础上增加多级前向指针,使用这些指针可以跳过链表中的若干节点,提高查找效率。 跳表不仅能提高查找检索的性能,并且可以同时提高插入以及删除操作的性能。但是由于 跳表是一种已排序的快速查找,因此将内容名数字化以及排序引入较多的时间耗费。[0008](3)基于CBF(counting bloom filters)的数据结构进行内容名的快速查找。布 隆滤波器是进行快速查找设计中典型的数据结构,但是仅仅支持查找而不能做删除操作。 可计数的布隆滤波器是在布隆滤波器的基础上进行改造,使得滤波器具备计数功能,以支 持删除。此种方法可以快速检索一个元素是否在一个集合里,空间效率和查询时间远远超 过一般方法,但很难消除存在一定概率的误判。[0009](4)在面向内容项目中提出了基于散列表的内容名存储结构,利用散列算法快速的查找、插入和删除操作,为路由器上的内容名查找提供高效的管理方案,内容名中的前缀都是已知的,因此可以建立多层嵌套散列表(Nested Hash Tables),使用内容名前缀的每一个分层作为关键字进行散列查找。但由于较高散列冲突会导致查找效率低。

【发明内容】

[0010]本发明的目的在于提供一种面向内容网络中内容名存储结构的设计方法。
[0011]为达到上述目的,本发明采用了以下技术方案。
[0012]构建嵌套散列表,将嵌套散列表中各散列表替换为分段散列表得到嵌套分段散列表,所述分段散列表内各子表以布隆滤波器和位数组作为索引结构,嵌套分段散列表总体上是一个前缀树结构,不同的是每个节点由一个分段散列表组成,内容名的每个前缀分层对应前缀树结构中的一个节点,节点内使用分段散列表完成对内容名前缀分层的存储,内容名是采用分层结构化的命名方法对网络中的内容进行命名而确定的。
[0013]所述分层结构化的命名方法中,内容名总体结构上分为全域可路由域名、自组织域名和内容属性标示符三级。
[0014]完整内容名在嵌套分段散列表中的插入包括以下步骤:
[0015]I)对待插入的内容名第一分层使用嵌套分段散列表第一层分段散列表中的所有子表对应的散列函数进行散列寻址计算;
[0016]2)在每个子表中的位数组中对比对应地址是否冲突,并选择出无冲突的子表,在所述无冲突的子表中选择对应布隆滤波器中非零位最少的子表对所述内容名第一分层进行存储;
[0017]3)在存储内容名第一分层的子表索引结构中完成对存储位和校验信息的标记;
[0018]4)参照步骤I)-3),使用内容名的其余分层在各自对应的嵌套分段散列表分层上依次进行散列寻址插入操作,直至插入完整内容名。
[0019]当所有子表中位数组对应的地址均发生冲突,则使用热门度参数对内容名在线性链表中进行排序,将热门度较高的内容名放置到线性链表靠前的位置,热门度指内容被请求次数。
[0020]完整内容名在嵌套分段散列表中的查找包括以下步骤:
[0021]I)使用内容名第一分层在嵌套分段散列表第一层分段散列表上进行散列寻址查找匹配,具体步骤如下:在分段散列表的各个子表对应的布隆滤波器中进行内容名第一分层存在性判断,若内容名第一分层不存在,则判定内容名第一分层未存储,跳过后续匹配,结束对本子表查找;反之,则对内容名第一分层用对应子表的散列函数进行散列,在子表的位数组中进行对应地址位检验,检验子表对应散列地址上是否有键值存储,若对应位为0,表明此散列地址无数据存储,则查找结束;若对应位为1,表明此散列地址有数据存储,则在对应子表内完成散列查找,保证查找的准确性。
[0022]2)参照步骤1),使用内容名的其余分层在各自对应的嵌套分段散列表分层上依次进行散列寻址查找匹配,直至完成完整内容名的查找。
[0023]进行内容名删除时,分为完整内容名删除和部分内容名删除。对于多个有相同前缀内容名中的一个内容名进行删除时,只需要在查找匹配的基础上,将内容名树结构上存储该内容名的最后若干个分层键值删除即可;对于一条前缀路径上只有一个内容名存储的情况,将整条路径上的键值都删除。
[0024]本发明的有益效果体现在:本发明中嵌套分段散列表的分层嵌套结构通过相同前缀的内容名聚合,减少存储空间的开销。作为嵌套分段散列表中的基础数据结构单元,分段散列表在散列表的基础上引入分段思想,通过添加布隆滤波器和Bit-map (位数组)作为索引结构,对进入对应子表散列计算的数据提供预处理,减少对存储表的直接操作次数,提高查找效率;同时引入分段散列表子表、嵌套分段散列表同层节点间的并列关系,在实现中有效利用多核CPU的计算能力,高效的完成分段散列表中数据的插入、查找和删除操作,提高内容名存储结构的处理能力。
【专利附图】

【附图说明】
[0025]图1为分层内容名示意图;
[0026]图2为内容名存储结构组成图;
[0027]图3为分段散列表组成图;
[0028]图4为分段数对查找性能的影响;
[0029]图5为内容名长度对查找性能的影响;
[0030]图6为查找性能对比。
【具体实施方式】
[0031]下面结合附图和实施例对本发明作进一步说明。
[0032]本发明针对面向内容网络的特点(面向内容网络中路由节点缓存大量前缀差别大、名字长短不同的内容名的查找效率问题),为路由器上的内容名提供高效的管理方案,设计了一种基于嵌套分段散列表的内容名存储结构设计方法。
[0033]首先,本方法中是以分层结构化方案对内容进行命名为基础。内容名总体结构上分为全域可路由域名、自组织域名和内容属性标示符三级,其中第一级加若干层第二级域名,构成缓存内容在网络中路由节点上的可路由前缀域名,内容名中必须包含第一级和第三级域名,可以包括任意层第二级域名。如图1所示,该内容名由内容源节点“pare,com” 向网络中提供,内容名为 “pare, com/video/ffidgetA.mpg/_v<timestamp>/_s3/_p<foundtimes>”。在网络中多个路由节点缓存后,此时该内容的前缀路由域名可以是“pare.com/video/WidgetA.mpg”、“parc.com/video”、或“pare, com”,前两个表不网络中缓存节点的可路由域名,第三个表示源节点域名(此时,按照该前缀进行路由,等同于IP网络中对主机路由)。
[0034]嵌套分段散列表的结构如图2所示。该部分的具体内容如下:
[0035]首先构建分段散列表。完整的分段散列表数据结构包括S个子表,每一个子表维护各自的布隆滤波器和Bit-map作为索引结构,如图3所示。结构中S个子表之间是相互并行的关系,插入一个数据时,该数据可能被插入到任意一个子表。完成插入后,在对应的子表的索引结构布隆滤波器和Bit-map上进行标记。对内容名进行查找时,对S个子表索引位进行并行计算,确定内容名存储的子表。在子表内使用散列完成对内容名的完整匹配。
[0036]普通散列表使用一个一维数组结构作为散列表的存储结构,进行键值插入时,输入键值会在数组中散列存储,分段散列表将一个散列表分成S个较小的子表,进行键值插入时,存在S个潜在的存储位置,选择其中一个不发生冲突的子表完成输入键值在子表内散列存储。采用对散列表的分段设计,对数据存储区进行多个划分,可以将键值更均匀的插入到表中,降低冲突发生的概率,提高查找的效率。
[0037]Bit-map作为一种位数组数据结构,使用散列算法直接寻址访问快且存储空间小。通过使用Bit-map作为数据存在性索引位的使用,可以直接跳过不必要的入表匹配校验的过程,减少对散列表的直接操作耗费的时间代价。布隆滤波器(Bloom Filter)是一种由一个很长的数组和一系列随机映射函数组成的数据结构,布隆滤波器可以用于快速检索一个兀素是否在一个集合中。
[0038]尽管使用分段散列表可以降低冲突出现的概率,使用Bit-map和布隆滤波器可以降低冲突后直接查找消耗的计算代价,但是当插入的内容名过多时,仍然无法避免冲突,出现冲突后,使用链表法解决冲突。由于不同时期、不同区域、不同用户群对内容的需求度不同,网络中不同的内容的受关注度也不尽相同,内容热门度参数将不同需求度的内容在内容名中进行区分。本方法中当散列表出现冲突时,将出现冲突的内容按照内容热门度参数由大到小排序后,依次放置在线性链表中减少对热门度高的内容查找使用的时间,提高查找效率。
[0039]本方法对散列表进行分段处理,可以用于解决冲突而引入的额外计算;为减少分段散列表对数据的插入、查找和删除过程中对所有分段表进行直接访问产生的代价,在每一个分段表子表中添加存储空间小、查找速度块的索引结构Bit-map和计数型布隆滤波器,减少插入、查找过程中的直接入表操作,提高数据结构操作效率;使用链表法解决冲突,通过对内容热门度进行排序,降低热门度高的内容名查找的时间,降低对热门内容名多次重复查找引入的计算代价。
[0040]在完成分段散列表的基础上对嵌套分段散列表进行设计,实现对多个前缀分层内容名的存储处理。嵌套分段散列表的分层嵌套结构使得可以通过相同前缀的聚合,减少内存储空间的开销。嵌套分段散列表从总体结构而言是一个前缀树结构,不同的是每个节点上由一个分段散列表组成,内容名的每一个前缀分层对应树结构的一个节点。
[0041]完整内容名在〃嵌套分段散列表〃中存储时,内容名第一分层存储到第一层分段散列表的一个散列地址,根据该存储位的链表指针指向第二分层的某分段散列表,在该表中存储内容名第二分层,以此类推,直到内容名所有分层存储完毕。
[0042]使用内容名前缀的每一个分层作为关键字在嵌套分段散列表中进行散列操作时,关键的处理在分段散列表中。分段散列表中包含内容名插入、查找和删除三种内容名操作方式。具体分析如下:
[0043]在分段散列表的基础上,针对一个键值存在多个潜在对应存储空间的缺陷,为每个子表设计布隆滤波器和位数组作为子表的索引结构,确保键值在分段散列表中只有一个存储位与之相对应。在分段散列表中进行键值查找时,首先探测布隆滤波器中该键值是否存储,由于Bloom Filter本身存在查找假阳性,所以在经过Bloom Filter查找后,再使用位数组进行键值查找,确定键值在子表中确定的存储位置,在确定子表后,子表内直接使用键值散列寻址访问查找。下面从插入、查找和删除三个操作进行描述。
[0044]插入操作[0045]I)对待插入的键值使用多个子表分别对应的散列函数进行散列寻址计算;
[0046]2)在每个子表中的Bit-map索引结构中对比对应地址是否冲突,并选择出无冲突的子表,在所述无冲突的子表中选择对应布隆滤波器中非零位最少的子表对键值进行存储;
[0047]3)在子表的索引结构中完成对存储位和校验信息的标记。
[0048]查找操作
[0049]I)对待查找的键值使用多个子表分别对应的散列函数进行散列寻址计算,在各自对应的布隆滤波器中进行键值存在性判断,对于没有经过布隆滤波器匹配的数据,可以判定其一定不在结构内存储,可以跳 过后续匹配,结束查找;
[0050]2)在完成子表布隆滤波器内键值匹配,确定子表后,在子表的位数组中进行对应地址位检验,检验子表对应散列地址上是否有键值存储,对于为空的位数组表明没有键值存储,查找结束;
[0051]3)经过位数组校验后,进入子表完成键值的散列查找,保证查找的准确性。
[0052]删除操作
[0053]I)对键值进行查找操作,如果查找到键值在表结构中存储,则进入删除操作,否则退出删除操作;
[0054]2)在查找到键值存储的子表中的存储空间内将键值删除;
[0055]3)在子表对应的索引结构一布隆滤波器和位数组中将键值占用的存储位清零,完成键值删除。
[0056]在本实施例中,由于引入分段散列表子表、嵌套分段散列表同层节点间的并列关系,通过使用支持多核并行进程运算的Go语言,充分使用多核计算机的计算能力进行试验仿真来验证本发明的可行性和有效性。
[0057]由于使用Go语言进行并行程序设计跟计算机硬件相关,因此将实验仿真所用计算机的参数说明如下:
[0058]表1实验环境
[0059]
_操作系统_Ubimtu 12.10_
CPUIntel(R) Core(TM) ?3-2330Μ CPU @ 2.20GHz

双核、四线程
内存2G
Go 语 g 版本go I.0.3
[0060]本发明在对内容名存储结构设计中,对散列表采用了分段的思想,减少在一个大表中插入过多数据后引起冲突发生的概率,分段数越多,表结构中出现冲突的概率越小,单次操作的复杂度接近理想散列表的算法复杂度O (1),但是随着分段数的增加,由于多个子表上的匹配查找,引入了额外的计算,因此需要对分段散列表使用的分段数进行约束,使得在保证接近理想散列表的查找效率的同时,减少因为分段引入的计算量。
[0061]通过对图4的观察可以看到在装载因子小于0.8时,使用8个分段(seg)可以达到理想O (I)的查找效率。分段数为I时,分段散列表退化为普通散列表,通过图4中对比可以明显看得到,采用分段方法,可以使得存储结构的查找效率接近于理想散列表。
[0062]由于对于嵌套分段散列表的查找效率的影响包括:内容名长度和节点上内容名查找效率。首先使用不同长度内容名的在嵌套分段散列表中进行查找。对于嵌套分段散列表中的基础结构散列表采用装载因子取典型值a=0.75,实现查找性能和表空间利用率的平衡。图5中可以看出,当使用长度(L)较长的内容名在内容名存储结构中进行查找时,查找效率会随着内容名长度的增加而降低。
[0063]为了保证试验的科学性,对比试验中,采用的内容名前缀分层长度在1-10内完全随机,最后统计得到试验中使用的内容名前缀长度平均值为4。散列表和分段散列表的装载因子都选择为a=0.75。其中嵌套分段散列表中对分段散列表采用8段分层结构。
[0064]两个内容名存储结构中分别存储7500个任意前缀的内容名,进行内容请求(符合Zipf定律)时,前7500次是对内容名存储结构中存储的内容名的查找,从图6中可以明显看出两种内容名存储结构在对内容名查找过程中产生的次数差;内容请求的后7500次是内容名存储结构无法满足的内容请求,对于嵌套分段散列表而言,由于添加了查找索引结构,避免了直接入表匹配查找,减少不必要的查找,因此保持曲线基本不变。
[0065]至此,面向内容网络中基于嵌套分段散列表的内容名存储结构和内容名管理完成。使用分段散列表作为内容名存储结构中基础的数据结构单元,分段散列表减少了冲突发生的概率,保留了散列算法高效的操作性能。同时在子表中维护Bit-map作为存在索引位,为进入子表散列计算的数据处理提供预处理,减少对存储表的直接操作,提高查找效率。利用布隆滤波器空间效率高、查询时间短的特点,快速判断被查找的数据是否存在存储表中,减少分段散列表中不必要的查找操作。嵌套分段散列表的分层嵌套结构实现相同前缀的内容名聚合,减少内存储空间的开销,采用分段散列表对内容名前缀分层散列存储,降低节点上查找的时间消耗,提高内容名在存储结构中的查找效率,确保了内容名存储结构查找性能的优异。
【权利要求】
1.一种面向内容网络中内容名存储结构的设计方法,其特征在于:包括以下步骤:构建嵌套散列表,将嵌套散列表中各散列表替换为分段散列表得到嵌套分段散列表,所述分段散列表内各子表以布隆滤波器和位数组作为索引结构,嵌套分段散列表总体上是 一个前缀树结构,每个节点由一个分段散列表组成,内容名的每个前缀分层对应前缀树结 构中的一个节点,节点内使用分段散列表完成对内容名前缀分层的存储。
2.根据权利要求1所述一种面向内容网络中内容名存储结构的设计方法,其特征在 于:内容名总体结构上分为全域可路由域名、自组织域名和内容属性标示符三级。
3.根据权利要求1所述一种面向内容网络中内容名存储结构的设计方法,其特征在 于:完整内容名在嵌套分段散列表中的插入包括以下步骤:1)对待插入的内容名第一分层使用嵌套分段散列表第一层分段散列表中的所有子表 对应的散列函数进行散列寻址计算;2)在每个子表中的位数组中对比对应地址是否冲突,并选择出无冲突的子表,在所述 无冲突的子表中选择对应布隆滤波器中非零位最少的子表对所述内容名第一分层进行存 储;3)在存储内容名第一分层的子表索引结构中完成对存储位和校验信息的标记;4)参照步骤I)_3),使用内容名的其余分层在各自对应的嵌套分段散列表分层上依次 进行散列寻址插入操作,直至插入完整内容名。
4.根据权利要求3所述一种面向内容网络中内容名存储结构的设计方法,其特征在 于:当所有子表中位数组对应的地址均发生冲突,则使用热门度参数对内容名在线性链表 中进行排序,将热门度较高的内容名放置到线性链表靠前的位置,热门度指内容被请求次 数。
5.根据权利要求1所述一种面向内容网络中内容名存储结构的设计方法,其特征在 于:完整内容名在嵌套分段散列表中的查找包括以下步骤:1)使用内容名第一分层在嵌套分段散列表第一层分段散列表上进行散列寻址查找匹 配,具体步骤如下:在分段散列表的各个子表对应的布隆滤波器中进行内容名第一分层存 在性判断,若内容名第一分层不存在,则判定内容名第一分层未存储,跳过后续匹配,结束 对本子表查找;反之,则对内容名第一分层用对应子表的散列函数进行散列,在子表的位数 组中进行对应地址位检验,检验子表对应散列地址上是否有键值存储,若对应位为O,表明 此散列地址无数据存储,则查找结束;若对应位为1,表明此散列地址有数据存储,则在对 应子表内完成散列查找;2)参照步骤I),使用内容名的其余分层在各自对应的嵌套分段散列表分层上依次进行 散列寻址查找匹配,直至完成完整内容名的查找。
6.根据权利要求1所述一种面向内容网络中内容名存储结构的设计方法,其特征在 于:进行内容名删除时,对于多个有相同前缀内容名中的一个内容名进行删除时,只需要在 查找匹配的基础上,将内容名树结构上存储该内容名的最后若干个分层键值删除即可;对 于一条前缀路径上只有一个内容名存储的情况,将整条路径上的键值都删除。
【文档编号】G06F17/30GK103559215SQ201310478933
【公开日】2014年2月5日 申请日期:2013年10月14日 优先权日:2013年10月14日
【发明者】曲桦, 赵季红, 曹超, 王伟萍 申请人:西安交通大学, 苏州彩云网络科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1