CN110417661A - 一种用于命名数据网络中网络节点的转发方法、装置、系统及存储介质 - Google Patents
一种用于命名数据网络中网络节点的转发方法、装置、系统及存储介质 Download PDFInfo
- Publication number
- CN110417661A CN110417661A CN201910879763.0A CN201910879763A CN110417661A CN 110417661 A CN110417661 A CN 110417661A CN 201910879763 A CN201910879763 A CN 201910879763A CN 110417661 A CN110417661 A CN 110417661A
- Authority
- CN
- China
- Prior art keywords
- list item
- name
- fib
- prefix
- real
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种用于命名数据网络中网络节点的转发方法、装置、系统及存储介质,该转发方法包括FIB,FIB包括哈希表和前缀树,对于表中存储的任一个名字,其所有的真前缀在表中拥有相应的表项,检查前缀是否存在并添加对应辅助表项的过程被称为FIB重构,在重构后的FIB中,表项被分为实表项和非实表项,非实表项分为虚表项和半虚表项。本发明的有益效果是:本发明实现了一种支持随机搜索的FIB转发架构及相关算法,彻底解决了其中的回溯问题和过时表项问题,实验评估表明,本发明几乎不会影响算法的时间开销,由此保证了随机搜索算法的高效性和优越性,为设计高效的NDN转发架构,彻底解决NDN的可扩展性问题打下了重要的基础。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种用于命名数据网络中网络节点的转发方法、装置、系统及存储介质。
背景技术
信息中心网络(Information Centric Networking, ICN),包括内容中心网络(Content Centric networking, CCN)和命名数据网络(Named Data Networking, NDN),是一种旨在解决目前IP协议瓶颈的新型互联网架构。本发明中谈及的主要是其NDN分支,以下将由NDN作为内容中心网络的指代.在NDN中,网络更关心数据其自身,而非数据的所在位置。通过内容和具体地点的解耦,以及适当的转发和缓存策略设计,NDN通过具有智能性的转发平面实现了数据的多路径发送,并通过网络中缓存降低了数据的请求延迟,由此实现了高效、可靠的信息分发。
如其名字所示,NDN使用层级化的名字指代网络中的每一个资源,并设计了基于名字的内容请求和转发机制。NDN的数据传输过程依赖于两种数据包,即兴趣包(InterestPacket)和数据包(Data Packet)。NDN使用消费者驱动(Consumer-Driven)的方式完成其内容请求:消费者将请求内容的名字添加到兴趣包中,并将兴趣包投放到网络;路由节点收到兴趣包后,将在本节点的转发信息表(Forwarding Information Base, FIB)中,基于最长前缀匹配(Longest Prefix Matching, 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研究人员的主要着力方向之一。
前缀树(Prefix Tree, Trie)又称字典树,是一种常见于字符串匹配的数据结构。在字典树中,边指代名字的一个切分组件(比特,字符…),而节点指代一个具体的名字,该名字的内容即为根到该节点路径上所有边的组件拼合。在基于前缀树的存储结构中,名字间相同的前缀部分被合并为上游路径,由此实现了对数据容量的压缩,和对名字间逻辑关系的保存。
由于前缀树天然的支持LPM算法,且具有较好的空间利用效率,大多数NDN实现采用前缀树用于其转发平面的设计。前缀树的缺陷在于其较慢的查询速度:其计算的时间开销大致正比于名字的期望长度,同时,在每一层中,查询算法需要对节点的所有出边逐一地进行匹配,以找寻用于下降的子节点。因此,基于前缀树的NDN转发架构会造成较大的查询延迟,影响了网络的整体性能。
与前缀树相对的,哈希表的查询速度不会受到名字长度和表项规模的变动影响,因此对于大规模的网络环境具有较好的适应性。然而,为了应对哈希碰撞,哈希表需要同样把完整的键(此处为内容名字)存入表项中,从而造成了较大的存储开销。同时,原始的哈希表结构不支持最长前缀匹配算法,而最简单的线性实现又具有较大的查询耗时。为了应对这些问题,现有的NDN通常使用足迹压缩表(Footprint-Based Hash Table)等数据压缩方案,和随机查询(Random Search)等算法优化方案以提升系统的可扩展性。
背景技术一,思科公司于2013年的“Named data networking on a router: Fastand DoS-resistant forwarding with hash tables”一文中,提出了一种可以有效应对DoS攻击的转发算法及架构。该团队设计了一种两段式(2-stage)的FIB查找方法,从而有效的提高了查询不命中时的算法效率,以此提升了系统的抗攻击能力。该算法的简要流程如下文所述:
1)每一个名字被插入到FIB中时,转发平面会在表中查询其长度为M的前缀,若该前缀不在表中存在,则插入该前缀对应的虚表项(Virtual Entry)。虚表项只可用于支持随机搜索的算法流程,而无法用于指导兴趣包的转发。
2)如图1所示,2段式LPM查询从长度为M的前缀开始,只有在查询命中的场合中,才会进入对完整名字的线性查找流程。通常情况下,M取较小的值 (2或3),由此可以加快对于无效前缀的查询速度,从而提高了对DoS攻击的抵抗能力。
背景技术一的缺点:在查询命中的场合,该方法依赖于耗时较多的线性搜索,由于线性搜索的时间开销正比于查询字串的期望长度,面对长度没有上界的NDN名字,该算法依旧存在着较大的待优化空间。
背景技术二,华盛顿大学的Haowei Yuan等于2015年的“Reliably Scalable NamePrefix Lookup” 一文中,提出了基于二分查找的FIB加速方案,其概述如下:
1) FIB包含编号从1开始的一系列哈希表,其中编号为i的表仅存储长度为i的名字。对于表中的每一个名字,其所有的真前缀都必须在FIB中存在对应的表项,若对应表项不存在,则插入相应的虚表项作为填充。
2)如图2所示,在每一轮迭代中,面对待搜索范围[L, H],算法将选取其范围的中间点(L + H) / 2作为下一个搜索对象,并依据其查询结果确定下一轮迭代搜索范围。当待搜索范围缩小至0时,算法终止。
通过二分查找,算法的时间开销与名字长度的关系从线性下降到了对数级,由此较大地提升了转发平面的运算效率。
背景技术二的缺点:上述的二分查询方案,以及相似的很多随机搜索算法。均存在着所谓的回溯问题(Backtracking Problem),以及过时表项问题(Outdated EntryProblem)。
背景技术三,清华大学的Yi Wang于“Statistical Optimal Hash-based LongestPrefix Match”等文中,提出了一系列基于统计分布的随机搜索算法。不同于二分查询,在其设计方案中,每一轮迭代的查询长度由先验的统计分布计算得出,而非单纯的选取待查询范围的中心点。由此,该方案缩短了查询路径的期望长度,以此提升了转发平台的运算效率。
背景技术三的缺点:同背景技术二类似,均存在着所谓的回溯问题(BacktrackingProblem),以及过时表项问题(Outdated Entry Problem)。
回溯问题:在上述的二分查询过程中,在算法体执行完毕时,若最后一次HIT的前缀是虚表项,则FIB无法判断表中是否存在待查询名字相应的转发信息,为此,算法需要前往最后一次HIT的前缀并重新执行线性搜索。举例来说,若表中存有名字“/c1”与“/c1/c2/c3/c4”,则“/c1/c2/”与“/c1/c2/c3”会被插入以作为虚表项。此时,对名字“/c1/c2/c3/c5”的2分查询过程为:
由于查询路径上的所有HIT前缀均为虚,若在二分查询之后算法直接结束,则会返回查询失败。然而,表中存在其LPM“/c1”,由此产生了一个假阴性(False Negative)错误。在传统的IP协议中,转发算法通过一个回溯查找解决这一问题,即前往最后一次HIT的前缀(此处为“/c1/c2/c3”)并执行线性查找,然而,如上文所述的,内容网络中的名字具有无界且远长于IP地址的长度,因此该方式难以应用到NDN实现中。
过时表项问题:在现有的随机搜索方案中,过时的虚表项难以被及时删除,在上述例子中,若“/c1/c2/c3/c4”被删除,则“/c1/c2/”与“/c1/c2/c3”失去了其必要性并应当被及时删除以节省存储开销。然而,出于NDN标识的多样性,除非遍历全表,FIB难以判断一个辅助表项是否在表中拥有继承于它的其他表项。因此,过时辅助表项的积累同样会造成大量的内存浪费,影响了网络的整体性能。
发明内容
为了解决随机搜索中的回溯问题,本发明提供了一种用于命名数据网络中网络节点的转发方法,包括哈希表、前缀树,由哈希表和前缀树构成FIB,对于FIB中存储的任一个名字,其所有的真前缀在FIB中拥有相应的表项,检查前缀是否存在并添加对应辅助表项的过程被称为FIB重构,在重构后的FIB中,表项被分为实表项和非实表项,非实表项分为虚表项和半虚表项;
在哈希表中,以名字作为key, 并以前缀树中的节点作为value,由此实现了从名字到前缀树中转发信息的快速检索;
前缀树中的边均代表一个名字组件,前缀树的每个节点都代表一个名字,该节点存储了名字对应的转发信息和表项的对应类别、以及用于维持前缀树结构的指针;
实表项:实表项中的名字均指代实际存在的数据,并用于指导兴趣包的转发;在FIB重构之前,所有的表项均为实;
非实表项:用于支持随机搜索算法的辅助表项被称作非实表项,非实表项中的名字不指代任何实际存在的数据,且无法用于指导兴趣包的转发;
虚表项:若一个非实表项不拥有任何实前缀,则称该非实表项为虚表项;当随机搜索过程以虚表项结束时,直接结束而不会产生任何假阴性错误;
半虚表项:若该非实表项存在实前缀,则该非实表项称为半虚表项并需要进行回溯查找;
FIB:转发信息表;
该转发方法包括搜索步骤,所述搜索步骤包括:
步骤1:通过随机搜索算法查询兴趣包中的名字,从而获取转发出报文的端口;
步骤2:判断最后一次HIT的前缀是否为实,若是,返回该前缀作为查询结果,否则执行步骤3;
步骤3:判断最后一次HIT的前缀是否为虚,若是,返回查询失败,否则执行步骤4;
步骤4:在前缀树中向上回溯至第一个实节点,返回其对应的转发信息。
作为本发明的进一步改进,为了解决过时表项问题,该转发方法还包括删除步骤,所述删除步骤用于将过时的非实表项进行发现和回收,所述删除步骤包括:
首先,判断在FIB中的待删除的名字的对应表项是否存在子节点,若是,那么执行第一删除步骤,否则执行第二删除步骤;
第一删除步骤:判断对应表项的父节点是否为虚,若为虚,那么,执行第一删除子步骤,若对应表项的父节点为实或半虚,那么,名字的表项类别修改为半虚;
第一删除子步骤:将名字对应的表项类别修改为虚,然后,遍历以名字为根的子树,若其中某个节点满足第1条件和第2条件,那么该节点的类别修改为虚,第1条件:类别为半虚,第2条件:该节点到名字的路径上没有任何实节点;
第二删除步骤:删除该表项,然后,递进地向上检查名字的所有真前缀,若该前缀的对应节点满足第一点和第二点,那么删除该节点,第一点:类别为非实,第二点:为叶节点。
本发明还提供了一种用于命名数据网络中网络节点的转发装置,其中,包括哈希表、前缀树,由哈希表和前缀树构成FIB,对于FIB中存储的任一个名字,其所有的真前缀在FIB中拥有相应的表项,检查前缀是否存在并添加对应辅助表项的过程被称为FIB重构,在重构后的FIB中,表项被分为实表项和非实表项,非实表项分为虚表项和半虚表项;
在哈希表中,以名字作为key, 并以前缀树中的节点作为value,由此实现了从名字到前缀树中转发信息的快速检索;
前缀树中的边均代表一个名字组件,前缀树的每个节点都代表一个名字,该节点存储了名字对应的转发信息和表项的对应类别、以及用于维持前缀树结构的指针;
实表项:实表项中的名字均指代实际存在的数据,并用于指导兴趣包的转发;在FIB重构之前,所有的表项均为实;
非实表项:用于支持随机搜索算法的辅助表项被称作非实表项,非实表项中的名字不指代任何实际存在的数据,且无法用于指导兴趣包的转发;
虚表项:若一个非实表项不拥有任何实前缀,则称该非实表项为虚表项;当随机搜索过程以虚表项结束时,直接结束而不会产生任何假阴性错误;
半虚表项:若该非实表项存在实前缀,则该非实表项称为半虚表项并需要进行回溯查找;
FIB:转发信息表;
该转发装置包括搜索单元,所述搜索单元包括:
查询模块:用于通过随机搜索算法查询兴趣包中的名字,从而获取转发出报文的端口;
第一判断模块:用于判断最后一次HIT的前缀是否为实,若是,返回该前缀作为查询结果,否则执行第二判断模块;
第二判断模块:用于判断最后一次HIT的前缀是否为虚,若是,返回查询失败,否则执行返回模块;
返回模块:用于在前缀树中向上回溯至第一个实节点,返回其对应的转发信息。
本发明还提供了一种用于命名数据网络中网络节点的转发系统,包括:存储器、处理器以及存储在所述存储器上的计算机程序,所述计算机程序配置为由所述处理器调用时实现本发明所述的转发方法的步骤。
本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序配置为由处理器调用时实现本发明所述的转发方法的步骤。
本发明的有益效果是:本发明实现了一种支持随机搜索的FIB转发架构及相关算法,彻底解决了其中的回溯问题和过时表项问题,同时,实验评估表明,本发明几乎不会影响算法的时间开销,由此保证了随机搜索算法的高效性和优越性,为设计高效的NDN转发架构,彻底解决NDN的可扩展性问题打下了重要的基础。
附图说明
图1是背景技术的两段式FIB查询过程图;
图2是背景技术的基于二分法的FIB查询过程图;
图3是本发明的基于哈希表和前缀树的转发信息表;
图4是本发明的搜索步骤流程图;
图5是本发明的搜索过程的示意图;
图6是本发明的插入步骤流程图;
图7是本发明的删除步骤流程图;
图8是二分查询与线性查询的性能对比图。
具体实施方式
本发明公开了一种用于命名数据网络中网络节点的转发方法,本发明着眼于解决随机算法中的回溯问题,该问题会造成所谓的假阴性错误(False Negative Error), 进而导致兴趣包被无端丢弃。另外,本发明还实现了过时表项的及时侦测和删除,从而完成了内存的高效回收。
本发明设计了一种基于哈希表和前缀树之结合的转发架构,其中哈希表用于支持快速查找,而树结构用于存储名字间的逻辑关系。我们对哈希表中的表项进行了分类,以彻底解决回溯问题和过时表项问题。本发明同样设计了相匹配的操作算法,以保证该架构的稳定性和正确性。
为了便于介绍,本发明采用随机搜索中最基础的二分查找作为案例。为了支持二分查找过程,对于表中存储的任一个名字,其所有的真前缀必须同时在表中拥有相应的表项,检查前缀是否存在并添加对应辅助表项的过程被称为FIB重构(FIB reconstruction),在重构后的FIB中,表项可以被分为如下两类:
1.实表项(Real Entry):实表项中的名字均指代实际存在的数据,并可以用于指导兴趣包的转发。在FIB重构之前,所有的表项均为实。
2.非实表项(Non-Real Entry):用于支持随机搜索算法的辅助表项被称作非实表项,该表项中的名字不指代任何实际存在的数据,且无法用于指导兴趣包的转发。
接下来,为了称呼的简便,我们记实表项中的名字为实名字,实前缀和半虚名字等具有相似的含义。
在背景技术的回溯问题介绍中,可见,该问题产生的根本原因在于“无法判断一个非实表项是否拥有实前缀”,为此,必须对所有非实表项对进行回溯过程,产生了较大的计算开销,为了应对这一问题,我们将非实表项细分为以下两类:
1.虚表项(Virtual Entry):若一个非实表项不拥有任何实前缀,则我们称该表项为虚表项。当二分查找过程以虚表项结束时,可以直接结束而不会产生任何假阴性错误。
2.半虚表项(Semi Virtual Entry):与之相对的,若该非实表项存在实前缀,则该表项称为半虚并需要进行回溯查找。
对种类的进一步细分有助于我们优化回溯查询过程,并构成了本发明架构设计的基础之一。
本发明设计了基于哈希表和前缀树的转发信息表(FIB, ForwardingInformation Base),其中哈希表用以支持快速查找,而前缀树用于存储名字间的逻辑关系。FIB的主要结构如图3所示:
在哈希表中,以名字 (如/c1/c4/c5)作为key, 并以前缀树中的节点(e1)作为value。由此实现了从名字到树中转发信息的快速检索。
前缀树中的边均代表一个名字组件(Name component, 如/c1), 而每个节点都代表一个名字,即该节点到root的路径上的所有组件的拼接。该节点存储了名字对应的转发信息和表项的对应类别,以及用于维持树结构的指针。由于名字不需要在树中重复记录,树结构的引入只会带来有限的额外存储开销。
前缀树的引入出于以下三点目的:
1.前缀树有助于我们在动态环境中及时修改非实表项的类别。举例而言,若“/c1”被插入了FIB中,则所有前缀为“/c1”的虚表项均需要将其类别修改为半虚,出于NDN标识的多样性,在不借助于树结构的前提下,该修改只有通过遍历全表才能得以实现。
2.前缀树有助于我们加速搜索算法中的回溯过程:因为树中的每个节点只拥有一个父节点,向上回溯的过程不需要进行名字或组件的查询匹配操作,因而具有较快的搜索速度。
3.前缀树有助于我们及时清除过时的非实表项,即那些种类为非实的叶节点。在表的算法过程中,只要保证所有叶节点的种类均为非实,即可完成对多余表项的清理。
如图4所示,本发明的转发方法包括搜索步骤,搜索步骤包括:
步骤1:通过随机搜索算法查询兴趣包中的名字,从而获取转发出报文的端口,例如,该随机搜索算法是二分查找算法;
步骤2:在二分查找算法结束后,首先,判断最后一次HIT的前缀是否为实,若是,则LPM搜索已经成功,返回该前缀作为查询结果,否则执行步骤3;
步骤3:判断最后一次HIT的前缀是否为虚,若是,可以确信表中不存在匹配的实前缀,返回查询失败,否则执行步骤4;
步骤4:可以判定该表项为半虚表项,则可知该表项存在一个实的前缀,在前缀树结构内向上回溯以找到该实表项并返回,即,在前缀树中向上回溯至第一个实节点,返回其对应的转发信息。由于在前缀树内的回溯过程不涉及名字的匹配和查找,这一过程具有极小的时间开销。
如图5所示,在对名字“/c1/c2/c3/c6/c7”的查询过程中,二分查找的最后HIT前缀为“/c1/c2/c3”,是一个半虚表项。由此进入了回溯过程:算法从“/c1/c2/c3”开始,向上回溯直至遇到第一个实际表项“/c1”,并返回其对应的转发信息。
本发明同样适用于基于二分查找的其他高级方案,由此彻底解决了随机搜索中的回溯问题。
如图6所示,该转发方法还包括插入步骤,所述插入步骤用于将名字插入到FIB中,所述插入步骤包括:
首先,判断在FIB中查询待插入的名字是否存在,若是,那么执行第一插入步骤,否则执行第二插入步骤;
所述第一插入步骤包括:
步骤一:判断名字对应的表项是否为实表项,若是,那么更新其转发信息,否则执行步骤二;
步骤二:判断名字对应的表项是否为虚表项,若是,那么执行步骤三,否则执行修改步骤;
步骤三:将其子树中所有的虚表项修改为半虚表项,然后执行修改步骤;
修改步骤:修改其类别为实表项并添加转发信息。
综上,在第一插入步骤中,若待插入的名字在FIB中已经存在对应项时,此时不涉及新加入表项的问题。实表项的情形是平凡的,因此我们只考虑是非实表项的情况:首先,该对应项的类别会被修改为实;若该表项原本为虚,则子树内的虚表项需要修改其类别至半虚。若该表项原本为半虚,则子树无需修改。
所述第二插入步骤包括:
首先,在FIB中查询待插入的名字的LPM,若HIT且为实,那么执行第一处理步骤,若MISS、或HIT且为虚,那么执行第二处理步骤;
第一处理步骤:插入名字对应的实表项,在FIB中查找名字所有的真前缀,若不存在则插入对应的半虚表项;
第二处理步骤:插入名字对应的实表项,在FIB中查找名字所有的真前缀,若不存在则插入对应的虚表项。
综上,在第二插入步骤中,若待插入的名字不存在对应项,则插入对应的实表项,同时从后向前递进地检查其前缀,以保证它们均存在于FIB之中。若某个前缀被发现不存在,则插入对应的非实表项,该过程持续到算法到达LPM或者根节点,并由此决定此过程中插入的非实节点的类别。
如图7所示,该转发方法还包括删除步骤,所述删除步骤用于将过时的非实表项进行发现和回收,所述删除步骤包括:
首先,判断在FIB中的待删除的名字的对应表项是否存在子节点,若是,那么执行第一删除步骤,否则执行第二删除步骤;
第一删除步骤:判断对应表项的父节点是否为虚,若为虚,那么,执行第一删除子步骤,若对应表项的父节点为实或半虚,那么,名字的表项类别修改为半虚;
第一删除子步骤:将名字对应的表项类别修改为虚,然后,遍历以名字为根的子树,若其中某个节点满足第1条件和第2条件,那么该节点的类别修改为虚,第1条件:类别为半虚,第2条件:该节点到名字的路径上没有任何实节点;
第二删除步骤:删除该表项,然后,递进地向上检查名字的所有真前缀,若该前缀的对应节点满足第一点和第二点,那么删除该节点,第一点:类别为非实,第二点:为叶节点。
通过本发明的删除步骤,非实表项的类别能够在动态环境保持正确,且过时的非实表项得以得到及时的发现和回收,以此保证了转发平面的高效性和稳定性。由此,本发明彻底解决了过时表项问题。
本发明还公开了一种用于命名数据网络中网络节点的转发装置,FIB包括哈希表和前缀树,对于表中存储的任一个名字,其所有的真前缀在表中拥有相应的表项,检查前缀是否存在并添加对应辅助表项的过程被称为FIB重构,在重构后的FIB中,表项被分为实表项和非实表项,非实表项分为虚表项和半虚表项;
在哈希表中,以名字作为key, 并以前缀树中的节点作为value,由此实现了从名字到前缀树中转发信息的快速检索;
前缀树中的边均代表一个名字组件,前缀树的每个节点都代表一个名字,该节点存储了名字对应的转发信息和表项的对应类别、以及用于维持前缀树结构的指针;
实表项:实表项中的名字均指代实际存在的数据,并用于指导兴趣包的转发;在FIB重构之前,所有的表项均为实;
非实表项:用于支持随机搜索算法的辅助表项被称作非实表项,非实表项中的名字不指代任何实际存在的数据,且无法用于指导兴趣包的转发;
虚表项:若一个非实表项不拥有任何实前缀,则称该非实表项为虚表项;当随机搜索过程以虚表项结束时,直接结束而不会产生任何假阴性错误;
半虚表项:若该非实表项存在实前缀,则该非实表项称为半虚表项并需要进行回溯查找;
FIB:转发信息表;
该转发装置包括搜索单元,所述搜索单元包括:
查询模块:用于通过随机搜索算法查询兴趣包中的名字,从而获取转发出报文的端口;
第一判断模块:用于判断最后一次HIT的前缀是否为实,若是,返回该前缀作为查询结果,否则执行第二判断模块;
第二判断模块:用于判断最后一次HIT的前缀是否为虚,若是,返回查询失败,否则执行返回模块;
返回模块:用于在前缀树中向上回溯至第一个实节点,返回其对应的转发信息。
该转发装置还包括插入单元,所述插入单元用于将名字插入到FIB中,所述插入单元包括:
首先,判断在FIB中查询待插入的名字是否存在,若是,那么执行第一插入模块,否则执行第二插入模块;
所述第一插入模块包括:
第一插入判断模块:用于判断名字对应的表项是否为实表项,若是,那么更新其转发信息,否则执行第二插入判断模块;
第二插入判断模块:用于判断名字对应的表项是否为虚表项,若是,那么进入执行模块,否则进入修改模块;
执行模块:用于将其子树中所有的虚表项修改为半虚表项,然后执行修改模块;
修改模块:用于修改其类别为实表项并添加转发信息;
所述第二插入模块包括:
首先,在FIB中查询待插入的名字的LPM,若HIT且为实,那么执行第一处理模块,若MISS、或HIT且为虚,那么执行第二处理模块;
第一处理模块:用于插入名字对应的实表项,在FIB中查找名字所有的真前缀,若不存在则插入对应的半虚表项;
第二处理模块:用于插入名字对应的实表项,在FIB中查找名字所有的真前缀,若不存在则插入对应的虚表项;
LPM:最长前缀匹配。
该转发装置还包括删除单元,所述删除单元用于将过时的非实表项进行发现和回收,所述删除单元包括:
首先,判断在FIB中的待删除的名字的对应表项是否存在子节点,若是,那么执行第一删除模块,否则执行第二删除模块;
第一删除模块:用于判断对应表项的父节点是否为虚,若为虚,那么,执行第一删除子模块,若对应表项的父节点为实或半虚,那么,名字的表项类别修改为半虚;
第一删除子模块:用于将名字对应的表项类别修改为虚,然后,遍历以名字为根的子树,若其中某个节点满足第1条件和第2条件,那么该节点的类别修改为虚,第1条件:类别为半虚,第2条件:该节点到名字的路径上没有任何实节点;
第二删除模块:用于删除该表项,然后,递进地向上检查名字的所有真前缀,若该前缀的对应节点满足第一点和第二点,那么删除该节点,第一点:类别为非实,第二点:为叶节点。
随机搜索算法为二分查找算法,在查询模块中,通过二分查找算法查询兴趣包中的名字,从而获取转发出报文的端口;虚表项:若一个非实表项不拥有任何实前缀,则称该非实表项为虚表项;当二分查找过程以虚表项结束时,直接结束而不会产生任何假阴性错误。
本发明还公开了一种用于命名数据网络中网络节点的转发系统,包括:存储器、处理器以及存储在所述存储器上的计算机程序,所述计算机程序配置为由所述处理器调用时实现本发明所述的转发方法的步骤。
本发明还公开了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序配置为由处理器调用时实现本发明所述的转发方法的步骤。
本发明实现了一种支持随机搜索的FIB转发架构及相关算法,彻底解决了其中的回溯问题和过时表项问题,同时,实验评估表明,本发明几乎不会影响算法的时间开销,由此保证了随机搜索算法的高效性和优越性,为我们设计高效的NDN转发架构,彻底解决NDN的可扩展性问题打下了重要的基础。
针对本发明提出的FIB转发数据结构,在不同的FIB表名字前缀规模下,进行二分查询与线性查询的性能对比。统计百万次名字查找的总时间,计算出平均查找时间(单位:us)。FIB表中name prefix的平均component数目为4.2,查找的name prefix的平均component数目为11.2时的实验结果如图8所示。二分查询的平均吞吐量(可处理的查询次数/s)为线性查询的1.80倍,且在FIB表规模较大即为10亿时,本发明仍能达到0.2M的吞吐量。
表1 FIB表规模与生成构建时间
同时,本发明提出的FIB转发数据结构支持较大规模的名字前缀存储与查询,如表1所示。本实验的数据来源是自主生成的NDN标识。由于NDN是一种新型的网络架构,尚未得到大规模的实际运用,我们难以从现实中的网络流量中获取大规模的NDN数据样本。因此我们分析了当前网络流中的一些统计性质,仿真得到大量的NDN标识,并在此基础之上生成大规模FIB表,从而实现对本发明的评估和研究。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (10)
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重构,在重构后的FIB中,表项被分为实表项和非实表项,非实表项分为虚表项和半虚表项;
在哈希表中,以名字作为key, 并以前缀树中的节点作为value,由此实现了从名字到前缀树中转发信息的快速检索;
前缀树中的边均代表一个名字组件,前缀树的每个节点都代表一个名字,该节点存储了名字对应的转发信息和表项的对应类别、以及用于维持前缀树结构的指针;
实表项:实表项中的名字均指代实际存在的数据,并用于指导兴趣包的转发;在FIB重构之前,所有的表项均为实;
非实表项:用于支持随机搜索算法的辅助表项被称作非实表项,非实表项中的名字不指代任何实际存在的数据,且无法用于指导兴趣包的转发;
虚表项:若一个非实表项不拥有任何实前缀,则称该非实表项为虚表项;当随机搜索过程以虚表项结束时,直接结束而不会产生任何假阴性错误;
半虚表项:若该非实表项存在实前缀,则该非实表项称为半虚表项并需要进行回溯查找;
FIB:转发信息表;
该转发装置包括搜索单元,所述搜索单元包括:
查询模块:用于通过随机搜索算法查询兴趣包中的名字,从而获取转发出报文的端口;
第一判断模块:用于判断最后一次HIT的前缀是否为实,若是,返回该前缀作为查询结果,否则执行第二判断模块;
第二判断模块:用于判断最后一次HIT的前缀是否为虚,若是,返回查询失败,否则执行返回模块;
返回模块:用于在前缀树中向上回溯至第一个实节点,返回其对应的转发信息。
6.根据权利要求5所述的转发装置,其特征在于,该转发装置还包括插入单元,所述插入单元用于将名字插入到FIB中,所述插入单元包括:
首先,判断在FIB中查询待插入的名字是否存在,若是,那么执行第一插入模块,否则执行第二插入模块;
所述第一插入模块包括:
第一插入判断模块:用于判断名字对应的表项是否为实表项,若是,那么更新其转发信息,否则执行第二插入判断模块;
第二插入判断模块:用于判断名字对应的表项是否为虚表项,若是,那么进入执行模块,否则进入修改模块;
执行模块:用于将其子树中所有的虚表项修改为半虚表项,然后执行修改模块;
修改模块:用于修改其类别为实表项并添加转发信息;
所述第二插入模块包括:
首先,在FIB中查询待插入的名字的LPM,若HIT且为实,那么执行第一处理模块,若MISS、或HIT且为虚,那么执行第二处理模块;
第一处理模块:用于插入名字对应的实表项,在FIB中查找名字所有的真前缀,若不存在则插入对应的半虚表项;
第二处理模块:用于插入名字对应的实表项,在FIB中查找名字所有的真前缀,若不存在则插入对应的虚表项;
LPM:最长前缀匹配。
7.根据权利要求5所述的转发装置,其特征在于,该转发装置还包括删除单元,所述删除单元用于将过时的非实表项进行发现和回收,所述删除单元包括:
首先,判断在FIB中的待删除的名字的对应表项是否存在子节点,若是,那么执行第一删除模块,否则执行第二删除模块;
第一删除模块:用于判断对应表项的父节点是否为虚,若为虚,那么,执行第一删除子模块,若对应表项的父节点为实或半虚,那么,名字的表项类别修改为半虚;
第一删除子模块:用于将名字对应的表项类别修改为虚,然后,遍历以名字为根的子树,若其中某个节点满足第1条件和第2条件,那么该节点的类别修改为虚,第1条件:类别为半虚,第2条件:该节点到名字的路径上没有任何实节点;
第二删除模块:用于删除该表项,然后,递进地向上检查名字的所有真前缀,若该前缀的对应节点满足第一点和第二点,那么删除该节点,第一点:类别为非实,第二点:为叶节点。
8.根据权利要求5至7任一项所述的转发装置,其特征在于,随机搜索算法为二分查找算法,在查询模块中,通过二分查找算法查询兴趣包中的名字,从而获取转发出报文的端口;
当二分查找过程以虚表项结束时,直接结束而不会产生任何假阴性错误。
9.一种用于命名数据网络中网络节点的转发系统,其特征在于,包括:存储器、处理器以及存储在所述存储器上的计算机程序,所述计算机程序配置为由所述处理器调用时实现权利要求1-4中任一项所述的转发方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序配置为由处理器调用时实现权利要求1-4中任一项所述的转发方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910879763.0A CN110417661A (zh) | 2019-09-18 | 2019-09-18 | 一种用于命名数据网络中网络节点的转发方法、装置、系统及存储介质 |
PCT/CN2019/107695 WO2021051431A1 (zh) | 2019-09-18 | 2019-09-25 | 一种用于命名数据网络中网络节点的转发方法、装置、系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910879763.0A CN110417661A (zh) | 2019-09-18 | 2019-09-18 | 一种用于命名数据网络中网络节点的转发方法、装置、系统及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110417661A true CN110417661A (zh) | 2019-11-05 |
Family
ID=68370561
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910879763.0A Pending CN110417661A (zh) | 2019-09-18 | 2019-09-18 | 一种用于命名数据网络中网络节点的转发方法、装置、系统及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110417661A (zh) |
WO (1) | WO2021051431A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113992585A (zh) * | 2021-10-25 | 2022-01-28 | 天津职业技术师范大学(中国职业培训指导教师进修中心) | 一种用于ndn中的名称分裂查找方法 |
CN115967675A (zh) * | 2022-12-02 | 2023-04-14 | 北京理工大学 | 一种基于布隆过滤器的ndn路由表建立查找方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104333510A (zh) * | 2014-11-24 | 2015-02-04 | 重庆邮电大学 | 命名数据网络中的标签交换转发策略 |
US20170201538A1 (en) * | 2014-05-22 | 2017-07-13 | Cisco Systems, Inc. | Method and apparatus for preventing insertion of malicious content at a named data network router |
CN107248956A (zh) * | 2017-06-05 | 2017-10-13 | 北京邮电大学 | 一种信息中心网络的路由方法及装置 |
US20180027609A1 (en) * | 2016-07-19 | 2018-01-25 | Fujitsu Limited | Relay apparatus and relay method |
CN108092899A (zh) * | 2018-01-05 | 2018-05-29 | 北京工业大学 | Manet环境下基于命名数据网络的路由策略更新方法 |
CN110149274A (zh) * | 2019-05-20 | 2019-08-20 | 北京理工大学 | 基于位置信息和内容推送的命名数据网络综合路由方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103428093B (zh) * | 2013-07-03 | 2017-02-08 | 北京邮电大学 | 一种基于名字路由前缀存储、匹配及更新方法与装置 |
CN103595637B (zh) * | 2013-10-27 | 2017-03-29 | 西安电子科技大学 | 基于树与哈希表的内容中心网络结点处理数据方法 |
US9276840B2 (en) * | 2013-10-30 | 2016-03-01 | Palo Alto Research Center Incorporated | Interest messages with a payload for a named data network |
-
2019
- 2019-09-18 CN CN201910879763.0A patent/CN110417661A/zh active Pending
- 2019-09-25 WO PCT/CN2019/107695 patent/WO2021051431A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170201538A1 (en) * | 2014-05-22 | 2017-07-13 | Cisco Systems, Inc. | Method and apparatus for preventing insertion of malicious content at a named data network router |
CN104333510A (zh) * | 2014-11-24 | 2015-02-04 | 重庆邮电大学 | 命名数据网络中的标签交换转发策略 |
US20180027609A1 (en) * | 2016-07-19 | 2018-01-25 | Fujitsu Limited | Relay apparatus and relay method |
CN107248956A (zh) * | 2017-06-05 | 2017-10-13 | 北京邮电大学 | 一种信息中心网络的路由方法及装置 |
CN108092899A (zh) * | 2018-01-05 | 2018-05-29 | 北京工业大学 | Manet环境下基于命名数据网络的路由策略更新方法 |
CN110149274A (zh) * | 2019-05-20 | 2019-08-20 | 北京理工大学 | 基于位置信息和内容推送的命名数据网络综合路由方法 |
Non-Patent Citations (1)
Title |
---|
HUI LI ET AL: "MIN: Co-Governing Multi-Identifier Network Architecture and Its Prototype on Operator’s Network", 《ARXIV:1908.00418V1 [CS.NI], HTTPS://ARXIV.ORG/ABS/1908.00418》 * |
Also Published As
Publication number | Publication date |
---|---|
WO2021051431A1 (zh) | 2021-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Basu et al. | Fast incremental updates for pipelined forwarding engines | |
CN103428093B (zh) | 一种基于名字路由前缀存储、匹配及更新方法与装置 | |
CN104753797B (zh) | 一种基于选择性缓存的内容中心网络动态路由方法 | |
CN111966284B (zh) | 一种OpenFlow大规模流表弹性节能与高效查找系统及方法 | |
CN109921996A (zh) | 一种高性能的OpenFlow虚拟流表查找方法 | |
Lim et al. | Survey and proposal on binary search algorithms for longest prefix match | |
US20070171911A1 (en) | Routing system and method for managing rule entry thereof | |
GB2452760A (en) | Storing and searching data in a database tree structure for use in data packet routing applications. | |
CN102484610A (zh) | 路由表建立方法和装置及路由表查找方法和装置 | |
CN110417661A (zh) | 一种用于命名数据网络中网络节点的转发方法、装置、系统及存储介质 | |
CN103905538A (zh) | 内容中心网络中邻居协作缓存替换方法 | |
Saxena et al. | N-FIB: Scalable, memory efficient name-based forwarding | |
CN110851658B (zh) | 树形索引数据结构、内容存储池、路由器及树形索引方法 | |
Lim et al. | Binary searches on multiple small trees for IP address lookup | |
CN111262785B (zh) | 一种命名数据网络中的多属性概率缓存方法 | |
Liu et al. | Longest prefix matching with pruning | |
Erdem | Pipelined hierarchical architecture for high performance packet classification | |
Grigoryan et al. | Boosting FIB Caching Performance with Aggregation | |
KR100493099B1 (ko) | 고속 인터넷프로토콜 라우터의 라우팅/포워딩 룩업 및라우팅 테이블 관리 | |
Zhang et al. | PR-Trie: A Hybrid Trie with Ant Colony Optimization Based Prefix Partitioning for Memory-Efficient IPv4/IPv6 Route Lookup | |
Jing et al. | An Efficient Name Look-up Architecture Based on Binary Search in NDN Networking | |
Li et al. | Weighted nsfib aggregation with generalized next hop of strict partial order | |
CN109428822A (zh) | 一种名字查找方法和网络设备 | |
Karrakchou et al. | FCTree: A Space Efficient FIB Data Structure for NDN Routers | |
Li et al. | Optimized hash lookup for bloom filter based packet routing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20191105 |