基于指数分段的流媒体代理混合缓存算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于指数分段的流媒体代理混合缓存算法
陈铁群,陈浩
湖南大学计算机与通信学院,湖南长沙(410082)
E-mail:ironox@
摘要:本文提出了基于指数分段的流媒体代理缓存算法。

该算法在现有指数分段的基础上,考虑到不同媒体对象的流行度和相同对象的不同段落存在不同的流行度,结合高效的LRV 算法,使得代理缓存能尽量缓存热点段落,而不是象指数分段算法那样严格按照段落的先后顺序来管理缓存。

对于前缀段落,综合考虑其带宽,延迟和访问次数,以减少启动延时。

事件驱动实验表明,该缓存算法在缓存命中率,启动延时率等方面有所提高,缓存的整体性能得到增强。

关键词: 指数分段;流媒体;代理缓存;启动延时
中图法分类号:TP393
1.引言
Internet的迅速发展使得信息通信发生了革命性的变化,人们已经不满足于简单的文字和图片信息,流媒体已经成为Internet上信息传播的主要方式。

流媒体与传统静态媒体相比有三个显著的特点:1.流媒体内容数据量较大;2.延时敏感度高;3.交互性很强,这就使现有网络面临巨大的考验。

目前处理该问题的常见方法就是部署边缘代理服务器,通过代理服务器处理本地客户的请求,缓存并转发来自源服务器的数据。

虽然代理服务器在处理静态的基于文本的媒体内容方面取得了成功,但是在应对流媒体内容的时候却往往碰到困难。

因为传输流媒体数据需要占用较多的网络带宽资源,而且持续时间较长,从而导致源服务器及网络只能支持数量有限的并发流,所以仅仅是部署边缘代理服务器还远远不能支持网络中流媒体内容的平滑传输。

目前的一个主要解决方案就是求之于大规模的内容分发网络(CDN),CDN凭借其高带宽网络和大容量的存储能力可以平滑传输流媒体内容,但是CDN成本过高。

目前的研究主要集中于改善代理服务器的缓存算法来保证流媒体服务的质量,因此缓存管理算法和策略成为流媒体传输领域的热点。

本文提出的基于指数分段的混合缓存算法考虑到媒体对象的流行性差异,尽力缓存流行的媒体对象的热点段落。

本算法旨在通过细化缓存调度对象粒度,以达到较高的缓存命中率,降低启动延时,减少抖动。

2.相关工作
目前提高代理服务器缓存性能主要分两个方向。

一个方向是对流媒体对象进行不同的划分和调度,以探索提高代理服务器缓存效率。

通常是通过在代理服务器中缓存流媒体对象的前缀部分来减少客户感知的启动延时。

在传输前缀部分的同时,代理服务器从源服务器获取该对象的后续部分。

因此前缀的大小是关系到系统整体性能的关键参数。

另一个方向则聚焦于流媒体本身的量度,如分层缓存(Layered Media Caching)[1]、多版本缓存(Multiple Version Caching)[2]等。

将整个流媒体缓存在代理服务器中,这对于代理缓存来说,缓存整个流媒体内容所需的磁盘空间和网络开销必然是巨大的。

于是S Sen等[3]提出了前缀缓存算法,该算法在代理服务器上缓存流媒体对象的前面的数个片段(称作前缀),当客户端请求该对象时,代理服务器
立即向客户传送该对象前缀部分,存储长度为{d max -s,0}的前缀部分(其中s 为客户端的播放延时,d max 为服务器端的最大延时),以此来减少客户端的延迟。

虽然前缀缓存能有效降低延迟,但是它不能根据媒体流行度变化动态调整。

对于媒体对象的分段策略,Wu K 等提出了指数分段缓存[4],指数分段缓存。

一个媒体文件O 被分成多个大小相等的块B(block),块B 是用来进行传送的最小单元。

越靠近前面,段落所包含的块就越少。

段落0含有块0,段落l 含有块l ,段落2含有块2和3…段落i 包含的块的个数是()121i i −≥。

如果在缓存中缓存每个媒体对象之前缀,虽然可以减少启动延时,但是对于访问次数极少的对象仍旧在缓存中保存其前缀,很明显会降低其命中率。

对于前缀,我们提出了一个效能公式,综合考虑延迟,热度和带宽的因素,优先缓存访问频率较高,延迟较大,带宽较匮乏的媒体前缀部分。

3. 基于指数分段的混合缓存算法
对于缓存算法分段策略,我们则采用指数分段的策略。

指数分段一大优点就是可以快速释放缓存空间,特别是在将段落编号较大的段落替换出缓存时,一次操作最高可能一次释放掉一个对象大小的一半。

对于段,则分成两类,分别采用不同的缓存效能公式。

3.1 缓存管理策略
我们把设每个媒体对象分为两部分,称之为前缀段和后缀段。

如同[1]一样,我们为每个对象固定的保留P init 个段做为前缀段,系统总是优先缓存前缀段。

最小分块大小为B ,对于每个流媒体对象的某个分段i ,为其维护以下数据结构:
ref N :该段落被访问的次数;f T : 首次访问该段落的时间;r T : 上次访问该段的时间;c B : 该段已经缓存的块数;sum L :该段总的访问长度。

为了减少启动延时,我们认为有必要为系统中的每个流媒体对象保留一小段前缀。

首先,用户首次访问该对象的时候,系统能够立即为其服务;再者,如果不优先保存前缀,对象可能会完全被替换出缓存,而当用户新的请求到达时就会造成启动延时。

如同[1]一样,我们为每个对象固定的保留一些分块P init 做为前缀,系统总是优先缓存这些分块。

.对于P init 段的管理策略,我们考虑两个方面:
1. 对于延迟较大的媒体对象,很明显要优先缓存其前缀才能保证收看质量。

同样的,
如果从源服务器获取某个段的带宽资源匮乏(我们可以使用PCAP 库这样的工具进
行周期性的测量带宽),也应该优先缓存。

2. 段落被访问的次数,段落的访问频率越高就应该优先被缓存。

系统为P init 段落维护一个LRV 栈,每个段有一个相对值(relative value )
,很明显其相对值跟获取改段落的延迟和访问次数成反比,跟带宽成正比。

因此我们可以将其定义为:
BW
(())a ref L N β+ (1)
其中a L 为该段落的启动延时,BW 为其带宽限制(媒体对象的每一个段落共享该值),ref N 为该段落被访问的次数,β为系统可调参数,可以用来调整代理服务器的性能侧重方向。

β
趋向于0的时候,段带宽的重要性比起访问频率就越来越高,反之访问次数的重要性较高。

缓存系统在LRV 栈中总是根据(1)式来计算其相对值,综合考虑多个因素把相对值最大的段作为替换的考虑对象。

3.2 缓存替换算法
影响段的缓存效能值主要四个因素:1,访问次数;2,平均访问长度;3,已缓存的块数;4,该段未来被访问的概率。

相比前三个因素,最重要的就是预测该段未来被访问的概率。

对于后缀段我们也为其维护一个LRV 栈,每次逐出的段总为从LRV 栈中选取相对值最小的段。

设cur T 为系统的当前时间,则r curr T T −为最近一次的访问时间间隔,
ref f r N T T −为平均访问时间间隔。

如果ref f
r r curr N T T T T −<−,则说明对该段的访问很快就会到来,即下次访问的概
率较大,否则下次被访问的概率较小。

很明显对于一个段的缓存效能来说,它与段的访问概率,被访问次数和平均访问长度成正比的,与段所占用的缓存空间成反比。

设段的访问频率为F ,则我们可以初步得到其效能公式:
321)(}*1,1{*)(*)(p c ref
f r r cur p p ref sum B N T T T T MIN F N L −− (2) }*1,1{ref f r r cur N T T T T MIN −−表示未来被访问的概率。

频率F 可由f
r ref T T N −得到,为了计算简便我们这里取1321===p p p ,则(2)式可简化为:
c ref
f r r cur ref sum B N T T T T MIN N L }*1,1{*−− (3) 本算法中我们用(3)来计算各段落的缓存效能值,各段的相对值即由其缓存效能值来确定。

对于某个对象O 的一个段i ,采用上述的缓存管理策略,其缓存算法伪码如下:
If(i<P init )
{
如有必要从前缀LRV 栈中找出相对值最大的段;
缓存段落i ;
}
Else
{
If(对象M 首次被访问)
Eixt(); //首次被访问则访问前缀,此过程应终止
If(如果有足够的空间来存储段落i)
缓存段落i ; Else
{
While((没有足够的空间来存储i ) )
{
找到当前缓存非前缀段中效能值最低的段,设为对象Q 的段落j ;
If((j i )3()3(>) && (当前没有用户在播放Q))
替换j;
空闲缓存空间增加; }
} 4. 仿真实验及性能分析
4.1 性能评价指标
1)启动延迟率 启动延迟用户从发出请求到用户收到服务器的响应所需的时间。

启动延迟率则是因前缀不在缓存中产生的启动延迟占所有请求的百分比。

启动延迟率反应了缓存算法处理启动延迟的能力
2)命中率 如果代理服务器在其缓存中找到了用户所要访问的对象,则称之为命中;反之,代理服务器需要通过访问源服务器来提供用户所访问的对象,则称之为缺失。

