跳到主要内容

原创研究文章

前面。信息通信技术,2019年8月2日
第二节大数据网络
第6卷-2019年| https://doi.org/10.3389/fict.2019.00015

一种用于快速名称前缀查找的复合结构

  • 北京大学深圳研究生院电子与计算机工程学院,中国深圳

基于名称的转发平面是命名数据网络(NDN)的一个关键但具有挑战性的组件,其中哈希表因其快速查找速度的优势而成为FIB中使用的数据结构的一个诱人候选。然而,哈希表有缺陷,它不自然地支持基于名称转发的最长前缀匹配(LPM)算法。为了支持哈希表中的LPM,除了线性查找之外,随机搜索(如二进制搜索)旨在通过重建FIB和优化搜索路径来提高查找速度。我们提出了一种基于哈希表和trie组合的随机搜索复合数据结构;后者用于保留名称之间的逻辑关联,从而回收内存并防止所谓的回溯问题,从而提高查找效率。我们的实验表明了我们的方案在查找速度方面的优势,并评估了对内存消耗的影响。

1.简介

命名数据网络(NDN;Zhang等人,2010年)是一种专注于内容本身而非其端点的网络范式。数据包不是基于其目的地址,而是基于层次结构名称(如URL)转发,以方便多播和网络内缓存。NDN中的传输机制是由用户驱动的,由两种类型的数据包执行,即兴趣和数据。兴趣包携带所需内容的名称,如果兴趣遇到具有所请求内容的生产者节点,则消费者会将兴趣包发送到网络以请求。生成此内容的数据包,并遵循兴趣采取的反向路径返回请求消费者。

在NDN中,转发信息库(FIB)存储感兴趣数据包的转发信息,并使用IP填充类似的规则。由于NDN FIB是由分层结构的内容名称来键控的,如在IP中,因此基于最长前缀匹配(LPM)结果来转发兴趣分组,其中所请求的名称作为查找密钥。

用于IP转发的LPM方法取得了显著的成功。受益于前缀扩展和位图表示等核心概念(Doeringer等人,1996年;Degermark等人,1997年;斯里尼瓦桑和瓦尔盖塞,1998年)对于固定长度的IP,现代的LPM方案可以在几兆字节的内存内高效地处理Internet规模的规则集。然而,由于NDN中的数据包转发与IP相比要复杂得多,传统的LPM方法对于基于名称的转发并不适用;即,高效和可扩展的NDN转发方案需要解决以下挑战:

1变量名称格式。大多数传统转发解决方案是为IP设计的,其复杂性与前缀的长度成正比。与固定长度的IP地址不同,因为NDN名称具有无限长度和更复杂的结构(So等人,2012年,2013;袁等,2012),直接应用这些方案会产生较低的性能。

2大转发表大小。在中引用DNS工作So等人(2013)估计了基于名称的FIB的规模,这比今天的IP路由表大几个数量级。如果没有压缩方法的帮助,NDN转发表可能会远远超过商品设备的容量。

三。经常更新。除了网络拓扑和路由策略更改引起的更新外,NDN FIB还需要处理内容的发布、删除和网络内缓存,这使得更新率大大高于IP协议中的更新率。

因此,转发平面设计已成为一项关键但具有挑战性的工作,尤其是在大规模网络中。FIB设计的评估标准包括操作速度、内存消耗,以及对未来智能和自适应转发策略的支持。目前,trie(前缀树)和hash表是两种广泛用作FIB索引的数据结构:

Trie是一种有序的树状结构,通常用于处理字符串匹配。基于其结构特征的优点,trie可以通过聚合名称中的冗余前缀来减少内存消耗,并且由于trie存储前缀的逻辑关系,因此可以自然支持LPM搜索。然而,trie的缺点是其查找效率低,因为搜索速度相对于与无界名称长度相关联的trie深度的期望值是线性的。

哈希表由于其快速查找和简单实现的优点,也是FIB的一个很有吸引力的候选项。然而,基于散列表的FIB方案存在以下两个问题:

