王旭辉,张建伟,蔡增玉,杜春锋,马琳琳
(1.郑州轻工业学院 计算机与通信工程学院,河南 郑州 450002; 2.郑州轻工业学院 软件学院,河南 郑州 450002)
当前IP互联网的设计初衷是为了实现资源(硬件资源)共享,采用的是以主机为中心的端到端的通信模型(host-to-host)[1]。而随着时代的发展与技术的进步,计算机的硬件资源已经不再匮乏,同时变得非常廉价,所以互联网的任务已经发生了翻天覆地的变化。虽然还是资源的共享,但是已经由硬件资源的共享过渡为内容资源的共享,即内容的传播;同时,互联网用户的关注方向已经发生了变化,他们不再关注内容存储在哪里(where),而更多的将注意力集中于内容本身,即内容是什么(what)。
以IP为中心的互联网关注的是内容的位置而不是内容本身的含义,同时,由于其缓存特有的封闭性,网络中所有的内容都存储在Source Server中,使得对任何内容的请求都需要Source Server完成响应,如此不仅导致整个网络的效率不高,同时也造成了巨大的带宽浪费。所以,迫切需要对当前的网络架构进行改进,或者提出全新的网络体系架构[2]。基于此,国内外学者提出了以信息为中心的新一代网络体系架构——信息中心网络(information-centric network,ICN),而内容中心网络(content-centric network,CCN)作为ICN的一个研究分支,被认为是最有发展前景的未来网络体系架构。
与IP网不同的是,CCN支持网内缓存[3]。在CCN中,网络节点(路由器、交换机等)同时具有了转发与缓存的功能。通过网内缓存,CCN避免了对同一内容的重复传输。当被请求的内容经过某个缓存节点时,该节点可以将此内容存储下来。而且,当这个缓存节点再次收到对该内容的请求时,就可以直接响应该请求,不用再对Source Server进行请求。因此,CCN可以节省网络资源,提升内容的传输效率。
然而,由于CCN缓存固有的透明化、泛在化和细粒度化等新的特性[4],使得传统的缓存理论以及方法等均无法直接应用到CCN的缓存系统中。但是,随着对CCN研究的深入,许多研究人员在CCN缓存理论、模型以及方法等方面都有了创造性的研究成果。
CCN与IP网相比,其主要的特征之一是支持网内缓存。而缓存作为CCN的一个重要组成部分,其性能的优劣直接影响CCN的整体性能。而在CCN中,缓存策略又分为两部分[4]:其一是缓存决策策略,即在哪个缓存节点缓存什么样的内容;其二是缓存替换策略,即当内容的流行度发生变化或缓存节点的缓存空间被占满,同时又有新的内容需要被缓存时,该如何选择需要被舍弃的内容,释放出空间存储新的内容。
基于CCN的宗旨,其缓存决策策略应该满足以下两方面的要求:
(1)访问量(流行度)高的内容应该缓存复制到距离互联网用户较近(网络边缘)的缓存节点中,降低用户的请求时延,提升用户使用体验。
(2)提高整个网络缓存系统的缓存内容的多样性,降低网络缓存内容的冗余度,提升网络的缓存命中率。
为了达到上述要求,降低用户请求时延与内容冗余度,提高缓存内容的多样性,需要网络节点之间能够进行简单而有效的合作缓存机制。而根据合作程度的不同,可以将合作机制大致分为两大类:显式合作机制与隐式合作机制[4]。
当有内容需要缓存时,显式合作机制要求节点与其周围一定范围内的缓存节点交换彼此的缓存状态信息[5],进而在此范围内找到最合适的节点缓存该内容。因此,显式合作机制往往伴随着巨大的网络通信开销。以下是几种比较有代表性的显式合作策略。
(1)BCVC(based capacity value caching)。
BCVC以节点的缓存容量(cache capacity value,CCV)作为选择内容缓存节点的决定性因素[6-7],每一个缓存节点的CCV代表了节点内容存储(content store,CS)中的剩余空间,即还能够存储多少的内容。同时,为了记录节点的CCV,该算法在每一个请求内容的Interest包中都添加了CCV字段。当请求内容的一个Interest包被路由到某一个缓存节点时,该节点首先查找其自身的内容存储CS,如果在其CS中存储有该Interest包所请求的内容,该节点就会直接响应Interest包的请求,并删除Interest包,否则该节点就会将自身的CCV写入Interest包的CCV字段,并继续转发该Interest包。当Interest包到达另外一个缓存节点时,该节点同样会先查询自身的CS,如果没有Interest包请求的内容,就会将自身的CCV与Interest包中所携带的CCV进行比较,如果小于,就直接转发该Interest包,如果大于,就会用自身的CCV替代Interest包中原来的CCV并继续转发该Interest包。当Interest包到达存储有内容的Server时,Server会根据Interest包中所携带的CCV选择内容的缓存节点。但是,BCVC策略没有考虑到内容的流行度,同时,也没有将内容快速地缓存备份到网络边缘的位置。
(2)CCBH(cooperative caching based hash)。
在CCBH中,一个内容被分为n个大小相同的chunk[8-9],而且每一个chunk都会携带一个标识,每一个标识就是固定的小于n的自然数(0,1,…,n-1)。同时,每一个缓存节点及其邻域内的k个节点都会有一个编号,分别是0,1,…,k-1。当一个chunk到达一个缓存节点时,该节点会通过一个hash算法决定由其自身还是其邻域内k-1个节点中的某个节点缓存该chunk。具体而言,假设一个chunk的标识为x,该chunk就应该被缓存备份到编号为i=xmodk(0≤i≤k)的节点,如图1所示。
CCBH策略可以避免同一个chunk在邻域内被重复缓存,而且同一个节点不会缓存同一个内容的所有chunk,提高了网络缓存内容的多样性。但是,因为CCBH事先对节点进行了标记,当其中某一个节点被移除或者失效时,CCBH将无法达到预期目标。同时,CCBH并没有将内容缓存备份到网络的边缘节点。
图1 CCBH策略
与显式合作机制相比,隐式合作机制不需要如此巨大的网络开销,因为隐式合作不需要缓存节点之间互通状态信息。以下是几种比较有代表性的隐式合作策略:
(1)LCE(leave copy everywhere)。
LCE也称为Always Caching[10],是CCN默认的缓存决策策略。该策略的基本思想是:当缓存命中时,在命中节点将用户请求的内容发给内容请求者的传输路径中,沿途上的所有缓存节点都会将该内容缓存下来。
LCE策略的优势在于可以提高整个网络的缓存命中率,但是会造成巨大的缓存内容冗余,即会在很多的节点中存储有相同内容的副本,使得整个CCN网络的缓存内容的多样性不高,而且没有考虑到内容的流行度等因素。
(2)LCD(leave copy down)。
当缓存命中时,仅仅在命中节点下一跳路由器节点对请求的内容进行缓存[11],但是不会删除该请求内容在命中节点中的缓存副本。
与LCE策略相比,避免了对同一内容的大量拷贝,整个CCN网络的缓存内容的多样性有所提高,同时,如果对同一内容的访问量较多,该内容将会被复制到靠近用户的地方,这潜在地考虑了内容的流行度。但是,这种策略会在一定程度上降低缓存命中率,另外,如果时间过长,同样会造成巨大的内容冗余。
(3)FixP(fixed-probabilistic caching)。
当缓存命中时,在命中节点将用户所请求的内容发送到用户的传输路径中[12],沿途上的每一个路由器节点都将会以概率p缓存该内容,而以概率1-p不缓存该内容。概率p可以根据整个网络的缓存情况进行调整。
FixP策略可以认为是普适化的LCE,即当缓存概率p=1时的LCE。而且,该策略并没有考虑到内容的流行度等因素。
(4)ProbCache(probabilistic caching)。
当缓存命中,在命中节点将用户请求的内容发送到内容请求者的返回路径中[13],沿途上每一个路由器节点缓存该内容的可能性(概率p)与其和内容请求者之间的距离成反比。通俗地讲,就是一个缓存节点距离互联网用户越近,该节点能够缓存用户所请求内容的可能性越大。
ProbCache策略的宗旨就是将内容尽可能地缓存到距离用户较近的边缘节点中,达到降低用户下载内容的平均时延,提高网络资源利用率的目的。但是,ProbCache策略并没有考虑到内容的访问量等因素,而是一味地将内容尽可能地缓存到距离用户较近的路由器节点中,加大了边缘节点的竞争。
(5)MPC(most popularity caching)。
MPC是基于内容流行度的缓存策略[14],其核心思想是:在每一个缓存节点中都有一个流行度表(popularity table,PT),在用户请求一个内容时,沿途的缓存节点会将内容名以及访问量成对地记录下来,当一个内容的流行度达到所设定的流行度阈值之后,持有该内容缓存备份的节点会向其周围的邻居节点(hop=1)发送一条suggestion,通知其周围的邻居节点缓存该内容,并在收到所有邻居节点已经缓存该内容的反馈信息之后,持有内容备份的节点会重置该内容的流行度以避免重复缓存,如图2所示(假设流行度阈值等于3)。
图2 MPC策略
MPC策略的宗旨是尽量多地备份流行度高的内容,这使得用户平均下载时延有了一定程度的降低。然而,正是由于仅仅缓存流行度高的内容,而其他内容并不会得到缓存,使得整个网络资源没有得到充分的利用,致使整个网络系统缓存内容的多样性不高,同时会造成缓存命中率有所下降。
(6)PCBC(popularity and centricity based caching)。
PCBC提出了“中心度”的概念[15-16],并将节点的中心度作为选择缓存内容节点的决定性因素。中心度用来衡量一个网络节点的“中心程度”,即其在通信链路中的重要性。对一个网络节点来说,与其相关联的通信链路越多,该节点的中心度越高。该缓存策略的基本思想是:将流行度高的内容缓存到中心度较高的缓存节点中。因为中心度越高的节点,越靠近网络边缘,如图3所示。
图3 PCBC策略
PCBC策略可以将流行度较高的内容缓存到距离用户较近的边缘节点,达到降低用户下载内容的平均时延,提升用户使用体验的目的。但是,PCBC策略仅仅将中心度高的节点作为内容的缓存节点,而其他节点并不会缓存任何内容。这样不仅会造成网络资源的大量浪费,同时,PCBC策略并没有考虑到突发流量的情况,当突发流量到来时,将加大内容缓存节点的通信负载,降低QoS。
如前所述,缓存替换策略主要解决的问题是:当内容的流行度发生变化,或者缓存节点的缓存空间被占满,又有新的内容需要缓存时,如何进行内容的替换。
目前,国内外的研究者主要专注于缓存决策策略的研究,而关于缓存替换策略的研究相对较少。以下是几种比较有代表性的替换策略:
(1)LRU(least recently used)。
当有新的内容需要缓存时[17],缓存节点会将其缓存空间中最近一段时间内访问量最少的内容删除,为新的内容提供缓存空间。
(2)TTL(time to live)。
当一个内容被缓存到节点的缓存空间时,都会生成一个计时器,该计时器会从一个固定的时间开始倒计时,当计时结束时,与其对应的内容就会被删除。
(3)FIFO(first in first out)。
该替换策略的基本思想是:当新的内容需要缓存时,缓存节点会删除最先被缓存至该节点的内容,为新的内容腾出空间。
随着网络规模的爆炸式增长,用户兴趣的变化,当前以主机为中心的IP互联网已经不能适应时代的发展。国内外学者提出了多种未来网络体系架构,而文中所涉及到的CCN就是其中之一。以CCN为中心,分析了当前比较有代表性的缓存策略。譬如,LCD作为CCN默认的策略,虽然能够降低请求时延,但是会造成巨大的缓存冗余;PCBC将流行度高的内容缓存到重要的节点,虽然考虑到了内容的流行度,但是并没有考虑到突发流量的情况,当有突发流量发生时,将加大内容缓存节点的负载。综上所述,在缓存方面,CCN还有许多问题亟待解决,需要进行更深层次的研究。