CDN技术之--流媒体CDN系统的组成

流媒体业务是一种对实时性、连续性、时序性要求很是高的业务,不管从带宽消耗上仍是质量保障上来讲,
对best-effort的IP网络都是一个不小的冲击

–高带宽要求
–高QoS要求
–组播、广播要求(目前IP网络没法实现端到端的组播业务)

播放一个视频分为如下四个步骤
–Access
–Demux(音视频分离)
–Decode(解码解压缩)
–Output

RTP、RTCP、RTSP、RTMP的关系:
RTSP协议用来实现远程播放控制,RTP用来提供时间信息和实现流同步,
RTCP协助RTP完成传输质量控制<=(播放控制),
=>(传输控制)RTMP和HTTP streaming则是将流同步、播放控制、质量控制集成起来的企业自有流媒体传送协议
RTMP是adobe的传输协议。
RTMP的基本通讯单元:消息块(chunk)和消息(message)
RTMP协议架构在TCP层之上,但RTMP消息并非直接封装在TCP中,而是经过一个被称为消息块的封装单元进行传输。
消息在网络上发送以前每每须要分割成多个较小的部分,这样较小的部分就是消息块,属于不一样消息流的消息块能够在网络上交叉发送。
RTSP/RTP和HTTP streaming是目前应用最普遍的流化协议,
目前电信运营商在IPTV(特殊通道的基于IP的流媒体播放)的流化上主要以RTSP/RTP技术为主,
而互联网视频网站(点播/直播)则多倾向于使用HTTP streaming的流化技术。
HTTP streaming前身是progressive download(渐进式下载:边下载边播放,直到下载完)。
HTTP streaming首先会将视频数据(包括直播的视频流和点播的视频文件)在服务器上进行编码,
而后将编码后的数据进行更细粒度的分片,再把每一个分片经过 HTTP协议传输到客户端。
HTTP streaming的客户端须要对视频文件的每一个分片都发出一个HTTP请求,
这样,在视频播放速度低于下载速度的状况下,
客户端能够灵活控制HTTP请求的发出速度,从而保证用户在中途退出时不会出现下载浪费。
另外,由于采用分片的特色,HTTP streaming还能够实现媒体播放过程当中的码率切换(码率自适应),
结合网络带宽资源,为用户提供更好的体验。

HTTP streaming                            
支持点播、直播    
可对分片文件加密,保证数字版权    
由于分片传输,故支持码率自适应    

Progressive download
仅支持点播
直接把媒体文件分割成多个小文件分片,没法保障版权全部
只支持固定码率

HTTP streaming    
基于TCP,更高可靠性,也能够直接利用TCP的流控机制来适应带宽的变化    
可将播放过的内容保存在客户端    
使用80端口,能穿越防火墙    
采用标准的HTTP协议来传输,只须要标准的HTTP服务器支撑    

RTSP/RTP
基于UDP
不能保存在客户端
使用特殊端口
须要特殊的流媒体服务器

HTTP streaming的几个主流阵营:
–3GPP adaptive HTTP Streaming
–Microsoft IIS Smooth Streaming
-Adobe HTTP Dynamic Streaming (HDS)
–Apple HTTP Live Streaming (HLS)

HLS流化技术主要分三个部分:
服务器组件、分发组件和客户端软件

–服务器组件主要负责从原始的音视频设备捕捉相应的音视频流,并对这些输入的媒体流进行编码,
而后进行封装和分片,最后交付给分发组件来进行传送;

–分发组件主要负责接收客户端发送的请求,而后将封装的流媒体分片文件连同相关的索引文件一块儿发送给客户端。
对于没有采用CDN服务的源服务器,标准的 Web服务器就是一个分发组件,
而对于大型的视频网站或者相似的大规模应用平台,分发组件还应包括支持RTMP协议的CDN;

–客户端软件负责肯定应该请求的具体媒体流,下载相关资源,并在下载后经过拼接分片将流媒体从新展示给用户
HLS音视频流或流媒体文件在通过编码、封装和分片后,变成多个以.ts结尾的分片文件。
流分割器产生的索引文件是以.M3U8为后缀的,用户能够直接经过Web访问来获取
分发组件负责将分片文件和索引文件经过HTTP的方式发送给客户端,
无须对现有的Web服务器和Cache设备进行额外的扩展、配置和升级
客户端组件根据URL来获取这个视频的索引文件。