1哈希表比trie或bloom过滤器等结构消耗更多内存,因为需要存储整个名称字符串以处理哈希冲突并确保正确转发。当前的实现主要关注缩短名称长度以解决此问题,例如用指纹、哈希值或编码版本替换名称(袁等,2012,2017).

2哈希表自然不支持LPM搜索。此问题最简单的解决方案是线性搜索,其中HT查找从名称前缀的最长长度开始,并按组件粒度递减迭代,直到找到LPM。另一种方法是随机搜索(Waldvogel等人,1997年)旨在通过重新排列搜索顺序来减少查找时间,例如两级LPM(So等人,2013年)或二进制搜索(袁和克劳利,2015年). 尽管搜索速度有所提高,但大多数随机搜索方法都依赖于FIB的重建,可能会导致所谓的回溯问题,导致假阴性,以及由于许多无用条目无法及时删除而造成的内存浪费。

本文致力于NDN中LPM方法的优化,改进了哈希表FIB方案的随机搜索方法,旨在解决所谓的回溯问题和过时条目造成的内存浪费。我们的方案的特点是:(1)一个重建的哈希表,其中的条目可以分为3类,这决定了当发生随机搜索失败时是否需要回溯过程;从而可以防止假阴性错误。(2) 一种辅助的trie结构,存储名称之间的逻辑关系,以便在表更改时动态修改条目的类型,同时限制trie的额外内存消耗。(3) 上述复合材料结构的相应操作算法。本文的结构安排如下:第二节介绍了研究背景和相关工作。我们的方案在第3节中介绍。评估结果见第4节。

2.背景及相关工作

2.1. NDN转发平面要求

在NDN中,数据应该由一个分层标记化名称检索,其格式为“/c1/c2/c3”。由于名称的某些部分无法事先通知或推断,消费者向网络发送仅带有内容名称前缀的兴趣,并且此前缀下的任何数据都可以通过NDN协议返回。例如,名为“/com/ndn/document/file01.txt”的兴趣可以由名称包含在该前缀中的任何数据回复,例如“/com/dndn/document/file01.txt/segment01”。因此,与IP协议相同,ndn转发信息库中的名称匹配算法(小谎)是最长的前缀匹配(液化石油气),以兴趣名称作为搜索键执行。因此,FIB可以为兴趣找到最准确的转发信息。

与此同时,NDN转发在可扩展应用程序中具有挑战性,原因如下:(1)NDN名称具有无限的可变长度,使得查找操作非常耗时;(2) NDN FIB条目的数量比IP条目的数量大几个数量级;(3) 由于内容发布和删除,NDN FIB必须更频繁地更新,这使得转发平面设计成为一项困难但至关重要的任务。

2.2. 基于哈希表的FIB方案

由于NDN转发平面需要频繁的处理操作,哈希表因其快速查找的优点成为FIB的潜在候选。为了支持LPM匹配算法,在典型的兴趣转发场景中,哈希表(HT)查找从最长长度的名称前缀开始,并按组件粒度逐渐减少。该进程将迭代,直到找到LPM。然而,这种线性搜索方法不仅性能不佳,而且安全性也较差。由于名称为的非匹配兴趣n个组件需要n个在FIB查找时,NDN路由器更容易受到DoS攻击,其中将具有长非匹配nonce名称的兴趣注入网络。

提出了通过优化搜索路径来减少HT查找时间的方法。中的工作So等人(2013)引入了一种2级LPM方案,增强了DoS阻力。在名称插入期间,不仅是名称本身,还包括具有一定长度的相应前缀(M(M)组件),其形成虚拟条目,被插入到FIB中。搜索过程从长度开始M(M)然后继续使用适当的前缀(如果找不到)或从较长的前缀重新启动以执行线性搜索。此外,在Wang等人(2013),2014年)通过根据前缀组件号的分布重新安排搜索顺序,优化两阶段名称查找过程。

除上述方案外袁和克劳利(2015)提出了一种基于哈希表二进制搜索的查找方法。将所有较短的名称前缀作为标记项插入,哈希表形成一个平衡的二进制搜索树,其中每个HT存储具有一定长度的前缀。对于每个树节点,较短的前缀存储在左侧子树中,而较长的前缀则存储在右侧子树中。

中的工程Wang等人(2017)应用基于前缀分量数分布统计的动态规划算法,对上述二进制搜索进行优化。对于每个部件号M(M),具有长度的先验概率M(M)要匹配前缀,动态编程可以递归计算下一个要检查的长度,从而优化搜索路径。

2.3. 回溯问题

上述方案使用随机搜索(Waldvogel等人,1997年)而不是支持高效名称查找的线性方法。然而,随机搜索也会导致所谓的回溯问题。以二进制搜索为例,如果FIB存储2个名称“/c1”和“/c1/c2/c3/c4”,则将“前缀”/c1/c2“和”/c1/c2/c3“作为标记项插入表中,以支持二进制搜索。然后,“/c1/c2/c3/c5”的搜索路线将是:

/c1/c2H(H)T型/c1/c2/c3/c5M(M)S公司S公司/c1/c2/c3H(H)T型终点

如果该算法在二进制搜索后立即终止,则结果为“未找到”,因为搜索路由中的所有HIT条目都是标记,这会导致假阴性,因为匹配它的最长前缀是“/c1”

为了处理这种情况,IP协议进入最后一个匹配条目并引入回溯搜索查找LPM。然而,如上所述,在NDN中,对每个不匹配项进行回溯对于效率和安全来说都是不切实际的。在中工作袁和克劳利(2015)考虑让每个虚拟条目存储从其非虚拟最长匹配前缀继承的转发信息,而不提供实现细节,这需要保持标记条目与其对应LPM之间的一致性,特别是在动态环境中。

2.4. 内存消耗问题

随机搜索的另一个问题是由于插入虚拟条目以及过时条目造成的内存浪费而导致的内存消耗:使用上面的示例,如果名称“/c1/c2/c3/c5”被删除,“/c1/c 2”和“/c1/c2/c3”将变得无用,应将其删除以节省内存。然而,由于名称组件的多样性,仅当遍历整个表时,很难确定虚拟条目是否有用;我们的方案侧重于过时虚拟条目的累积,而FIB压缩方法在本研究中未涉及。

3.算法设计

3.1. 哈希表

根据年的评估结果So等人(2013),在广泛使用的哈希函数中,CityHash1显示了在计算成本和哈希冲突概率方面的最佳性能。SipHash码(奥马森和伯恩斯坦,2012年)也是一个很有吸引力的候选者,它比CityHash稍慢,但对散列洪泛DoS攻击具有更高的抵抗力。在我们的评估方案中,选择CityHash是因为在当前的研究阶段,我们更关注操作速度而不是安全性。

标准::unorder_map选择作为哈希表的实现,因为它基于链并且只需要一个哈希函数,与开放寻址或需要多个哈希功能的方法相比,减少了计算开销。

3.2. FIB的重建

如上所述,根据组件粒度,名称的所有较短前缀都应该存储在表中,以使二进制搜索可行,因此需要一个称为FIB重建的过程。在重构的FIB中,表条目分为以下两类:

真实输入。每个真实条目代表一个引用真实现有文件的名称,并且所有条目在重建之前都是真实的。

非真实条目。在FIB重构中,如果表中不存在实项的较短前缀,则应为其插入相应的非实项。非实项不指任何实际存在的数据,不能用于指导兴趣转发。它的唯一用途是支持随机搜索。

查找名称n个开始于n个的前缀为N个0组件,即长度前缀N个0,其中N个0由算法给出。如果有任何匹配,算法将选择n个的长度前缀N个1>N个0作为下一个要搜索的对象。否则,查找将继续到长度N个1<N个0.

以二进制搜索为例:如果FIB存储了名称的转发信息n个=“/c1/c2/c3”,则n个的前缀“/c1,”“/c1/c2”在表中不存在时,应作为非实数项插入。L(左)H(H)是二进制搜索的上下限,并且M(M)= ⌊(L(左)+H(H))/2⌋是要查找的长度。名称的搜索路径n个′=“/c1/c2/c3/c4/c5/c6”如下:

