APP下载

QoE驱动的基于CDN缓存命中率的码率自适应算法

2020-09-04葛志辉谭猛李陶深叶进

关键词:码率命中率客户端

葛志辉,谭猛,李陶深,叶进

(广西大学计算机与电子信息学院,广西南宁530004)

0 引言

近年来,随着4G网络的成熟和5G网络相关技术的研发,流媒体应用不仅适用于在PC端,移动用户终端也成为流媒体应用发展的的重要平台之一,随着流媒体应用户量的成倍增长,基于HTTP自适应流媒体[1](dynamic adaptive streaming over HTTP , DASH)已经成为流媒体业务的核心标准。由于流媒体用户广泛分布于世界各地,流媒体业务的发展离不开内容分发网络[2](content delivery network, CDN)技术的支持,CDN服务器节点已经成为流媒体应用不可或缺的一部分。在流媒体应用中,CDN服务器节点能够提高服务器响应用户请求速率和用户的体验质量[3](quality of experience, QoE)。

在流媒体应用中,CDN缓存的命中率是影响用户QoE的关键因素之一。在视频播放过程中,用户关心视频的流畅度和清晰度,当带宽波动时,码率会随着切变。在码率切变的过程中,用户却无法感知是CDN服务器节点高速缓存直接响应用户的请求,还是由源服务器资源间接响应用户的请求。如何区别响应用户请求的服务器是CDN服务器节点还是源服务器,对如何提高用户QoE提供了可行性研究。

随着流媒体应用的发展,如何提高流媒体业务的QoE已经成为研究热点之一。客户端不能区分其感知到的网络吞吐率变化是由CDN缓存不命中的不连续性还是由网络环境发生了变化所引起,如果客户端不加控制地进行码率向上切变或者向下切变,很可能导致乒乓效应[4],并可能影响其他客户端的正常播放。降低乒乓效应的算法优点是不需要进行主动吞吐量测量,充分利用现有的代理缓存,通用性较好。其缺点是对乒乓效应的检测时延较长,客户端仍会保持低码率的请求状态,该算法码率切换较为保守,基本不请求高码率的切片,不能充分利用缓存和带宽。

1 相关研究

在大部分的开源播放器中都内置了相应的码率自适应算法[5],b站上的内置开源播放器(ijkplayer),在该播放器中,主要是通过检测客户端的网络流量来调整码率请求参数;EasyDarwin是面向企业的流媒体框架,对比ijkplayer,EasyDarwin主要是通过推流的方式发送资源给客户端,客户端的网络差异性是其算法的局限性,容易造成网络资源浪费(open source media framework, OSMF)是Adobe公司的一个开源流媒体框架,该框架相比前两个框架除了本身项目的耦合度比较低以外,在码率选择算法中除了有相应的检测机制外,同时设置不同的缓存阀值来达到码率自适应的效果[6]。但是在流媒体业务中,影响码率自适应策略的因素除了客户端还有服务端,以上的算法所考虑的因素过于局限[7],用户的QoE依然相对比较低。

1.1 流媒体业务介绍

CDN节点的主要作用是降低中心服务器的压力,提高终端用户请求响应的速率[8]。在CDN节点中,传统的业务主要考虑其缓存的热度,提高用户的QoE。由于流媒体业务本身需要大量的带宽资源,在流媒体业务中,关于MPEG-DASH自适应算法是根据带宽的波动而调整不同的码率请求,所以流媒体业务不仅要考虑视频本身的热度问题,而且大众用户的码率波动范围更应该被重视。 最大化页面缓存命中率[9],减少通信的成本,降低初始延。但是当网络频繁波动时,易造成网络资源的浪费。当码率切变时,若预测出码率波动的范围,就能提高 CDN缓存的命中率,从而降低终端用户请求时延,最终提升用户的QoE。

流媒体业务是一个极其耗费带宽的业务,在维护CDN节点和原服务器内容一致性时,除了耗费带宽以外,还会增加用户访问的延迟,降低用户的QoE。服务器端不可用消息[10](server invalidation)是一种完全由根服务器在服务对象改变前向CDN服务器节点发出通知,维护数据一致性的方法。由于网络上的服务对象是一个写多个读的模式,在服务器上对于请求的每一个对象都存储一个缓存服务器列表(如服务器的IP地址),当该对象在服务器上发生修改时,服务器对于该列表中的所有缓存服务器发送一条不可用的消息,缓存服务器收到该消息后将缓存中该对象设置为不可用,并返回一个确认消息,源服务器收到所有的确认消息后完成修改。在以上过程中,客户端必须直接或间接与服务器交互,这也是降低CDN缓存命中率的因素之一。

1.2 CDN 缓存命中率的局限性分析