索引文件包含了可提供分片文件的具体位置、解密密钥以及可用的替换流。
HDS,点播内容是经过一个简单的预编码生成MP4片断以及Manifest清单文件;
直播的内容准备工做流程相对复杂一点,
在播放的过程当中生成MP4.(直播推荐用RTMP,使用FMS推流器)
MPEG-2 TS是指TS格式封装的、MPEG-2编码格式的媒体流。大多数IPTV系统使用这种内容源。
H.264这一层完成原始文件的压缩编码,TS这一层负责音 视频的复用以及同步,
RTP这一层负责流的顺序传输,UDP这一层负责数据包的交付,IP层负责传输路由选择

流媒体加速的回源要求:由于流媒体文件传送带宽需求高,并且每每须要维持TCP长链接,
因此一旦CDN回源比例太高,源 站服务器I/O将不堪负荷。

CDN对内容采起分发方式分为pull和push两种。Pull是被动下拉的方式,push是主动推送的方式。
对于流媒体内容,系统通常会选择对热点内容采起push方式的预分发,而普通的网页内容几乎100%是pull方式的。
在流媒体CDN系统中,用户访问的调度会更多考虑内容命中,主要是由于流媒体内容文件体积大,业务质量要求高,
若是从其余节点拉内容再向用户提供服务会带来额外的延迟,影响用户体验。
为进一步提升命中率,流媒体CDN系统广泛采用了对热点内容实施预先push的内容分发策略
在流媒体服务系统中,主要关注的技术是对不一样流媒体协议、不一样编码格式、不一样播放器、不一样业务质量要求等的适应。

流媒体CDN与Web CDN的对比(业务差别)
主要差别点

内容类型
流媒体CDN:大文件、实时流、QoS要求高
Web CDN:小文件、固定大小、QoS要求低

用户行为
流媒体CDN:拖曳、暂停等播放控制
Web CDN:下载后浏览

内容管理
流媒体CDN:内容冷热度差别明显(对命中率要求高),内容生命周期长
Web CDN:内容冷热度差别不明显,内容生命周期短

回源要求
流媒体CDN:回源比例小
Web CDN:回源比例大

如今已经投入商用的CDN系统,基本都是同时提供Web CDN能力和流媒体CDN能力的,
并且这两种能力的实如今系统内部几乎都是互相隔离的,从调度系统到节点设备都没有交叉互用


流媒体CDN与Web CDN的设计差别(设计差别)
主要差别点    
Cache  
流媒体CDN:支持多种流化协议,硬件配置大存储、高I/O
Web CDN:支持多协议(HTTP、FTP等)硬件配置小存储、高性能CPU

负载均衡
流媒体CDN:DNS+HTTP重定向方式
Web CDN:DNS方式

内容分发方式
流媒体CDN:热片PUSH,冷片PULL
Web CDN:全PULL方式

组网
流媒体CDN:多级组网,可能要求组播、单播混合组网
Web CDN:两级组网

流媒体CDN的Cache设备与Web Cache不管在软件实现仍是硬件要求上差别都很大,咱们不多看到这两种业务共用同一台设备
当用户请求的内容在Cache上命中时,Cache直接向用户提供流服务,此时Cache设备充当流媒体服务器的角色; 当用户请求内容未能在Cache上命中时,Cache会从上一级Cache(二级缓存设备或中间缓存设备)或者源站服务器获取内容,再提供给用户。

Cache在用户与另外一个流媒体服务器之间扮演代理的角色
分布式存储技术因其大容量、低成本的特色,目前也被业界关注和研究做为流媒体CDN系统的存储解决方案之一。
经常使用的分布式存储技术包括分布式文件系统和分布式数据库,
因为采用了数据副本冗余(每份数据复制2~3份)、磁盘冗余(Raid一、Raid十、Raid5)等技术,
一般能够提供良好的数据容错机制,当单台存储设备断电或者单个存储磁盘失效时,整个存储系统仍能正常工做
负载均衡设备在进行用户访问调度时,会综合考虑不少静态的、动态的参数,包括IP就近性、链接保持、内容命中、响应速 度、链接数等。
但没有哪一个CDN会考虑全部参数,而是会根据业务特色进行一些取舍,不然均衡系统就太复杂了。
而流媒体CDN在进行用户访问调度时,会更多考虑内容命中这一参数

