论文部分内容阅读
以IP包交换为核心的互联网结构设计已经流行了数十年,网络之间互联最初的目标是实现硬件资源的共享。然而,随着技术飞速发展和信息的爆炸式增加,信息共享成为了如今的主要需求,硬件共享变得不再那么重要。命名数据网络作为一种全新的网络模式,其目的是为了更好的满足用户快速便捷的访问互联网内容的需求。命名数据网络通过内容名字进行路由查找与转发。与IP网络路由方法相比,名字查找有一些不同的特征。例如可变长度、层次化的名字结构;比IP网络大2~3个数量级的路由表规模;内容频繁的发布删除导致的路由更新。这些特征使得实现快速名字路由查找算法成为一个重大而艰巨的任务。针对这一问题,本课题结合命名数据网络名字的特性,对名字结构及算法进行了改进。本课题先研究了常用的查找树、哈希表、布隆过滤器三种经典结构的名字路由查找算法。针对查找树存储开销太大,哈希表存在碰撞且不满足最长前缀匹配等问题,并结合名字层次结构的特征,本课题设计了一种基于哈希查找树的路由算法。这种方法通过哈希函数将词元组件而不是整个名字散列成哈希值,从而适用于最长前缀匹配。同时每层词元单独设计哈希函数能保证哈希碰撞控制在一个很低的范围内。然后查找树的状态转移不通过词元而是通过哈希值匹配来确定,使得查找效率得到提升。此外哈希值比名字词元将占用更少的存储空间,从而降低了结构的空间开销。同时哈希计算可以预处理,和名字查找处于并行结构。实验结果表明该结构有效的提升了查找树的空间效率并小幅度提升了查找效率。为了进一步解决名字可变长度导致的查找树结构层次过深,查找效率低下的问题。本课题设计了一种词元查找树结合布隆过滤器的组合数据结构。该算法结构充分考虑到命名数据网络名字分层可变长的结构,将一个完整的名字划分为两个较短的部分处理:前一部分是固定长度的查找树段,后一部分是可变长度的布隆过滤器段。并着重讨论了不同的分层对于算法效率的影响,最终得出一个最优的分层划分。对比实验结果表明,该结构在存储开销和查找速度方面均有良好的表现。