内容分布网络--Content Distribution Network(CDN)是构筑在现有的Internet上的一种先进的流量分配网络。该网络将网站原服务器中的内容存储到分布于各地的缓存服务器 (Cache Server)中,通过网络的动态流量分配控制器,将用户请求自动指向到健康可用并且距离用户最近缓存服务器上,以提高用户访问的响应速度和服务的可用 性,改善Internet上的服务质量。由于内容分布网络可以有效地提高网络资源的利用效率,在提高ISP的广域网带宽利用率的同时提高用户的访问速度, 增加网站的服务可用性和抵抗黑客攻击的能力,因此受到广泛的重视,是一个正在兴起的并高速发展的技术产业。
CDN概念的提出是从1998年开始。当时美国麻省理工大学(MIT)的一批研究生通过分析当时Internet网络状况,提出 了一套能够实现用户就近访问的解决方案,最终设计并实现了其独有的系统,在此基础上于2000年建立了世界第一家提供商用CDN服务网的专业技术公司-- AKAIMA。该公司的网络遍布世界各地,目前共有超过10,000个各类服务器分布在66各国家的100多个网络中,为诸如YAHOO!, CNN.COM等世界级著名公司提供CDN服务。
目前,国际上众多的知名厂商如Cisco、Nortel、F5 Network、Radware、ArrayNetworks等公司纷纷推出自己的CDN解决方案或产品。Nortel甚至预言将来的互联网将以CDN为 基础。根据调查,全世界在CDN产品方面的投入,2000年为1亿2千万美元左右,到2003年,这一数字将剧增至14亿美元左右;而用于CDN服务方面 的支出,在2000年仅为9千7百万美元,到2003年将超过20亿美元。
国外除了AKAIMA这样的独立的专业CDN服务提供商外,大型的IDC企业也纷纷加入到这个行业中,如国外著名的IDC-- Digital Island通过其遍布全美国的众多的数据中心,建立了其自己的CDN网络,将CDN服务作为一种增值服务向它的数据中心的客户提供。
中国的互联网从上世纪90年代末开始高速发展,但网络带宽远远满足不了用户数目的增加,不仅影响了网络服务质量,同时,也制约了 流媒体(Streaming Media)等新业务的发展。正是基于这样的原因,从2000年底开始,中国的CDN产业逐步开始起步,出现了包括ChinaCache等多家公司在内的 CDN服务提供商,大型数据中心如世纪互联数据中心有限公司也开始提供类似的服务。其中ChinaCache作为中国最早的CDN服务商,目前已经在全国 建立了超过26个节点覆盖全国的网络,每个节点都通过100Mbps-1000Mbps独享带宽接入骨干网。目前正在为包括搜狐(Sohu)、新浪 (Sina)、TOM.COM、21CN、可口可乐公司等著名ICP或知名企业的网站服务。
CDN的出现
现有Internet发展存在的问题
Internet是人类历史发展中的一个伟大的里程碑,人类正由此进入一个前所未有的信息化社会。Internet如此快速的发 展,每天都有很多网络连入Internet。虽然没有任何一个人或组织可以对Internet具有控制权,但大家共同遵守国际标准的通讯协议,各子网间相 互协作共享资源,实现相互间信息和数据发送及接收。
在传统的Internet网络的结构下,用户访问一个网站的的基本过程,如图2-1所示。
传统的访问模式虽然简单,但存在几个主要的问题,会严重影响Internet用户的访问效率和质量
传统的访问模式虽然简单,但存在几个主要的问题,会严重影响Internet用户的访问效率和质量
目前困扰Internet的一个严重的问题是访问效率无法提高。Internet是一个开放的网络,在这个开放的网络上,访问和寻址都是通 过分布在网络上的众多的路由器来将包从一个网段传递到另一个网段,由于地域分布的广泛,用户对网站的访问必须经过许多路由器的转接,才能最终到达网站的 WEB服务器,中间可能要跨过多个ISP和网络。即使在理想情况下,路由器的每一次转接(HOP),都会造成一个延迟,虽然单个这样的延迟时间较少,但当 网络规模很大时,HOP数会大量增加,造成的延迟也会更加明显。而且,任何一个路由器的故障或者拥塞都可能造成访问的中断或者延迟,严重影响访问的质量。
不同网络之间的互联是通过对等点(peering points)连接在一起,这些互联点的带宽比较狭窄,也是导致Internet访问速度慢的一个重要瓶颈。
用户对网页的访问是通过HTTP协议向原服务器发出请求,这样用户要在浏览器上看到一个完整的页面就需要与原服务器的多次交互访问才行,使由于路由器转接引起的延迟对页面访问过程的影响成倍增加。图2-2说明了HTTP协议的访问过程。
同时,IP协议中不同物理网络对帧大小的限制不同,使网页中的一个Object可能要被分解到更多个包中进行传递,进一步加大了路由器转接延迟引起的总延迟时间。
从上面的计算公式可以看到,通过提高网络的带宽可以降低网页的响应时间,但要注意,网络中的瓶颈不一定是用户的接入点,而很可能是不同网络运营商之间的对等点。
对于同一个用户下载同一个页面,第一项即页面的大小与网络最小带宽的比值是基本一致的。第三项处理时间是指服务器和用户的PC机的 处理能力,该项随着网站服务器的负载而变化。所以网站的服务器处理能力越强,其响应时间相对也会更快,在相同条件下,公式的第二项将会对响应时间产生重要 的影响。从图2-2可以看到,当用户通过HTTP协议访问网站时,首先必须建立一个TCP连接,然后才能向WEB服务器发送GET请求,同时等待服务器的 响应。由于现在页面的设计越来越复杂,页面中的Object的数目往往多达30-50个,使往返次数增加。而每次往返时间则会因为经过的路由器的增加而增 加。所以缩短网站与用户之间的举例是提高访问速度的一个有效方法。即将用户要访问的内容推送到离用户最近的地方。
网站镜像
在CDN出现以前,为了能将网站的内容安置到离用户更近的地方,人们提出了网站镜像的解决方案,但它的应用同样存在几个重要的缺陷:
CDN的工作原理
CDN(Content Distribution Network),即内容分发网络,其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络"边缘",使用户 可以就近取得所需的内容,从更本上解决Internet网络拥塞状况,提高用户访问网站的响应速度。
CDN的基本工作原理就是广泛采用各种Cache服务器,将这些Cache服务器分布到用户访问相对集中的地区或网络中,在用户 访问网站时,利用全球负载均衡技术(Global Server Load Balance-GSLB),将用户的访问指向到离用户距离最近的工作正常的Cache服务器上,由Cache服务器直接响应用户的请求。如果Cache 服务器中没有用户要访问的内容,它会根据配置自动到原服务器去抓取相应的页面并提供给用户。因此一旦CDN网络正常运行后,内容的分布,用户访问的定位全 部是自动的。
图2-3是CDN网络工作原理的示意图。
CDN网络的分类
虽然CDN的基本概念和服务本质上是一样的,但按照其服务目标客户群的不同,还是可以将其划分成3类,如表2-1所示
CDN分类 | 目标客户 | CACHE安装的位置 | |
Internet类型 | 覆盖型(Internet-Overlay) | 内容的拥有者或提供商 | 多个数据中心(IDC),ISP的接入端,网络对等点 |
对等型(Internet-Peering) | 内容的拥有者或提供商 | 网络对等点上 | |
托管型(Internet-Hosting) | 内容的拥有者或提供商 | 数据托管服务商的多个数据中心 | |
用户型(Subscriber) | 最终Internet用户 | ISP自己的接入端 | |
企业型(Enterprise) | 公司 | 公司总部和分支机构所在地 |
CDN系统主要组成部分
从概念上看,一个CDN的工作原理不是特别难于理解,因为CDN网络的建设并不依赖于非常复杂或难于理解的技术。但无论选择何种技术,要建立一个高效可靠的CDN,都需要至少5个基本部分组成。
GSLB控制器实现技术
全球负载均衡技术(GSLB,Global Server Load Balance)是一种将SLB的概念扩展到广域范围的技术,与SLB在一个单独的节点上为一组服务器提供负载均衡服务不同,GSLB提供了一种对多个、 并且地域上不在一起的服务器群(节点)提供提高服务可用性的服务,其最终目的就是为了增加服务的可用性和提供更高的性能。GSLB在实现上可以分为两个方 面,一方面是如何实现将用户的请求指向到选定的节点上,一方面是研究如何确定最佳的节点。
用户请求重定向的方式
实现用户请求指向到选择的节点的方式主要有3种,分别是:
基于HTTP重定向
在实现将用户的访问指向到需要的另一个地方的所有方式中,HTTP重定向是一种最直观的方式,HTTP协议中定义了一种方式允许 WEB服务器在响应用户请求时包括一个重定向的错误码(302)同时包括重定向的URL。这些信息通知浏览器必须要到新的URL上才能取得所需的信息。这 样,用户的访问就能被有效地引导到一个合适的节点上。图3-1显示了其工作过程。
实现的具体流程如下:
使用HTTP重定向方式的最大优势在于GSLB控制器可以直接得到用户的真实的IP地址,并可以以此为基础来选择离用户最近的节点。但在实 际应用中,需要考虑以下几个潜在的问题。第一,用户访问时需要两次域名解析的过程,因此在真正取得所要访问内容前的延迟比较大;第二,只适用于HTTP服 务;第三,用户在浏览器中看到的链接会由于分配的节点不同而不同,有时会使用户感到迷惑;第四,由于所有的HTTP请求在真正到达最佳节点前都要到 GSLB控制器,因此,GSLB控制器可能成为网络的瓶颈而影响整个网络的性能。
基于DNS解析
用户在访问网站之前,都需要通过DNS服务器将域名解析成IP地址,再发起真正的HTTP请求,因此可以通过在DNS中修改配置, 来实现用户的重新指向。在实现上可以有两种方式。一种是直接利用BIND DNS自有的RTT测试时间来实现,一种是在负责实现GSLB功能的DNS中设置所有节点的VIP,然后根据用户的位置和当时网络的情况将域名解析到一个 或多个VIP上。基于DNS解析实现GSLB的工作流程如下:
通过路由协议实现GSLB
要实现这种方式,必须在每个节点都配置同样的VIP地址,每个域名在DNS中的A记录只对应一个IP地址,利用路由协议本身具备的最佳路径的算法,就能将请求指向到最佳的站点上。图 3-3显示基于路由协议的GSLB是如何实现的。
在这种方式下,A、B两个节点分别位于不同的地方,但有同样的VIP,即IP地址,并与路由器相连,在这里,路由器必须要能够通过ARP (Address Resolution Protocol,地址解析协议)看到这个VIP,即应该能够PING通这个地址,由于这个VIP可用,路由器知道如何通过自己,将包发给这个IP地址, 同时它会将这个路由信息通过路由协议在网上传播并最终到达位于网络边缘的路由器A和B。这时,即使这两个节点都是同时可用的,对于路由器A和B来说就像是 到同一个点有2条路由路径,不会影响路由器的正常工作。
当用户对网站的访问到达一个路由器,如A。路由器A查看自己的路由表,以便确定如何将包发到目的地,他可能发现2个不同地路由, 于是根据路由协议算法决定一条最佳的路由,例如OSPF(Open Shortest Path First),计算每条可用路径的路由开销并选择开销最小的,用户的访问将达A节点。
这种方式充分利用了路由器现有的动态选择路由功能,最大的优势就在于不需要专用的GSLB控制器就能实现GSLB功能。但是由于 网络上路由器的配置各不相同,如有的路由器可能会配置成在同时有多个路由路径时会在这多个路径上进行负载均衡,在极端的情况下将导致TCP的三次握手无法 正常的完成,从而影响用户的访问。因此这种方式一般是在一个较小的ISP网络中,CDN网络的建设者必须对ISP网络非常了解,并应该清楚地知道网络上的 路由器采用的路由协议配置才有可能保证CDN网络服务的可靠和安全。
选择最佳节点基本原则
在Internet上,网络环境瞬息万变,所以GSLB控制器在某一时刻决定某一个用户请求需要被指向到某个节点,在下一时刻可能 同样的用户请求会被指到与刚刚访问的节点在物理上相距非常远另一个节点上。这些都是由GSLB设定的选择节点的策略决定的。无论GSLB控制器的选择最佳 节点的策略或算法是什么,它在做出判断之前都必须要对CDN网络中的各种数据进行搜集和整理,当任何一个用户的请求到达时,再根据这些信息做出决定。
CDN网络是一个分布的网络,对于一个运营级的Internet CDN,网络可能有几十个甚至上百个节点,但只有几个GSLB控制器来实现全局的控制,因此对于GSLB控制器来说,主要的处理能力是放在控制策略和算 法,并将搜集到的信息进行整理,而具体的对信息的搜集和探测一般都会由每个节点的代理(Agent)来完成。代理与GSLB控制器之间通过专用接口协议传 递信息。在实际的CDN网络中,这种代理通常都安装在各个节点本地的SLB上。
虽然网络上的数据多种多样,信息搜集和探测的方式也很多,但GSLB控制器在选择节点时有几个基本原则是必须遵循的。
服务可用性原则
由于GSLB控制器的目的就是要在复杂的网络环境中实现系统(或服务)的最大可用性,所以选择节点的一个基本要求就是服务必须是可 用的。对GSLB控制器来说,最重要的是需要持续地监控节点的健康情况并只将用户指向到那些可以提供服务的节点。这部分工作可以依赖于各节点的SLB设 备,因为这些设备具备检测服务器工作状态的能力。所以只要在GSLB设备和SLB设备之间建立有效的接口,保证信息的传递就能够解决这一问题。当然, GSLB设备本身也可以直接对服务器的工作状态进行探测,从2、3层到第4层,甚至第7层。如GSLB设备可以简单地发一个Ping的请求到相应的节点, 检查网络环境是不是通畅,也可以发一个HTTP请求,看服务器返回的状态代码是否是'200 OK',以此决定服务器的工作状态是否正常。
节点负载状态
这个原则也是很容易理解的,由于每个节点有不同的容量和当前的负载状态,如果将用户的请求指向到负载已经很重的节点上,即使用户到 节点的跳数(Hop)少,也有可能导致由于节点超负载而影响服务质量。因此GSLB控制器可以将这两个值比率作为一种加权值,在选择节点时考虑进去。为了 能够测量节点的负载状况并把它考虑进去,GSLB控制器必须了解节点能够承载的最大容量以及当前的负载,将下一个请求发送到有更多可用资源的节点上。
就近分配
首先要明确的一点是在这里所说的就近指的是'逻辑'上的近,如两点之间Ping的延迟时间短,两点之间经过的路由器跳数少等。而不是指广州和湖南之间的距离比广州到上海的距离近。虽然在实际情况下物理距离近的两个地方其'逻辑'距离通常也会比较近。
要实现就近分配,就必须要了解每个节点与用户之间的距离,可以有两种方式来确定:
CDN服务的内容
CDN网络是一个分布的网络,分布于各地的节点大量利用Cache服务器将内容缓存在本地,以提高用户的访问效率和网络的容量。
相对于传统的路由和网络交换技术,CDN是一个全新的领域,技术的发展日新月异,服务的内容目前已经不仅仅局限于HTTP协议和基本静态内容。下图说明了CDN服务的发展基本趋势。
静态Cache服务器工作原理
Cache服务器通过存储用户需要经常访问的内容来提高响应时间及节省网络的带宽。当一个用户在自己的浏览器中输入http: //www.domain.com并最终到达Cache服务器时,如果这是Cache收到的对这个页面的第一个HTTP的请求,由于Cache服务器内没 有这个内容,所以会直接向原服务器请求内容,并将内容保存在本地,如内存和硬盘中,同时将相应的页面响应给用户,当第二个用户请求同样的内容时, Cache服务器检查后发现内容已经保存在本地,因此立即响应用户而不用回原服务器去取,第二个用户将得到比第一个用户更快的响应时间,同时,由于 Cache服务器没有通过Internet回原服务器去取,也节省了带宽。
通常情况下,一个WEB页面包括很多个内置的对象(Embedded Objec),如小按钮或图片,作为页面内容的一部分,浏览器需要分别取得每个对象,才能组装和显示完整的页面,这时,Cache服务器也需要能够分别缓存这些对象。
Cache服务器能根据用户的请求,自动到原服务器去抓取内容,并保存在本地,这是与传统的镜像服务器工作原理上的一个重要区别, 它极大地减轻了数据同步地工作量。另外,Cache服务器还能够在硬盘容量满的情况下,自动将访问频度相对较低的内容删除掉,以保留最新的和访问频度较大 的内容,这样,可以更有效地提高硬盘资源的利用率。
流媒体内容的缓存技术
流媒体基本介绍
流媒体(Streaming Media)是一种可以使音频、视频和其它多媒体能在Internet或Intranet上以实时的、无需下载等待的方式进行播放的技术。流媒体文件格式 是支持采用流式传输及播放的媒体格式。流传输方式是将视音频等多媒体文件经过特殊的压缩方式分成一个个压缩包,由视频服务器向用户计算机连续、实时传送。 在采用流传输方式的系统中,用户不必像非流式播放那样等到整个文件全部下载完毕后才能看到当中的内容,而是只需经过几秒或几十秒的少量缓冲时间即可在自己 的计算机上利用相应的播放软件对压缩的视、音频等流媒体文件进行播放,流媒体文件的剩余部分将在播放的过程中继续下载,实现播放与下载的同步进行。
常用流媒体格式介绍
由于不同的公司发展的文件格式不同,传送的方式也有所差异,因此,我们必须非常清楚各种流媒体文件的格式。
到目前为止,互联网上使用较多的流媒体格式主要有美国Real Networks公司的RealMedia、微软公司的Windows Media和苹果公司的QuickTime
流媒体格式 | 控制协议 | 数据传输协议 | 下层传输协议 |
Real Network | RTSP | RDT | TCP或UDP |
WMT | MMS | MMST | TCP |
WMT | MMS | MMSU | UDP |
QuickTime | RTSP | RTP | UDP或TCP |
工作模式
根据流媒体播放的性质不同,流媒体Cache服务器可以工作在两种模式下,一种是流媒体直播,一种流媒体点播。
动态内容的缓存技术
任何一个Web网站的内容都是在不断更新和变化,但这并不意味这这个网站的内容就是动态内容,事实上,动态的内容是指用户每次点击 相同的链接时取的的内容是由Web服务器应用程序生成的,如常见得ASP,JSP等,与此相对应,静态内容一般就是指由文本、图像和多媒体组成,在用户每 次单击相应链接时基本保持不变。现在解决动态内容缓存的最新技术就是通过ESI技术来设计网站的内容。
ESI技术工作原理
动态生成的内容能为用户带来丰富精彩的页面,网站开发者也可以更容易和更灵活地控制相关的内容,但在享受这些便利的同时,也增加了 网站数据库和应用服务器的处理压力的。当网站的访问量增大后,硬件和数据库的投资是非常巨大的,即使如此,仍然有可能导致页面的严重延迟甚至访问失败。
用户访问动态生成的内容速度慢的根本原因在于动态生成的内容需要经过一个复杂的过程,首先,根据用户请求的不同将用户的请求分配 到应用服务器相应的软件模块中,软件模块必须通过运算决定需要从数据库中提取什么样的数据给用户,然后再从数据库中提取出相应的数据按照定义的格式传给用 户。这些冗长的过程导致用户访问速度变慢,同时增加了服务器的负载。
在实际环境中,一个动态生成的页面,当中可能只有少量的内容是频繁变化的或是个性化的,对于传统的Cache服务器来说,为了能 够保证页面的时效性,却由于页面中这些少量的动态内容而无法将整个页面进行缓存。ESI(Edge Side Include)通过使用简单的标记语言来对那些可以加速和不能加速的网页中的内容片断进行描述,每个网页都被划分成不同的小部分分别赋予不同的缓存控制 策略,使Cache服务器可以根据这些策略在将完整的网页发送给用户之前将不同的小部分动态地组合在一起。通过这种控制,可以有效地减少从服务器抓取整个 页面的次数,而只用从原服务器中提取少量的不能缓存的片断,因此可以有效降低原服务器的负载,同时提高用户访问的响应时间。
ESI是一种简单的标识语言,开发人员可以使用它标志内容片断以便通过相应的Cache服务器来加速缓存。同时ESI还定义了一 套内容效验标准,可以实现原服务器对Cache服务器中缓存内容的管理,提高了网站对内容的控制能力。CDN网络也可以利用在分布全国各地的节点中安装支 持ESI的Cache服务器来提供对网站动态内容提供CDN服务。
ESI的主要优点
ESI是一个开放的规范,在实际应用中有许多突出的优点:
CDN技术的未来
随着网络技术的发展,现有的各种网络,如数据网、电信网、移动网、广播电视网都将融入下一代网络(NGN)--一个以IP为基础的 覆盖各种资源的网络。到了那个时候,网络上的应用将更加丰富,同时只有将用户需要访问的内容尽可能分布到离用户最近的地方才能有效地提高网络的利用率,为 用户提供更高品质的服务,而这些都为CDN提供了无限的发展空间。
同时,各种国际标准化组织也不断推出新的技术和协议标准,保证了CDN支持的应用服务的发展,如前面提到的ESI技术的出现和发 展。此外,如RUP(Resource Update Protocol)、OPES(Open Pluggable Extension Services)、iCAP(Internet Content Adaptation Protocol) 等协议标准的出项,将使CDN能支持更多更丰富的应用服务如内容过滤、广告插播等。
可以肯定,CDN技术将随着网络技术的发展而不断的前进,并成为Internt及将来NGN网络中不可分割的一部分。