一种用于命名数据网络中网络节点的转发方法、装置、系统及存储介质制造方法及图纸

技术编号:22471089 阅读:31 留言:0更新日期:2019-11-06 12:55
本发明专利技术提供了一种用于命名数据网络中网络节点的转发方法、装置、系统及存储介质,该转发方法包括FIB,FIB包括哈希表和前缀树,对于表中存储的任一个名字,其所有的真前缀在表中拥有相应的表项,检查前缀是否存在并添加对应辅助表项的过程被称为FIB重构,在重构后的FIB中,表项被分为实表项和非实表项,非实表项分为虚表项和半虚表项。本发明专利技术的有益效果是:本发明专利技术实现了一种支持随机搜索的FIB转发架构及相关算法,彻底解决了其中的回溯问题和过时表项问题,实验评估表明,本发明专利技术几乎不会影响算法的时间开销,由此保证了随机搜索算法的高效性和优越性,为设计高效的NDN转发架构,彻底解决NDN的可扩展性问题打下了重要的基础。

A forwarding method, device, system and storage medium for naming network nodes in data network

【技术实现步骤摘要】
一种用于命名数据网络中网络节点的转发方法、装置、系统及存储介质
本专利技术涉及互联网
,尤其涉及一种用于命名数据网络中网络节点的转发方法、装置、系统及存储介质。
技术介绍
信息中心网络(InformationCentricNetworking,ICN),包括内容中心网络(ContentCentricnetworking,CCN)和命名数据网络(NamedDataNetworking,NDN),是一种旨在解决目前IP协议瓶颈的新型互联网架构。本专利技术中谈及的主要是其NDN分支,以下将由NDN作为内容中心网络的指代.在NDN中,网络更关心数据其自身,而非数据的所在位置。通过内容和具体地点的解耦,以及适当的转发和缓存策略设计,NDN通过具有智能性的转发平面实现了数据的多路径发送,并通过网络中缓存降低了数据的请求延迟,由此实现了高效、可靠的信息分发。如其名字所示,NDN使用层级化的名字指代网络中的每一个资源,并设计了基于名字的内容请求和转发机制。NDN的数据传输过程依赖于两种数据包,即兴趣包(InterestPacket)和数据包(DataPacket)。NDN使用消费者驱动(Consumer-Driven)的方式完成其内容请求:消费者将请求内容的名字添加到兴趣包中,并将兴趣包投放到网络;路由节点收到兴趣包后,将在本节点的转发信息表(ForwardingInformationBase,FIB)中,基于最长前缀匹配(LongestPrefixMatching,LPM)的方式查询兴趣包中的内容名,以此获取转发出报文的端口;当兴趣包被该内容的持有者接受时,持有者将生成一个该内容的数据包,并沿着兴趣包的到来路径回溯给消费者。NDN将报文的转发机制从面向地址变为了面向名字,通过这种方式,NDN实现了内容和所在位置的解耦,提升了网络的灵活性和高效性。然而,面向名字的转发模式同样存在其缺陷:随着网络规模的扩大,NDN转发平面的性能往往会产生较为严重的下降,包括转发延迟的迅速增大,报文的拥塞,和内存的大量占用等等。这些问题大致由以下原因导致:1.面向名字的转发平面以名字作为查找的Key,而NDN名字具有无界的长度和多变的样式,因此,以往基于规则IP地址的各种优化算法往往难以应用于其中;同时,传统的线性搜索算法具有正比于名字期望长度的时间开销,对于远长于IP地址的NDN名字难以取得较好的效果。上述原因导致了查询过程的较大时延。2.由于指代的对象更为细微,NDN名字的数目远远大于IP地址,导致NDN的FIB往往具有极为庞大的规模。考虑到FIB的键值为无界的NDN名字,当不采用适当的压缩策略时,其内存占用将远超过现有设备的可用容量。相比于稳定的IP地址,NDN名字极其容易发生变动,导致NDN中的FIB面对着频繁得多的更新需求,为此,FIB设计必须支持各种操作的高效性,以维护自身的即时和有效。出于上述原因,NDN往往难以应用于大规模的网络实践中,这被称为NDN的可扩展性问题。其中,面向名字的转发机制是造成该问题,以及着手解决该问题的关键点,优秀的转发平面设计可以保证NDN网络在大规模应用中的高效与可靠,成为了现有NDN研究人员的主要着力方向之一。前缀树(PrefixTree,Trie)又称字典树,是一种常见于字符串匹配的数据结构。在字典树中,边指代名字的一个切分组件(比特,字符…),而节点指代一个具体的名字,该名字的内容即为根到该节点路径上所有边的组件拼合。在基于前缀树的存储结构中,名字间相同的前缀部分被合并为上游路径,由此实现了对数据容量的压缩,和对名字间逻辑关系的保存。由于前缀树天然的支持LPM算法,且具有较好的空间利用效率,大多数NDN实现采用前缀树用于其转发平面的设计。前缀树的缺陷在于其较慢的查询速度:其计算的时间开销大致正比于名字的期望长度,同时,在每一层中,查询算法需要对节点的所有出边逐一地进行匹配,以找寻用于下降的子节点。因此,基于前缀树的NDN转发架构会造成较大的查询延迟,影响了网络的整体性能。与前缀树相对的,哈希表的查询速度不会受到名字长度和表项规模的变动影响,因此对于大规模的网络环境具有较好的适应性。然而,为了应对哈希碰撞,哈希表需要同样把完整的键(此处为内容名字)存入表项中,从而造成了较大的存储开销。同时,原始的哈希表结构不支持最长前缀匹配算法,而最简单的线性实现又具有较大的查询耗时。为了应对这些问题,现有的NDN通常使用足迹压缩表(Footprint-BasedHashTable)等数据压缩方案,和随机查询(RandomSearch)等算法优化方案以提升系统的可扩展性。
技术介绍
一,思科公司于2013年的“Nameddatanetworkingonarouter:FastandDoS-resistantforwardingwithhashtables”一文中,提出了一种可以有效应对DoS攻击的转发算法及架构。该团队设计了一种两段式(2-stage)的FIB查找方法,从而有效的提高了查询不命中时的算法效率,以此提升了系统的抗攻击能力。该算法的简要流程如下文所述:1)每一个名字被插入到FIB中时,转发平面会在表中查询其长度为M的前缀,若该前缀不在表中存在,则插入该前缀对应的虚表项(VirtualEntry)。虚表项只可用于支持随机搜索的算法流程,而无法用于指导兴趣包的转发。2)如图1所示,2段式LPM查询从长度为M的前缀开始,只有在查询命中的场合中,才会进入对完整名字的线性查找流程。通常情况下,M取较小的值(2或3),由此可以加快对于无效前缀的查询速度,从而提高了对DoS攻击的抵抗能力。
技术介绍
一的缺点:在查询命中的场合,该方法依赖于耗时较多的线性搜索,由于线性搜索的时间开销正比于查询字串的期望长度,面对长度没有上界的NDN名字,该算法依旧存在着较大的待优化空间。
技术介绍
二,华盛顿大学的HaoweiYuan等于2015年的“ReliablyScalableNamePrefixLookup”一文中,提出了基于二分查找的FIB加速方案,其概述如下:1)FIB包含编号从1开始的一系列哈希表,其中编号为i的表仅存储长度为i的名字。对于表中的每一个名字,其所有的真前缀都必须在FIB中存在对应的表项,若对应表项不存在,则插入相应的虚表项作为填充。2)如图2所示,在每一轮迭代中,面对待搜索范围[L,H],算法将选取其范围的中间点(L+H)/2作为下一个搜索对象,并依据其查询结果确定下一轮迭代搜索范围。当待搜索范围缩小至0时,算法终止。通过二分查找,算法的时间开销与名字长度的关系从线性下降到了对数级,由此较大地提升了转发平面的运算效率。
技术介绍
二的缺点:上述的二分查询方案,以及相似的很多随机搜索算法。均存在着所谓的回溯问题(BacktrackingProblem),以及过时表项问题(OutdatedEntryProblem)。
技术介绍
三,清华大学的YiWang于“StatisticalOptimalHash-basedLongestPrefixMatch”等文中,提出了一系列基于统计分布的随机搜索算法。不同于二分查询,在其设计方案中,每一轮迭代的查询长度由先验的统计分布计算得出,而非单纯的选取待查询范围的中心点。本文档来自技高网
...