随着流媒体业务的蓬勃发展,CDN缓存优化仍然是个巨大的挑战[11]。流媒体业务有复杂网络环境、资源被访问的频率高、服务器承接流量大等特点,因此,在整个CDN体系结构中,缓存节点优化策略有共性也必须有差异性优化,本文主要针对服务器中的流媒体内容被访问的频率给出相应的缓存优化策略。

在流媒体业务中,对于CDN来说,节点本身有限的缓存量也是制约业务发展的条件之一,除此之外,另一方面还需要保障视频在各种网络环境下的流畅播放[12]。从以上分析可以看出,CDN缓存优化策略是不可能百分百地提高CDN缓存命中率,也不能仅仅考虑某个单一条件,必须兼顾多个因素的优化策略。

2 基于CDN缓存命中率的QoE模型

2.1 参数分析

从影响用户QoE的因素来分析,以下几个指标是影响用户QoE的关键指标[13]:

①视频初始延迟过长;

②客户端缓存殆尽,视频暂停播放;

③带宽波动,码率切变频繁;

④码率切变迟延过高,未能充分利用带宽。

客户端是用户直接感受业务质量的直接窗口,除此之外,网络拓扑结构、DNS服务器解析速度、CDN节点服务器的缓存优化策略、源服务器的推流策略等也会间接影响用户QoE。本文主要研究CDN节点缓存命中率对用户QoE的影响,提出关于CDN缓存命中率的初始延迟、客户端缓存变化量、码率切变事件的QoE模型。关于CDN缓存命中率、初始延迟、客户端缓存量、码率切变的关系式如式(1)所示:

(1)

其中,η表示CDN缓存的命中率,SQoE表示在一定CDN缓存命中率下,初始延迟、缓存量变化、码率切变对用户QoE的损伤值。其中Si表示在视频初始时用户QoE的损伤值,β表示在视频播放过程中客户端向CDN服务器请求视频片段命中缓存时QoE损伤权值,Sm表示CDN客户端缓存波动时用户QoE的损伤值,δ表示在视频播放过程中网络波动引起的码率切变事件引起的QoE损伤权值,Sc表示码率切变时用户QoE的损伤值。其中β和δ满足条件为0≤β≤1,0≤δ≤1,β+δ=1。

关于QoE的研究,学术界采用平均意见得分[16](mean opinion score, MOS)测试方法。通过调整视频首个片段端在CDN节点中的命中率,得到的大量结果显示用户QoE与CDN节点命中率和初始延迟的关系式如式(2)所示:

(2)

其中,d表示初始延迟,t表示网络抖动率,ω表示视频首个片段在CDN缓存中的命中率。

在整个视频播放的过程中,缓冲的次数和缓冲的时间长度成为衡量视频业务质量的直接标准[16]。当客户端向服务器发起对应片段的请求不命中时,延迟会相应的增加。QoE与缓存变化的关系式如式(3)所示:

(3)

其中,t表示网络的抖动频率,Pfre表示视频缓冲的次数,Tavg表示平均缓冲的时间,ε表示缓冲阀值。

码率自适应算法的目标是根据带宽的波动和缓存的变化调整对应的码率请求参数,所以码率的切变对用户 QoE的影响不可避免。网络的波动大致分为逐步往上波动、逐步向下波动、突然震荡波动;总的可以分为一致性波动和非一致性波动,一致性波动就是带宽的吞吐量在逐渐降低或者上升;非一致性波动就是网络波动一两次之后又会恢复到原来带宽水平。所以带宽波动系数、码率切变的次数和码率切变的幅度也成为评价用户QoE的关键指标。用户的QoE和以上参数的关系式如式(4)所示:

(4)

其中,t表示网络的抖动频率,bavg表示缓存的平均量,Vi表示码率切变时对应的延迟时间,ki表示相应码率切变时对用户QoE的损伤权值。

2.2 解决方案

基于以上问题的分析,笔者将文献[14]的策略再进一步优化,提出基于区域网络平均等级的缓存替换策略。该策略主要分为两部分,第一部分是以CDN节点为研究对象,研究如何提高用户请求码率片段的命中率;另外一部分以客户端为中心,结合CDN缓存的命中率指标及客户端的带宽和缓存参数,提出基于CDN缓存命中率的码率自适应算法。

在流媒体业务场景下,将传统的CDN缓存优化策略进行相应的优化。优化策略如算法1所示。

算法1CDN服务器缓存优化算法

输入:码率请求参数N集合

输出:区域网络平均等级q

Step 1:模块化CDN缓存。

Step 2:初始化CDN缓存。

Step 3:设置网络波动阀值t。

Step 4:获取客户端的码率请求参数集合N。

Step 5:计算出区域网络的平均等级y。

Step 6:使用贝叶斯公式P(A|B)=P(B|A)P(A)/P(B)计算出对应码率切片在缓存命中率m序列集合。

Step 7:根据切片的缓存命中率m逐次淘汰命中率低的缓存切片。

Step 8:判断区域网络参数的方差是否大于网络波动阀值t,若是转step 9,否则转step 4。

Step 9:以区域网络等级y对应的码率切片等级替换CDN缓存切片。

传统的CDN缓存优化策略只考虑到服务器端的优化,仅采用推送的机制并未考虑到客户端的影响。在移动网络环境不稳定的条件下,本文提出的算法1策略,可根据用户的码率请求参数和网络的拥堵情况决定CDN缓存如何更新,该策略的关键步骤是在用户的请求码率参数中选取适应该网络的码率切片参数,被选的码率参数在所有码率请求参数中具有较高比例,并以此码率切片参数指标作为更新CDN缓存的码率指标,以此提高组内响应用户请求的速度,减少节点与源服务器的通信,提高CDN缓存节点的命中率。

基于HTTP自适应码率算法[15]仅考虑客户的因素,主要根据网络波动情况和客户端缓存的变化等条件减少视频播放的初始时延和码率切变时的时延,提高用户的QoE。除了以上因素会降低用户的QoE外,还有其他诸多因素也会降低用户的QoE。本文提出基于CDN节点缓存的自适应码率算法,主要解决当客户端改变码率请求时,降低整个通信周期的时延。现在的流媒体应用已经离不开CDN节点的支持。当码率切变时,时延会增加,这里所产生的时延除了客户端的因素之外,还有一个因素就是CDN节点中没有对应的缓存响应请求,则CDN节点服务器必须向源服务器发起相应的请求,在无形中增加了响应请求时间。在本文中,前面已经根据用户的码率请求参数优化了CDN节点的缓存替换策略,提高用户请求在CDN缓存中响应的命中率。接下来将介绍客户端中基于CDN节点缓存命中的自适应算法,具体流程如算法2所示。

算法2基于CDN缓存命中率的码率自适应算法

输入:客户端网络参数p和区域网络等级参数q

输出:客户端码率请求参数S

Step 1:初始化客户端缓存阀值m。

Step 2:取3 s内带宽抖动的均方差作为阀值threshold。

Step 3:判断当前带宽相对前1 s的波动差是否大于threshold,若是则转step4,否则转step 6。

Step 4:判断缓存量是否小于缓存阀值m,若是转step5,否则转step8。

Step 5:判断客户端网络参数p是否大于区域网络等级参数q,若是转step8,否则转step7。

Step 6:保持当下客户端码率请求参数S不变。

Step 7:客户端码率请求参数S为区域网络等级对应的码率切片等级。

Step 8:客户端码率请求参数S为客户端网络等级对应的码率切片等级。

结合以上客户端码率选择算法和CDN缓存的优化算法能最大程度的提高用户的QoE,降低CDN缓存命中率、初始延迟、缓存量变化、码率切变对用户QoE的损伤值SQoE。由于初始时的阀值码率低于平均阀值,能够达到快速启动的效果,从而降低用户的初始延迟和降低初始化引起的损伤值Si;通过搜集码率请求的参数找出只适合当前网络的码率参数,优化CDN节点的缓存,从而降低QoE的损伤值Sm,客户端通过分别取3 s内和前后2 s内的带宽变化,计算出相应的带宽波动阀值,降低码率切变的频率,从而降低QoE的损伤值Sc。

3 实验结果及分析

在本文中,笔者对CDN节点的缓存进行了优化,根据CDN缓存节点的缓存优化策略调整客户端的码率自适应算法,使用基于MPEG-DASH标准的开源库libdash和自建的CDN节点在不同的场景下进行实验,所得实验数据和原生客户端码率自适应算法的数据进行对比。

相对有线网络,移动网络抖动率频率较高,波动幅度比较大,且网络吞吐量也不稳定。本算法旨在不稳定的网络条件下提高用户的QoE,所以本实验均在4G网络环境中进行。在源服务器中放置视频不同码率的片段,以平均码率为参数初始化CDN缓存。

实验分为3个实验。实验1主要是以本文提出的码率自适应算法与现有的开源平台中的码率自适应算法和其他学者提出的算法作相应的对比(图1);实验2以CDN缓存命中率、数据包延迟时间RTT、丢包率作为评价标准,然后对基于缓存命中率的码率自适应算法(CDNODR)和拥有传统的CDN缓存优化策略的libdash内置码率自适应算法的(CDNOT)的实验数据对比并分析(图2);实验3采用QoE的MOS评分标准,获取基于缓存命中率的码率自适应算法(CDNODR)和拥有传统的CDN缓存优化策略的libdash内置码率自适应算法的MOS值进行对比分析(图3)。

