CDN

CDN 内容分发网络董洋(信通9班 2013140052)概念和优势:CDN 是在现代网络的基础上把内容缓存到代理服务器,使用户下载所需内容时可以不用经过骨干网,或不用再到源服务器来获取资料,它的

CDN 内容分发网络

董洋

(信通9班 2013140052)

概念和优势:CDN 是在现代网络的基础上把内容缓存到代理服务器,使用户下载所需内容时可以不用经过骨干网,或不用再到源服务器来获取资料,它的优势在于可以使用户的内容访问更加便捷。

提纲:本文第一部分先对支持CDN 的关键技术进行分析。第二部分对CDN 的工作方式和工作原理进行梳理。第三部分对目前国内外在CDN 方向的进展进行总结。第四部分预测CDN 可能的发展趋势。第五部分补充CDN 存在的问题和有价值的研究点。

一、CDN 的关键技术

CDN 的缓存控制方法的技术包括HTTP 协议、URL 、万维网文档和Cookie 。局部负载均衡的技术有DNAT ,IP 隧道方式。全局负载均衡技术有基于DNS 解析的方式、基于应用层协议重定向的方式。下面分别分析这几项关键技术。

1.HTTP 协议特点

与FTP 的区别:只使用一条TCP 连接。没有分开的控制连接;在客户和服务器之间只有数据传送。虽然HTTP 使用TCP 的服务,但HTTP 本身是无状态的协议。与SMTP 的区别:①HTTP 不是给人看的,这些报文是给HTTP 服务器和HTTP 客户(浏览器)读取和解释的,命令和请求都是嵌入在报文中。②SMTP 报文采用存储转发方式,但HTTP 是立即交付的。

HTTP 的报文: 请求报文:

响应报文:

状态码:

100系列的代码只是提供信息的,200系列的代码则提示成功的请求。300系列的代码是把客户重新定向到另一个URL ,400系列的代码指示在客户端的差错。500系列代码指示在服务器端的差错。

2.统一资源定位符

为方便地访问在世界范围的文档,HTTP 使用统一资源定位符(URL )。URL 定义了5样元素如下:

协议://主机:端口/路径 ? 表单信息 从浏览器输入到服务器的参数是使用表单(form)来发送的。若表单中的信息很少(如一个字),则它可在URL 的后面的问号之后。

3. 万维网文档 分类: 静态的、动态地和活动的。这种分类基于文档内容被确定的时间。

⑴静态文档是固定内容的文档,

它由服

,

务器创建,并存储在服务器中。即文件的内容是在文件被创建时就确定的,而不是在它被使用时。

⑵动态文档是在浏览器请求该文档时才由万维网服务器创建出来。因为对每一个请求都创建出新的文档,因此每一个请求得到的动态文档的内容就会不同。

①通用网关接口(CGI)

一种创建和处理动态文档的技术。CGI 是一组标准,它定义动态文档应如何写,输入数据应如何加到程序上,以及输出结果应如何使用。

从浏览器输入到服务器是使用表单来发送的。在服务器端执行CGI 程序,并把输出发送给客户(浏览器)。输出通常是普通正文或HTML 结构的正文。

②动态文档的脚本技术

使用CGI 对每一次的请求这个程序必须生成整个的文档。解决这个问题的方法就是使用HTML 来生成包含固定部分的文件,同时嵌入一个脚本源代码,它可以由服务器来运行提供变化的内容。

常用的是超文本预处理器(PHP),它使用Perl 语言;JSP(Java Server Pages),它使用Java 语言进行编排;以及使用VB 语言的ASP 、和嵌入SQL 数据库查询的ColdFusion 。

⑶活动文档 对于许多应用,我们需要程序能够在客户端运行。如在屏幕上产生动画图形或与用户进行交互的程序。这就叫做活动文档。 ①Java 小应用程序 小应用程序是在服务器端用Java 编写的程序。它被编译后就准备运行。这个文档的格式是字节码(二进制) 。 ②JavaScript 如果在文档中的活动部分不大,那么它就可以用脚本语言来编写;然后它就可以在客户端在同一时间被解释和运行。脚本是源代码(文本) 而不是二进制形式。

4.Cookie 的运用 创建和存储:

⑴当服务器收到来自客户的请求后,它就把有关客户的信息存储在一个文件或字

符串中。这个信息可以包含客户的域名、cookie 的内容、时间戳,以及其他与实现有关的信息。

⑵服务器向客户发送的响应包含这个cookie 。

⑶当客户收到响应时,浏览器把这个cookie 存储在cookie 目录中,它是按域名服务器的名字来分类的。 使用:

当一个客户向服务器发送请求时,浏览器就查找在cookie 目录中是否有那个服务器发送的cookie 。如果找到了,就把这个cookie 包含在请求中。当服务器收到这个请求时,它就知道这是一个老客户,而不是一个新客户。请注意,这个cookie 的内容从来没有被浏览器读过,也没有暴露给用户。cookie 是服务器制作的,也是被服务器吃掉的。例如电子商务的购物车就能用cookie 来实现。

5. 目标NAT(DNAT) 概念:

网络地址转换NAT 中,专用网使用专用地址。专用网地址看Internet 是透明的;Internet 看见的只是NAT 路由器的一个Public IP。所以由专用网到Internet 时要修改源地址,由Internet 到专用网时要修改目的地址。按照使用方式分两种,其中DNAT 则主要用在为内部主机架设可以让Internet 访问的服务器。

6.IP 隧道 概念: 将一个IP 报文封装到另一个IP 报文中的技术,这使得目标为一个IP 地址的数据报文能被封装和转发到另一个IP 地址。 7.DNS 解析 特点: 主机名的管理分配在不同层次的DNS 服务器当中,并进行分层管理,所以每一台DNS 服务器记忆的信息就不会很多。

每个上一层的DNS 服务器所记录的信息,其实只有其下一层的主机名而已。至于

,

再下一层,则直接授权给下层的某台主机来管理。

因为你如果已经申请到主机名解析的授权,那么在你自己的DNS 服务器中,就能够修改全世界都可以查询到的主机名了,而不用通过上层ISP 的维护。

8.HTTP 应用层协议重定向 原理: 应用层重定向主要利用了HTTP 、MMS 、RTSP 等协议本身的重定向机制来实现,由于各种应用层协议的重定向机制基本相同,因此以HTTP 协议为例来说明。 在HTTP 协议中,有三类重定向状态码:301永久性转移、302暂时性转移或特定时间后重定向到新的网页。

二、CDN 的工作方式和工作原理

本小节来梳理CDN 部署的两个重点,分别是缓存策略和负载均衡。 1. 缓存策略: ①静态文档的缓存策略:

静态文档是由apache 吐出的,缓存策略主要通过HTTP 响应消息首部行中的两项来控制,即Last-modified 和cache-control :max-age 。它们是由apache 的expire 和header 模块控制的。Apache 缺省配置,所有静态文件在CDN 中只缓存3600s (需要我们按需求调整被加速服务器的apache 设置)。3600s 后CDN 失效,用户访问时会重新请求原帖,如果没有变化,缓存失效周期自动延长10。 ②动态内容的缓存策略(URL 形式必须是静态的):

动态内容可以由嵌入在HTML 中的脚本语言生成,是由源站jsp 或php 生成的,由这些程序控制last-modified, cache-control :max-age 、public 。 apache 的设置将不起作用,CDN 根据这两项判断是否需要到源站更新内容。 ③CDN 和应用的结合策略:

⑴变化不频繁的页面(例如图吧图片显示页):在原站生成静态页面,原站apache 上定义过期时间,例如1天。原站上静态文件

更新后,可以等待CDN 过期。或者主动通知CDN 更新(随着CDN 节点越来越多,代价会非常高)。

⑵变化频繁的页面(正在进行的比赛对阵页):

不生成静态页面,由jsp 或php 定义过期时间,例如5s 或60s 。CDN 过期后,如果有用户访问就从原站上抓取。优点:相关页面过期后,不需要主动通知CDN 节点都来抓取,有效降低原站的压力。如果页面内容没有变化,返回lastmodified 不变,这样原站会直接返回304给cdn ,cdn 也会返回304给用户。减少网络传输和速度,比赛结束后,“正在进行的比赛对阵页”转换为第一类情况,再生成静态文件。 ⑶特殊静态资源(图片库和某些大型产品库中的评论,或赛事库的比分文件):

通过apache nocache 告诉IE 不缓存,html 中就不需要使用pinglun.js?123456这样的代码形式,然后用max-age 告诉cdn 缓存1s ,这样避免每次用户请求都转到原站。 2. 负载均衡

负载均衡可以分为全局负载均衡和局部负载均衡。 1. 局部负载均衡:

①用LVS 负载均衡服务器实现四层负载均衡的关键模块是IPVS ,支持NAT (网络地址转换)、YUN (IP 隧道)、DR (直接路由)等多种方式。因为后台服务器节点向用户返回其所需内容时,采用DR 方式将无须再经负载均衡节点对返回内容进行处理,具有较高性能,也是LVS 四层负载均衡实现方式的默认选项。