命中率越高则直接从代理服务器获得服务的可能性越大,用户体验到的延迟则越低。

用户总的对象访问长度缓存中命中的对象长度
命中率= (4)
4.2 仿真实验
我们仿真实验是 在omnet++模拟平台上实现的。

实验中,对于流行媒体对象段分布为类齐夫分布(1,1M i i
i i i p f f f i α===∑),客户端的访问遵循泊松分布((,)*()!,0,1,2...x p x e
x x λλλ−==)。

实验中采用的参数如下表:
表1 实验参数 系统参数
缺省值 P init 6 个段 32个块
λ 4
α 0.47
C 缓存空间大小为400000块
β 0.6
图2为三种算法在命中率方面的比较图。

本文算法跟指数分段算法都有不俗的表现。

总的说来,当宗的缓存空间较小的时候,本文算法和指数分段算法不相上下,但是当缓存空间较大时,基于LRV 的分段算法则优于指数分段。

命中率(%)缓存大小(%)
图2 命中率
图3为启动延时率的性能比较图。

基于指数分段的混合缓存算法要优于指数分段算法。

理论分析也可以得出类似的结论:由于指数分段的混合缓存算法不仅是优先缓存前缀段落,对于那些数据获取延迟较大的前缀段落给予了更高的优先权,因而能有效减少启动延时。

启动延迟率(%)
缓存大小(%)
图3 启动延迟率的比较
5.结论
本文提出的基于指数分段的混合缓存算法考虑到媒体对象的流行性差异,尽力缓存流行的媒体对象的热点段落。

本算法通过细化缓存调度对象粒度,达到了较高的缓存命中率,降低了启动延时。

尽管如此,对于分段缓存在代理服务器协同合作方面的应用还需要进一步研究,进而提出更加高效的流媒体代理缓存算法。

参考文献
[1].Rejaie R,Yu H,Handely M,et a1.Multimedia proxy caching mechanism for quality adaptive streaming applications in the internetl[J]:Proceeding of IEEE Infocom ,Tel-Aviv,Israel,2000.
[2].Kim T,Ammar M H.A comparison of layering and stream replication video multicast schemes[C]:Proceedings of ACM Nossdav 2001,Port Jefferson,NY ,2001
[3].Sen S,Rexford J,Towsley D. Proxy Prefix Caching for Multimedia Streams[J].IEEE,1999,3(21-25):1310-1319
[4].Wu K,Yu P S,Wo1f J..Segment-based proxy caching of multimedia streams[J]:Proceedings of WWW ,Hongkong,China,2001.
[5].左冬红,杜旭,杨宗凯.基于最大缓冲时间的流媒体缓存策略[J].华中科技大学学报(自然科学版),2007年第36卷第6期:40-42。

[6].王薇薇,李子木.基于CDN的流媒体分发技术研究综述[J].计算机工程与应用,2004(8):l2l-l25。

A Hybrid Algorithm based on Exponential Segmentation for
a Streaming Media Proxy Cache
Chen Tiequn, Chen Hao
Dept of A.I.M lab ,Institute of Computer and Communication, Hunan University, Changsha,
China(410082)
Abstract
In this paper, an proxy caching algorithm based on LRV for streaming media proxy was proposed. The algorithm is based on the existing exponential segment and the fact that the prevalence of the different segments of the same object are different is taken into account. The admission and eviction of segments are carried out by two LRV stacks based on accurate utility functions. Event-driven experiments show that the proposed scheme performs better in the cache hit rate,and client startup delay,The overall performance of the cache has been strengthened.
Keywords: segment-based; streaming media ; proxy caching; startup latency。

相关文档
最新文档