CN110109616B - 基于神经网络的命名数据网内容存储池数据删除方法 - Google Patents
基于神经网络的命名数据网内容存储池数据删除方法 Download PDFInfo
- Publication number
- CN110109616B CN110109616B CN201910260591.9A CN201910260591A CN110109616B CN 110109616 B CN110109616 B CN 110109616B CN 201910260591 A CN201910260591 A CN 201910260591A CN 110109616 B CN110109616 B CN 110109616B
- Authority
- CN
- China
- Prior art keywords
- node
- data
- searching
- name prefix
- skip list
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Human Computer Interaction (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种基于神经网络的命名数据网内容存储池删除方法,所采用的存储池包括:片内存储单元和片外存储单元,片内存储单元使用高速存储器,片内部署一个神经网络模型以实现对数据名称的均匀映射,并部署一个改进型位图,用以将包含相同名称前缀的数据包映射到同一桶中;片外存储单元使用低速存储器,部署多个与改进型位图的动态索引单元的槽slot对应的动态存储器,来存储每个名称前缀的跳表信息,用于指导相同名称前缀Data包在双向跳表中的下一次查找;另部署一个双向跳表结构。此专利给出在所述的存储池中删除Interest包的方法;在所述的存储池删除Data包的方法。
Description
技术领域
本发明属于高性能路由器结构设计领域中,特别针对命名数据网转发平面中内容存储池(Content Store)新型存储结构设计及其算法问题。
背景技术
随着互联网规模的爆炸式增长,创新技术和计算模式的不断涌现,加速了互联网由“通信信道”向“数据处理平台”的角色转变。为了应对互联网内容化、个性化、超高移动性、“零”时延、超高流量密度等未来业务需求,彻底解决当前互联网IP架构下所带来的诸多问题,一种以内容缓存为特色、面向通信内容的命名数据网应用而生。
命名数据网不仅可以通过使用名称数据,实现互联网面向内容的通信模式;还可以通过在路由节点中部署缓冲存储器,缩短用户访问缓存数据的响应时间,实现真正意义上的内容共享,极大地降低网络负载,有效提高网络数据传输速率。因此被认为是未来互联网架构领域最有前景的发展方向之一。
然而命名数据网也面临着一系列亟待解决的问题和挑战[1],特别是路由数据平面中,对于Content Store线速处理支持的问题[2]。命名数据网中路由表的表项数据通常是由数字和字符组成的,并具有变长、无边界特点的字符串来命名,导致Content Store需能够存储数百万规模的数据存储量。此外,Content Store作为临时的内容缓存,其容量有限,所以Content Store需能够高效压缩存储数据以减少存储消耗,并及时进行缓存替换为新插入的数据包清理空间。另外,数据包的名称具有对传输网络不透明的特点。在转发平面中,命名数据网络中的各类应用程序可以在遵守统一命名策略的前提下,根据自己的需求使用不同的名称方案,且Content Store对两种类型的数据包:兴趣(Interest)包和数据(Data)包,处理过程具有差异性,因此,为完成内容转发,Content Store需能够在各类名称方案下快速支持不同名称数据检索算法[2]。
参考文献:
L.Zhang et al.,“Named Data Networking,”ACM SIGCOMM ComputerCommunication Review,vol.44,no.3,pp.66-73,2014.
Z.Li,Y.Xu,B,Zhang,L.Yan,and K.Liu,“Packet Forwarding in Named DataNetworking Requirements and Survey of Solutions,”IEEE Communications Surveys&Tutorials,DOI:10.1109/COMST.2018.2880444,2018.
发明内容
本发明在提供一种存储池(称之为Learned bitmap-Content Store,LBM-CS)的基础上给出其数据删除方法。本发明结合Content Store的工作特点,对学习位图内容存储池存储结构进行优化,使之能够在保证检索效率,提升检索速度,同时支持数据缓存替换策略和所有子名称匹配及精确名称匹配名称数据检索算法基础上,支持数据的删除操作。技术方案如下:
一种基于神经网络的命名数据网内容存储池数据删除方法,所采用的存储池,包括:一个片内存储单元和一个片外存储单元,所述片内存储单元使用高速存储器,片内部署一个神经网络模型以实现对数据名称的均匀映射,部署一个改进型位图D-bitmap实现将包含相同名称前缀的数据包映射到同一桶bucket中;片外存储单元使用低速存储器,其上部署多个与改进型位图的动态索引单元的槽slot对应的动态存储器,来存储每个名称前缀的跳表信息,用于指导相同名称前缀Data包在双向跳表中的下一次查找,以提高数据检索速度;另部署一个双向跳表结构,以存放数据包在学习位图内容存储池中的存储位置信息,且每个双向跳表节点中存有先入先出队列FIFO单指针和最近最少使用LRU双指针。
神经网络模型以实现对数据名称的均匀映射过程如下:
首先,神经网络采集样本进行训练,与命名数据网名称数据格式类似的大量统一资源定位符URL作为样本数据;其次,计算样本数据的累积分布函数F(x)值作为标签;然后,训练反向传播神经网络,学习出能反映索引数据分布情况的神经网络模型,最后,将数据名称的名称字符串作为输入,输入训练出神经网络模型,得到一个0~1之间的实数值,该数值乘以改进型位图的槽总数,得到映射标号,即实现对数据名称的均匀映射。
双向跳表数据结构设计如下:
双向跳表采用多层结构,且每层由一条双向链表构成,其跳表节点按照名称前缀的ID号增序排列。跳表节点间用FIFO单指针和LRU双指针相连,每个节点中存储有ID、指向前向节点指针(prev)和后向节点的指针(next)信息。
动态存储器数据结构设计如下:
动态存储器中记录的内容有:名称前缀、前向节点(prev_nodes)、前向节点地址(next_node_addr)、后向节点(next_nodes)、后向节点地址(next_node_addr)和当前节点(recent_node)。其中名称前缀是从数据包名称<名称前缀,ID>中提取出来的;前向节点和后向节点是某个节点在查找时转折的关键节点对,前向节点地址和后向节点地址为节点地址;当前节点为最近刚查找的节点。
在存储池中选择最优双向跳表查找节点并确定查找方向过程如下:
利用动态存储器中的节点信息:名称前缀、前向节点、前向节点地址、后向节点、后向节点地址和当前节点,选择最优双向跳表查找节点并确定查找方向过程如下:
对于有相同名称前缀的数据j,首先比较j的ID和当前节点的ID大小,如果ID<当前节点的ID,则从前向节点中依据ID号选择与数据j最近的折返节点作为最佳开始查找节点;如果ID>当前节点的ID,则从后向节点中选取依据ID号选择与数据j最近的折返节点作为最佳开始查找节点。若选择的最佳开始节点的ID小于j的ID,则从最佳开始节点向后查找,否则,从最佳开始节点向前查找。并且在数据查找过程中,及时更新以上记录的节点信息。
在所述存储池存储结构中删除Data包,每删除一个Data包的步骤如下:
步骤1:输入Data包名称前缀和ID:输入Data包的名称前缀和ID到学习
位图内容存储池存储结构中。
步骤2:精确名称匹配:在学习位图中对该名称前缀直接进行映射操作。
步骤3:计算映射标号:该名称前缀经神经网络运算得到一个0~1之间的索引映射值,该值乘改进型位图的槽总数,得出该Data包映射到改进型位图上的映射标号。
步骤4:计算基地址和偏移地址:由映射标号除以每个桶的槽总量取整得到该名称前缀所在的桶序号即为基地址,名称前缀进入该桶的顺序号为该名称前缀的偏移地址。
步骤5:判断改进型位图中是否存在该名称前缀:若偏移地址所指向的槽中值为0,则证明改进型位图中不存在该名称前缀,执行步骤10,否则,证明存在该名称前缀,执行步骤6。
步骤6:访问动态存储器:由该名称前缀经学习位图训练映射后得到的基地址和偏移地址来访问动态存储器。
步骤7:在双向跳表中查找Data包:选择最优双向跳表查找节点并确定查找方向,在双向跳表中查找Data包。
7-1:输入数据x的名称前缀和ID:将数据x的名称前缀和ID号输入到双向跳表,此时数据x的ID记为id1,且假设id1是第一次在该名称前缀所对应的双向跳表结构中进行查找。
7-2:头结点查找:按照传统跳表的查找方式,从双向跳表跳表中的头节点最高层开始向后查找,并将查找路径节点信息记录与动态存储器中,并继续步骤8。
7-3:输入数据y的名称前缀和ID:将与数据x有相同前缀的数据y的名称前缀名称前缀和ID号输入到双向跳表输入,并提取数据y的ID号记为id2。
7-4:选择最佳开始查找节点及查找方向:如果id1大于id2,则从记录在动态存储器中前折返节点中选择ID值相差最小的节点作为最佳节点,否则,从后折返节点中选择ID值相差最小的节点作为最佳节点。
7-5:查找双向跳表:从最佳开始查找节点按照查找方向进行查找,同时更新动态存储器中记录的折返节点信息。
步骤8:判断双向跳表中是否存在该Data:在双向跳表中查找与ID号对应的Data包,若未找到ID相同的节点,则说明不存在该Data包,则执行步骤10,否则,执行步骤9。
步骤9:删除该Data包节点,并继续执行步骤10。
步骤10:Data包在学习位图内容存储池结构中的删除结束。
在存储池存储结构中双向查找名称数据,每查找一次名称数据的步骤如下:
步骤1:输入数据x的名称前缀和ID:将数据x的名称前缀和ID号输入到双向跳表,此时数据x的ID记为id1,且假设id1是第一次在该名称前缀所对应的双向跳表结构中进行查找。
步骤2:头结点查找:按照传统跳表的查找方式,从双向跳表跳表中的头节点最高层查找直至找到id1节点,并返回该数据x的实际存储地址。
步骤3:记录折返节点信息:将id1查找过程中每层跳表的前折返节点和后折返节点信息全部记录于所属该名称前缀的动态存储器中。
步骤4:输入数据y的名称前缀和ID:将与数据x有相同前缀的数据y的名称前缀名称前缀和ID号输入到双向跳表输入,并提取数据y的ID号记为id2。
步骤5:判断ID是否相等:若id1=id2,证明数据y与数据x相等,则执行步骤10,否则执行步骤6。
步骤6:选择最佳开始查找节点及查找方向:如果id1大于id2,则从记录在动态存储器中前折返节点中选择ID值相差最小的节点作为最佳节点,否则,从后折返节点中选择ID值相差最小的节点作为最佳节点。
步骤7:查找双向跳表:从最佳开始查找节点按照查找方向进行查找,同时更新动态存储器中记录的折返节点信息。
步骤8:判断是否存在该Data包:若双向跳表中存在ID相等的节点,则证明存在该Data包,执行步骤9,否则,证明不存在该Data包,执行步骤10。
步骤9:输出实际存储地址:返回该Data包的实际内容的存储地址,继续执行步骤11。
步骤10:输出不存在该Data包:输出不存在该Data包,并继续执行步骤11。
步骤11:数据名称在双向跳表结构中的查找结束。
附图说明
图1为本发明中新型存储结构学习位图内容存储池系统结构框图。
图2为本发明学习位图内容存储池存储结构对Interest包检索操作流程图。
图3为本发明学习位图内容存储池存储结构对Data包检索操作流程图。
图4为本发明学习位图内容存储池存储结构对Data包插入操作流程图。
图5为本发明学习位图内容存储池存储结构对Data包删除操作流程图。
图6为本发明中数据名称在双向跳表中查找操作流程框图。
图7为本发明中学习位图内容存储池存储结构中双向跳表数据结构图。
图8为本发明中学习位图内容存储池存储结构中双向跳表节点结构图。
图9学习位图内容存储池存储结构中动态存储器结构示意图。
具体实施方式
本发明中,命名数据网转发平面新型存储结构学习位图内容存储池设计,如图1所示,其所述结构包括:一个片内存储单元和一个片外存储单元构成。其中,所述片内存储单元中具有一个高速存储器,片内部署一个神经网络模型(NN Model)实现对数据名称的均匀映射,部署一个改进型位图(Dynamic-bitmap,D-bitmap)实现将包含相同名称前缀的数据包映射到同一桶(bucket)中。片外存储单元使用一个低速存储器,其上部署多个与改进型位图的动态索引单元的槽(slot)对应的动态存储器(Packet Store),来存储每个名称前缀的跳表信息。另部署一个双向跳表结构,以存放数据包在Content Store中的存储位置信息,且每个双向跳表节点中存有先入先出队列(First Input First Output,FIFO)单指针和最近最少使用(Least Recently Used,LRU)双指针。通过以上各数据结构之间高效配合,使设计的新型存储结构学习位图内容存储池能够支持数据的检索、插入、删除操作。
在所设计的命名数据网转发平面学习位图内容存储池存储结构中采用子名称匹配算法检索Interest包,每检索一次Interest包的步骤如下:
步骤1:输入Interest包名称前缀和ID:输入Interest包的名称前缀和ID
到学习位图内容存储池存储结构中。
步骤2:所有子名称匹配:在学习位图中对所有包含该名称前缀的子名字进行匹配,并选择出最佳匹配的名称前缀。
步骤3:计算映射标号:该最佳匹配的名称前缀经神经网络运算得到一个0~1之间的索引映射值,该值乘改进型位图的槽总数,得出该Interest包映射到改进型位图上的映射标号。
步骤4:计算基地址和偏移地址:由映射标号除以每个桶的槽总量取整得到该名称前缀所在的桶序号即为基地址,名称前缀进入该桶的顺序号为该名称前缀的偏移地址。
步骤5:判断改进型位图中是否存在最佳匹配名称前缀:若偏移地址所指向的槽中值为0,则证明改进型位图中不存在最佳匹配名称前缀,执行步骤10,否则,证明存在最佳匹配名称前缀,执行步骤6。
步骤6:访问动态存储器:由该最佳匹配名称前缀经学习位图训练映射后得到的基地址和偏移地址来访问动态存储器。
步骤7:在双向跳表中查找Data包:选择最优双向跳表查找节点并确定查找方向,在双向跳表中查找Data包。
7-1:输入数据x的名称前缀和ID:将数据x的名称前缀和ID号输入到双向跳表,此时数据x的ID记为id1,假设id1是第一次在该名称前缀所对应的双向跳表结构中进行查找。
7-2:头结点查找:按照传统跳表的查找方式,从双向跳表跳表中的头节点最高层开始向后查找,并将查找路径节点信息记录与动态存储器中,并继续步骤8。
7-3:输入数据y的名称前缀和ID:将与数据x有相同前缀的数据y的名称前缀名称前缀和ID号输入到双向跳表输入,并提取数据y的ID号记为id2,假设输入的y不是第一次在该名称前缀所对应的双向跳表结构中进行查找。
7-4:选择最佳开始查找节点及查找方向:如果id1大于id2,则从记录在动态存储器中前折返节点中选择ID值相差最小的节点作为最佳节点,否则,从后折返节点中选择ID值相差最小的节点作为最佳节点。
7-5:查找双向跳表:从最佳开始查找节点按照查找方向进行查找,同时更新动态存储器中记录的折返节点信息。
步骤8:判断双向跳表中是否存在最佳匹配Data包:在双向跳表中查找与ID号对应的Data包,若找到ID相同的节点,则说明存在最佳匹配Data包,则执行步骤9,否则,执行步骤10。
步骤9:输出存在最佳匹配Data包:学习位图内容存储池输出该最佳匹配Data包,并继续执行步骤11。
步骤10:输出不存在最佳匹配Data包:学习位图内容存储池输出不存在最佳匹配Data包,并继续执行步骤11。
步骤11:Interest包在学习位图内容存储池结构中的检索结束。
在所设计的命名数据网转发平面学习位图内容存储池存储结构中采用精确名称匹配算法检索Data包,每检索一次Data包的步骤如下:
步骤1:输入Data包名称前缀和ID:输入Data包的名称前缀和ID到学习
位图内容存储池存储结构中。
步骤2:精确名称匹配:在学习位图中对该名称前缀直接进行映射操作。
步骤3:计算映射标号:该名称前缀经神经网络运算得到一个0~1之间的索引映射值,该值乘改进型位图的槽总数,得出该Data包映射到改进型位图上的映射标号。
步骤4:计算基地址和偏移地址:由映射标号除以每个桶的槽总量取整得到该名称前缀所在的桶序号即为基地址,名称前缀进入该桶的顺序号为该名称前缀的偏移地址。
步骤5:判断改进型位图中是否存在该名称前缀:若偏移地址所指向的槽中值为0,则证明改进型位图中不存在该名称前缀,执行步骤10,否则,证明存在该名称前缀,执行步骤6。
步骤6:访问动态存储器:由该名称前缀经学习位图训练映射后得到的基地址和偏移地址来访问动态存储器。
步骤7:在双向跳表中查找Data包:选择最优双向跳表查找节点并确定查找方向,在双向跳表中查找Data包。
7-1:输入数据x的名称前缀和ID:将数据x的名称前缀和ID号输入到双向跳表,此时数据x的ID记为id1,且假设id1是第一次在该名称前缀所对应的双向跳表结构中进行查找。
7-2:头结点查找:按照传统跳表的查找方式,从双向跳表跳表中的头节点最高层开始向后查找,并将查找路径节点信息记录与动态存储器中,并继续步骤8。
7-3:输入数据y的名称前缀和ID:将与数据x有相同前缀的数据y的名称前缀名称前缀和ID号输入到双向跳表输入,并提取数据y的ID号记为id2,假设输入的y不是第一次在该名称前缀所对应的双向跳表结构中进行查找。
7-4:选择最佳开始查找节点及查找方向:如果id1大于id2,则从记录在动态存储器中前折返节点中选择ID值相差最小的节点作为最佳节点,否则,从后折返节点中选择ID值相差最小的节点作为最佳节点。
7-5:查找双向跳表:从最佳开始查找节点按照查找方向进行查找,同时更新动态存储器中记录的折返节点信息。
步骤8:判断双向跳表中是否存在该Data包:在双向跳表中查找与ID号对应的Data包,若找到ID相同的节点,则说明存在该Data包,则执行步骤9,否则,执行步骤10。
步骤9:输出该Data包:学习位图内容存储池输出该Data包,并继续执行步骤11。
步骤10:输出不存在Data包:学习位图内容存储池输出不存在该Data包,并继续执行步骤11。
步骤11:Data包在学习位图内容存储池结构中的检索结束。
5、在所设计的命名数据网转发平面学习位图内容存储池存储结构中插入Data包,每插入一个Data包的步骤如下:
步骤1:输入Data包名称前缀和ID:输入Data包的名称前缀和ID
到学习位图内容存储池存储结构中。
步骤2:精确名称匹配:在学习位图中对该名称前缀直接进行映射操作。
步骤3:计算映射标号:该名称前缀经神经网络运算得到一个0~1之间的索引映射值,该值乘改进型位图的槽总数,得出该Data包映射到改进型位图上的映射标号。
步骤4:计算基地址和偏移地址:由映射标号除以每个桶的槽总量取整得到该名称前缀所在的桶序号即为基地址,名称前缀进入该桶的顺序号为该名称前缀的偏移地址。
步骤5:判断改进型位图中是否存在该名称前缀:若偏移地址所指向的槽中值不为0,则证明改进型位图中存在该名称前缀,执行步骤6,否则,证明不存在该名称前缀,执行步骤10。
步骤6:访问动态存储器:由该名称前缀经学习位图训练映射后得到的基地址和偏移地址来访问动态存储器。
步骤7:在双向跳表中查找Data包:选择最优双向跳表查找节点并确定查找方向,在双向跳表中查找Data包。
7-1:输入数据x的名称前缀和ID:将数据x的名称前缀和ID号输入到双向跳表,此时数据x的ID记为id1,且假设id1是第一次在该名称前缀所对应的双向跳表结构中进行查找。
7-2:头结点查找:按照传统跳表的查找方式,从双向跳表跳表中的头节点最高层开始向后查找,并将查找路径节点信息记录与动态存储器中,并继续步骤8。
7-3:输入数据y的名称前缀和ID:将与数据x有相同前缀的数据y的名称前缀名称前缀和ID号输入到双向跳表输入,并提取数据y的ID号记为id2,假设输入的y不是第一次在该名称前缀所对应的双向跳表结构中进行查找。
7-4:选择最佳开始查找节点及查找方向:如果id1大于id2,则从记录在动态存储器中前折返节点中选择ID值相差最小的节点作为最佳节点,否则,从后折返节点中选择ID值相差最小的节点作为最佳节点。
7-5:查找双向跳表:从最佳开始查找节点按照查找方向进行查找,同时更新动态存储器中记录的折返节点信息。
步骤8:判断双向跳表中是否存在该Data包:在双向跳表中查找与ID号对应的Data包,若未找到ID相同的节点,则说明不存在该Data包,则执行步骤9,否则,执行步骤11。
步骤9:插入双向跳表:按照ID号增序将该Data包插入双向跳表,并将名称前缀记录与动态存储器中,并继续执行步骤11。
步骤10:创建双向跳表:对该名称前缀新建一个双向跳表,将该数据插入跳表中,并将名称前缀记录与动态存储器中,并继续执行步骤11。
步骤11:Data包在学习位图内容存储池结构中的插入结束。
在所设计的命名数据网转发平面学习位图内容存储池存储结构中删除Data包,每删除一个Data包的步骤如下:
步骤1:输入Data包名称前缀和ID:输入Data包的名称前缀和ID到学习
位图内容存储池存储结构中。
步骤2:精确名称匹配:在学习位图中对该名称前缀直接进行映射操作。
步骤3:计算映射标号:该名称前缀经神经网络运算得到一个0~1之间的索引映射值,该值乘改进型位图的槽总数,得出该Data包映射到改进型位图上的映射标号。
步骤4:计算基地址和偏移地址:由映射标号除以每个桶的槽总量取整得到该名称前缀所在的桶序号即为基地址,名称前缀进入该桶的顺序号为该名称前缀的偏移地址。
步骤5:判断改进型位图中是否存在该名称前缀:若偏移地址所指向的槽中值为0,则证明改进型位图中不存在该名称前缀,执行步骤10,否则,证明存在该名称前缀,执行步骤6。
步骤6:访问动态存储器:由该名称前缀经学习位图训练映射后得到的基地址和偏移地址来访问动态存储器。
步骤7:在双向跳表中查找Data包:选择最优双向跳表查找节点并确定查找方向,在双向跳表中查找Data包。
7-1:输入数据x的名称前缀和ID:将数据x的名称前缀和ID号输入到双向跳表,此时数据x的ID记为id1,且假设id1是第一次在该名称前缀所对应的双向跳表结构中进行查找。
7-2:头结点查找:按照传统跳表的查找方式,从双向跳表跳表中的头节点最高层开始向后查找,并将查找路径节点信息记录与动态存储器中,并继续步骤8。
7-3:输入数据y的名称前缀和ID:将与数据x有相同前缀的数据y的名称前缀名称前缀和ID号输入到双向跳表输入,并提取数据y的ID号记为id2。
7-4:选择最佳开始查找节点及查找方向:如果id1大于id2,则从记录在动态存储器中前折返节点中选择ID值相差最小的节点作为最佳节点,否则,从后折返节点中选择ID值相差最小的节点作为最佳节点。
7-5:查找双向跳表:从最佳开始查找节点按照查找方向进行查找,同时更新动态存储器中记录的折返节点信息。
步骤8:判断双向跳表中是否存在该Data:在双向跳表中查找与ID号对应的Data包,若未找到ID相同的节点,则说明不存在该Data包,则执行步骤10,否则,执行步骤9。
步骤9:删除该Data包节点,并继续执行步骤10。
步骤10:Data包在学习位图内容存储池结构中的删除结束。
在所设计的命名数据网转发平面学习位图内容存储池存储结构中双向查找名称数据,每查找一次名称数据的步骤如下:
步骤1:输入数据x的名称前缀和ID:将数据x的名称前缀和ID号输入到双向跳表,此时数据x的ID记为id1,且假设id1是第一次在该名称前缀所对应的双向跳表结构中进行查找。
步骤2:头结点查找:按照传统跳表的查找方式,从双向跳表跳表中的头节点最高层查找直至找到id1节点,并返回该数据x的实际存储地址。
步骤3:记录折返节点信息:将id1查找过程中每层跳表的前折返节点和后折返节点信息全部记录于所属该名称前缀的动态存储器中。
步骤4:输入数据y的名称前缀和ID:将与数据x有相同前缀的数据y的名称前缀名称前缀和ID号输入到双向跳表输入,并提取数据y的ID号记为id2。
步骤5:判断ID是否相等:若id1=id2,证明数据y与数据x相等,则执行步骤10,否则执行步骤6。
步骤6:选择最佳开始查找节点及查找方向:如果id1大于id2,则从记录在动态存储器中前折返节点中选择ID值相差最小的节点作为最佳节点,否则,从后折返节点中选择ID值相差最小的节点作为最佳节点。
步骤7:查找双向跳表:从最佳开始查找节点按照查找方向进行查找,同时更新动态存储器中记录的折返节点信息。
步骤8:判断是否存在该Data包:若双向跳表中存在ID相等的节点,则证明存在该Data包,执行步骤9,否则,证明不存在该Data包,执行步骤10。
步骤9:输出实际存储地址:返回该Data包的实际内容的存储地址,继续执行步骤11。
步骤10:输出不存在该Data包:输出不存在该Data包,并继续执行步骤11。
步骤11:数据名称在双向跳表结构中的查找结束。
本发明实现对数据的快速压缩处理操作,关键是在Content Store中,运用神经网络的网络映射以提高存储效率以及支持不同名称数据检索算法,设计满足支持快速缓存替换策略的特殊双向跳表数据结构以及可指导数据检索的动态存储器数据结构。其具体设计及实施方案如下:
(1)快速支持缓存替换策略的双向跳表数据结构设计
本发明中所设计的双向跳表数据结构是在传统跳表的基础上进行改进,因此双向跳表与传统跳表相似,也采用多层结构,且每层由一条双向链表构成,其跳表节点按照名称前缀的ID号增序排列,其具体结构如图5所示。跳表节点间用FIFO单指针和LRU双指针相连,每个节点中有ID、指向前向节点指针(prev)和后向节点的指针(next),节点地址,以图7所示的双向跳表节点图中ID为6的节点为例,节点结构示意图如图8所示。
(2)用于指导数据检索的动态存储器数据结构设计
本发明中的动态存储器结构,用于记录节点在双向跳表查找过程中的前后折返节点信息,以指导相同数据名称前缀的下一次查找。动态存储器中记录的内容有:名称前缀、前向节点(prev_nodes)、前向节点地址(next_node_addr)、后向节点(next_nodes)、后向节点地址(next_node_addr)和当前节点(recent_node)。其中名称前缀是从数据包名称<名称前缀,ID>中提取出来的;前向节点和后向节点是某个节点在查找时转折的关键节点对,前向节点地址和后向节点地址为节点地址;当前节点为最近刚查找的节点。其结构示意图如图9所示。假设查找节点为h,X为双向跳表中的节点,如果X<h≤X下一跳节点ID,则前向节点记录X,后向节点记录X下一跳节点ID,前向节点地址记录为各个对应的X节点地址,后向节点地址记录为各个对应的X下一跳节点地址,当前节点为h。以数据名称/A/B/C/7第一次到来图7所示的双向跳表数据结构为例说明以上过程。
提取ID为7,查找路径为head[4]-6[4]-NIL[4]-6[3]-25[3]-6[2]-9[2]-6[1]-7。此时动态存储器中记录的名称前缀为/A/B/C,后向节点为<NIL,25,9,7>,对应的后向节点地址为<0xB,0x9,0x4,0x3>,前向节点为<6,6,6,6>,对应的前向节点地址为<0x2,0x2,0x2,0x2>,当前节点为7。
(3)数据名称前缀经神经网络模型高效检索得到映射标号
数据名称前缀经神经网络模型高效检索,重点在于对样本训练学习,构建满足需求的神经网络模型。首先神经网络采集样本进行训练,对于样本来说,本发明中使用与命名数据网名称数据格式类似的大量统一资源定位符(Uniform Resource Locator,URL)作为样本数据,利用样本数据,结合反向传播神经网络,学习训练出能反映索引数据分布情况的累积分布函数,根据数学定理,如果x服从任意分布,作为自己的累积分布函数F(x)的输入,则y=F(x)变换后值的分布必将服从U(0,1)。因此,将样本的名称前缀字符串视为数值,输入其累积分布函数,即可得到一个0~1之间的映射值,该值乘以改进型位图的总槽数,即可得到实现均匀映射的映射标号。
(4)双向跳表中实现快速双向查找
利用动态存储器中的节点信息:名称前缀、前向节点、前向节点地址、后向节点、后向节点地址和当前节点,指导具有相同名称前缀的数据查找过程如下:对于有相同名称前缀的数据j,首先比较j的ID和当前节点的ID大小,如果ID<当前节点的ID,则从前向节点中依据ID号选择与数据j最近的折返节点作为最佳开始查找节点;如果ID>当前节点的ID,则从后向节点中选取依据ID号选择与数据j最近的折返节点作为最佳开始查找节点。若选择的最佳开始节点的ID小于j的ID,则向后查找,否则,从最佳节点想前查找。并且在数据查找过程中,及时更新以上记录的节点信息。以数据名称/A/B/19、/A/B/26、/A/B/21到达图4所示的双向跳表结构,且动态存储器中的记录信息为图9所示为例,说明以上过程。
当查找/A/B/19时,提取名称ID为19,因为19>7,所以从后向节点中查找最优节点和层数。判断9<19<25,所以从(19-9)>(25-19),所以从25[3]开始查找,i为3,且19<25,所以向前查找。路径为:25[3]-6[3]-25[2]-17[2]-25[1]-21[1]-19;动态存储器中更新节点信息如下:后向节点为<NIL,25,25,21>,对应的后向节点地址为<0xB,0x9,0x9,0x8>,前向节点为<6,6,17,19>,对应的前向节点地址为<0x2,0x2,0x6,0x7>,当前节点为19。
当查找/A/B/26时,提出提取名称ID为26,且19<26,所以从后向节点中选择查找最优节点和层数。判断25<26<NIL,且(26-25)<(NIL-26),所以从25[2]开始查找,i为3,且26>25,所以向后查找。路径为:25[3]-NIL[3]-25[2]-NIL[2]-25[1]-26;动态存储器中更新节点信息如下:后向节点为<NIL,NIL,NIL,26>对应的后向节点地址为<0xB,0xB,0xB,0xA>,前向节点为<6,25,25,25>,对应的前向节点地址为<0x2,0x9,0x9,0x9>,当前节点为26。
当查找/A/B/C/21时,提出提取名称ID为21,且26>21,所以从前向节点中选择查找最优节点和层数。判断6<21<25,且(25-21)<(21-6),所以从25[3]开始查找,i为3,且25>21,所以向后查找。路径为:25[3]-6[3]-25[2]-17[2]-25[1]-21;动态存储器中更新节点信息如下:后向节点为<NIL,25,25,25>对应的后向节点地址为<0xB,0x9,0x9,0x9>,前向节点为<6,6,17,21>,对应的前向节点地址为<0x2,0x2,0x6,0x8>,当前节点为21。
Claims (1)
1.一种基于神经网络的命名数据网内容存储池数据删除方法,所采用的存储池, 包括:一个片内存储单元和一个片外存储单元,所述片内存储单元使用高速存储器,片内部署一个神经网络模型以实现对数据名称的均匀映射,部署一个改进型位图D-bitmap实现将包含相同名称前缀的数据包映射到同一桶bucket中;片外存储单元使用低速存储器,其上部署多个与改进型位图的动态索引单元的槽slot对应的动态存储器,来存储每个名称前缀的跳表信息,用于指导相同名称前缀Data包在双向跳表中的下一次查找,以提高数据检索速度;另部署一个双向跳表结构,以存放数据包在学习位图内容存储池中的存储位置信息,且每个双向跳表节点中存有先入先出队列FIFO单指针和最近最少使用LRU双指针;
神经网络模型以实现对数据名称的均匀映射过程如下:
首先,神经网络采集样本进行训练,与命名数据网名称数据格式类似的大量统一资源定位符URL作为样本数据;其次,计算样本数据的累积分布函数F(x)值作为标签;然后,训练反向传播神经网络,学习出能反映索引数据分布情况的神经网络模型,最后,将数据名称的名称字符串作为输入,输入训练出神经网络模型,得到一个0~1之间的实数值,该数值乘以改进型位图的槽总数,得到映射标号,即实现对数据名称的均匀映射;
双向跳表数据结构设计如下:
双向跳表采用多层结构,且每层由一条双向链表构成,其跳表节点按照名称前缀的ID号增序排列;跳表节点间用FIFO单指针和LRU双指针相连,每个节点中存储有ID、指向前向节点指针(prev)和后向节点的指针(next)信息;
动态存储器数据结构设计如下:
动态存储器中记录的内容有:名称前缀、前向节点(prev_nodes)、前向节点地址(next_node_addr)、后向节点(next_nodes)、后向节点地址(next_node_addr)和当前节点(recent_node);其中名称前缀是从数据包名称< 名称前缀,ID>中提取出来的;前向节点和后向节点是某个节点在查找时转折的关键节点对,前向节点地址和后向节点地址为节点地址;当前节点为最近刚查找的节点;
在存储池中选择最优双向跳表查找节点并确定查找方向过程如下:
利用动态存储器中的节点信息:名称前缀、前向节点、前向节点地址、后向节点、后向节点地址和当前节点,选择最优双向跳表查找节点并确定查找方向过程如下:
对于有相同名称前缀的数据j,首先比较j的ID和当前节点的ID大小,如果ID<当前节点的ID,则从前向节点中依据ID号选择与数据j最近的折返节点作为最佳开始查找节点;如果ID>当前节点的ID,则从后向节点中选取依据ID号选择与数据j最近的折返节点作为最佳开始查找节点;若选择的最佳开始节点的ID小于j的ID,则从最佳开始节点向后查找,否则,从最佳开始节点向前查找;并且在数据查找过程中,及时更新以上记录的节点信息;
在所述存储池存储结构中删除Data包,每删除一个Data包的步骤如下:
步骤1:输入Data包名称前缀和ID:输入Data包的名称前缀和ID到学习位图内容存储池存储结构中;
步骤2: 精确名称匹配:在学习位图中对该名称前缀直接进行映射操作;
步骤3:计算映射标号:该名称前缀经神经网络运算得到一个0~1之间的索引映射值,该值乘改进型位图的槽总数,得出该Data包映射到改进型位图上的映射标号;
步骤4:计算基地址和偏移地址:由映射标号除以每个桶的槽总量取整得到该名称前缀所在的桶序号即为基地址, 名称前缀进入该桶的顺序号为该名称前缀的偏移地址;
步骤5:判断改进型位图中是否存在该名称前缀:若偏移地址所指向的槽中值为0,则证明改进型位图中不存在该名称前缀,执行步骤10,否则,证明存在该名称前缀,执行步骤6;
步骤6:访问动态存储器:由该名称前缀经学习位图训练映射后得到的基地址和偏移地址来访问动态存储器;
步骤7:在双向跳表中查找Data包:选择最优双向跳表查找节点并确定查找方向,在双向跳表中查找Data包;
7-1:输入数据x的名称前缀和ID:将数据x的名称前缀和ID号输入到双向跳表,此时数据x的ID记为id1,且假设id1是第一次在该名称前缀所对应的双向跳表结构中进行查找;
7-2:头结点查找:按照传统跳表的查找方式,从双向跳表跳表中的头节点最高层开始向后查找,并将查找路径节点信息记录与动态存储器中,并继续步骤8;
7-3:输入数据y的名称前缀和ID :将与数据x有相同前缀的数据y的名称前缀名称前缀和ID号输入到双向跳表输入,并提取数据y的ID号记为id2;
7-4:选择最佳开始查找节点及查找方向:如果id1大于id2,则从记录在动态存储器中前折返节点中选择ID值相差最小的节点作为最佳节点,否则,从后折返节点中选择ID值相差最小的节点作为最佳节点;
7-5:查找双向跳表:从最佳开始查找节点按照查找方向进行查找,同时更新动态存储器中记录的折返节点信息;
步骤8:判断双向跳表中是否存在该Data:在双向跳表中查找与ID号对应的Data包,若未找到ID相同的节点,则说明不存在该Data包,则执行步骤10,否则,执行步骤9;
步骤9:删除该Data包节点,并继续执行步骤10;
步骤10:Data包在学习位图内容存储池结构中的删除结束;
在存储池存储结构中双向查找名称数据,每查找一次名称数据的步骤如下:
步骤1:输入数据x的名称前缀和ID:将数据x的名称前缀和ID号输入到双向跳表,此时数据x的ID记为id1,且假设id1是第一次在该名称前缀所对应的双向跳表结构中进行查找;
步骤2:头结点查找:按照传统跳表的查找方式,从双向跳表跳表中的头节点最高层查找直至找到id1节点,并返回该数据x的实际存储地址;
步骤3:记录折返节点信息:将id1查找过程中每层跳表的前折返节点和后折返节点信息全部记录于所属该名称前缀的动态存储器中;
步骤4:输入数据y的名称前缀和ID :将与数据x有相同前缀的数据y的名称前缀名称前缀和ID号输入到双向跳表输入,并提取数据y的ID号记为id2;
步骤5:判断ID是否相等:若id1=id2,证明数据y与数据x相等,则执行步骤10,否则执行步骤6;
步骤6:选择最佳开始查找节点及查找方向:如果id1大于id2,则从记录在动态存储器中前折返节点中选择ID值相差最小的节点作为最佳节点,否则,从后折返节点中选择ID值相差最小的节点作为最佳节点;
步骤7:查找双向跳表:从最佳开始查找节点按照查找方向进行查找,同时更新动态存储器中记录的折返节点信息;
步骤8:判断是否存在该Data包:若双向跳表中存在ID相等的节点,则证明存在该Data包,执行步骤9,否则,证明不存在该Data包,执行步骤10;
步骤9:输出实际存储地址:返回该Data包的实际内容的存储地址,继续执行步骤11;
步骤10:输出不存在该Data包:输出不存在该Data包,并继续执行步骤11;
步骤11:数据名称在双向跳表结构中的查找结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910260591.9A CN110109616B (zh) | 2019-04-02 | 2019-04-02 | 基于神经网络的命名数据网内容存储池数据删除方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910260591.9A CN110109616B (zh) | 2019-04-02 | 2019-04-02 | 基于神经网络的命名数据网内容存储池数据删除方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110109616A CN110109616A (zh) | 2019-08-09 |
CN110109616B true CN110109616B (zh) | 2022-03-01 |
Family
ID=67484951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910260591.9A Active CN110109616B (zh) | 2019-04-02 | 2019-04-02 | 基于神经网络的命名数据网内容存储池数据删除方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110109616B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210032222A (ko) * | 2019-09-16 | 2021-03-24 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그것의 동작 방법 |
CN110851658B (zh) * | 2019-10-12 | 2023-05-05 | 天津大学 | 树形索引数据结构、内容存储池、路由器及树形索引方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101364237A (zh) * | 2008-09-05 | 2009-02-11 | 成都市华为赛门铁克科技有限公司 | 一种多关键词匹配方法和装置 |
US10404592B2 (en) * | 2017-03-24 | 2019-09-03 | Cisco Technology, Inc. | System and method to facilitate content forwarding using bit index explicit replication (BIER) in an information-centric networking (ICN) environment |
CN107908357B (zh) * | 2017-10-13 | 2020-08-21 | 天津大学 | 命名数据网转发平面pit存储结构及其数据检索方法 |
CN109271390B (zh) * | 2018-09-30 | 2022-03-01 | 天津大学 | 一种基于神经网络的索引数据结构及其数据检索方法 |
-
2019
- 2019-04-02 CN CN201910260591.9A patent/CN110109616B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110109616A (zh) | 2019-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110096458B (zh) | 基于神经网络的命名数据网内容存储池数据检索方法 | |
US6775281B1 (en) | Method and apparatus for a four-way hash table | |
CN103238145B (zh) | 用于网络装备中的高性能、可更新和确定的哈希表的方法和设备 | |
CN102307149B (zh) | Ip查找方法和装置以及路由更新方法和装置 | |
CN1316390C (zh) | 用树状分段改善树搜索性能和存储器带宽的方法和系统 | |
CN109271390B (zh) | 一种基于神经网络的索引数据结构及其数据检索方法 | |
US8924687B1 (en) | Scalable hash tables | |
CN102484610B (zh) | 路由表建立方法和装置及路由表查找方法和装置 | |
KR20190117001A (ko) | 유지관리 동작들을 위한 병합 트리 수정들 | |
US9871727B2 (en) | Routing lookup method and device and method for constructing B-tree structure | |
CN105224692A (zh) | 支持多核处理器的sdn多级流表并行查找的系统及方法 | |
CN103428093A (zh) | 一种基于名字路由前缀存储、匹配及更新方法与装置 | |
CN110109616B (zh) | 基于神经网络的命名数据网内容存储池数据删除方法 | |
CN101655861A (zh) | 基于双计数布鲁姆过滤器的哈希方法和哈希装置 | |
WO2009076854A1 (zh) | 数据缓存系统和大容量缓存的实现方法 | |
CN103051543A (zh) | 一种路由前缀的处理、查找、增加及删除方法 | |
CN110460529B (zh) | 一种内容路由器转发信息库存储结构的数据处理方法和芯片 | |
CN102736986A (zh) | 一种内容可寻址存储器及其检索数据的方法 | |
CN100426791C (zh) | 一种路由转发表地址查找引擎装置 | |
CN110196938B (zh) | 基于神经网络的命名数据网内容存储池数据插入方法 | |
CN110851658B (zh) | 树形索引数据结构、内容存储池、路由器及树形索引方法 | |
CN100397816C (zh) | 在网络设备中对接收数据包进行分类的方法 | |
CN111541617B (zh) | 一种用于高速大规模并发数据流的数据流表处理方法及装置 | |
CN102984071B (zh) | 分段地址路由的路由表组织方法及查找路由的方法 | |
CN110138661A (zh) | 基于神经网络的命名数据网内容存储池 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder |
Address after: 300452 Binhai Industrial Research Institute Campus of Tianjin University, No. 48 Jialingjiang Road, Binhai New Area, Tianjin Patentee after: Tianjin University Address before: 300072 Tianjin City, Nankai District Wei Jin Road No. 92 Patentee before: Tianjin University |
|
CP02 | Change in the address of a patent holder |