CN104579974B - 面向ndn中名字查找的哈希布鲁姆过滤器及数据转发方法 - Google Patents
面向ndn中名字查找的哈希布鲁姆过滤器及数据转发方法 Download PDFInfo
- Publication number
- CN104579974B CN104579974B CN201410804782.4A CN201410804782A CN104579974B CN 104579974 B CN104579974 B CN 104579974B CN 201410804782 A CN201410804782 A CN 201410804782A CN 104579974 B CN104579974 B CN 104579974B
- Authority
- CN
- China
- Prior art keywords
- hash
- name
- cbf
- bloom filter
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种面向NDN中名字查找的哈希布鲁姆过滤器及数据转发方法,哈希布鲁姆过滤器由位于片内存储器中的g个计数器布鲁姆过滤器、g个计数器和位于片外存储器中的g个哈希表组成;每个所述哈希表与1个计数器布鲁姆过滤器、1个计数器关联;哈希布鲁姆过滤器通过二次哈希选择方法将NDN路由器中FIB/CS/PIT表项完整信息均匀分散保存于g个计数器布鲁姆过滤器和g个哈希表中。本发明HBF利用片内存储器中CBF的定位与过滤作用,大幅度减少片外存储器的访问开销,从而降低HBF的总体访问成本,提高了数据包转发速率,同时有效避免了泛洪攻击。
Description
技术领域
本发明涉及分布式***、网络等领域大数据处理领域,特别是一种面向NDN中名字查找的哈希布鲁姆过滤器及数据转发方法。
背景技术
随着互联网应用方式的转变,以TCP/IP体系结构为基础的互联网也暴露出若干个问题。互联网设计之初是解决网络设备的互联问题以实现硬件资源的共享,但随着物联网、移动互联网、云计算等技术的发展,网络应用的主体已经转为文字信息、图像和视频,内容服务已成为网络服务的主体。按照端到端原理设计的TCP/IP体系结构在路由扩展性、动态性、可管理、安全、QoS、可靠性等方面的问题日益突出。
为解决TCP/IP体系结构存在的问题,人们进行了大量研究,并取得了***研究成果,命名数据网络(Named Data Networking,NDN) 就是其中的代表之一。NDN是一种以内容为中心的网络体系,其内容的标识与地址是相互分离的,不用考虑内容所在的物理位置,通过名字而不是位置来寻找内容,其寻找过程与地址无关。NDN中采用了类似于目前URL的层次化内容命名机制,一个内容的命名由多个词元(component)组成,每个词元是一个可变长的字符串,各个词元之间通过定界符“/”进行区分。例如“/hnu/edu/cn/videos/cctvnews.avi”为一个具体内容的命名(content name),而“/hnu/edu/cn”及“/hnu/edu/cn/videos”则可作为内容前缀(prefix)用于路由查找及转发。 NDN网络中传输的数据包分为两种,即数据请求包(Interest packet) 和数据回复包(Data packet)。当用户请求内容服务时,则发送包含该内容命名的数据请求包,若中间NDN路由结点缓存了该内容,或内容服务器收到数据请求包,则返回包含内容的数据回复包。
NDN转发层中需要维护FIB、CS、PIT三类信息。FIB保存了路由结点到达内容服务器的下一跳接口(NDN中用face指代,一个 face代表路由器收发报文的一个接口),CS保存路由结点的缓存内容, PIT记录未得到响应的数据请求包的名字信息及其到达face,以便数据回复包沿途返回。由于NDN中数据包不像IP包那样包括源地址和目的,数据包需根据内容的名字在FIB、CS、PIT查询之后转发。其中FIB中查询采取最长前缀匹配原则,PIT中查询采取最长前缀匹配或精确匹配原则,CS中采取精确匹配原则。
可扩展的转发层是NDN广泛发展的关键,而FIB/CS/PIT中快速名字查找又是转发层的核心问题,特别是FIB与PIT不仅需要遵循最长前缀匹配(Longest Prefix Matching,LPM)的规则进行名字查找,而且需要在大规模的命名集合中实现快速查找和更新,以满足路由器的传输速率。尽管传统网络体系中路由IP地址最长前缀匹配算法已经非常成熟,但NDN命名特点使得名字查找比IP地址查找更加复杂;同时没有上限的名字空间造成路由器中路由表项数过多,空间急剧膨胀,这给NDN中名字存储和快速查找带来了巨大的挑战!
目前针对NDN中名字查找技术有四种思路,分别是TCAM、哈希表、多步长字符特里树(multi-bit character trie)、布鲁姆过滤器。
NDN设计方案中最早提出使用TCAM作为硬件运算单元来实现快速名字查找,但是直接加载名字到TCAM中,会耗费大量宝贵的 TCAM资源,同时由于一个名字的长度可能达到几百个字节,会导致一个名字被拆分成多段存于TCAM中,需要进行多次TCAM查找,降低了查询速度,远远达不到IP地址查找时的效率。
CCNx项目将CS、FIB、PIT分别存放于三个不同哈希表中,后来相关研究采用线性链式哈希表(linear chaining hashtable)和d-left 哈希表(d-left hashtable)等哈希技术来解决哈希冲突问题,减少查询时访问次数。尽管哈希表具有O(1)的线性查找速度,但由于多个数据包达到时对同一个哈希表进行查询或更新操作,严重降低数据包的并发处理性能。同时由于哈希表占用空间较大,无法保存于访问速度较快但空间受到限制的SRAM中,只能保存于DRAM中,DRAM 与SRAM(片内)访问延迟比为55:0.45,当网络中出现大量泛洪攻击时,攻击包直接访问时延较高的DRAM,耗尽路由器内存资源,导致网络拥塞。
基于编码技术和特里树技术有名字词元编码特里树(name component encodingtrie,NCET)或编码名字前缀特里树(encode name prefix trie,ENPT)来进行名字查找。NCET或ENPT将路由表中的名字前缀即词元采用编码表示,进行名字查找时,首先通过词元-编码映射表,获取组成该名字的所有词元的码字,从而获得对应的码串;然后在NCET或ENPT中查找该码字序列;查找结束后,返回查找结果。但词元-编码映射表增加额外存储空间、访问成本和名字词元分解成本,例如一个具有n个词元的名字需要访问n次映射表,映射表由于空间大只能保存于DRAM等容量大存储介质中时,n次的访问延迟将会严重影响数据包的处理效率。FIB、FIT中的每个表项除了名字外,还有其它字段信息的存储,例如FIT中表项还有时间戳、face 列表、nonce列表等字段,这些字段无法保存于容量小的SRAM中,一般会保存于容量大但访问延迟较高的DRAM中,这些字段的访问延迟要远高于位于SRAM中名字的访问延迟。
为了压缩名字占用空间,DiPIT、UBF、NameFilter采用结构简洁和查询快速的布鲁姆过滤器(bloom filter,BF)来表示FIB或PIT。但由于BF只能记忆元素是否属于某个集合,无法记忆元素详细信息,例如无法保存PIT时间戳等信息,这样对PIT中的过期表项就无法进行有效处理。
布鲁姆过滤器(BF,Bloom Filter)是一种结构精简的数据过滤方法,虽然它存在稍许查询误判,但由于其哈希查找的常数时间和存储空间开销较小,从而使它具有很好的实用价值,已广泛应用于网络、分布式计算等领域。BF采用长度为m的比特向量V表示n个元素集合S={s1,s2,...,sn},采用k个相互独立的哈希函数h1,h2,...,hk,其函数取值均匀分布在范围为[1...m]。***元素s时,设置V中第h1(s),h2(s),...,hk(s) 位为1。查询元素u时,检查V中第h1(u),h2(u),...,hk(u)位是否全为1,如果全为1,则元素u在S中;否则,元素u不在S中。以下采用三元组{n,m,k,}形式化表示单维属性布鲁姆过滤器,用四元组{n,m,k,L}表示多维属性布鲁姆过滤器。n为集合S中元素个数,m为向量V的长度, k为哈希函数的个数,L为元素属性维数。
发明内容
本发明所要解决的技术问题是,针对现有技术不足,提供面向 NDN中名字查找的哈希布鲁姆过滤器(Hash Bloom filter,HBF)及数据转发方法。
为解决上述技术问题,本发明所采用的技术方案是:一种面向 NDN中名字查找的哈希布鲁姆过滤器,由位于片内存储器中的g个计数器布鲁姆过滤器、g个计数器和位于片外存储器中的g个哈希表组成;每个所述哈希表与1个计数器布鲁姆过滤器、1个计数器关联。
本发明的哈希布鲁姆过滤器通过二次哈希选择方法将NDN路由器中FIB/CS/PIT表项完整信息均匀分散保存于g个计数器布鲁姆过滤器和g个哈希表中。
本发明提供了一种基于上述哈希布鲁姆过滤器的数据转发方法,该方法包括数据***部分和数据查询部分:
所述数据***部分包括以下步骤:
1)当有数据请求包达到时,利用哈希布鲁姆过滤器的两个哈希函数计算该数据请求包中名字字段的哈希值,分别为Hash0和Hash1;
2)查询Hash0和Hash1对应的两个计数器Counteri和Counterj的值,如果Counteri>Counterj,则将上述数据请求包的名字***到哈希布鲁姆过滤器的第j个计数器布鲁姆过滤器CBFj中,将所述数据请求包的名字及其它字段信息***到哈希布鲁姆过滤器的第j个哈希表Hashtablej中;否则所述数据请求包的名字***到哈希布鲁姆过滤器的第i个计数器布鲁姆过滤器CBFi中,将所述数据请求包的名字及其它字段信息***哈希布鲁姆过滤器的第i个哈希表Hashtablei中;
所述数据查询部分包括以下步骤:
1)当数据回复包达到NDN路由器时,利用哈希布鲁姆过滤器的两个哈希函数计算该数据回复包中名字字段的哈希值,分别为 Hash0和Hash1;
2)分别查询Hash0和Hash1对应的哈希布鲁姆过滤器中的CBFi和CBFj中是否存在该名字,可能出现以下四种判断结果:①CBFi判断存在,CBFj判断不存在;②CBFi判断不存在,CBFj判断存在;③CBFi和CBFj判断都存在;④CBFi和CBFj判断都不存在;
3)针对上述四种判断结果,对哈希布鲁姆过滤器中的哈希表的查询操作分别进行如下处理:
①CBFi判断存在,CBFj判断不存在:进入哈希布鲁姆过滤器中的Hashtablei中查询数据回复包中名字对应的其它信息,如果能查询到该名字,则读取数据请求Face列表进行数据转发;如果未能查询到该名字,说明哈希布鲁姆过滤器中的CBFi产生误判,不做任何处理;
②CBFi判断不存在,CBFj判断存在:进入哈希布鲁姆过滤器中的Hashtablej中查询数据回复包中名字对应的其它信息,如果能查询到该名字,则读取数据请求Face列表进行数据转发;如果未能查询到该名字,说明哈希布鲁姆过滤器中的CBFj产生误判,不做任何处理;
③CBFi和CBFj判断都存在:进入哈希布鲁姆过滤器中的 Hashtablei中查询数据回复包中名字对应的其它信息,如果能查询到该名字,则读取数据请求Face列表进行数据转发,流程结束;如果未能查询到该名字,说明哈希布鲁姆过滤器中的CBFi产生误判,进入哈希布鲁姆过滤器中的Hashtablej中查询数据回复包中名字对应的其它信息,如果能查询到该名字,则读取数据请求Face列表进行数据转发;如果未能查询到该名字,说明哈希布鲁姆过滤器中的CBFj产生误判,不做任何处理;
④CBFi和CBFj判断都不存在:说明该数据回复包不是该NDN 路由器请求的,直接丢弃该数据包,不做任何处理。
与现有技术相比,本发明所具有的有益效果为:本发明HBF利用片内存储器中CBF的定位与过滤作用,大幅度减少片外存储器的访问开销,从而降低HBF的总体访问成本,提高了数据包转发速率,同时有效避免了泛洪攻击。
附图说明
图1为本发明HBF结构示意图;
图2(a)为HBF应用于CS时,哈希表中每个桶的结构;图2 (b)为HBF应用于FIB时,哈希表中每个桶的结构;图2(c)为 HBF应用于PIT时,哈希表中每个桶的结构;
图3为在固定HBF占用片内存储空间情况下,设定m/n=10,通过matlab进行仿真实验得到的fCBF、fHBF与k的关系曲线;
图4为在固定HBF片内存储器占用空间条件下,设定m/n=10,片内存储器的平均访问次数VCBF-2与参数r、k相关,通过matlab模拟仿真得到的VCBF-2与r、k关系曲线;
图5为设定a=1和m/n=10情况下,通过matlab模拟VCBF-HT与k、 r的关系曲线;
图6为VCBF-HT与VHT对比分析图一;
图7为VCBF-HT与VHT对比分析图二;
图8为VCBF-HT与VHT对比分析图三;
图9为CostHBF与r,k关系曲线;
图10为CostHT与r,k关系曲线;
图11为本发明实施例6个名字集分布情况示意图;
图12为本发明实施例6组名字集存入HBF后,每个CBF中名字个数分布情况图;
图13为本发明实验50组数据的平均误判率实验结果图;
图14为HBF误判率实验过程中同时统计片内存储器访问次数实验结果图;
图15为HBF误判率实验过程中同时统计片外存储器访问次数实验结果图;
图16为直接对哈希表进行查询操作,统计访问次数的实验结果图一;
图17为直接对哈希表进行查询操作,统计访问次数的实验结果图二;
图18为直接对哈希表进行查询操作,统计访问次数的实验结果图三;
图19为HBF实际总体访问成本与k,r关系;
图20为哈希表实际总体访问成本与k,r关系;
图21为HBF与d-left HTPIT片外存储器访问次数比较;
图22为HBF与d-left HTPIT总体访问成本比较。
具体实施方式
本发明HBF由位于片内存储器中的g个计数器布鲁姆过滤器 (Counting BloomFilter,CBF)、g个计数器和位于片外存储器中的g 个哈希表组成,每个哈希表与1个CBF和1个计数器关联。为了避免因部分CBF存入名字过多导致的HBF高误判率,HBF通过二次哈希选择算法将NDN路由器中FIB/CS/PIT表项完整信息均匀分散保存于g个CBF和g个哈希表中,同时也利于数据包转发的并行处理。
与哈希表、树型存储及查询算法、Trie存储及查询算法等相比, BF所需要空间与元素自身大小无关,仅与元素个数相关,极大降低了存储空间的需求。BF只能判断名字是否存在NDN路由器 FIB/CS/PIT表中,而不能返回该名字对应的其它字段信息,因此需要用哈希表来存储组织FIB、PIT或CS表的详细信息。由于哈希表较大,无法保存于片内存储器中,需要保存于片外存储器,如DRAM 等。基于此,本发明提出的HBF由g个CBF、g个计数器和g个链式哈希表组成,g个CBF和g个计数器存储于片内存储器中,如SRAM; g个哈希表存储于片外存储器中,如DRAM。其中哈希表中每个桶由key和data两部分组成,key代表名字,data代表该名字对应的其它字段信息。HBF结构如图1所示。
为了提高NDN路由转发并行处理效率,利用3个HBF分别为 CS、FIB、PIT建立存储结构,而不是将CS、FIB、PIT信息存于同一个HBF中。当HBF应用于CS时,哈希表中每个桶的结构如图2 (a)所示,data代表数据内容(content);当HBF应用于FIB时,哈希表中每个桶的结构如图2(b)所示,data代表FIB的转发规则,即Face列表;当HBF应用于PIT时,哈希表中每个桶的结构如图2 (c)所示,data代表请求Face列表、nonce列表和期限时间戳等字段。
下面以PIT中的元素***和查询为例来说明HBF工作方法。
当有一个新的数据请求包达到时,CS中查询不到请求数据内容,同时PIT中也未发现该数据请求记录,因此需要向PIT中***该条数据请求记录,***过程分为三步:
(1)利用HBF的两个哈希函数计算该数据请求包中名字字段的哈希值,分别为Hash0和Hash1;
(2)查询Hash0和Hash1对应的两个计数器Counteri和Counterj的值,如果Counteri>Counterj,则将该名字***到HBF的CBFj中,否则***HBF的CBFi中;
(3)如果Counteri>Counterj,则将该名字及其它字段信息***到 HBF的Hashtablej中,否则***HBF的Hashtablei中。
当数据回复包达到NDN路由器时,需要从PIT中查询数据请求Face列表,查询过程分为三步:
1)利用HBF的两个哈希函数计算该数据回复包中名字字段的哈希值,分别为Hash0和Hash1;
2)分别查询Hash0和Hash1对应HBF中的CBFi和HBF中的CBFj中是否存在该名字,可能出现四种判断结果:①CBFi判断存在,CBFj判断不存在;②CBFi判断不存在,CBFj判断存在;③CBFi和CBFj判断都存在;④CBFi和CBFj判断都不存在;
3)根据上述对于这四种判断结果,对HBF中的哈希表的查询操作分别进行如下处理:
①HBF中的CBFi判断存在,HBF中的CBFj判断不存在:进入 HBF中的Hashtablei中查询数据回复包中名字对应的其它信息,如果能查询到该名字,则读取数据请求Face列表进行数据转发;如果未能查询到该名字,说明HBF中的CBFi产生误判,不做任何处理;
②HBF中的CBFi判断不存在,HBF中的CBFj判断存在:进入 HBF中的Hashtablej中查询数据回复包中名字对应的其它信息,如果能查询到该名字,则读取数据请求Face列表进行数据转发;如果未能查询到该名字,说明HBF中的CBFj产生误判,不做任何处理;
③HBF中的CBFi和CBFj判断都存在:进入HBF中的Hashtablei中查询数据回复包中名字对应的其它信息,如果能查询到该名字,则读取数据请求Face列表进行数据转发,流程结束;如果未能查询到该名字,说明HBF中的HBF中的CBFi产生误判,进入HBF中的Hashtablej中查询数据回复包中名字对应的其它信息,如果能查询到该名字,则读取数据请求Face列表进行数据转发;如果未能查询到该名字,说明HBF中的CBFj产生误判,不做任何处理;
④HBF中的CBFi和CBFj判断都不存在:说明该数据回复包不是该NDN路由器请求的,直接丢弃该数据包,不做任何处理。特别针对泛洪攻击,由于HBF中的CBF的过滤作用,避免直接进入位于片外存储器中的Hashtablei或Hashtablej查询,从而有效防止因泛洪攻击造成的NDN路由器内存耗尽和宕机。
本发明对HBF总体访问成本CostHBF与m/n、r、k、a等参数关系进行了***理论分析,为实际工业界应用提供了设计依据。
NDN中无论是数据请求包还是数据回复包达到时,都需要执行 FIB/CS/PIT结构中名字的查询操作。NDN路由器中FIB的动态更新处理首先也需要执行FIB结构中名字的查询操作。因此NDN中名字查询算法的性能直接影响数据包的转发效率。以下主要对HBF查询算法的空间复杂度和时间复杂度进行理论分析。
时间复杂度主要是执行名字查询过程中对片内存储器中CBF的访问次数和片外存储器中哈希表的访问次数,而这二者均受到CBF 误判率的影响。因此首先分析HBF中多个BF组合在一起后的误判率。
设定HBF中CBF与哈希表个数均为g,容纳名字最大个数为d,则每个CBF和哈希表保存名字的个数为n=d/g。每个CBF具有m个计数器和k个哈希函数,每个计数器具有t个比特。
1.误判率分析(假阳性)
单个CBF的误判率计算公式为:
fCBF(m,k,n)=(1-e-k·n/m)k (1)
HBF中,每个名字的2个哈希值对应的2个CBF同时不出现假阳性时才不会产生误判现象。因此HBF误判率的计算公式为:
fHBF=1-(1-fCBF)2=1-(1-e-k·n/m)2 (2)
从公式(2)可以看出fHBF与HBF内存占用空间m呈单调下降关系,即m越大,VCBF-2越低。在固定HBF占用片内存储空间情况下,设定m/n=10,通过matlab进行仿真实验得到fCBF、fHBF与k的关系曲线,如图3所示。可以看出fHBF的变化趋势与fCBF相同,都是在k=7 时出现最小值。
2.空间复杂度分析
HBF将CBF和哈希表分别部署在片内存储器和片外存储器中,设定HBF总的占用空间为SHBF,CBF占用空间为SCBF,哈希表占用空间为SHT,FIB/CS/PIT每条记录大小为SEntry个字节,则内存占用空间计算公式为:
为了保证公式(2)中fHBF<1,必须保证m/n>k,因此从公式(3) 中可以看出,在给定m值情况下,SCBF空间大小只与存入名字个数有关,与名字自身长度及对应其它信息长度无关,极大压缩了名字占用空间,这就保证能提供高速访问速度但容量较小的片内存储器容纳更多名字个数。
由于片外存储器容量较大和访问速度远低于片内存储器,以及查询过程时需要访问记录完整信息,因此并未考虑SHT空间压缩。
3.片内存储器访问次数分析
设定待查找名字个数为q,q中包含HBF名字个数与q的比例为 r,误判个数为(q-q·r)·fHBF。则q·r+(q-q·r)·fHBF个元素每次需要访问k次 CBF,q·(1-r)·(1-fHBF)个元素每次可能需要访问1~k次CBF。以k=4为例,在未产生误判情况下,对于每个名字在CBF中的4个哈希判断结果组合共有15个。其中判断结果为0000、0001、0010、0011、0100、 0101、0110,、0111只需要访问1次CBF,其概率为8/15;判断结果为1000、1001、1010、1011需要访问2次CBF,其概率为4/15;判断结果为1100,、1101需要访问3次CBF,其概率为2/15;判断结果为1110需要访问4次CBF,其概率为1/15。判断不在单个CBF中元素平均访问次数VCBF-1为:
以此类推,片内存储器的平均访问次数VCBF-2计算公式为:
从公式(5)看出,VCBF-2与HBF片内存储器占用空间m呈单调下降关系,即m越大,VCBF-2越低。在固定HBF片内存储器占用空间条件下,设定m/n=10,片内存储器的平均访问次数VCBF-2与参数r、 k相关,通过matlab模拟仿真得到VCBF-2与r、k关系曲线,如图4所示。
从图4可以看出,当r固定时,VCBF-2随着k增加而增加。当k 固定且k>3,r≥0.1时,VCBF-2随着r增加而增加;当k固定且k≤3和 r≥0.1时,VCBF-2随着r增加而减小;而当k固定且r≤0.01时,VCBF-2基本上与r无关,处于一个稳定值。NDN路由器实际运行过程中,r 会逐步降低,因此VCBF-2也会降低,从而降低访问CBF次数,提高处理效率。
4.片外存储器访问次数分析
对于装填因子为a的单个哈希表(链地址)查找成功时平均查找长度(次数)Snc=1+a/2,查找不成功时平均查找长度(次数)为Unc=a+e-a[16]。
对于HBF,同一个元素可能要去两个哈希表查找,因此需要综合两个哈希表来计算HBF总体平均查找长度(次数)。真正存储于HBF 中有50%元素在第1个哈希表中查询到结果后就退出查询,不再进入第2个哈希表进行查询;50%元素在第1个哈希表查找失败后再次在第2个哈希表中查询得到结果。使用CBF后,进入哈希表查找元素个数为真正存储于HBF中元素个数与CBF误判元素个数之和,其访问次数VCBF-HT计算公式为:
未使用CBF过滤时,所有元素都将直接访问哈希表,其访问次数VHT计算公式为:
公式(6)可以看出:VCBF-HT随着a增加而增加。设定a=1和m/n=10 情况下,通过matlab模拟VCBF-HT与k、r关系曲线,如图5所示。从图5可以看出:固定r情况下,k=7时VCBF-HT取得最小值,当k<7时, VCBF-HT随着k增加而减小,当k>7时,VCBF-HT随着k增加而稍微上升;固定k情况下,VCBF-HT随着r增加而增加。
将VCBF-HT与VHT对比分析,其比较结果如图6、图7、图8所示。从图中可以看出使用CBF后,大幅度降低片外存储器的访问次数,最高可以降低117倍(r=0.001,k=7)。
5.总体访问成本分析
通过上述理论分析可以看出:在给定CBF片内存储器占用空间、 r、a情况下,HBF中片内存储器访问次数随着k增加而增加,片外存储器访问次数则随着k增加而减小,但片外存储器访问时间要远高于片内存储器,因此我们需要总体分析HBF的访问成本。设定片内存储器每次访问成本为τ,片外存储器每次访问成本为β×τ,则HBF 总体访问成本CostHBF计算公式为:
CostHBF=τ·VCBF-2+β·τ·VCBF-HT (8)
对于未采用CBF直接访问哈希表成本计算公式为:
CostHT=β·τ·VHT (9)
相关研究成果对主要内存的性能等指标进行了综述,见表1所示。
表1主要内存比较表
HBF采用SRAM和DRAM分别存储CBF和哈希表,给定m/n=10, a=1,取τ=1,β=55/0.45=122,则根据公式(8)得到CostHBF与r,k关系曲线,如图9所示;根据公式(9)得到CostHT与r关系曲线,如图 10所示。
通过图9和图10可以看出使用CBF后大幅度降低HBF总体访问成本。r取不同值时,CostHT与CostHBF比较结果如表2所示。r=0.01 时,HBF总体访问成本最高能降低40.55倍。
表2 CostHT与CostHBF理论对比
根据公式(5)、(6)、(8)可以看出,在选定片内存储器和片外存储器后,HBF总体访问成本CostHBF与m/n、r、k、a等参数相关,
相互关系如下:
①CostHBF与m/n是单调减的关系,即CostHBF随着m/n增加而减小,但会增加CBF的占用空间;
②CostHBF与r是单调增的关系,即CostHBF随着r减小而减小,路由器运行时间越长,r会越小;
③CostHBF与a是单调增的关系,即CostHBF随着a减小而减小,但会增加哈希表的占用空间;
④CostHBF与k既有单调增的关系,也有单调减的关系,k<k0时,CostHBF与k是单调减的关系,k>k0时,CostHBF与k是单调增的关系。
通过上述关系分析,在固定CBF与哈希表占用空间的情况下,k 是决定CostHBF大小的关键参数,特别是k0的选择,这给实际工业界的推广应用提供了理论依据。
实施例:
本发明通过实际实验验证理论分析正确性,找出最优参数设置,优化HBF总体访问成本,降低访问开销,提高NDN数据包转发速率。同时将HBF的访问次数及访问成本与d-leftHTPIT对比分析。
实验数据有两个途径。第一个途径从Blacklist下载学术界广泛使用的域名和URL集合,从URL解析出域名后并重新生成名字集;第二个途径是利用清华大学刘斌等人开发的NDN数据生成工具 NDNBench,以Blacklist下载的URL集合为种子,随机生成多组名字集合。
实验主要内容包括:
(1)HBF中CBF***名字个数均衡度实验;
(2)HBF误判率实验;
(3)HBF片内存储访问次数实验;
(4)HBF片外存储访问次数实验;
(5)HBF实际总体成本对比分析;
(6)HBF与d-left HTPIT访问次数及访问成本对比;
实验(1)中实验数据采用Blacklist中超过50M个URL的6个子目录,分别是adult、porn、sports、religion、medical、vacation。实验(2)~(6)的实验数据以Blacklist子目录port中URL集为种子,利用NDNBench生成50组查询名字集,每个查询集包括1000000个名字,然后分别抽取查询集中0.1%、1%、10%的元素构成***名字集(即r=0.001,r=0.01,r=0.1)。查询集或***集中名字对应的其它字段信息随机生成。
实验内容如下:
(1)HBF中***CBF中命名个数均衡度
与定长的IP查找不同,名字前缀的长度可变,由多个词元组成,这就意味着名字前缀的集合数目不确定,如果直接按相关研究成果 Namefilter(清华大学汪漪、刘斌等人提出)根据词元个数将不同命名***不同CBF,这样会产生两个问题:一是不同CBF***名字个数不均衡,导致部分CBF误判率上升,影响HBF的整体误判率;二是预先无法知道创建CBF个数,需要动态创建CBF,但由于FPGA、ASIC 等专用硬件无法支持运行时动态分配CBF处理模块。HBF根据存储单元最大容量,预先创建固定数目的CBF,名字***过程采用二次哈希方法选择CBF,本实验就是***具有不同词元个数的名字集合,统计每个CBF中***名字个数的分布情况,实验中设定20个CBF。实验数据采用Blacklist中超过50M个URL的6个子目录,如表3所示:
表3Blacklist子目录URL
将表3中子目录下的URL集解析出域名后并重新生成6个名字集,这些数据集合中具有不同词元个数的名字数目分布不均匀,这6 个名字集分布情况也不相同,如图11所示。6组名字集存入HBF后,每个CBF中名字个数分布情况如图12所示,可以看出,每个CBF ***名字个数分布非常均匀,均在4.996%~5.003%范围内。
(2)HBF误判率
首先将***名字集存入HBF中,然后用查询名字集对HBF进行查询,统计50组数据的平均误判率,实验结果如图13所示。图13 中实际实验结果与图3的理论分析结果接近,曲线变化趋势完全一致,均与r取值无关,均在k=7时得到误判率的最小值,k≤7时,fHBF随着k增加而大幅度降低,k>7时,fHBF随着k增加稍微增加。
(3)HBF片内存储器访问次数
在进行HBF误判率实验过程中同时统计片内存储器访问次数 (以1000个名字为统计单位),实验结果如图14所示,曲线与图4 中r=0.001,r=0.01,r=0.1三条曲线变化趋势大体一致,片内存储器访问次数均随着k增加而增加。
(4)HBF片外存储器访问次数
在进行HBF误判率实验过程中同时统计片外存储器访问次数 (以1000个名字为统计单位),实验结果如图15所示,曲线与图5 中r=0.001,r=0.01,r=0.1三条曲线变化趋势大体一致。固定r取值,均在k=7时取得最小值,当k<7时,片外存储器访问次数均随着k增加而减小,当k>7时,片外存储器访问次数均随着k增加而稍微上升。固定k取值,片外存储器访问次数随r降低而降低。
为了验证CBF的定位与过滤作用,直接对哈希表进行查询操作,统计访问次数,实验结果如图16、图17、图18所示。实验结果与图 6、图7、图8理论分析结果基本一致。
(5)HBF实际总体访问成本对比分析
根据上述实验,计算HBF和直接访问哈希表实际总体访问成本 (以1000个名字为统计单位),其结果分别如图19和图20所示。
CostHT与CostHBF实际结果对比如表4所示,r=0.001时,HBF总体访问成本最高能降低47.9倍,随着NDN路由器运行时间越久,r 会逐步降低,CBF降低总体访问成本的效果会更加明显。
表4CostHT与CostHBF实际结果对比
图19和图20中实际实验结果与图9和图10的理论结果分析大体一致,采用CBF后均能大幅度降低HBF总体成本,验证了算法分析中得出的HBF总体访问成本CostHBF与m/n、r、k、a等参数关系。
(6)HBF与d-left HTPIT访问次数及访问成本对比
d-left HTPIT中参数d(哈希表个数)越大时,数据包的并发处理时对哈希表的访问效率就越高,但名字查找时需要遍历个d个哈希表,片外存储器的访问次数就会大幅度上升。
HBF片内存储器和片外存储器的访问次数与其参数g(CBF与哈希表的个数)无关,当g取值越大时,数据包的并发处理时对哈希表的访问效率就越高。HBF以牺牲片内存储器空间为代价,通过片内存储器中的CBF减少对对片外存储器中哈希表的无效访问次数。根据相关研究可知,CBF的误判率(假阳性)fBF(m,k,n)=(1-e-k·n/m)k,当 k·n≥m,fBF接近1,全部元素会被误判,导致CBF失效,因此会有 m/n>k。一般k最小值取2,因此当m/n=3时,HBF占用最小的片内存储存储器空间,此时代价最低,即每个名字消耗12比特(1.5字节)。
将具有最低片内存储空间的HBF与具有最低哈希表个数的d-left HTPIT进行对分析,结果如表5所示。
表5 HBF与d-left HTPIT访问次数及访问成本对比1
从表5可以看出,同d-left HTPIT相比,HBF在占用最小片内存储空间情况下,其片外存储器访问次数降低了3.9倍,总体访问成本降低了3.8倍。
将HBF的片内存储空间提高到m/n=10(每个名字消耗40比特) 后,再与d-leftHTPIT(d=2)对比分析,其实验结果见图21、图22。
从图21中可以看出,d-left HTPIT在名字查找过程中,对于未在哈希表中的名字查找时只需要遍历2个哈希表,因此片外存储器访问次数降低;片外存储器访问次数同d-left HTPIT相比,HBF最高降低了96倍(HBF中k=7),最低降低了27倍(HBF中k=2)。
从图22 中可以看出,同d-left HTPIT相比,尽管HBF增加了片内存储器的访问次数,但总体访问成本还是降低显著,最高降低了45倍(HBF中k=5),最低降低了22倍(HBF中k=2)。
d-left HTPIT中参数d=2时,这也会成为数据包并发处理时的资源访问瓶颈。
针对NDN路由器中快速名字查找及FIB/CS/PIT表项的存储需求,本发明提出了一种名为哈希布鲁姆过滤器的数据结构及相应查询算法,该结构将FIB/CS/PIT表项完整信息均匀分散存储于片外存储器中的g个哈希表中,利于数据包转发的并行处理,同时将FIB/CS/PIT 表项中名字经过高效空间压缩后存储于片内存储器中的g个CBF中,通过CBF的定位与过滤作用,避免查找时中g个哈希表的遍历操作,大幅度减少对片外存储器的访问开销,降低名字查找的总体访问成本,有效避免泛洪攻击。本发明对HBF总体访问成本CostHBF与m/n、r、 k、a等参数关系进行了***理论分析和实验验证,为实际工业界应用提供了设计依据。
同时通过与类似研究成果d-left HTPIT对比,HBF在NDN名字查找过程的内存访问次数(片外存储器)和总体访问成本大幅度降低,在其占用最少片内存储器空间情况下(每个名字消耗12比特),片外存储器访问次数降低了3.9倍,总体访问成本降低了3.9倍;当其占用空间提高到每个名字消耗40比特时,片外存储器访问次数最高可降低96倍(HBF中k=7),最低也降低了27倍(HBF中k=2),总体访问成本最高可降低45倍(HBF中k=5),最低也降低了22倍(HBF 中k=2)。而这样的比较结果还是在d-left HTPIT中哈希表个数d设为最小值时取得的,此时d-left HTPIT中哈希表会成为数据包并发处理时资源访问的瓶颈。为了解决此问题则需要提高哈希表个数d,那么HBF在总体访问成本的优势就会更加突出。
Claims (1)
1.一种基于哈希布鲁姆过滤器的数据转发方法,哈希布鲁姆过滤器,由位于片内存储器中的g个计数器布鲁姆过滤器、g个计数器和位于片外存储器中的g个哈希表组成;每个所述哈希表与1个计数器布鲁姆过滤器、1个计数器关联;该哈希布鲁姆过滤器通过二次哈希选择方法将NDN路由器中FIB/CS/PIT表项完整信息均匀分散保存于g个计数器布鲁姆过滤器和g个哈希表中;其特征在于,该方法包括数据***部分和数据查询部分:
所述数据***部分包括以下步骤:
1)当有数据请求包达到时,利用哈希布鲁姆过滤器的两个哈希函数计算该数据请求包中名字字段的哈希值,分别为Hash0和Hash1;
2)查询Hash0和Hash1对应的两个计数器Counteri和Counterj的值,如果Counteri>Counterj,则将上述数据请求包的名字***到哈希布鲁姆过滤器的第j个计数器布鲁姆过滤器CBFj中,将所述数据请求包的名字及其它字段信息***到哈希布鲁姆过滤器的第j个哈希表Hashtablej中;否则所述数据请求包的名字***到哈希布鲁姆过滤器的第i个计数器布鲁姆过滤器CBFi中,将所述数据请求包的名字及其它字段信息***哈希布鲁姆过滤器的第i个哈希表Hashtablei中;所述数据查询部分包括以下步骤:
1)当数据回复包达到NDN路由器时,利用哈希布鲁姆过滤器的两个哈希函数计算该数据回复包中名字字段的哈希值,分别为Hash0和Hash1;
2)分别查询Hash0和Hash1对应的哈希布鲁姆过滤器中的CBFi和CBFj中是否存在该名字,可能出现以下四种判断结果:①CBFi判断存在,CBFj判断不存在;②CBFi判断不存在,CBFj判断存在;③CBFi和CBFj判断都存在;④CBFi和CBFj判断都不存在;
3)针对上述四种判断结果,对哈希布鲁姆过滤器中的哈希表的查询操作分别进行如下处理:
①CBFi判断存在,CBFj判断不存在:进入哈希布鲁姆过滤器中的Hashtablei中查询数据回复包中名字对应的其它信息,如果能查询到该名字,则读取数据请求Face列表进行数据转发;如果未能查询到该名字,说明哈希布鲁姆过滤器中的CBFi产生误判,不做任何处理;
②CBFi判断不存在,CBFj判断存在:进入哈希布鲁姆过滤器中的Hashtablej中查询数据回复包中名字对应的其它信息,如果能查询到该名字,则读取数据请求Face列表进行数据转发;如果未能查询到该名字,说明哈希布鲁姆过滤器中的CBFj产生误判,不做任何处理;
③CBFi和CBFj判断都存在:进入哈希布鲁姆过滤器中的Hashtablei中查询数据回复包中名字对应的其它信息,如果能查询到该名字,则读取数据请求Face列表进行数据转发,流程结束;如果未能查询到该名字,说明哈希布鲁姆过滤器中的CBFi产生误判,进入哈希布鲁姆过滤器中的Hashtablej中查询数据回复包中名字对应的其它信息,如果能查询到该名字,则读取数据请求Face列表进行数据转发;如果未能查询到该名字,说明哈希布鲁姆过滤器中的CBFj产生误判,不做任何处理;
④CBFi和CBFj判断都不存在:说明该数据回复包不是该NDN路由器请求的,直接丢弃该数据包,不做任何处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410804782.4A CN104579974B (zh) | 2014-12-22 | 2014-12-22 | 面向ndn中名字查找的哈希布鲁姆过滤器及数据转发方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410804782.4A CN104579974B (zh) | 2014-12-22 | 2014-12-22 | 面向ndn中名字查找的哈希布鲁姆过滤器及数据转发方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104579974A CN104579974A (zh) | 2015-04-29 |
CN104579974B true CN104579974B (zh) | 2017-10-31 |
Family
ID=53095199
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410804782.4A Active CN104579974B (zh) | 2014-12-22 | 2014-12-22 | 面向ndn中名字查找的哈希布鲁姆过滤器及数据转发方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104579974B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106131844B (zh) * | 2016-07-21 | 2019-08-27 | 江苏大学 | 一种ndn中恶意请求兴趣包攻击的防御方法 |
CN107105019B (zh) * | 2017-04-06 | 2020-04-10 | 湖南大学 | 一种ndn数据名查找方法及*** |
CN108021678B (zh) * | 2017-12-07 | 2022-05-17 | 北京理工大学 | 一种结构紧凑的键值对存储结构及快速键值对查找方法 |
CN110460528A (zh) * | 2018-05-07 | 2019-11-15 | 天津师范大学 | 命名数据网转发平面的fib存储结构及其使用方法 |
CN108600393B (zh) * | 2018-05-30 | 2020-08-18 | 常熟理工学院 | 一种基于命名数据的物联网数据通信方法 |
CN110321347A (zh) * | 2019-05-30 | 2019-10-11 | 上海数据交易中心有限公司 | 数据匹配方法及装置、存储介质、终端 |
CN110532307B (zh) * | 2019-07-11 | 2022-05-03 | 北京大学 | 一种流滑动窗口的数据存储方法及查询方法 |
CN110716931A (zh) * | 2019-09-05 | 2020-01-21 | 杉树岭网络科技有限公司 | 一种基于哈希指纹的布鲁姆过滤器 |
CN111049642A (zh) * | 2019-12-30 | 2020-04-21 | 深圳供电局有限公司 | 一种基于布谷鸟过滤器的电力rpl协议黑洞攻击防御方法 |
CN112115312B (zh) * | 2020-09-08 | 2022-07-08 | 湖南大学 | 数据名查找方法、***及存储介质 |
CN113992585A (zh) * | 2021-10-25 | 2022-01-28 | 天津职业技术师范大学(中国职业培训指导教师进修中心) | 一种用于ndn中的名称***查找方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2562978A1 (en) * | 2011-08-12 | 2013-02-27 | Alcatel Lucent | Content router of a content centric network |
CN103428093A (zh) * | 2013-07-03 | 2013-12-04 | 北京邮电大学 | 一种基于名字路由前缀存储、匹配及更新方法与装置 |
CN103595637A (zh) * | 2013-10-27 | 2014-02-19 | 西安电子科技大学 | 基于树与哈希表的内容中心网络结点处理数据方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140280823A1 (en) * | 2013-03-14 | 2014-09-18 | Alcatel-Lucent | Wire-speed pending interest table |
-
2014
- 2014-12-22 CN CN201410804782.4A patent/CN104579974B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2562978A1 (en) * | 2011-08-12 | 2013-02-27 | Alcatel Lucent | Content router of a content centric network |
CN103428093A (zh) * | 2013-07-03 | 2013-12-04 | 北京邮电大学 | 一种基于名字路由前缀存储、匹配及更新方法与装置 |
CN103595637A (zh) * | 2013-10-27 | 2014-02-19 | 西安电子科技大学 | 基于树与哈希表的内容中心网络结点处理数据方法 |
Non-Patent Citations (2)
Title |
---|
"Scalable Name Lookup with Adaptive Prefix Bloom Filter for Named Data Networking";Wei Quan et al;《IEEE COMMUNICATIONS LETTERS》;20140131;第18卷(第1期);第102-105页 * |
"基于计数布鲁姆过滤器的快速多维包分类算法";谢鲲 等;《电子学报》;20100531;第38卷(第5期);第1046-1052页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104579974A (zh) | 2015-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104579974B (zh) | 面向ndn中名字查找的哈希布鲁姆过滤器及数据转发方法 | |
Li et al. | Packet forwarding in named data networking requirements and survey of solutions | |
Wang et al. | Scalable name lookup in NDN using effective name component encoding | |
Song et al. | Scalable name-based packet forwarding: From millions to billions | |
CN101577721A (zh) | 一种索引拆分布鲁姆过滤器及其***、删除和查询方法 | |
Lee et al. | Name prefix matching using bloom filter pre-searching for content centric network | |
CN104243315A (zh) | 用于唯一枚举解析树中的路径的装置和方法 | |
CN110858823B (zh) | 一种数据包的分类方法、装置及计算机可读存储介质 | |
Ghasemi et al. | A fast and memory-efficient trie structure for name-based packet forwarding | |
CN104361296B (zh) | 一种并行的大容量访问控制列表的查找方法 | |
CN105989061A (zh) | 一种滑动窗口下多维数据重复检测快速索引方法 | |
Saxena et al. | N-FIB: Scalable, memory efficient name-based forwarding | |
CN103685222A (zh) | 基于确定性有穷状态自动机的数据匹配检测方法 | |
Majumder et al. | Scalable regular expression matching on data streams | |
Khelifi et al. | A name-to-hash encoding scheme for vehicular named data networks | |
CN103414603B (zh) | 基于Hash折叠方法的Ipv6深度包检测方法 | |
CN106789733A (zh) | 一种提高大规模网络流表查找效率的装置及方法 | |
CN111782700A (zh) | 基于双层结构的数据流频次估计方法、***及介质 | |
Yu et al. | Hardware accelerator to speed up packet processing in NDN router | |
Seo et al. | Bitmap-based priority-NPT for packet forwarding at named data network | |
CN111200542B (zh) | 一种基于确定性替换策略的网络流量管理方法及*** | |
Zhang et al. | DENA: An intelligent content discovery system used in named data networking | |
CN107124410A (zh) | 基于机器深度学习的网络安全态势特征聚类方法 | |
CN108566335B (zh) | 一种基于NetFlow的网络拓扑生成方法 | |
Zha et al. | Highly compressed Aho-Corasick automata for efficient intrusion detection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |