杨佳鑫,潘沛生
(南京邮电大学 通信与信息工程学院,江苏 南京 210003)
随着互联网的高速发展,互联网上视频流所使用的数据量趋于大幅增加。根据思科视觉网络索引(CVNI)[1],互联网视频数据将占所有互联网流量的大约54%,并且数据量预计将持续增加。另一方面,互联网用户在内容消费方面正朝着另一个方向发展。除了简单的通信之外,用户倾向于使用支持互联网的通信设备来传输他们想要的内容并共享数据。因此,学者们基于用户消费趋势提出了新的通信架构[2-4]。其中最受关注的是内容中心网络CCN[5](content-centric network)。受到互联网未来需求的启发,CCN采用基于内容名称的路由而不是基于IP地址的路由,重点在于分发和获取内容而不是与终端主机通信。为了促进高效的内容获取,CCN中部署了网络内缓存,允许传输的内容缓存在中间路由器。这使得后续用户能够从更近的路由器获得这些内容副本而无需访问原始数据源,从而减少了网络中可能发生的重复数据传输并减少了数据传输路径的长度,从而保证了更快的响应时间。
CCN网络每一个节点都具有一定的缓存功能。一般来说,CCN的缓存研究主要是两个方面,一个是缓存放置策略,另一个是缓存替换策略。缓存放置策略决定内容在哪个节点进行缓存,而缓存替换策略决定了当某节点的缓存内容满了之后,如何缓存新到达的内容。常见的缓存放置策略有ProbCache(cache with probability)、Betw(cache based on betweeness)等[6-7]。它们都在一定程度上减少了内容传输路径上的缓存冗余,在缓存命中率和获取内容的平均跳数方面都有了较好的性能体现。但它们的研究对象都是一般的文件内容。对于多路复用一组有序内容例如视频片段,需要重新考虑缓存管理方案。文中针对采用可伸缩视频编码(scalable video coding,SVC)[8]技术的可扩展视频流的特点,结合分层视频标题的流行度[9]与内容块的流行度,提出了一种新的缓存方案。
可伸缩视频编解码是一种能将视频流分割为多个分辨率、质量和帧速率层的技术,SVC是对规定设备如何对多层视频流进行编码和解码的H.264视频编解码标准的扩展,被称为H.264/SVC[10]。H.264/SVC是H.264/AVC的可扩展部分,其输出被添加到与H.264标准的视频数据可扩展性有关的标准中。
当使用SVC编码和解码视频时,视频编码的输出可以分成不同的层。编码文件不仅包含具有重要信息的基础层,还包含用于提高质量的信息的增强层。基本层的数据可以使解码器完全正常地解码出基本视频内容,但是基本层的数据获得的视频图像可能帧率较低,分辨率较低,或者质量较低。在信道受限或信道环境复杂时,可以保证解码端能够接收到可以观看的流畅视频图像。当信道环境良好或信道资源丰富时,可以传递增强层数据,以提高帧率,或分辨率,或视频质量。基础层和增强层之间是强相互依赖的,要想对增强层的数据进行解码,必须以基础层作为起点。图1显示了当使用由一个基本层和三个增强层组成的SVC数据时的解码过程。
在CCN网络中,已有多种基于H.264/SVC的视频流缓存方案。例如,文献[11]提出了基于重用时间(reuse time,RT)的缓存策略,是对MIN算法的改进。RT缓存策略在视频流中利用请求流模式的周期性,通过了解每个用户观看该视频的开始播放时间,准确地预测视频片段的重用时间。但是,预测每个视频片段的重用时间的开销是否得到优化并没有直接说明。文献[12-13]提出了Greedy-dual(GD)-size和Mix这两种方案,都只考虑了视频标题的流行度,而忽视了内容片段的重用概率。文中方案则在此基础上进行改进,将内容片段可能重用的概率也考虑了进去。
CCN中是根据内容的名称来发起请求的,使用的名称结构是分层式结构。比如/Prefix/Videoi/Contentj。因此,假定CCN中所请求的视频块的名称包括视频标题名称i和序列号j,用于区分该视频的不同段。序号j是根据视频播放时间排序的。定义视频文件fi由一组视频片段{Ci,1,Ci,2,…,Ci,j…}组成,它们按其序号j排序,并且请求一个视频片段必须从开头直到结尾。基于视频片段的自然线性时间结构,视频内每个片段的流行度指的是未来请求该内容的概率。根据请求内容标题的流行度,CS(content store)中每个视频的存储空间分配需要快速响应请求率的动态变化,因此,计算每个标题的请求比率Reqi,并计算在CS中缓存的视频标题i的实时占用率Rcsi,以便在高速缓存替换时准确调整每个视频的缓存大小。Reqi和Rcsi的计算公式如下:
(2)
其中,Recij∈{0,1,2,…}表示单个时间单位内用户对内容Ci,j发起请求的次数;m,n分别表示所请求的视频标题的数量和所请求的视频片段的数量。根据内容流行度的量化定义,内容流行度是对一个内容在请求周期内请求次数的估值,这样Reqi就代表了视频文件fi的动态流行度。
在式2中,Rcsij∈{0,1},代表的是CS的存储空间占有率。K是该节点的缓存大小。当Rcsij取值为0时,代表内容Ci,j不在CS中缓存,值为1时,则缓存在该节点的CS中。实现的目标是分配与内容流行度成比例的缓存大小,即Reqi=Rcsi。Reqi
内容请求者根据内容序列号j的顺序请求视频片段,因此后续片段在将来被请求的概率较大。例如,如果CCN路由器接收到对内容Ci,6的请求,那么随后的比如Ci,7,Ci,8等后续的片段被请求的概率将非常大。因此,在CS中缓存的这些后续片段中的任何一个将具有比先前内容更高的请求机会。当节点缓存已满的时候,该算法将选择具有最小序列号j的片段剔除,留下空间给随后需要缓存的片段。
如图2所示,当一个CCN路由器接收到一个视频内容Ci,j时,首先将标题的流行度Reqi和CS存储空间占用率Rcsi进行比较。如果Reqi
图2 PBCSA缓存替换策略
图3 PBCSA缓存替换实例
将PBCSA策略与3种常用的块级缓存替换策略LRU,LFU,FIFO在图4所示的拓扑结构中进行对比,并且通过ndnSIM[14]实现了CCN模型的仿真,将得到的仿真数据导入到Matlab软件中进行处理,得到仿真模拟图,最后对仿真结果进行评估。
图4 PBCSA仿真拓扑
为了在真实的网络环境中评估每个缓存替换策略的性能,视频提供者和请求者都连接到网络拓扑的边缘。在模拟器中设置了25个不同的提供者,并且每个视频标题都不一样,每个视频文件由800个视频片段组成,这样总共就有20 000个视频片段。同样的,设置了100个视频请求者,并且不同视频文件的流行度遵循Zipf[15]分布,并假定α=1.2。请求者从不同的时间开始请求他们的目标视频,并且按照从该视频的开始到视频序列号j的顺序请求,只有当全部20 000个片段已经被其相应的请求者成功接收,每个模拟才会停止。
图5是在不同的CS缓存容量下,100位视频请求者全部接收完所请求视频的总时间。可以看到,PBCSA算法的完成时间明显少于其他三种常用的缓存替换方法。因为该算法降低了请求者和目标内容之间的平均传输距离,从而减少了每个视频内容的平均传输时间。因此,缓存性能得到了大幅提升。图6和图7分别是请求者获取到目标内容的平均跳数和缓存平均命中率。由于在CS较小时,两者较其他3种缓存方案都呈现出了优越性,会出现递减的趋势,最后趋于稳定。PBCSA方案降低了平均跳数并提高了平均缓存命中率。这表明该方案提高了缓存空间的利用率,以便请求者可以从更近的路由器获取视频内容。无论从获取内容的平均跳数和缓存命中率还是总传输时间,都有力地验证了该方案的优越性。
图5 缓存总时间
图6 获取内容平均跳数
图7 缓存的平均命中率
考虑到视频传输的特点,提出了一种缓存替换策略PBCSA。介绍了PBCSA模型和策略,并考虑了标题和内容级别的受欢迎程度。通过和LRU,LFU,FIFO三种替换策略的比较,证实了PBCSA提高了缓存命中率,减少了平均跳数,并且对复杂网络场景表现出了很好的可扩展性和适应性。在接下来的研究中,将着重于提高实用性和节能潜力,从而制定更为合理的缓存策略,以便更好地提升缓存性能。