一种基于请求内容关联性的ICN网络预缓存方法与流程

文档序号:15847455发布日期:2018-11-07 09:17阅读:238来源:国知局
一种基于请求内容关联性的ICN网络预缓存方法与流程

本发明涉及信息中心网络技术领域,具体是涉及一种基于请求内容关联性的icn网络预缓存方法。

背景技术

随着互联网技术的广泛普及与应用,当前的网络体系出现了诸多不足,严重影响互联网的进一步发展,目前,网络应用主体已由硬件共享转为文字信息、图像和视频的内容服务,用户关注的不再是内容存储在哪里,而是内容本身,以及内容检索与传输速度、质量和安全性,因此,基于主机的通信模型已经不适合当前网络发展的需要。

近年来,将内容与主机分离的改进方法引起了学术界的广泛关注,以内容为中心的网络成为未来网络发展的重要模式,信息中心网络(informationcentricnetworking,icn)直接把内容作为网络处理的基本对象,将内容的存储地址,安全性以及可访问性与内容本身分离开来,并且赋予路由节点缓存的能力,其优势在于极大地降低了用户的请求时延,节省了网络带宽,从而提升了网络的性能。

缓存作为icn网络的特征之一,其极大地减少了网络传输流量,降低了网络拥塞。icn网络通过缓存将用户高请求频度的内容保留在网络之中,使得用户可以以最短的时间获得所需内容,因此,将缓存的概念加入icn网络提升了网络性能,在一定程度上提高了用户体验,这里,如何在具有缓存能力的网络设备中存放内容来提高网络性能成为一个实际存在的问题,也就是说,网络中的内容选择哪些内容进行存储,选择的这些内容放置在哪些节点上。

根据cisovni报告的显示,在2018年中,视频类应用产生的网络流量占据网络总流量的79%,其中,互联网上请求内容的产生相关流量将超过97.5%。而现有的方案大都没有考虑内容分块后,用户对同一内容各块请求之间的关联性,以此进行同一内容后续请求块的预缓存,另外,缓存算法设计时,各请求内容块的流行度都是预先设定的,无法体现内容块的真实请求情况。

因此,根据实际应用的流量分布情况,研究一种基于请求内容关联性的icn网络预缓存方法对于网络性能的提升是至关重要的。



技术实现要素:

为了解决上述技术问题,本发明提供了一种基于请求内容关联性的icn网络预缓存方法,本发明利用用户请求内容块,预先缓存用户请求内容块的后续内容块,设置逗留时间,并将流行内容块推送至网络边缘,降低用户请求时延,为信息路由快速转发提供技术支持。

本发明所采用的技术方案是:

一种基于请求内容关联性的icn网络预缓存方法,包括以下步骤:

步骤s1、模型定义:将网络模型定义为无向图g=(v,e),其中v={v1,v2,l,vw}为网络节点集合,即路由器节点,下标w是指网络节点的个数,e是节点间边的集合;ei,j=(vi,vj)∈e表示节点vi、vj之间的没有方向的链路;

将网络中一组内容集合定义为o={o1,o2,l,ok,l,om},其中m表示网络中内容的数量,将一个内容ok划分成nk个块,记为

步骤s2、预缓存存储决策:用户通过路由器节点向内容源服务器css发出关于内容ok,m的兴趣包内容源服务器css依据收到的兴趣包主动地将预缓存兴趣包和用户请求的内容ok,m的后续块即预缓存数据包发送给指定的路由器节点进行存储;

步骤s3、预缓存内容的推进:若路由器节点收到的是兴趣包该路由器节点计算内容ok,m的局部活跃度lacc,并依据lacc的取值直接在该路由器节点调整内容ok,m的逗留时间,并发送兴趣包对下游路由器节点进行响应;

若缓存节点收到的是预缓存兴趣包,内容源服务器css响应预缓存兴趣包,并发送该内容ok,m剩余块的预缓存数据包,并设置预缓存内容的预逗留时间;

步骤s4、逗留时间的计算:内容源服务器css根据包的类型分别对逗留时间进行设置,对于用户请求的内容ok,m,根据滑动窗口动态的改变逗留时间,对于预缓存的内容,设置临时缓存时间,防止预缓存内容长时间占用存储空间;

步骤s5、缓存替换策略:随着路由器节点中缓存内容数量的增加,存储空间逐渐减少,当路由器节点中存储空间为0时,新请求的内容是否进行缓存则需要根据缓存替换策略决定。

进一步的,步骤s2中的兴趣包是由兴趣包产生器根据内容ok,m生成的。

进一步的,用户到内容源服务器css之间的路径lio中的路由器跳数为h,内容ok,m的后续块的数量为nk-m块;步骤s2中在对内容ok,m的后续块进行存储时包括以下步骤:

步骤s21、内容源服务器css根据用户请求的兴趣包记录路径lio中路由器节点的id集;

步骤s22、计算路径lio中路由器节点缓存内容的数量f:

步骤s23、计算存储内容与存储节点之间的关系q:q即为路由器节点的下标;

步骤s24、将内容ok,m的后续块发送到路由器节点vq进行缓存。

进一步的,步骤s3在对内容ok,m的局部活跃度lacc进行计算时,分别对进行计算,并对两者的值进行比较,其中,局部活跃度lacc的计算公式如下:

式中,γ为权值参数且γ>1,k为滑动窗口的宽度参数,即时间窗口由k个时长为t的时隙构成,表示在滑动窗口中的第j个时隙tj内内容被访问的次数,即即时流行度,表示内容ok,i在时间区间[(k-1)×t,tx+1]内的请求次数;

说明内容ok,m流行度变大,节点vj将对应的数据包中的字段cni置0,当下游的路由器节点收到该数据包时,查看该cni,如果cni为0,则表示该内容需要缓存,并依据lacc计算该内容的逗留时间,通过cni字段将内容推向了下一跳内容;

说明内容ok,m的活跃度lacc降低,依据lacc的取值直接在该节点调整内容的逗留时间,并发送数据包对下游路由器节点进行响应,当下游路由器节点收到数据包后,查看缓存指示字段cni,决定是否进行内容的存储,由于cni字段为-1,所以该节点只需进行内容的转发。

进一步的,步骤s5中的缓存替换策略包括:对于预缓存的内容,若在预缓存的时间内,该内容没有被用户请求,则该内容将很快处于可删除状态;若新请求的内容到达时,处于删除状态的内容块将会优先被替换掉;若路由器节点的存储空间中不存在删除状态的内容块,新到达的内容将会替换掉路由器节点中具有最小逗留时间的内容块。

与现有技术相比,本发明的有益效果是:本发明中,通过分析icn网络中用户请求内容块之间的联系特性,利用用户请求内容块之间的相关性,设计了一种节点之间协作的预缓存策略。该策略针对现有缓存策略没有充分考虑用户多次请求之间关系的特性,引入了预缓存的方式,在一定程度上降低了用户的请求时延问题,同时,根据请求内容的流行性问题,逐步的将流行的内容放置在网络的边缘。

附图说明

图1是本发明的流程示意图;

图2是本发明中路由器节点对兴趣包进行处理的流程示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明中,通过分析icn网络中用户请求内容块之间的联系特性,利用用户请求内容块之间的相关性,设计了一种节点之间协作的预缓存策略。该策略针对现有缓存策略没有充分考虑用户多次请求之间关系的特性,引入了预缓存的方式,在一定程度上降低了用户的请求时延问题。同时,根据请求内容的流行性问题,逐步的将流行的内容放置在网络的边缘。

下面详细说明缓存策略的细节:

网络模型定义为无向图g=(v,e),其中v={v1,v2,l,vw}为网络节点集合,即路由器节点,下标w是指网络节点的个数,e是节点间边的集合,其中ei,j=(vi,vj)∈e表示节点vi、vj之间的没有方向的链路,网络中一组内容集合为o={o1,o2,l,ok,l,om},其中m表示网络中内容的数量,一个内容ok划分成nk个块,记为|·|表示内容块的大小;本发明分块的内容名字采用分块所属内容的名字与该分块在该内容中相对位置号构成,即内容名字=内容块所属内容名字+该内容块的在该内容中的相对位置,内容名字是唯一的可以用来区分各个分块的依据。这里假设有足够的带宽支持内容包的转发,一个内容合适的分块数量以及分块后带来的可扩展性问题,不在本发明的研究范围之内。

(一)内容块的局部活跃度

为了体现内容请求的动态性,我们采用动态滑动窗口机制对内容块的活跃度进行动态地计算与更新,兼顾内容对象的历史请求热度和当前内容块的新颖性。