设置L(左)1,H(H)到名字的长度(L(左)=1,H(H)=6,M(M)=)/c1/c2/c3H(H)T型 (L(左)=M(M)+1)(L(左)=4,H(H)=6,M(M)=5)/c1/c2/c3/c4/c5M(M)S公司S公司 (H(H)=M(M)1)(L(左)=4,H(H)=4,M(M)=4)/c1/c2/c3/c4M(M)S公司S公司 (H(H)=M(M)1)(L(左)>H(H))结束

最后一场比赛n个勒姆(在本例中是/c1/c2/c3)作为搜索结果返回n个’,从而给出了LPM算法的实现。

然而,尽管搜索效率有所提高,但随机搜索也存在以下缺点:

回溯问题如第2.3节所示,如果随机搜索n个以非真实条目名称结尾n个勒姆作为最后一个匹配项,也可能存在最长的匹配实条目n个在这种情况下,需要回溯。算法必须访问n个勒姆并对其执行LPM搜索,这将导致很大的计算开销。

过时的非真实进入问题如第2.4节所示,如果非真实条目名称n个没有从中继承的实际条目,n个应拆除以节省空间。然而,仅当遍历整个表时,不可能检查非实数项是否冗余。因此,过时的非实条目的累积加剧了NDN转发平面的内存消耗问题。

为了处理回溯问题,当随机搜索以非实数条目作为最后匹配项结束时,我们根据是否需要回溯过程将非实数条目的类型分为两类:

虚拟条目。如果非真实条目的正确前缀在表中没有对应的真实条目,则该条目为虚拟条目。当随机搜索的最后一个匹配条目是虚拟的时,搜索过程终止。

半虚拟条目否则,此非真实条目是半虚拟的,需要回溯。

3.3. 结构设计

在我们的FIB设计中,除了哈希表之外,我们还引入了组件粒度trie(前缀树)结构来记录名称之间的逻辑关系:

图1说明了我们设计的主要数据结构:哈希表用于快速查找名称,每个表条目中的搜索键(n、 e(电子))是兴趣名称n个,而该值是对应的trie节点e(电子).

图1
网址:www.frontiersin.org

图1基于HT的FIB与trie相结合的数据结构。

trie节点存储条目类型(真实、虚拟或半虚拟)、此名称的转发信息以及指向父节点和子节点的指针。由于名称前缀不会重复存储在trie中,因此可以限制此方案的额外内存消耗。trie中的每一条边都是一个名称组件,而node代表的是从根到该节点的路径上组件的组合;根设置为虚拟,不属于任何名称。

引入trie结构的动机如下:

•非真实条目类型可能会随着其他名称的表操作而变化,例如,虚拟条目“/c1/c2/c3”在插入真实条目“/c1/c2”后变为半虚拟条目。要在动态表中及时更新条目类型,应记录名称之间的继承关系。

•Trie为过时的非实条目问题提供了解决方案:如果Trie中的叶节点是非实的,则此条目是多余的,应删除。

•尝试可以加快搜索算法中的回溯,因为每个节点只有一个父节点,并且在此过程中不需要名称或组件匹配。

这里我们给出了我们方法的操作算法:

3.4. 操作详细信息

插入。当新名称出现时,有两种情况n个即将到来:

1) 如所示图2A,如果存在非虚拟条目(n、 e(电子))对于表中的此名称,e(电子)设置为real,并且中的所有虚拟节点e(电子)的子树设置为半虚拟。

2) 如所示图2B,如果是的条目n个找不到,则为创建一个实际条目n个.确保所有n个的适当前缀在表中有相应的条目,该算法对其适当前缀执行反向搜索,并为表中不存在的前缀创建非实数条目。该过程将继续,直到找到n个的LPM条目或根的到达。如果LPM条目是真实的或半虚拟的,那么在插入中创建的所有非真实条目都被设置为半虚拟的。否则,它们被设置为虚拟。

图2
网址:www.frontiersin.org

图2.钥匙插入案例。(A)表中存在此名称的非虚拟条目时的情况。(B)否则。

算法1
网址:www.frontiersin.org

算法1:密钥插入算法

删除。删除名称时有3种情况n个:

1) 对于(n、 e(电子)),如果e(电子)不是一片叶子e(电子)的父级是真实的或半虚拟的,那么e(电子)设置为半虚拟。

2) 作为图3A表示,如果e(电子)不是一片叶子e(电子)的父级是虚拟的,然后设置e(电子)到虚拟而不是删除它。此外,对于每个半虚拟节点e(电子)*英寸e(电子)的子树,当来自的路径上没有实际节点时e(电子)*至e(电子),e(电子)*也设置为虚拟。

3) 作为图3B描述,如果e(电子)是叶子,删除(n、 e(电子)),然后反复检查n个的非实数正确前缀,当它是叶子时将其删除。

因此,在修改表时可以保持条目类型的正确性,从而适应动态环境。

图3
网址:www.frontiersin.org

图3.关键删除案例。(A)当要删除的名称不是叶且具有虚拟父级时的情况。(B)要删除的名称为叶时的情况。

算法2
网址:www.frontiersin.org

算法2:密钥删除算法

3.5. 支持随机搜索

由于FIB需要频繁的读取操作和更少的写入操作,因此我们的方案专注于优化搜索过程,因此插入和删除操作可能有点昂贵。我们以二进制搜索为例,这是最简单的随机搜索方法。此外,在Wang等人(2013),2014,2017)也可以支持。

图4显示“/c1/c2/c3/c6/c7”的搜索过程,其中搜索路径为:

/c1/c2H(H)T型/c1/c2/c3/c6M(M)S公司S公司/c1/c2/c3H(H)T型终点

在结尾处,最后一个匹配项“/c1/c2/c3”是半虚拟的,表示表中存在真正合适的前缀“/c1/c2/c2”。随后,进入回溯过程,从最后一次匹配开始,反复访问父项,直到遇到真正的条目,其转发信息将作为搜索结果返回。

图4
网址:www.frontiersin.org

图4.名称“/c1/c2/c3/c6/c7”的搜索过程。

回溯过程可以节省时间,因为每个节点只有一个父节点,不需要名称或组件匹配。在另一种情况下,如果二进制搜索以虚拟条目作为最后一个匹配项结束,则可以确保NO_FOUND,并且搜索过程终止。因此,提供了DoS阻力和效率改进。

算法3
网址:www.frontiersin.org

算法3:搜索算法(二进制)

4.评估

4.1. 讨论假阴性

由于NDN是一种未来的互联网架构,尚未大规模部署,因此很难从真实的NDN流量跟踪中获得丰富的数据供应。因此,我们无法获得一个具有足够大小和名称之间逻辑关系的真实NDN FIB,基于该FIB,我们可以数值分析假阴性错误的影响。作为替代,我们展示了一个典型案例并讨论了其原因。

如果出现以下情况,则会出现假阴性错误:

•有两个真实姓名n个1n个2在表中,其中n个1是正确的前缀n个2.

•兴趣有名称n个,以及n个1是最长CommonPrefix的正确前缀(n个2,n个).

也就是说,如果FIB存储了有关文件的转发信息及其适当的前缀n个例如,“/cn/edu/pku/document/file01/segment01”和“/cn.edu/pku”。随后,在n个可能会导致假阴性错误。例如,根据兴趣名称“/cn/edu/pku/document/file02/segment01”,二进制搜索以非实数条目“/cn.edu/pku.document/”结束。如果算法以无回溯结束,则会发生错误,因为LPM是“/cn/edu/pku”,并且未找到。

4.2. 实验设置

然后,在对HTTP URL长度进行统计分析的基础上,评估了我们方案的实验性能。

测试集。由于以下原因,我们选择了HTTP URL来生成NDN名称的人工数据集以进行评估:

1.如上所述,由于NDN尚未部署到Internet规模,因此构建一个大型且现实的NDN路由表是一项困难的任务。因此,以前的工作通常会转换现有的Internet跟踪以生成NDN数据集(袁等,2012;So等人,2013年;袁和克劳利,2015年).

2.目前NDN中的大多数工作都假设类URL的层次化名称,其组件由斜杠分隔,基于NDN名称与URL的相似性,我们假设NDN转发表具有类似的长尾组件分布。未考虑域名,因为其组成数量大多为2或3,并且遵循严重扭曲的分布(So等人,2013年;Wang等人,2013年).