DR 工作方式除了要对负载均衡服务器进行必要的配置外,还需要修改各台真实服务器的配置(主要是禁止它们响应ARP 报文),要对负载均衡服务器配置虚拟IP ,设置相应路由,创建虚拟服务及其相应端口选择调度算法,最后建立虚拟服务与后台真实服务器的HTTP 服务的链接,并使用DR 工作方式。实现以IP 地址为单位来进行负载均衡的调度。

②用Nginx 实现七层负载均衡。需要配置nginx.conf 文件。设置HTTP 服务器并利

,

用其反向代理功能实现负载均衡。定义负载均衡服务器列表,设置默认的轮询方式。

为了体现出Nginx 的七层负载均衡能力(例如对用户访问请求中的域名信息进行分析),需要为Nginx 服务器配置相应的域名(www.cdn.com )并作为它被访问时进行用户请求负载调度的依据,因此部署环境中还包括了一台用于安装BIND DNS 服务器的虚拟机。

2. 全局负载均衡: 全局负载均衡有两种方式,分别为:DNS 解析和HTTP 重定向。

①DNS 域名解析:

当网站使用CDN 提供服务并用GSLB 来解析其原站域名时,通常会由权威DNS 设置一个GSLB 认可的域名作为原域名的别名(CNAME)。有了别名,GSLB 就可以将它唯一映射成一个由多个虚拟服务器组成的服务池,这些服务器就是用户输入网站URL 后经负载均衡调度直接提供服务的服务器。GSLB 在解析域名的时候会直接返回其中一个虚拟服务器的IP 地址。比如www.netitv.com.cn 域名CNAME 设置为www.netitv.cdn.com.cn 。如果需要GSLB 来进行解析www.netitv.com.cn 的IP 地址,那么就需要在GSLB 上面设定域组www.netitv.cdn.com.cn ,这样GSLB 就会按照内部设置的负载均衡策略,选择相关联的Pool 以及虚拟服务器来提供服务了。 ②HTTP 重定向:

⑴用户首先向网站的本地DNS 请求域名(www.CDNbook.com )解析。

⑵由于网站已经预先进行了域名CNAME 指向服务CDN 的GSLB 域名和IP ,所以本地DNS 会向用户返回GSLB 设备的IP 地址。(注意,是一个具体IP 地址,这样DNS 解析过程就终结了。)

⑶用户向这台GSLB 设备发起HTTP GET请求,请求该网站某个网页的内容。应该注意的是,在用户浏览一个完整的网页时,事实上是发起了多个HTTP 请求,针对某个独立的对象,比如一张图片、一段视频、一段文字,都会存在这样一个独立的HTTP 请求。 ⑷GSLB 设备将综合分析用户IP 、内容分布、

设备负载、链路状况等实时信息,为用户选

择一个合适的服务单元。“单元”是指将用户访问请求调度到一个合适的服务区,或者一个集群,再由区域均衡或本地均衡设备做下一步负载均衡工作。

如果GSLB 在自己的静态路径表中没有查到用户IP 所在网段的信息,可以通过两种方式完成路由策略。方式一,GSLB 将用户请求通过轮询的方式定向到其他节点。方式二,GSLB 会以同样方式去查动态最近路径表,如仍没有记录,GSLB 会通知各POP 点的SLB 一同去测各POP 点离用户的距离及时延,并报告核心节点确定最优站点,该IP 地址所在的网段会被添加至动态最近路径表,供今后用户直接与最优的分配层节点的SLB 设备建立连接。

⑸用户根据得到的IP 地址向CDN 的POP 节点发出媒体访问请求。

⑹如果这个IP 地址的节点设备仍然是一个负载均衡设备,则通过负载均衡把请求转发给选择一台合适的服务设备。

⑺响应报文能从后端服务器直接返回给客户。

三、国内外CDN 方向进展

1.NBA 成立于1946年,是一个包括美国和加拿大30支球队在内的全球性体育和娱乐品牌。NBA 采用Akamai 的流媒体播放和管理系统,Akamai 为每场NBA 现场球赛进行音频和视频编码,因而该机构仅需要一到两名员工就可以实现每年网播1500多场赛事,使网上广告收入增加500。NBA.com 网站的流量已实现每月成倍增长,每月有分布在222个国家的3500多万独立用户访问NBA 网站内容。

2. 中国电信自2004年开始建设CDN ,在CDN 的研发和建设过程中,采用自主研发与合作相结合的方式,在保持自身网络技术优势的同时,迅速扩大规模和引用新技术,成为国内CDN 市场的新兴强大力量。到目前为止,中国电信CDN 已经建成79个节点,网络容量达到1TB 规模。建设初期主要用于自营的互联星空网站和IPTV 等业务的分发服务,随着网络不断扩容,能力也获得提升,

,

逐渐对外提供服务。目前,中国电信CDN 能够提供流媒体加速(包括点播和直播)、网页加速、下载加速和应用加速等各种服务,主要用于加速互联网网站在中国电信网络范围内的分发服务。

中国电信CDN 网络已为奇艺、乐视、凤凰等多家网站提供CDN 服务。

3.ChinaCache(蓝汛) 是中国第一家专业CDN 服务提供商。2000年ChinaCache 获得信息产业部CDN 服务许可。截止2011年上半年,ChinaCache 在全国113个城市的机房中部署了节点,同时管理400GB 带宽资源。其CDN 网络覆盖国内各大运营商,其客户包括搜狐、网易、eBay 、易趣、淘宝、慧聪、携程、新华网等几十家,另外还有“国网”等政府网站,以及宝马、可口可乐等企业网站。2006~2009年,蓝汛净收入从7000万元增长到2.72亿元;2010年全年收入4.034亿元,比2009年增长48.1,蓝汛的最大客户变成了中国移动,占蓝汛2010年上半年总营收入的12.8。

4. 网宿科技在2010年网宿科技总收入为3.623亿元,比2009年增长26.22,其中CDN 业务收入1.88亿元。网宿科技CDN 包含200多个节点,可承载带宽(峰值)高达600GB 。

四、CDN 可能发展趋势

CDN 与P2P 是经常被拿来进行对比的两

种技术,原因是两者都是数字媒体文件的重要传送机制,大部分用户会同时使用到这两种机制,从而产生体验对比。应该说两种技术各有所长,在不同场景和需求下具有另一种技术所不具备的优势。然而,技术的发展总是盛衰相继,分分合合,并没有非此即彼的绝对性。

正当业界普遍认为P2P 将是未来的互联网发展趋势并预测P2P 流量还会不断增长时,在2007年后,P2P 流量的增长势头出人意料地开始减缓,特别是在近几年其流量占比在持续下降。

一方面,源自P2P 系统本身存在的缺点。 ⑴P2P 系统的可用性问题很难解决。尽管从整个系统而言,P2P 是可靠的,但是对于单

个内容或者单个任务而言,P2P 是不稳定的。每个Peer 可以随时终止服务,甚至退出系统,因此系统中的交换内容随时可能被删除或者被终止共享。

⑵P2P 一直没有找到良好的商业模式。P2P 在安全、管理和版权等方面存在很多问题,主要体现在P2P 技术缺乏有效的管理,并且具有匿名发布的特性,所以大多数P2P 服务都将不可避免地和知识产权发生冲突。

⑶用户对P2P 客户端的安装存在抵触情绪。 依据P2P 和CDN 技术融合层面的不同,目前有三种主流的融合方案:控制层面融合方案、网络叠加融合方案和设备层面融合方案。

五、CDN 存在的挑战

挑战有两点:光纤时代CDN 的挑战、后http1.1时代的CDN 。 1. 光纤时代的CDN 的挑战

用户带宽大:很多城市已经推行10-20M 带宽。在线时间长:3G 手持设备如Ipad 等可以提供更长的在线能力。交互数据多:页面丰富程度高。移动客户端流行:Andoid 和IOS 设备大行其道。CDN 的发展:容量更大,单 个数据文件更大,命中率更低,业务逻辑需求增多。 2.Ajax 的大量使用,促成了框架页面静态化:有更多内容可以做cache 啦。Html V5 的普及,更多的视频等媒体展示:文件、流量变更大啦。http/2.0 来了,服务器该怎样支持。

参考文献:

【1】雷葆华 孙颖 王峰 陈晓益《CDN 技术详解》[M]北京:电子工业出版社 2012.6

【2】徐珩《动态网页缓存技术研究》[J] 华南理工大学 2006.10.20

【3】余洪春《构建高可用Linux 服务器》[M] 北京:机械工业出版社 2012.7

【4】Behrouz A.Forouzan Sophia Chung Fegan 《TCP/IP协议族》清华大学出版社 2006.5

【5】平台化CDN 基础架构 赵永明 【6】CDN 缓存策略 网络

标签: