参考资料是《计网·自顶向下(第七版)》,第 2.6 节。
前言
视频带来的挑战
事先录制的流式视频现在是北美住宅ISP的流量主体,Netflix和youtube在2015年分别消耗了住宅ISP流量的37%和16%。高比特率是视频非常突出的特征,对于网络来说,这是巨大的流量和存储。
到目前为止,对流式视频最为重要的性能度量是平均端到端吞吐量,即:服务器怎么向百万用户同时提供流化视频内容?
质量等级
相同的视频可以通过压缩生成多个版本,每个版本对应不同的质量等级。例如,同一个视频我们可以生成3个版本,比特率为300kbps 1Mbps和3Mbps。然后使用3G的用户可能选择300kbps版本,而具有告诉因特网连接的用户选择3Mbps版本。
HTTP流和DASH
HTTP流
视频存储在HTTP服务器中作为一个普通的文件,每个文件有一个特定的url。当用户请求这个url时,服务器以底层网络协议和流量条件允许的尽可能快的速率,在一个HTTP响应报文中发送该视频文件。客户将字节收集在应用缓存中,一旦缓存的字节超过预先设定的门限,用户应用程序就开始播放,同时缓存该视频后面部分的帧。
DASH
既然已经有了HTTP流,为什么要有DASH呢?——尽管HTTP流在实践中已经得到广泛部署,但是有一个严重的缺陷,即所有用户接收到相同编码的视频。这个问题在DASH中迎刃而解。
DASH(Dynamic Adaptive Streaming over HTTP)基于 HTTP流 研发,被称为经HTTP的动态适应性流。
在DASH中,视频编码为几个不同的版本,每个版本具有不同的比特率,对应于不同的质量水平,供用户根据当前的带宽选择。
每个视频版本存储在HTTP服务器中,每个版本都有一个不同的url。HTTP服务器中也有一个告示文件( manifest file ),为每个版本提供了一个url及其比特率。
实际操作:
- 用户首先请求告示文件得知各种各样的版本
- 用户通过HTTP GET 请求报文中对每块指定一个url和一个字节范围,一次选择一块
- 下载块的同时,用户测量接收带宽,并通过一个速率决定算法来选择下次请求的块(高/低比特率版本)
因此,DASH允许客户自由的在不同的质量等级之间切换。
内容分发网-CDN
几乎所有的视频流公司都利用内容分发网(Content Distribution Network, CDN)。CDN管理分布在多个地理位置上的服务器,在这些服务器上存储文件的副本,并且试图将每个用户请求定向到一个将提供最好服务的CDN位置。
CDN服务器安置原则
一、深入
通过在遍及全球的接入ISP中部署服务器集群来深入到ISP的接入网中。
目标是靠近端用户,通过减少端用户和CDN集群之间链路和路由器的数量,从而改善时延和吞吐量。
但由于这种高度分布式设计,维护和管理集群的任务成为挑战。
二、邀请做客
通过在少量关键位置建造大集群来邀请ISP做客。
这些CDN通常将他们的集群放在**因特网交换点(IXP)**中。与深入设计原则相比,邀请做客通常产生较低的维护、管理开销,但可能以对端用户较高的时延和吞吐量为代价。
CDN操作
当用户向一个视频URL发起请求的时候,CDN需要截获这个请求,以便能够:
- 确定适合用于该用户的CDN服务器集群
- 将用户的请求重定向到该集群的某台服务器
我们稍后讨论CDN是如何确定一个适当集群的。接下来,我们首先考察截获和重定向所依赖的机制:
大多数CDN利用DNS来截获和重定向。
我们举一个例子来说明:一个内容提供商NetCinema,雇佣了第三方CDN公司KingCDN来向其他用户分发视频。在NetCinema的web网页上,每个视频的url都包括字符串"video"。
实际的步骤是这样的:
- 用户位于
NetCinema的web网页 - 用户点击链接
http://video.netcinema.com/6Y7B23V时,用户主机发送了一个对video.netcinema.comDNS请求 - 用户本地服务器将请求中继到Netcinema权威服务器,该服务器观察到字符串“video”,于是返回一个KingCDN内容服务器的IP地址,为了将该DNS请求移交给KingCDN
- LDNS(本地DNS服务器)向KingCDN发送请求,得到KingCDN内容服务器的IP
- LDNS向用户主机转发该内容服务器的IP
- 用户主机与内容服务器建立连接,发起HTTP GET请求...
集群选择策略
任何CDN部署,其核心是集群选择策略(cluster selection strategy),即动态地将用户定向到CDN中的某个服务器集群或数据中心的机制。
我们简单的介绍两个策略,并说明它们的优点和缺点:
1.指派用户到地理上最为临近的集群。
这样的方案对于大多数用户可以工作的很好,但是对于某些用户来说效果很差。因为就网络路径的跳数和长度来说,地理上最临近的不一定是网络上最临近的集群。
这种简单的策略忽略了时延和可用带宽随因特网路径时间而变化,总是为特定的用户指派相同的集群。
2.基于当前的流量条件,实时测量得出最适合用户的集群。
为了基于当前的流量条件为客户决定最好的集群,CDN能够对其集群和用户之间的时延和丢包性能执行周期性的实时测量。
例如,CDN能够让它的每个集群周期性的向位于全世界的所有LDNS发送探测分组(例如ping / DNS请求 /..)。这种方法的缺点是许多LDNS被配置为不会响应这些检测。