3.由于查找算法的性能对查询名称的长度很敏感,为了方便对我们的方案进行数值评估,我们生成了具有可变期望分量数的人工NDN名称。

HTTP URL按以下方式转换为NDN名称:(1)排除“?”字符后的文件扩展名和查询部分;(2) 域名由组件粒度反转;(3) 字符“/”和“.”都被视为组件分隔符。例如,“doc.pku.edu.cn/file/01.txt”变为“cn/edu/pku/doc/file/01”

在我们的测试中,我们从中的web流量跟踪获取HTTP URL2并分析其统计特性,在此基础上生成感兴趣名称的测试集用于评估。

图5显示了组件编号N个的web代理缓存中400万个访问日志的分布,而平均组件数为λ̄0=6.58。红线表示以下分布ρ(N个;λ̄0)用于拟合统计结果:

2ρ(N个;λ¯0)={0(0N个1)泊松(N个2;λ¯02)(2N个4)泊松(N个2;λ¯02)     +泊松(N个5;λ¯05)(5N个)

其中泊松(N个; λ) 是具有期望值λ的泊松分布:

泊松(N个;λ)=λN个N个!e(电子)-λ (0N个)

生成组件编号的期望值为的兴趣名称λ̄>5.(1)其部件号N个派生自ρ(N个;λ̄),这是上述分布的扩展版本,通过替换λ̄对于λ̄0,其期望值更改为λ̄.(2)其第一个组件是以统一的方式从10个常见域名后缀(例如com、org)中随机选择的,而其他组件则是从一组从URL收集的10000个唯一组件中统一选择的,平均长度为8.62个字符。

图5
网址:www.frontiersin.org

图5HTTP URL的组件号分布。

方法.为了简单起见,标准::unorder_map使用散列函数CityHash选择1,转发信息设置为空。测试表包含200万个随机生成的名称,每种操作执行50万次。用不同的种子重复实验10次,取平均值作为性能评估结果。

4.3. 效率测试

查找测试对于查找操作,我们关注:(1)随机搜索的有效性;(2) 回溯对查找速度的影响。因此,我们在评估中比较了线性搜索、无回溯的二进制搜索(这可能会导致假阴性)和算法3。

首先,我们使用表中不存在的名称作为查找键,并使用期望值N个组件编号的。选择的性能指标是平均查找时间和操作吞吐量,使用线性搜索作为基线。表1使用不同参数显示查找性能N个,这表明无匹配兴趣的二进制搜索得到了显著改进,因为它不需要遍历整个名称。

表1
网址:www.frontiersin.org

表1。查找性能(始终为MISS)。

我们用以下假设来测试搜索命中的情况:(1)由于域名的分布是倾斜的,很难适应(超过70%的域名有3个组件),我们假设FIB中名称的组件数遵循与HTTP URL类似的分布。这里我们使用泊松(N个− 1; λ−1);(2) 预期组件编号M(M)FIB名称小于感兴趣的名称,即M(M)<N个.

考虑到大多数域名都有2或3个组件,并且NDN兴趣名称可能比HTTP URL长,我们选择M(M)=3,4用于评估。表2揭示了二进制搜索的优势随着N个M(M)与HT查找相比,回溯过程的时间开销很小。

表2
网址:www.frontiersin.org

表2。查找性能(始终为HIT)。

插入和删除测试.

表3比较了算法1与基本HT插入的时间消耗,以及算法2和基本HT删除的时间消耗。如果算法1或2插入或删除k个在执行阶段,其成本时间除以k个用于比较。如图所示,书写操作较慢是为了加快阅读速度。

表3
网址:www.frontiersin.org

表3.插入和删除性能。

4.4. 可扩展性测试

与其他数据结构相比,HT会导致更高的内存消耗,因为必须存储整个密钥才能处理哈希冲突,这加剧了大规模NDN应用的挑战。下面我们测试我们的方案对内存成本的影响。FIB名称仍遵循分布泊松(N个− 1; λ−1),带有预期的组件编号M(M)。FIB有200万个条目,所有转发信息都设置为空。

非实条目的额外内存成本。为了获得额外的内存开销,我们使每个实际条目名称不是表中任何其他实际名称的前缀。表4给出了测试结果,并指出了NDN中随机搜索应用程序的主要缺点:即使是相对较小的期望组件数M(M)在最坏的情况下,非实数项的大小是FIB的两倍,强调了FIB压缩方法的必要性,如基于足迹的散列表,或与bloom过滤器的组合。

表4
网址:www.frontiersin.org

表4.非实数项的额外内存成本上浮。

trie结构的额外内存成本.带有M(M)保持不变,与哈希表(将信息作为表值转发)相比,我们的结构平均每个条目消耗15.7个字节,主要是因为trie(父项、下一个同级项、第一个子项)的三个32位指针和条目类型的1个字节。

5.讨论和未来工作

经评估,哈希表二进制搜索的主要缺点是非实数项的额外内存开销,在最坏的情况下,FIB大小扩展了四倍,大大加剧了NDN转发平面的存储问题。

通过改进查找算法,可以减少所需的非实数项的数量。以以下二进制搜索的改进版本为例:

1.对于实名,所有长度为偶数的较短前缀都应存储在FIB中。例如,如果表存储名称“/c1/c2…/cN个“”,然后“/c1/c2”、“/c1…/c4”、“/c1…/c6”…也要存储。与二进制方法一样,如果前缀没有对应的条目,则应在FIB重建中为其插入非实数条目。

2.在搜索过程中,L(左)H(H)(下限和上限)总是相等的。如果查询名称有长度N个一开始,L(左)= 2,H(H)= 2⌊N个/2⌋。

3.每个迭代周期中要查找的长度为:

M(M)=4L(左)+H(H)4

这也是一个偶数。在查找命中时,L(左)=M(M)+2,否则,H(H)=M(M)− 2. 如果满足以下条件,则迭代结束L(左)H(H).

4.迭代后,如果不存在最后匹配的前缀,则查找“/c1”。在查找命中时,返回“/c1“作为LPM。否则,返回NO_FOUND。

5.在另一种情况下,如果最后一个匹配前缀是“/c1…/c勒姆“,然后我们查找”/c1…/c(勒姆+1)”。查找命中时,“/c1…/c(勒姆+1)”作为LPM返回。否则,“/c1…/c勒姆“返回。

如图所示,由于计算复杂度与查询名称的长度成对数,上述算法将非实数输入量减少了一半。扩展到更一般的情况,我们可以选择整数序列{N个1,N个2…}作为要插入的非实数前缀的长度。例如,在二进制情况下,N个1= 1,N个2= 2…; 在上述方法中,N个1= 2,N个2= 4…; 我们未来的工作包括选择N个优化计算和存储成本。

名字长度的统计也有助于改进搜索算法。以二进制方式,搜索范围的中间部分被选为下一个目标M(M)查找;借助名称长度的先验概率,我们可以选择M(M)最小化系统的信息熵,从而缩短搜索路径。

6.结论

我们提出了一种基于trie和hash表组合的复合数据结构,以解决随机搜索中的回溯和过时的非实项问题。

实验表明,trie结构的引入对搜索速度和内存消耗的影响有限,并且在FIB中,随机搜索的性能随着感兴趣的名称的增加和名称的缩短而提高。然而,随机搜索为快速查找牺牲了写入速度和内存效率,加剧了NDN转发平面中的内存开销问题。需要进一步优化内存成本和搜索算法,以及NDN实现的大规模实验。

作者贡献

JH为这个结构的核心概念和相应的算法做出了贡献。HL作为教授,为我们方案的设计和实施提供了宝贵的建议。

利益冲突声明

作者声明,该研究是在没有任何可能被解释为潜在利益冲突的商业或金融关系的情况下进行的。

脚注

工具书类

Aumasson,J.-P.和Bernstein,D.J.(2012)。Siphash:一种快速短输入PRF《加密电子打印档案》,报告2012/351。在线获取地址:http://eprint.iacr.org/

谷歌学者

Degermark,M、Brodnik,A、Carlsson,S和Pink,S(1997)。中的“用于快速路由查找的小转发表”1997年ACM SIGCOMM会议记录,(戛纳:ACM)。

谷歌学者

Doeringer,W、Karjoth,G和Nassehi,M.(1996年)。使用最长匹配前缀进行路由。IEEE ACM传输。Netw公司. 4, 86–97. 数字对象标识代码:10.1109/90.503764

CrossRef全文|谷歌学者

So,W,Narayanan,A和Oran,D.(2013)。中的“路由器上的命名数据网络:使用哈希表进行快速和抗dos转发”第九届ACM/IEEE网络和通信系统架构研讨会论文集(加利福尼亚州圣何塞)。

谷歌学者

因此,W、Narayanan、A、Oran、D和Wang、Y.(2012年)。中的“基于哈希表的快速NDN软件转发查找引擎”第八届ACM/IEEE网络和通信系统架构研讨会论文集(德克萨斯州奥斯汀:ACM),85–86。

谷歌学者

Srinivasan,V和Varghese,G.(1998年)。中的“使用受控前缀扩展实现更快的IP查找”ACM SIGMETRICS性能评估审查,第26卷(威斯康星州麦迪逊:ACM),1-10。

谷歌学者

Waldvogel,M.、Varghese,G.、Turner,J.和Plattner,B.(1997年)。中的“可扩展高速IP路由查找”1997年ACM SIGCOMM会议记录(戛纳)。

谷歌学者

Wang,Y,Qi,Z,Dai,H,Wu,H,Lei,K,and Liu,B.(2017)。“基于统计最优哈希的最长前缀匹配”,in网络和通信系统架构研讨会(北京)。

谷歌学者

Wang,Y,Tai,D,Zhang,T,Lu,J,Xu,B,Dai,H等(2013)。中的“命名数据网络的贪婪名称查找”ACM SIGMETRICS性能评估审查(宾夕法尼亚州匹兹堡),第41卷,359–360。

谷歌学者

Wang,Y,Xu,B,Tai,D,Lu,J,Zhang,T,Dai,H等人(2014)。中的“命名数据网络的快速名称查找”IEEE第22届国际服务质量研讨会(香港)。

谷歌学者

Yuan,H和Crowley,P.(2015)。“可可靠扩展的名称前缀查找”,in网络和通信系统架构研讨会(加利福尼亚州奥克兰),111-121。

谷歌学者

Yuan,H,Crowley,P,and Song,T.(2017)。中的“增强可扩展的基于名称的转发”网络和通信系统架构研讨会(北京),60-69。

谷歌学者

Yuan,H,Song,T和Crowley,P.(2012年)。中的“可扩展NDN转发:概念、问题和原则”2012年第21届国际计算机通信与网络会议(ICCCN)(慕尼黑:IEEE),1-9。

谷歌学者

Zhang,L,Estrin,D,Burke,J,Jacobson,V,Thornton,J.D,Smetters,D.K等人(2010年)。命名数据网络(ndn)项目施乐帕洛阿尔托研究中心-PARC,技术代表NDN-0001。

谷歌学者

关键词:命名数据网络(NDN)、随机搜索、数据结构、最长前缀匹配(LPM)、trie(前缀树)

引用:Hu J和Li H(2019)《快速名称前缀查找的复合结构》。前面。信息通信技术6:15. 文件编号:10.3389/fict.2019.00015

收到:2019年2月9日;认可的:2019年7月4日;
出版:2019年8月2日。

编辑:

佩雷·巴雷特·罗斯西班牙加泰罗尼亚理工大学

审核人:

王毅(Yi Wang)中国南方科技大学
乔戈斯·迪莫普洛斯,独立研究员,西班牙巴塞罗那

版权©2019 Hu和Li。这是一篇根据知识共享署名许可证(CC BY)。允许在其他论坛上使用、分发或复制,前提是原创作者和版权所有人得到了认可,并且根据公认的学术惯例引用了本期刊的原始出版物。不允许使用、分发或复制不符合这些条款的内容。

*通信:胡佳伟,jiaweihu39@gmail.com; 李慧,lih64@pkusz.edu.cn

下载