定义1:内容块局部活跃度(localactivityofcontentchunk,lacc)用户第x+1次请求内容块ok,i的时刻为tx+1,与该时刻相关的滑动窗口内的内容被请求的次数称为内容块局部活跃度,

其中,k为滑动窗口的宽度参数,即时间窗口由k个时长为t的时隙构成,表示滑动窗口中第j个时隙tj内(即[(j-1)×t,j×t]),内容ok,i被访问的次数,即即时流行度,表示内容ok,i在时间区间[(k-1)×t,tx+1]的请求次数,当用户请求到达时,由于没有考虑请求内容的时间性,即滑动窗口内,以往不同时隙的请求频度对当前时刻请求次数的影响,为此,我们引入权值参数γ,

我们从中可以看出,滑动窗口中靠前时隙中的请求次数对于lacc的影响较小,相反,靠后的时隙对lacc的影响较大,该参数降低了历史请求对于lacc的影响,既保证了内容的历史请求信息对当前信息的影响,又保证了请求的即时性,使得lacc的值更加真实地反映当前的结果。

(二)包结构

为了区分由用户发起的报文与预缓存的报文,本发明分别将其称作兴趣包(interestpacket)、预缓存兴趣包(pre-cacheinterestpacket)、数据包(datapacket)以及预缓存数据包(pre-cachedatapacket);

这里预缓存兴趣包与预缓存数据包表示用于执行预缓存操作的包,该预缓存数据包是与用户请求的内容块属于同一内容的后续内容块封装成的包,即用户请求ok,i,则将内容ok所属的内容封装成包进行转发以进行预缓存,为了区分预缓存和用户请求的包,本文在包中增加packettype字段,该字段可以有效的控制预缓存数据包的无效转发,减少后续路由节点的工作流程。

由于在ndn中,没有经过请求的数据包,也就是说,在pit表中没有该条记录,路由节点将会很快删除,因此,达不到预缓存的效果,为此,本文引入syntheticpre-cacheinterestgenerator产生兴趣包。此时,若预缓存的内容已经放置在用户边缘路由器vi到内容源服务器(contentsourceserver,css)形成的路径lio中,即lio=(ei,i+1,ei+1,i+2,k),此时,css将收不到该兴趣包,同时路径lio中各路由器将不会重复缓存该数据包。

为了实现以上叙述的情况,这里有两个问题需要考虑(1)如何感知兴趣包经过的路径,让数据包(预)缓存在lio路径上;(2)(预)缓存的内容将会占用cs存储空间,如何合理的设置预缓存内容在cs中的逗留时间。为了解决第一个问题,在兴趣包添加字段routeridlist(ril)。该字段表示用户发起的兴趣包到css所经过的路由器的层级号的集合。此时,兴趣包每经过一跳路由,就会将路由器id添加到列表ril字段中。另外,在数据包和预缓存数据包中添加了缓存节点标识(cachenodeidentifier,cni)。cni用于标识数据包将缓存的在哪个位置。这里,cni有两个作用:

(1)css将通过该字段将内容(预)缓存到对应的路由节点上,此时,该字段对应的是节点在该条路径上的路由器层级号;(2)在用户请求时,通过捕捉流行度的变化,设置该字段为0或者-1,当下一跳节点收到该数据包时,检查cni字段。当该字段为0后,就会缓存该内容,若为-1,表示该路由器只需要转发而不需要缓存该内容。为了解决第二个问题,添加了lacc字段,lacc表示该内容对应的局部活跃度,用于存储位置变化和内容逗留时间的计算。

在路由节点vi收到关于内容的数据包和预缓存的数据包,首先查找pit表,如果表中没有该数据,则vi将会丢弃如果该条目在pit中存在,则将会查看packettypefield,如果包的类型属于数据包,则将会核对cni字段,如果cni字段值为0,根据lacc计算逗留时间。之后该内容将会缓存在节点vi,如果cni与节点vi的id一致,vi将会缓存内容并设置基本的缓存时间tbasic,之后转发该数据包;否则,直接转发该数据包;如果没有上述的情况,也就是说,包为预缓存数据包,则存在两种情况;如果vi的id与自己本身匹配,则对缓存块设置逗留时间ttem,否则,该节点将会转发数据包。

