一、因特网视频

  • 在流式存储视频应用中,基础的媒体是预先录制的视频。这些预先录制好的视频放置在服务器上,客户按需向这些服务器发送请求来观看视频
  • 视频是一系列的图像,通常以一种恒定的速率来展现。一副未压缩、数字编码的图像由像素阵列组成,其中每个像素是由一些比特编码来表示亮度和颜色
  • 视频的一个重要特征是它能够被压缩,因而可以用比特率来权衡视频质量
  • 比特率越高,图像质量越好,用户的总体视觉感受越好
  • 到目前为止,对流式视频的最为重要的性能度量是平均端到端吞吐量

    二、HTTP流和DASH

    1、HTTP流

  • 在HTTP流中,视频只是存储在HTTP服务器中作为一个普通的文件,每个文件有一个特定的URL。当用户要看该视频时,客户与服务器创建一个TCP连接并发送对该URL的HTTP GET请求。服务器则以底层网络协议和流量条件允许的尽可能快的速率,在一个HTTP响应报文中发送该视频文件。

  • 在客户一侧,字节被收集在客户应用缓存中。一旦该缓存中的字节数量超过预先设定的门限,客户应用程序就开始播放,特别是,流式视频应用程序周期性地从客户应用程序缓存中抓取帧,对这些帧解压缩并且在用户屏幕上展现。
  • 因此,流式视频应用接收到视频就进行播放同时缓存该视频后面部分的帧
  • 在HTTP流中,所有客户接收到相同编码的视频,尽管对不同的客户或者对于相同客户的不同时间而言

    2、DASH流

  • 由于HTTP流具有缺陷,不管客户可用的带宽大小,所有客户都接收到的相同编码的视频。这导致了一种新型基于HTTP的流的研发,称为经HTTP的动态适应性流(Dynamic Adaptive Streaming over HTTP,DASH).在DASH中,视频编码为几个不同的版本,其中每个版本具有不同的比特率,对应于不同的质量水平。

  • DASH中,视频编码为几个不同的版本,其中每个版本具有不同的比特率,对应于不同的质量水平。客户动态地请求来自不同版本且长度为几秒的视频段数据块。当可用带宽量较高时,客户自然地选择来自高速率版本的块;当可用带宽量较低时,客户自然地选择来自低速率版本的块。
  • 客户用HTTP GET请求报文一次选择一个不同的块
  • 使用DASH后,每个视频版本存储在HTTP服务器中每个版本都有一个不同的URL。HTTP服务器也有一个告示文件(manifest file),为每个版本提供了一个URL及其比特率。客户首先请求该告示文件并且得知各种各样的版本。然后客户通过在HTTP GET请求报文中对每块指定一个URL和一个字节范围,一次选择一块。在下载块的同时,客户也测量接收带宽并运行一个速率决定算法来选择下次请求的块。自然地,如果客户缓存的视频很多,并且测量的接收带宽较高,它将选择一个高速率的版本。同样,如果客户缓存的视频很少,并且测量的接收带宽较低,它将选择一个低速率的版本。因此DASH允许客户自由地在不同的质量等级之间切换

    三、内容分发网

  • 内容分发网(Content Distribution Network,CDN)是指为了应对分布于全世界的用户分发巨量视频数据的一种分布式服务器集群。通常会有2个部署方法:

    • 1、深入。该原则是通过在遍及全球的接入ISP中部署服务器来深入到ISP的接入网中。其目标是靠近端用户,通过减少端用户和CDN集群之间链路和路由器的数量,从而改善了用户感受到的时延和吞吐量。这种高度分布式设计,维护和管理集群的任务成为挑战。
    • 2、邀请做客。该原则是通过在少量关键位置建造大集群来邀请到ISP做客。不是将集群放在接入ISP中,这些CDN通常将它们的集群位置放置在因特网交换点(IXP,不同运营商相互连通的地方)。与深入设计原则相比,邀请做客设计原则通常产生较低的维护和管理开销,可能以对端用户的较高时延和较低吞吐量为代价。
  • 一旦CDN的集群准备就绪,它就可以跨集群复制内容。CDN可能不希望将每个视频的副本放置在每个集群中,因为某些视频很少观看或仅在某些国家中流行。事实上,许多CDN没有将视频推入它们的集群,而是使用一种简单的拉策略:如果客户向一个未存储该视频的集群请求某视频,则该集群检索该视频(从某中心仓库或者从另一个集群),向客户流式传输视频时的同时在本地存储一个副本。类似于因特网缓存,当某集群存储器变满时,它删除不经常请求的视频。

    1、CDN操作

  • 在讨论过这两种部署CDN的重要方法后,我们现在深入看看CDN操作的细节。当用户主机中的一个浏览器指令检索一个特定的视频(由URL标识)时,CDN必须截获该请求,以便能够:①确定此时适合用于该客户的CDN服务器集群;②将客户的请求重定向 到该集群的某台服务器。我们很快将讨论CDN是如何能够确定一个适当的集群的。但是我们首先考察截获和重定向请求所依赖的机制。

