陈璟远,朱民耀
(上海大学 通信与信息工程学院,上海 200444)
Aspera-fasp技术在视频CDN系统中的应用与研究
陈璟远,朱民耀
(上海大学 通信与信息工程学院,上海 200444)
研究、设计了一个基于HTTP Live Streaming视频流媒体技术的视频直播和点播的CDN系统,并在此基础上对其进行优化。目前,传统的CDN系统虽适用于目前国内大部分的网络环境,但在某些极端恶劣的环境条件下,比如无专线网络情况下的跨国数据传输,还是无法满足正常的业务需求。因此,该设计引入了Aspera-fasp传输技术,这是一项突破性的传输协议,能充分利用现有的WAN基础设施和通用硬件,让其为传统的CDN系统提供全球数据的快速传输。
CDN系统;流媒体;全球数据传输;Aspera-fasp
近几年来,随着国务院发布了“宽带中国”战略及实施方案,互联网技术得到了飞速的发展,其中视音频业务在互联网中的应用呈爆炸式增长,而传统电视媒体业务像有线电视、广播电台正在逐渐淡出人们的视野。CDN技术便是在这个背景下所衍生出来的,它作为一种提高网络内容,特别是视频流媒体内容的服务质量、节省骨干网的服务带宽的技术,在世界各地得到了广泛的应用。
CDN的全称是Content Delivery Network,即内容分发网络[1]。是通过在现有的 Internet 中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需的内容,解决 Internet 网络拥塞状况,提高用户访问网站的响应速度,从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均,造成的用户访问网站响应速度慢的问题。
在互联网视频中,节目的存储和网络带宽始终是一对矛盾,如果把所有的内容都集中在一个地方存储,这样虽可降低存储的成本,但带宽的成本巨大;如果把所有的内容都分布到边缘,这样带宽成本降低,但存储成本巨大。视频CDN技术就是在两者之间寻找一种平衡。
CDN系统模型的拓扑结构采用的是自上而下的树形结构[2],最顶层是源服务器(origin server),往下为缓存服务器(cache server),它可以分为很多级,而真正为用户提供服务的缓存服务器称为边缘节点,边缘节点在互联网中是离用户最近的。
在本文设计的系统总体结构中,采用3层结构,遵循核心集中,节点分散的异地部署原则,最顶层的源节点部署于中国上海;第2层区域层分别位于浙江、江苏、湖南、福建、四川、辽宁等;第3层边缘层分别位于台州、镇江、益阳、德阳、沈阳等,同时为了全球视频业务的拓展,还加入了加拿大节点。
1.1 硬件架构
系统整体硬件结构可分为3层结构(如图1所示)。第1层部署在接入电信、联通、移动线路的核心机房,为源节点。第2层是部署在电信和联通网络骨干的中间节点,为区域中心。第3层是部署在各地的CDN前端节点,为边缘节点,直接为用户提供视频的直播和点播服务。
图1 系统硬件架构图
1.2 软件架构
系统整体软件架构可分为直播和点播两部分(如图2所示),其中直播软件架构主要负责直播频道的实时切片、实时加扰,M3U8实时更新,节目的存储;点播软件架构主要负责点播内容的管理和快速下发,实时MP4封装转TS封装格式,M3U8代理。区域中心和边缘节点都是基于nginx开发搭建的缓存服务器,主要实现了文件缓存、反向代理、防盗链、流量统计、HLS一次回源、预测回源等功能[3]。
图2 系统软件架构图
1)直播Origin
直播源的所有功能模块主要分为4部分,基于C/S结构的Live Manager和origin、drmServer和数据库。Live Manager负责管理每个origin服务进程和drmServer的状态,并把记录保存在数据库中。
单个origin服务进程的框架结构,基于Tomcat开发,agent主要负责接收来自Live manager的指令来执行相应的定时任务,以完成对UDP组播流的切片和打包,其中Package模块和harmonic模块的输出互为主备切换。最终通过nginx完成http server的M3U8和TS的Proxy。
2)点播源
点播源中的主进程是基于nginx而开发的server服务,接收来自中央CMS的视频下发命令和来自下层的客户请求。其中主要包含MP4 to TS模块和M3U8代理模块[4]。前者完成在用户请求时MP4到TS的动态封装转换;后者负责解决HLS的一次回源功能[5],确保每个节目对SLB的请求次数为1次。
3)FDN下发
FDN(Fast Delivery Network)是中央CMS下发节目的唯一接口,负责点播源的推送,推送完成后通知相关各地CMS。接口主要包含:Copy,Del,Transcode,Pack,Unpack,Check,Notify,Idle,Complete。各节点的状态有NEW,EXECUTE,READY,DONE,ERROR,SERVERABLE。当某个根节点下的所有子节点都完成下发操作后,该节点该内容可以被上线,对外提供服务。
4)SLB请求调度
SLB(Service Load Balance)简单地说就是为服务器集群分配“工作任务”,采用恰当的调度算法,对于保护处于后端的Web服务器来说,非常重要。
当某个节点如果发生故障时,需要建立一个机制去保证服务仍然可用。这里比较常见的容灾方式,是切换到附近城市节点。假如系统的天津节点发生故障,那么就将网络流量切换到附近的北京节点上。考虑到负载均衡,可能需要同时将流量切换到附近的几个地域节点。此外,核心节点自身也需要做到完备的容灾和备份措施。
过载保护,指的是一个节点已经达到最大容量,无法继续接受更多请求了,系统必须有一个保护的机制。一个服务已经满负载,还继续接受新的请求,会影响当前整个节点的服务质量。
本系统的容灾及过载保护策略有以下3点:
(1)存活性:live=0(节点瘫痪),则不提供服务。
(2)负载:load>40(节点CPU负载超过40%),则不提供服务。
(3)流量:网络流量超过节点上限,则调度权重下降。
节点权重的设置:首先根据IP库确定用户地区和运营商,优先选择相同运营商,默认为1。跨省节点权重下降1/4,节点调度时使用加权随机,备选集合锁定于同一优先级中高于最高权重1/10以上的节点;对于权重低于1×10-15的节点不选择其提供服务。
5)预测回源
预测回源功能是为所有边缘节点开发的一个功能模块,目的是为了在边缘节点为用户提供服务的同时,预测用户的行为,先行用户一步进行回源操作,循环往复。那么当用户真正的请求到来时,就避免了Cache未命中的情况发生,解决了用户卡顿的现象。
6)统计和报表系统
统计系统通过日志收集服务器收集所有边缘节点的SLB和nginx日志,在统计服务器上完成对日志的解析,生成CSV文件,将CSV上传到infobright服务器入库。报表系统使用Hadoop对数据库数据进行二次处理,生成每日的报表并二次入库。
1.3 系统工作流程
直播系统由于需要考虑视频直播的实时性,工作流程由直播Orgin发起(如图3所示),采用PUSH的工作模式,主动向下一层一层将视频推向距离用户最近的边缘节点。点播系统则采用相对被动的PULL工作模式(如图4所示),工作流程由用户的请求触发,一层一层向上拉取视频节目,最终回到CDN的源节点。
图3 直播系统工作流程图
图4 点播系统工作流程图
这是一项突破性传输协议,充分利用现有的WAN基础设施和通用硬件,传输速度比FTP和HTTP快数百倍,具有端对端安全性、100%可靠性以及卓越的带宽控制能力。
fasp是在用户数据报协议(UDP)之上开发的应用层协议,在单个数据流上实现了速度最大化。在理论上fasp没有速率上限,可以完全利用任意速度网络的带宽。
在中国到加拿大的OC-3链接上,使用fasp传输时速率可以接近155 Mbit/s,在某些情况下可以比TCP快千倍,且其速率具有可预测性。所以fasp实现了在高速广域网上传输海量数据(和文件大小无关)的高速传输。
2.1 性能测试
上海——加拿大,使用fasp,带宽100 Mbit/s,平均传输速率92 Mbit/s,文件大小1 Gbyte,传输时间1分49秒,如图5所示。
图5 带宽100 Mbit/s的fasp传输(截图)
上海——加拿大,HTTP传输,带宽100 Mbit/s,平均传输速率0.872 Mbit/s,文件大小1 Gbyte,预计传输时间1小时37分,如图6所示。
图6 带宽100 Mbit/s的HTTP传输(截图)
2.2 系统改进
利用fasp在广域网上数据传输的卓越能力,本设计在第二部分实现的CDN系统基础上稍作改进,如图7所示,在原有的CDN三层结构的前两层中增加一层网络结构,使用Aspera-fasp技术进行传输。该设计针对跨国数据传输以及国内跨省市,且受南北网络运营商限制的传输,提升效果非常明显。
图7 fasp系统改进图
2.3 软件设计
1)软件工作流程
图8和图9所示为使用Aspera-fasp服务节点的软件工作流程和框架图,由于每次请求的M3U8文件大小都较小,故不使用fasp传输;仅当有视频请求时,才使用fasp进行传输。传输完成的视频文件通过Prepost后处理进程更新到Cache缓存中去。
图8 多Job传输多文件流程图
图9 节点软件框架图
2)示例代码
每一个的fasp传输任务都依靠一个fasp manager统一执行和管理,它提供一套用于Aspera数据传输的高级接口,在传输过程中提供状态分析和进度统计。
fasp manager主要接口有:GetInstance,Destroy,LaunchJob,ControlJob,CancelJob,AddSourcePath,AddCallback,GetJobIdList,GetJobStats等。程序如下:
int main( )
{
Aspera::FaspManager::JobOrder *job_defn;
Aspera::FaspManager::Location *src;
Aspera::FaspManager::Location *dst;
Aspera::FaspManager::XferParams *xfer_params;
Aspera::FaspManager::Manager *manager;
/* Setup the transfer parameters */
xfer_params = new Aspera::FaspManager::XferParams( );
xfer_params->encryption = Aspera::FaspManager::ENCRYPT_AES128;
xfer_params->target_rate = TARGET_RATE; /* Transfers never exceed this rate */
xfer_params->min_rate = MIN_RATE;
xfer_params->policy = Aspera::FaspManager::POLICY_FAIR;
xfer_params->create_dirs = CREATE_DIRS;
xfer_params->cookie = "my sample cookie";
xfer_params->resume_check = Aspera::FaspManager::RESUME_NONE;
xfer_params->persist = true;
xfer_params->tcp_port = 9999;
/* Setup the job order */
job_defn = new Aspera::FaspManager::JobOrder( );
job_defn->src_location = src;
job_defn->dst_location = dst;
job_defn->xfer_params = xfer_params;
const char* job_id;
/* Setup a callback function */
Aspera::FaspManager::CallbackFunctor
MyCallbackClass *callbackobj = new MyCallbackClass();
callback = new Aspera::FaspManager::CallbackFunctor
manager = Aspera::FaspManager::Manager::GetInstance();
manager->SetDebugLevel(1);
manager->AddGlobalCallback(callback); // This callback fires for all events for all jobs/sessions
/* Launch the job */
job_id = manager->LaunchJob ( job_defn, callback ); // A callback specified here will only fire for this job
/* Wait for session to start */
while(!callbackobj->isSessionReady())
callbackobj->sleep(1000);
/* Queue files to be downloaded */
manager->AddSourcePath(job_id, "playtrace.log.2013-01-21", "playtrace.log.2013-01-21");
manager->AddSourcePath(job_id, "playtrace.log.2013-01-22", "playtrace.log.2013-01-22");
/* Let it run until one file transferred or an error occurs (the session doesn't stop until we tell it to) */
while(callbackobj->getFileTransferCount() != 2)
callbackobj->sleep(1000);
/* Stop session */
manager->StopPersistentJob(job_id);
/* Wait for session to stop */
while(callbackobj->isSessionReady())
callbackobj->sleep(1000);
/* Cleanup and close mgr */
manager->Destroy();
return 0;
}
3)异常处理机制
当国家级骨干网传输发生故障时,在本系统的网络流量监控上表现为两种情况,分别是流量的锐减(通信无法进行)和剧增(丢包和重传)。针对这两种情况,本软件有特殊的异常处理机制,为每个Job都分配一个定时器,将未完成的任务记录到一个队列中,在网络环境恢复之后进行重传,队列的淘汰阈值为1天。
2.4 系统性能对比
如表1所示,当不使用Aspera-fasp,仅使用普通HTTP进行传输时,总带宽为300 Mbit/s时,一片时长为10 s的视频文件,平均传输时间约为10 s,且经常出现连接超时及中断现象。在这种情况下,客户端无法进行流畅的解码和播放,视频流媒体会出现严重的卡顿现象,用户体验极差。而当使用Aspera-fasp进行传输后,如表2和表3所示,在总带宽分别限制在300 Mbit/s和150 Mbit/s时,一片时长为10 s的视频文件平均传输时间为0.8 s和1.4 s。
表1 HTTP(300 Mbit/s)传输情况
文件大小/byte17957761750468128516872051996776110600180686818341281817584传输时间/s9937174951437620538125617077216348191829899
表2 Aspera-fasp(300 Mbit/s)传输情况
文件大小/byte12577552015583179334317531351067098944921159126720693272128358传输时间/s07829100460957191130207479070793085041024116177
表3 Aspera-fasp(150 Mbit/s)传输情况
文件大小/byte17967512019720177228619990399783861678312186367917407271891854传输时间/s146178155199143012154776103716148900153209149318173169
由图10可见系统整体性能提升近10倍左右,提升效果十分显著。无论对视频直播还是视频点播,该传输质量完全可以保证流畅无卡顿的播放,完全满足全球视频直播和点播CDN系统的业务需求。
图10 加拿大节点使用fasp前后性能对比
基于视频的内容分发技术是目前在互联网上播放视频的最核心的关键技术。笔者根据当前国内网络状况,为了满足全球视频直播和点播的需求,在基础CDN架构的第一、二层之间用软件实现了一层基于Aspera-fasp的传输层,优化了其在广域网数据传输上的瓶颈。本文最后给出了Aspera-fasp技术详细的测试报告、前后性能对比。经过改善后的CDN系统针对跨国传输时的性能提高近10倍,总体带宽利用率高达98%,完全满足了全球视频直播和点播的CDN系统的业务需求。
[1] 梁洁,陈戈. 内容分发网络(CDN)关键技术、架构与应用[M].北京:人民邮电出版社, 2013.
[2] 雷葆华,孙颖.CDN技术详解[M].北京:电子工业出版社, 2012.
[3] 陶辉.深入理解Nginx:模块开发与架构解析[M].北京:机械工业出版社, 2013.
[4] PANTOS R. HTTP live streaming protocol the IETF Internet-draft of the HTTP live streaming specification[EB/OL].[2015-04-12].http://tools.ietf.org/html/draft-pantos-http-live-streaming.
[5] Apple Inc. HTTP live streaming overview[EB/OL].[2015-04-12].http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/Introduction/Introduction.html.
Application and Research of Aspera-fasp Technology in Video CDN System
CHEN Jingyuan,ZHU Minyao
(School of Communication & Information Engineering,Shanghai University,Shanghai 200444)
A CDN system for live streaming or video on demand based on the technology of HTTP Live Streaming is designed and implemented, furthermore, it improves and optimizes this system. Although traditional CDN system is suitable for most domestic network environment, but in some extreme environmental conditions, such as cross-border data transmission without dedicated network, or cannot meet the business needs. Therefore, this paper introduces the Aspera-fasp transport technology which is a breakthrough transfer protocol that leverages existing WAN infrastructure and commodity hardware to move the world’s data at maximum speed for the traditional CDN system.
CDN system; streaming media; world’s data transfer; Aspera-fasp
TN948
A
10.16280/j.videoe.2015.20.014
2015-05-22
【本文献信息】陈璟远,朱民耀.Aspera-fasp技术在视频CDN系统中的应用与研究[J].电视技术,2015,39(18).
陈璟远(1989— ),硕士生,主研视频流媒体技术;
朱民耀(1965— ),高级工程师,硕士生导师,主研视音频信号处理。
责任编辑:时 雯