图2中展现了节点对兴趣包的处理流程,其中,标号1处产生的为兴趣包,标号2处产生预缓存兴趣包,节点对ip的处理过程如下:节点收到关于某内容的兴趣包,如果其cs中存在该内容,则节点将会复制该内容,并将复制内容返回给用户,在这个过程中,该节点将会计算以决定cni的值;如果内容没有缓存,节点将会在pit中查看是否有请求记录,如果存在,下一步将会在pit的对应条目中添加请求端口,如果在pit中不存在该请求内容,则将该内容在fib中查找,并添加pit条目,同时发送该内容后续内容的syntheticpre-cacheinterest。在fib中查找成功后,该内容将会被转发给下一节点。否则,该兴趣包将会被丢弃。

(三)合作的预缓存算法

一个内容被分成若干块后,如果用户想要获取完整信息,之后将会连续的发出对同一内容的后续块的请求,从这个角度考虑,在特定用户请求了某一内容ok,i后,若同时将内容ok第i块以后的若干块存储在该条路径中,必然会降低该用户对剩余块的请求响应时间,提高用户就近获取所需块的可能性,用户发起请求,当css收到兴趣包,会将后续的块继续发送给用户,根据兴趣包中ril字段,将数据包、预缓存数据包缓存在后半条所属的路由器中。

如图1所示,本发明包括模型定义、预缓存存储决策、预缓存内容的推进、逗留时间的计算以及缓存替换策略等步骤,以下对各个步骤进行详细说明:

1.预缓存存储决策

css依据收到的兴趣包,主动地将用户请求的内容的后续块发送给指定的路由器节点。假设用户请求内容ok含有nk块,当前用户请求的内容块为ok,m,用户到css的路由跳数为h,则关于该请求内容的后续块的数量为nk-m块,其中路径lio中每个路由器缓存内容的数量f约为:

为了充分利用边缘节点,本文将预缓存的内容放置在路径lio的一半路径以后,其中存储的内容与缓存节点的对应关系为:

这里,q代表路由节点的下标,即将内容ok,j发送到节点vq进行缓存,j表示当前将要缓存内容ok的第j块,初始值设为当前用户请求块的下标(j≥m)。例如,用户请求的内容块ok,m,因此j的初始值设为m。

2.预缓存内容的推进

为了将流行的内容推送至网络边缘,本发明根据内容的lacc进行内容块的推进。当缓存节点收到兴趣包时,该节点计算内容块ok,m的lacc,这里有两种情况:

(1)若说明内容块流行度变大,节点vj将对应的数据包中的字段cni置0,当下游的节点vi-1收到该数据包时,查看该cni,如果cni为0,则表示该内容需要缓存,并依据lacc计算该内容的逗留时间,通过cni字段将内容推向了吓一跳内容。在这之后,由于vi-1缓存了该内容,vi将不会收到关于内容ok,i的请求,逗留时间长时间没有变化,当逗留时间到期之后,该内容将会处于“可删除”状态。另一方面,vi-1缓存内容后,将cni置-1,然后把数据包转发给下游,以防止下游节点再次存储;

(2)若说明内容块ok,m的活跃度lacc降低,此时vi需要做的是:依据lacc的取值直接在该节点调整内容的逗留时间,并发送数据包对下游节点进行响应。当下游节点收到数据包后,查看缓存指示字段cni,决定是否进行内容的存储,由于cni字段为-1,所以该节点只需进行内容的转发;

(3)当缓存节点收到的是预缓存兴趣包,则说明该兴趣包是基于用户请求内容产生的内容预请求,css响应预缓存兴趣包,并发送该剩余块的预缓存的数据包。当对应的层级号的路由器收到预缓存数据包后,该节点将会提取预缓存数据包中的内容。为了节省缓存空间,设置预缓存内容的预逗留时间ttem。预逗留时间的设置节省了用户请求后续内容块的时间。

3.逗留时间的计算

针对包的类型,分情况进行逗留时间的设置,对于用户请求的数据包,根据滑动窗口,动态的改变逗留时间时间。对于预缓存的内容,设置临时缓存时间,防止预缓存内容长时间占用存储空间。

(1)请求内容块的逗留时间

内容块的逗留时间基于其所属的lacc值动态改变,网络中越流行的内容块,其lacc值越大,相应地,所对应的逗留时间应该更长,若则直接在本节点依据lacc取值更新逗留时间,若将数据包中cni置为0,指示该节点的下游节点缓存内容并进行逗留时间计算。

