面向ndn中名字查找的哈希布鲁姆过滤器及数据转发方法

文档序号:8265571阅读:783来源:国知局
面向ndn中名字查找的哈希布鲁姆过滤器及数据转发方法【
技术领域
】[0001]本发明涉及分布式系统、网络等领域大数据处理领域,特别是一种面向NDN中名字查找的哈希布鲁姆过滤器及数据转发方法。【
背景技术
】[0002]随着互联网应用方式的转变,以TCP/IP体系结构为基础的互联网也暴露出若干个问题。互联网设计之初是解决网络设备的互联问题以实现硬件资源的共享,但随着物联网、移动互联网、云计算等技术的发展,网络应用的主体已经转为文字信息、图像和视频,内容服务已成为网络服务的主体。按照端到端原理设计的TCP/IP体系结构在路由扩展性、动态性、可管理、安全、QoS、可靠性等方面的问题日益突出。[0003]为解决TCP/IP体系结构存在的问题,人们进行了大量研宄,并取得了丰硕研宄成果,命名数据网络(NamedDataNetworking,NDN)就是其中的代表之一。NDN是一种以内容为中心的网络体系,其内容的标识与地址是相互分离的,不用考虑内容所在的物理位置,通过名字而不是位置来寻找内容,其寻找过程与地址无关。NDN中采用了类似于目前URL的层次化内容命名机制,一个内容的命名由多个词元(component)组成,每个词元是一个可变长的字符串,各个词元之间通过定界符"/"进行区分。例如"/hnu/edu/cn/videos/cctvnews.avi"为一个具体内容的命名(contentname),而"/hnu/edu/cn"及"/hnu/edu/cn/videos"则可作为内容前缀(prefix)用于路由查找及转发。NDN网络中传输的数据包分为两种,即数据请求包(Interestpacket)和数据回复包(Datapacket)。当用户请求内容服务时,则发送包含该内容命名的数据请求包,若中间NDN路由结点缓存了该内容,或内容服务器收到数据请求包,则返回包含内容的数据回复包。[0004]NDN转发层中需要维护FIB、CS、PIT三类信息。FIB保存了路由结点到达内容服务器的下一跳接口(NDN中用face指代,一个face代表路由器收发报文的一个接口),CS保存路由结点的缓存内容,PIT记录未得到响应的数据请求包的名字信息及其到达face,以便数据回复包沿途返回。由于NDN中数据包不像IP包那样包括源地址和目的,数据包需根据内容的名字在FIB、CS、PIT查询之后转发。其中FIB中查询采取最长前缀匹配原则,PIT中查询采取最长前缀匹配或精确匹配原则,CS中采取精确匹配原则。[0005]可扩展的转发层是NDN广泛发展的关键,而FIB/CS/PIT中快速名字查找又是转发层的核心问题,特别是FIB与PIT不仅需要遵循最长前缀匹配(LongestPrefixMatching,LPM)的规则进行名字查找,而且需要在大规模的命名集合中实现快速查找和更新,以满足路由器的传输速率。尽管传统网络体系中路由IP地址最长前缀匹配算法已经非常成熟,但NDN命名特点使得名字查找比IP地址查找更加复杂;同时没有上限的名字空间造成路由器中路由表项数过多,空间急剧膨胀,这给NDN中名字存储和快速查找带来了巨大的挑战![0006]目前针对NDN中名字查找技术有四种思路,分别是TCAM、哈希表、多步长字符特里树(multi-bitcharactertrie)、布鲁姆过滤器。[0007]NDN设计方案中最早提出使用TCAM作为硬件运算单元来实现快速名字查找,但是直接加载名字到TCAM中,会耗费大量宝贵的TCAM资源,同时由于一个名字的长度可能达到几百个字节,会导致一个名字被拆分成多段存于TCAM中,需要进行多次TCAM查找,降低了查询速度,远远达不到IP地址查找时的效率。[0008]CCNx项目将CS、FIB、PIT分别存放于三个不同哈希表中,后来相关研宄采用线性链式哈希表(linearchaininghashtable)和d-left哈希表(d-lefthashtable)等哈希技术来解决哈希冲突问题,减少查询时访问次数。尽管哈希表具有0(1)的线性查找速度,但由于多个数据包达到时对同一个哈希表进行查询或更新操作,严重降低数据包的并发处理性能。同时由于哈希表占用空间较大,无法保存于访问速度较快但空间受到限制的SRAM中,只能保存于DRAM中,DRAM与SRAM(片内)访问延迟比为55:0.45,当网络中出现大量泛洪攻击时,攻击包直接访问时延较高的DRAM,耗尽路由器内存资源,导致网络拥塞。[0009]基于编码技术和特里树技术有名字词元编码特里树(namecomponentencodingtrie,NCET)或编码名字前缀特里树(encodenameprefixtrie,ENPT)来进行名字查找。NCET或ENPT将路由表中的名字前缀即词元采用编码表示,进行名字查找时,首先通过词元-编码映射表,获取组成该名字的所有词元的码字,从而获得对应的码串;然后在NCET或ENPT中查找该码字序列;查找结束后,返回查找结果。但词元-编码映射表增加额外存储空间、访问成本和名字词元分解成本,例如一个具有η个词元的名字需要访问η次映射表,映射表由于空间大只能保存于DRAM等容量大存储介质中时,η次的访问延迟将会严重影响数据包的处理效率。FIB、FIT中的每个表项除了名字外,还有其它字段信息的存储,例如FIT中表项还有时间戳、face列表、nonce列表等字段,这些字段无法保存于容量小的SRAM中,一般会保存于容量大但访问延迟较高的DRAM中,这些字段的访问延迟要远高于位于SRAM中名字的访问延迟。[0010]为了压缩名字占用空间,DiPIT、UBF、NameFilter采用结构简洁和查询快速的布鲁姆过滤器(bloomfilter,BF)来表示FIB或PIT。但由于BF只能记忆元素是否属于某个集合,无法记忆元素详细信息,例如无法保存PIT时间戳等信息,这样对PIT中的过期表项就无法进行有效处理。[0011]布鲁姆过滤器(BF,BloomFilter)是一种结构精简的数据过滤方法,虽然它存在稍许查询误判,但由于其哈希查找的常数时间和存储空间开销较小,从而使它具有很好的实用价值,已广泛应用于网络、分布式计算等领域。BF采用长度为m的比特向量V表示η个元素集合S=Is1,s2,...,sn},采用k个相互独立的哈希函数hph2,...,hk,其函数取值均匀分布在范围为[l...m]。插入元素3时,设置V中第hJshhds),...,]^(s)位为1。查询元素u时,检查V中第Ii1(u),h2(u),...A(U)位是否全为1,如果全为1,则元素中;否则,元素u不在3中。以下采用三元组In,m,k,}形式化表示单维属性布鲁姆过滤器,用四元组{n,m,k,U表示多维属性布鲁姆过滤器。η为集合S中元素个数,m为向量V的长度,k为哈希函数的个数,L为元素属性维数。【
发明内容】[0012]本发明所要解决的技术问题是,针对现有技术不足,提供面向NDN中名字查找的哈希布鲁姆过滤器(HashBloomfilter,HBF)及数据转发方法。[0013]为解决上述技术问题,本发明所采用的技术方案是:一种面向NDN中名字查找的哈希布鲁姆过滤器,由位于片内存储器中的g个计数器布鲁姆过滤器、g个计数器和位于片外存储器中的g个哈希表组成;每个所述哈希表与1个计数器布鲁姆过滤器、1个计数器关联。[0014]本发明的哈希布鲁姆过滤器通过二次哈希选择方法将NDN路由器中FIB/CS/PIT表项完整信息均匀分散保存于g个计数器布鲁姆过滤器和g个哈希表中。[0015]本发明提供了一种基于上述哈希布鲁姆过滤器的数据转发方法,该方法包括数据插入部分和数据查询部分:[0016]所述数据插入部分包括以下步骤:[0017]1)当有数据请求包达到时,利用哈希布鲁姆过滤器的两个哈希函数计算该数据请求包中名字字段的哈希值,分别为HashdPHash1;[0018]2)查询Hash。和Hashi对应的两个计数器Counter种Counter」的值,如果CounterpCounterj,则将上述数据请求包的名字插入到哈希布鲁姆过滤器的第j个计数器布鲁姆过滤器CBFj*,将所述数据请求包的名字及其它字段信息插入到哈希布鲁姆过滤器的第j个哈希表Hashtablej中;否当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1