视频流和内容分发网 - 图1
(1)用户访问位于NetCinema的 Web网页。
(2)当用户点击链接[http://video.netcinema.com/6Y7B23V](http://video.netcinema.com/6Y7B23V)时,该用户主机发送了一个对于 video.netcinema. com 的 DNS请求。
(3)用户的本地DNS服务器(LDNS)将该DNS请求中继到一台用于NetCinema的权威DNS服务器,该服务器观察到主机名video.netcinema.com中的字符串“video”。为了将该DNS请求移交给KingCDN,NetCinema权威DNS服务器并不返回一个IP地址,而是向 LDNS返回一个KingCDN域的主机名,如al105.kingcdn.com
(4)从这时起,DNS请求进入了KingCDN专用DNS基础设施。用户的LDNS则发送第二个请求,此时是对a1105. kingcdn.com的DNS请求,KingCDN的DNS系统最终向LDNS 返回 KingCDN内容服务器的IP地址。所以正是在这里在KingCDN的DNS系统中指定了CDN服务器客户将能够从这台服务器接收到它的内容
(5)LDNS向用户主机转发内容服务CDN节点的IP地址。
(6)一旦客户收到KingCDN内容服务器的IP地址,它与具有该IP地址的服务器创建 了一条直接的TCP连接,并且发出对该视频的HTTP GET请求。如果使用了 DASH,服务器将首先向客户发送具有URL列表的告示文件,每个URL对应视频的每个版本,并且客户将动态地选择来自不同版本的块。

2、集群选择策略

  • 任何CDN部署,其核心是集群选择策略(cluster selection strategy),即动态地将客户定向到CDN中的某个服务器集群或数据中心的机制。如我们刚才所见,经过客户的DNS查找,CDN得知了该客户的LDNS服务器的IP地址。在得知该IP地址之后,CDN需要基于该IP地址选择一个适当的集群。CDN —般采用专用的集群选择策略。我们现在简单地 介绍一些策略,每种策略都有其优点和缺点。
  • 一种简单的策略是指派客户到地理上最为邻近(geographically closest)的集群。使用商用地理位置数据库,每个 LDNS IP地址都映射到一个地理位置。当从一个特殊的LDNS接收到一个DNS请求时,CDN选择地理上最为接近的集群,即离LDNS最少几千米远的集群,“就像鸟飞一样”。这样的解决方案对于众多用户来说能够工作得相当好[Agarwal 2009]。但对于某些客户,该解决方案可能执行的效果差,因为就网络路径的长度或跳数而言,地理最邻近的集群可能并不是最近的集群。此外,一种所有基于DNS的方法都内在具有的问题是,某些端用户为了基于当前流量条件为客户决定最好的集群,CDN能够对其集群和客户之间的时延和丢包性能执行周期性的实时测量(real-time measurement) 。例如,CDN能够让它的每个集群周期性地向位于全世界的所有LDNS发送探测分组(例如,ping报文或DNS请求)。 这种方法的一个缺点是许多LDNS被配置为不会响应这些探测。