如果用户请求的内容块为第一次请求(lacc=1),这时沿途路由节点不存在该资源,内容请求需要发送至css以响应,则css依据缓存存储决策进行内容的存储选择,对应的缓存时间设置为基础逗留时间tbasic,之后若用户再请求该内容块时,其对应的逗留时间变化应该根据lacc的值,并以tbasic为基础,进行更新,

从上述式子中,我们可以看出,lacc的值越大,逗留时间的值越大,即lacc与逗留时间(sojourntime,st)之间是正比的关系,这体现了内容越活跃,流行度越大,对应的存储时间越长。

(2)预缓存内容的逗留时间

本发明中,根据用户可能在短时间内发送对同一内容不同内容块的请求,提出了内容块的预缓存策略,通过用户请求内容块,预先缓存所属同一内容的后续内容块,以此减少用户的请求时延,为了防止预缓存的内容长时间的占用cs的存储空间,设置预缓存内容的临时缓存时间pst=ttem,因此,临时缓存内容pst的取值需要依用户对内容块的平均发送间隔来进行设置,该过程与内容块实际的局部活跃度是无关的,也就是说,预缓存的内容块的预逗留时间pst,要随着预缓存块的顺序依据请求的间隔进行设定,当用户请求内容后,依据lacc的值进行动态的更新,当预缓存的内容第一次请求时,lacc的值为1,根据存储时间策略,则有pst(1)=tbasic。

4.缓存替换策略

随着节点中缓存内容数量的增加,存储空间逐渐减少,当节点中存储空间为0时,新请求的内容是否进行缓存则需要根据缓存替换策略决定,对于预缓存的内容,当在预缓存的时间内,该内容没有被用户请求,则该内容将很快处于“可删除”状态,当新请求的内容到达时,处于“删除”状态的内容块将会优先被替换掉,这里还有一种情况,即当缓存空间中不存在“删除”状态的内容块,新到达的内容将会替换掉cs中具有最小逗留时间的内容块。

假设css中含有用户请求的数据块ok,1:ok,5,用户r1:r5为内容请求者,表示用户发送的关于内容ok,i的请求;

(1)用户发送对内容块ok,1的请求兴趣包由于该内容块为首次请求,沿途中没有缓存该资源,因此,被转发至css进行沿途中记录所经过的路由器层级号,当css收到后,提取ril(含有v1,v2,v3,v4)。之后,css将用户请求内容之后的块进行预缓存。节点v3缓存3个内容块,即o1,1:o1,3。节点v4缓存两个内容o1,4:o1,5,上述的过程根据字段cni字段得出,该策略将缓存内容均匀的分布在请求路径后半条路径上。节点v1:v4收到数据包,将会核对cni字段。如果cni字段与自己的一致,节点将会缓存该内容块,因此,与上述一致,节点缓存v3内容o1,1:o1,3。节点v4缓存内容o1,4:q1,5。另外,依据数据包中的字段packettype,节点决定是否将内容转发给下一个节点。当节点v3收到关于内容ok,1,节点将会核对包的类型以及lacc以决定是否转发并计算逗留时间。同时,将字段cni的值设置为-1,之后转发数据包。当节点v2和节点v1收到数据包,查看cni的值为-1,此时直接将包进行转发;

(2)用户r2发送对内容块o1,1:o1,3的请求兴趣包,节点v1收到关于o1,1:o1,3的请求,由于没有缓存内容,将会转发请求到v2。同上,v2转发内容请求到v3,由于此时v3缓存了该内容,因此,v3计算lacc。由于,将ok,1,ok,2,ok,3对应的数据包字段cni置0后,应答请求,当v2收到数据包后,检查cni字段,计算存储时间st,将内容存储在cs中,并置cni为-1,转发数据包,防止v1的进行缓存。过一段时间后,由于v3长时间没有o1,1:o1,3的请求,缓存时间到期后,节点v3中该内容将会处于“可删除”状态;

(3)在情况(2)下,假设该次请求中,ok,3的活跃度降低,也就是说,节点v3中内容块ok,1,ok,2到期,此时,路由器将会有以下的处理结果,关于ok,3的数据包将不会在下一跳进行缓存,对应的cni字段设置-1,并将会直接在节点v3依据lacc进行内容st的计算。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1