一种基于两端限定双向链表子树的快速便利算法

文档序号:9870113阅读:277来源:国知局
一种基于两端限定双向链表子树的快速便利算法【
技术领域
】[0001]本发明涉及通信
技术领域
,尤其涉及一种基于两端限定双向链表子树的快速便利算法。【
背景技术
】[0002]内容中心网络结点所储存的内容缓存、待定兴趣表、转发信息表三张表中有大量相似的内容,占用了较多的存储空间;巨大的内容名字空间也给路由可扩展性提出了挑战,无论是查找还是添加、删除操作都要求快速完成,才能支撑兴趣包与数据包的高速转发。而且现有内容中心网络结点处理数据的方法或者没有做前缀匹配,或者处理数据的性能不够好,或者一次只能够查询内容缓存、待定兴趣表、转发信息表中的某一张表。更重要的是在遍历某颗子树的节点的时候,传统的算法销量地下。【
发明内容】[0003]本发明提供一种基于两端限定双向链表子树的快速便利算法,具有快速实现添加、删除、查询节点的功能。[0004]本发明是通过以下技术方案实现:[0005]—种基于两端限定双向链表子树的快速便利算法,其包括如下步骤:[0006]步骤I,构建双向链表:[0007]用内容中心网络结点中的所有内容名字,建立内容中心网络中网络结点分段前缀树;用内容中心网络结点的分段前缀树,建立内容中心网络结点分段前缀树中结点的双向链表;[0008]步骤2,构建哈希表:[0009]将内容中心网络结点的内容缓存、待定兴趣表、转发信息表、分段前缀树以及双向链表中的所有内容名字均存储到哈希表中,完成内容中心网络中网络结点哈希表的构建;[0010]步骤3,接收并处理兴趣包:[0011]步骤31,采用哈希算法,计算接收兴趣包的内容名字的哈希值,将哈希值带入哈希表中查找哈希表的结点,将查找到的结点作为当前结点,将兴趣包的内容名字作为当前内容名字前缀;[0012]步骤32,判断哈希表中是否存在兴趣包的内容名字,若不存在,则执行步骤37,否贝IJ,执行步骤33;[0013]步骤33,当前结点的内容缓存标志位为真时,根据接收兴趣包的接口,发送当前结点对应的数据包,结束兴趣包的处理;[0014]步骤34,当前结点中的双向链表不为空时,取当前结点的双向链表中第一个结点为当前结点,执行步骤步骤33;[0015]步骤35,当前结点的待定兴趣表标志位为真时,添加待定兴趣表项,将兴趣包添加到待定兴趣表中,结束兴趣包的处理;[0016]步骤36,判断当前结点的转发信息表标志位是否为真,若是,则将当前结点的转发信息表接口列表复制到待转发接口列表中,删除待转发接口列表中接收兴趣包的接口,从待转发接口列表中的接口发送兴趣包,清空待转发接口列表,同时添加待定兴趣表项,结束兴趣包的处理;否则,丢弃兴趣包,结束兴趣包的处理;[0017]步骤37,去掉当前内容名字前缀中的最后一块,作为当前内容名字前缀;[0018]步骤38,当前内容名字前缀为空时,丢弃兴趣包,结束兴趣包的处理;[0019]步骤39,采用哈希算法,计算当前内容名字前缀的哈希值,将哈希值带入哈希表中查找哈希表结点,将查找到的哈希表结点作为当前结点,当前结点的转发信息表标志位为假时,执行步骤37;[0020]步骤40,当前结点的转发信息表标志位为真时,将当前结点的转发信息表接口列表复制到待转发接口列表中,删除待转发接口列表中接收兴趣包的接口,从转发接口列表中的接口发送兴趣包,清空待转发接口列表,同时添加待定兴趣表项,结束兴趣包的处理。[0021]与现有的技术相比,本发明的有益效果是:[0022]在遍历某颗子树的节点的时候,传统的算法销量地下,本文采用双向链表和Hashtable结合的方式,可以快速的查询出一个树的其实节点和结束节点,能实现添加O(1),删除0(1),查询0(11)。【附图说明】[0023]图1为基于两端限定双向链表子树的快速便利算法流程图。【具体实施方式】[0024]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。[0025]如图1所示,一种基于两端限定双向链表子树的快速便利算法,其包括如下步骤:[0026]步骤I,构建双向链表:[0027]用内容中心网络结点中的所有内容名字,建立内容中心网络中网络结点分段前缀树;用内容中心网络结点的分段前缀树,建立内容中心网络结点分段前缀树中结点的双向链表;[0028]步骤2,构建哈希表:[0029]将内容中心网络结点的内容缓存、待定兴趣表、转发信息表、分段前缀树以及双向链表中的所有内容名字均存储到哈希表中,完成内容中心网络中网络结点哈希表的构建;[0030]步骤3,接收并处理兴趣包:[0031]步骤31,采用哈希算法,计算接收兴趣包的内容名字的哈希值,将哈希值带入哈希表中查找哈希表的结点,将查找到的结点作为当前结点,将兴趣包的内容名字作为当前内容名字前缀;[0032]步骤32,判断哈希表中是否存在兴趣包的内容名字,若不存在,则执行步骤37,否贝IJ,执行步骤33;[0033]步骤33,当前结点的内容缓存标志位为真时,根据接收兴趣包的接口,发送当前结点对应的数据包,结束兴趣包的处理;[0034]步骤34,当前结点中的双向链表不为空时,取当前结点的双向链表中第一个结点为当前结点,执行步骤步骤33;[0035]步骤35,当前结点的待定兴趣表标志位为真时,添加待定兴趣表项,将兴趣包添加到待定兴趣表中,结束兴趣包的处理;[0036]步骤36,判断当前结点的转发信息表标志位是否为真,若是,则将当前结点的转发信息表接口列表复制到待转发接口列表中,删除待转发接口列表中接收兴趣包的接口,从待转发接口列表中的接口发送兴趣包,清空待转发接口列表,同时添加待定兴趣表项,结束兴趣包的处理;否则,丢弃兴趣包,结束兴趣包的处理;[0037]步骤37,去掉当前内容名字前缀中的最后一块,作为当前内容名字前缀;[0038]步骤38,当前内容名字前缀为空时,丢弃兴趣包,结束兴趣包的处理;[0039]步骤39,采用哈希算法,计算当前内容名字前缀的哈希值,将哈希值带入哈希表中查找哈希表结点,将查找到的哈希表结点作为当前结点,当前结点的转发信息表标志位为假时,执行步骤37;[0040]步骤40,当前结点的转发信息表标志位为真时,将当前结点的转发信息表接口列表复制到待转发接口列表中,删除待转发接口列表中接收兴趣包的接口,从转发接口列表中的接口发送兴趣包,清空待转发接口列表,同时添加待定兴趣表项,结束兴趣包的处理。[0041]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。【主权项】1.一种基于两端限定双向链表子树的快速便利算法,其特征在于,包括如下步骤:步骤I,构建双向链表:用内容中心网络结点中的所有内容名字,建立内容中心网络中网络结点分段前缀树;用内容中心网络结点的分段前缀树,建立内容中心网络结点分段前缀树中结点的双向链表;步骤2,构建哈希表:将内容中心网络结点的内容缓存、待定兴趣表、转发信息表、分段前缀树以及双向链表中的所有内容名字均存储到哈希表中,完成内容中心网络中网络结点哈希表的构建;步骤3,接收并处理兴趣包:步骤31,采用哈希算法,计算接收兴趣包的内容名字的哈希值,将哈希值带入哈希表中查找哈希表的结点,将查找到的结点作为当前结点,将兴趣包的内容名字作为当前内容名字如缀;步骤32,判断哈希表中是否存在兴趣包的内容名字,若不存在,则执行步骤37,否则,执行步骤33;步骤33,当前结点的内容缓存标志位为真时,根据接收兴趣包的接口,发送当前结点对应的数据包,结束兴趣包的处理;步骤34,当前结点中的双向链表不为空时,取当前结点的双向链表中第一个结点为当前结点,执行步骤步骤33;步骤35,当前结点的待定兴趣表标志位为真时,添加待定兴趣表项,将兴趣包添加到待定兴趣表中,结束兴趣包的处理;步骤36,判断当前结点的转发信息表标志位是否为真,若是,则将当前结点的转发信息表接口列表复制到待转发接口列表中,删除待转发接口列表中接收兴趣包的接口,从待转发接口列表中的接口发送兴趣包,清空待转发接口列表,冋时添加待定兴趣表项,结束兴趣包的处理;否则,丢弃兴趣包,结束兴趣包的处理;步骤37,去掉当前内容名字前缀中的最后一块,作为当前内容名字前缀;步骤38,当前内容名字前缀为空时,丢弃兴趣包,结束兴趣包的处理;步骤39,采用哈希算法,计算当前内容名字前缀的哈希值,将哈希值带入哈希表中查找哈希表结点,将查找到的哈希表结点作为当前结点,当前结点的转发信息表标志位为假时,执行步骤37;步骤40,当前结点的转发信息表标志位为真时,将当前结点的转发信息表接口列表复制到待转发接口列表中,删除待转发接口列表中接收兴趣包的接口,从转发接口列表中的接口发送兴趣包,清空待转发接口列表,同时添加待定兴趣表项,结束兴趣包的处理。【专利摘要】本发明提供一种基于两端限定双向链表子树的快速便利算法,其包括如下步骤:步骤1,构建双向链表;步骤2,构建哈希表;步骤3,接收并处理兴趣包。与现有的技术相比,本发明的有益效果是:在遍历某颗子树的节点的时候,传统的算法销量地下,本文采用双向链表和Hashtable结合的方式,可以快速的查询出一个树的其实节点和结束节点,能实现添加O(1),删除O(1),查询O(n)。【IPC分类】H04L12/947【公开号】CN105635001【申请号】CN201511032308【发明人】陈炳福,钟鑫,蒋彬,陈浩【申请人】天津盛购科技发展有限公司【公开日】2016年6月1日【申请日】2015年12月30日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1