【技术保护点】
1.一种用于命名数据网络中网络节点的转发方法,包括哈希表、前缀树,其特征在于,由哈希表和前缀树构成FIB,对于FIB中存储的任一个名字,其所有的真前缀在FIB中拥有相应的表项,检查前缀是否存在并添加对应辅助表项的过程被称为FIB重构,在重构后的FIB中,表项被分为实表项和非实表项,非实表项分为虚表项和半虚表项;在哈希表中,以名字作为key, 并以前缀树中的节点作为value,由此实现了从名字到前缀树中转发信息的快速检索;前缀树中的边均代表一个名字组件,前缀树的每个节点都代表一个名字,该节点存储了名字对应的转发信息和表项的对应类别、以及用于维持前缀树结构的指针;实表项:实表项中的名字均指代实际存在的数据,并用于指导兴趣包的转发;在FIB重构之前,所有的表项均为实;非实表项:用于支持随机搜索算法的辅助表项被称作非实表项,非实表项中的名字不指代任何实际存在的数据,且无法用于指导兴趣包的转发;虚表项:若一个非实表项不拥有任何实前缀,则称该非实表项为虚表项;当随机搜索过程以虚表项结束时,直接结束而不会产生任何假阴性错误;半虚表项:若该非实表项存在实前缀,则该非实表项称为半虚表项并需要进行回溯查找;FIB:转发信息表;该转发方法包括搜索步骤,所述搜索步骤包括:步骤1:通过随机搜索算法查询兴趣包中的名字,从而获取转发出报文的端口;步骤2:判断最后一次HIT的前缀是否为实,若是,返回该前缀作为查询结果,否则执行步骤3;步骤3:判断最后一次HIT的前缀是否为虚,若是,返回查询失败,否则执行步骤4;步骤4:在前缀树中向上回溯至第一个实节点,返回其对应的转发信息。...

【技术特征摘要】
1.一种用于命名数据网络中网络节点的转发方法,包括哈希表、前缀树,其特征在于,由哈希表和前缀树构成FIB,对于FIB中存储的任一个名字,其所有的真前缀在FIB中拥有相应的表项,检查前缀是否存在并添加对应辅助表项的过程被称为FIB重构,在重构后的FIB中,表项被分为实表项和非实表项,非实表项分为虚表项和半虚表项;在哈希表中,以名字作为key,并以前缀树中的节点作为value,由此实现了从名字到前缀树中转发信息的快速检索;前缀树中的边均代表一个名字组件,前缀树的每个节点都代表一个名字,该节点存储了名字对应的转发信息和表项的对应类别、以及用于维持前缀树结构的指针;实表项:实表项中的名字均指代实际存在的数据,并用于指导兴趣包的转发;在FIB重构之前,所有的表项均为实;非实表项:用于支持随机搜索算法的辅助表项被称作非实表项,非实表项中的名字不指代任何实际存在的数据,且无法用于指导兴趣包的转发;虚表项:若一个非实表项不拥有任何实前缀,则称该非实表项为虚表项;当随机搜索过程以虚表项结束时,直接结束而不会产生任何假阴性错误;半虚表项:若该非实表项存在实前缀,则该非实表项称为半虚表项并需要进行回溯查找;FIB:转发信息表;该转发方法包括搜索步骤,所述搜索步骤包括:步骤1:通过随机搜索算法查询兴趣包中的名字,从而获取转发出报文的端口;步骤2:判断最后一次HIT的前缀是否为实,若是,返回该前缀作为查询结果,否则执行步骤3;步骤3:判断最后一次HIT的前缀是否为虚,若是,返回查询失败,否则执行步骤4;步骤4:在前缀树中向上回溯至第一个实节点,返回其对应的转发信息。2.根据权利要求1所述的转发方法,其特征在于,该转发方法还包括插入步骤,所述插入步骤用于将名字插入到FIB中,所述插入步骤包括:首先,判断在FIB中查询待插入的名字是否存在,若是,那么执行第一插入步骤,否则执行第二插入步骤;所述第一插入步骤包括:步骤一:判断名字对应的表项是否为实表项,若是,那么更新其转发信息,否则执行步骤二;步骤二:判断名字对应的表项是否为虚表项,若是,那么执行步骤三,否则执行修改步骤;步骤三:将其子树中所有的虚表项修改为半虚表项,然后执行修改步骤;修改步骤:修改其类别为实表项并添加转发信息;所述第二插入步骤包括:首先,在FIB中查询待插入的名字的LPM,若HIT且为实,那么执行第一处理步骤,若MISS、或HIT且为虚,那么执行第二处理步骤;第一处理步骤:插入名字对应的实表项,在FIB中查找名字所有的真前缀,若不存在则插入对应的半虚表项;第二处理步骤:插入名字对应的实表项,在FIB中查找名字所有的真前缀,若不存在则插入对应的虚表项;LPM:最长前缀匹配。3.根据权利要求1所述的转发方法,其特征在于,该转发方法还包括删除步骤,所述删除步骤用于将过时的非实表项进行发现和回收,所述删除步骤包括:首先,判断在FIB中的待删除的名字的对应表项是否存在子节点,若是,那么执行第一删除步骤,否则执行第二删除步骤;第一删除步骤:判断对应表项的父节点是否为虚,若为虚,那么,执行第一删除子步骤,若对应表项的父节点为实或半虚,那么,名字的表项类别修改为半虚;第一删除子步骤:将名字对应的表项类别修改为虚,然后,遍历以名字为根的子树,若其中某个节点满足第1条件和第2条件,那么该节点的类别修改为虚,第1条件:类别为半虚,第2条件:该节点到名字的路径上没有任何实节点;第二删除步骤:删除该表项,然后,递进地向上检查名字的所有真前缀,若该前缀的对应节点满足第一点和第二点,那么删除该节点,第一点:类别为非实,第二点:为叶节点。4.根据权利要求1至3任一项所述的转发方法,其特征在于,随机搜索算法为二分查找算法,在步骤1中,通过二分查找算法查询兴趣包中的名字,从而获取转发出报文的端口;当二分查找过程以虚表项结束时,直接结束而不会产生任何假阴性错误。5.一种用于命名数据网络中网络节点的转发装置,包括哈希表、前缀树,其特征在于,由哈希表和前缀树构成FIB,对于FIB中存储的任一个名字,其所有的真前缀在FIB中拥有相应的表项,检查前缀是否存在并添加对应辅助表项的过程被称为FIB重构,在重...

【专利技术属性】
技术研发人员:李挥胡嘉伟邬江兴黄婷伊鹏侯韩旭马化军尹峰
申请(专利权)人:北京大学深圳研究生院国家数字交换系统工程技术研究中心佛山赛思禅科技有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1