实验1主要与已有的开源平台和其他学者提出的算法进行性能上的分析与比较。分别对本文提出的CDNODR算法与ijkplayer、EasyDarwi、Open Source Media Framework(OSMF)的算法码率选择稳定性、RTT时延和CDN缓存命中三个性能指标作比较(图1)。

从图1中可以看出,目前的码率自适应算法基本都没考虑到CDN节点命中率对应用性能的影响。把对应的算法应用到CDN节点的实验中,传统的码率自适应算法ijkplayer、EasyDarwi和OSMF在网络波动的时候对码率的切变幅度明显比CDNODR算法的码率切变幅度大。从图2和图3中可以看出,由于CDNODR算法是根据CDN缓存的优化而进一步优化而来,所以该算法相比其他三种算法,RTT延迟有明显的降低。

实验2共分为4组,4组分别取不同的网络环境,每组找10个志愿者进行测试,每个志愿者向服务器发起5次请求,每次请求持续60 s。第1组的网络环境为靠近基站且没有高大建筑物遮挡;第2组让测试者走在街道上;第3组为用户坐在行驶的公交车上;第4组为测试者坐在行驶的地铁上。在实验过程中实时记录对应码率片段在CDN缓存中是否命中、RTT时延和初始时延,最后取平均值。

图1 各算法的码率选择等级统计Fig.1 Statistics on the bit rate selection level of each algorithm

图2 各算法 RTT时延对比图Fig.2 Comparison chart of RTT delay of each algorithm

图3 CDN缓存命中率的对比图(实验1)Fig.3 Comparison of CDN cache hit ratio (experiment 1)

实验1的结果如表1所示,第1组的实验数据说明在网络较好时,两种算法的性能比较接近。在第2组~第4组的实验数据中可以看出在网络条件比较差的条件下,结合CDN缓存命中率策略的码率自适应算法相比于传统的libdash内置的码率自适应算法,前者和后者的各项参数都有一定的降低,都受到了不同程度的影响,但是CDN缓存的命中率却有明显的提高,并且RTT时延和视频的初始时延随着CDN缓存的命中率的提升都有相应的缩短。

实验2中,与基于码率平均等级的CDN缓存优化策略对比的是三级式CDN缓存优化策略。三级式CDN缓存优化策略是文献[14]针对流媒体应用提出的CDN缓存优化策略,该策略根据用户的访问方式,把缓存分为三个不同的模块和优先级别,采用末尾淘汰制替换相应缓存片段。在开始阶段,基于区域网络平均等级缓存优化策略的CDN服务器和三级式CDN缓存优化策略的服务器缓存命中率均保持在58 %左右,随着在线用户的增加,前者的CDN缓存命中率的提升至78 %左右。其原因在于前者考虑CDN服务器节点所在区域的平均等级,大部分用户能直接从CDN服务器节点中获取到相应的码率切片。以上实验结果说明基于区域网络平均等级的CDN缓存优化策略在实际应用中具有重要意义。

其标准如表2所示。邀请40位参与者观看视频,让40位参与者均匀分成四组进入对应的测试环境,每个人观看视频时间为3 min,最后统计平均MOS值。

表1 不同网络环境下实验参数对比(实验2)Tab.1 Comparison of experimental parameters in different network environments(experiment 2)

表2 MOS评分表Tab.2 MOS score sheet

表3 MOS评分对比Tab.3 Comparison of MOS score

实验3的数据结果如表3所示,基于CDN缓存的码率自适应算法的MOS值相比于传统libdash中内置的码率自适应算法具有明显的提高。当CDN缓存的命中率提高后,CDN节点和服务器的通信量自然随着降低,从而降低时延,提高用户QoE。

4 结语

本文通过对CDN缓存策略进行优化,提出基于CDN缓存命中率的码率自适应算法。总结出影响用户QoE的因素可以分为5个方面,客户端启动延迟、客户端缓存、CDN缓存命中率、带宽波动频率和用户的主观评价这6个方面来综合评价用户的QoE。在文中进一步分析CDN服务器节点所在区域网络的情况,分析影响CDN缓存命中率过低的因素,调整服务器端推流策略和优化CDN缓存策略,提高CDN服务器的缓存命中率。该算法主要根据用户的RRT波动范围进行监测以判断相应的用户请求在CDN节点中是否命中,调整码率请求参数,提高用户QoE。

猜你喜欢

码率命中率客户端
基于文献回顾的罚球命中率与躯干稳定性影响因素研究
一种基于HEVC 和AVC 改进的码率控制算法
基于FPGA的多码率卷积编码器设计与实现
如何看待传统媒体新闻客户端的“断舍离”?
夜夜“奋战”会提高“命中率”吗
2015男篮亚锦赛四强队三分球进攻特点的比较研究
基于状态机的视频码率自适应算法
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路