有两种GSLB实现方式,一种是基于DNS的,一种是基于应用层重定向的
PUSH方式适合内容访问比较集中的状况,如热点的影视流媒体内容,PULL方式比较适合内容访问分散的状况
对使用CDN服务的SP来讲,CDN的做用在于尽可能就近为用户提供服务,
帮助SP解决长距离IP传输和跨域传输带来的种 种业务质量问题(经过空间换取时间)。
所以,为用户提供服务的Cache设备必定部署在离用户比较近的地方。另外一方面,CDN的建设者从成本角度考虑,又 不能把全部内容都存放在这些离用户最近的节点中,这会消耗大量存储成本,因此这些提供服务的Cache设备会根据须要从源站服务器或者其余Cache获取 内容。

这样就造成了CDN网络分层部署的概念。
从网络分层上看,Web CDN一般是两级架构(也有三级架构以减小回源),即中心-边缘。而流媒体CDN一般有三级以上架构,即中心-区域-边缘。
产生这种区别的缘由在于流媒体 回源成本比较高,源站服务器响应一次流媒体内容回源请求,要比Web内容回源消耗更多资源。
尤为对于流媒体直播业务来讲,只要直播节目没结束,服务器就需 要长时间持续吐流,若是没有第二层节点做为中继,那么中心节点的压力将是不可想象的。

分层部署的方式,对点播业务而言的主要意义是节省存储成本,对直播业务而言在于减小带宽成本。
在点播业务中,边缘Cache只需存储用户访问量大的内容或者内容片段,其他内容存储在区域Cache中。
在直播业务中,边缘Cache从区域中心获取直播流,而不须要直接向中心节点(源站)获取,
从而节省了区域中心到中心节点这一段的大部分带宽。
由于直播流在各个Cache中都不须要占用很大的存储空间,只需少许缓存空间便可,
因此直播业务方面并不用注重考虑存储成本
考虑到电信运营商的IP拓扑和流量模型,区域中心Cache一般部署在重点城市的城域网出口的位置,
以保障向各个边缘 Cache的链路通畅。
边缘Cache的位置选择则以整个节点可以提供的并发能力为主要依据,依据业务并发数收敛比,
计算出单个Cache须要覆盖的用户 规模,从而选择一个合适的部署位置。
固然,边缘Cache离用户越近,服务质量越好,但覆盖的用户数越少,部署成本越高。

内容文件预处理
是指视频内容进入CDN之后,进入内容分发流程以前,CDN系统对内容进行的一系列处理过程。这个预处理过程的目的有几个:
–为全网内容管理提供依据,好比对内容进行全网惟一标识,对内容基础信息进行记录等
–为提升CDN服务效率或下降系统成本提供手段,好比内容切片
–为知足业务要求提供能力,好比对同一内容进行多种码率的转换以知足动态带宽自适应或三屏互动业务要求
视频转码(video transcoding)
– 码率转换
–空间分辨率转换
–时间分辨率转换
– 编码格式转换。编码格式主要包括H.26四、MPEG-四、MPEG-二、VC-一、REAL、H.26三、WMV。一般是把其余编码格式转换成H.264

文件切片
是指按照必定的规则把一个完整的文件切成大小一致的若干个小文件;
因为流媒体CDN须要提供的内容体积愈来愈大,传统整片存储带来的成本消耗超出了CDN服务商的承受范围;
切片的另外一个目的是,使边缘Cache可以支持自适应码率业务
防盗链机制和实现
–基于IP的黑白名单
–利用HTTP header的referer字段
–使用动态密钥(随机生成的key经过算法生成新的url)
–在内容中插入数据(对有版权内容进行加密(DRM),如Microsoft的playready,Google的Widevine)
–打包下载:在原文件的基础上进一步封装,使得资源的hash值改变
备注:随笔中内容来源于网上资料整理,仅供参考。算法

相关文章
相关标签/搜索