内容分发网络(CDN)关键技术、架构与应用(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-10 01:53:02

点击下载

作者:梁洁,陈戈,庄一嵘等

出版社:人民邮电出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

内容分发网络(CDN)关键技术、架构与应用

内容分发网络(CDN)关键技术、架构与应用试读:

前言

从互联网的发展来看,网络流量的增长远远超出了人们的预期。宽带网的快速发展,催生了许多新的互联网业务,如IPTV业务、互联网视频、OTT等业务,这些业务对带宽要求高,正在快速吞噬着巨大的带宽。

为解决互联网带宽瓶颈,CDN 应运而生,CDN 的发展与宽带互联网架构紧密相连,它本质上是通过一种分布式服务器构成的网络,把热点内容存储在网络靠近接入侧的服务器上,从而使用户访问热点内容时不用再访问骨干侧的服务器,减小骨干网流量需要,并提高服务质量。

CDN是为互联网上的应用服务的,它伴随着互联网的发展而逐步成长,其发展过程中的高峰低谷、起起落落与整个互联网的发展轨迹基本保持一致。随着近年来IPTV、OTT等视频业务高速发展,CDN迎来高速发展的良机。

多年以前,CDN 大部分核心技术均由国外厂商或组织掌握,CDN 核心技术的缺乏已对我国开展互联网视频等业务造成巨大困扰。可喜的是,近年来随着国家政府部门的重视、运营商的参与以及设备厂商的大力投入,中国在 CDN 领域已取得了重大进展,如:已在CDN多个关键技术领域获得了国内、国外专利;已经开始制定国家与行业的CDN技术标准,CCSA等标准化组织即将推出CDN的行业标准;基于自有标准的CDN产品已大规模投入商用。

本书的作者均是中国电信股份有限公司广州研究院在 CDN 领域工作多年的具有丰富经验的专业人员,长期跟踪CDN技术的发展,并主持制定了国内及企业的CDN技术标准与规范。他们还是电信不同业务网络应用领域的专家,深刻了解CDN应用的需求。

本书是在中国电信股份有限公司赵学军处长的指导下,由梁洁、陈戈、庄一嵘、韩晓梅、陈学亮、薛沛林、海锦霞、张云超等编写。陈戈负责全书的统稿工作。

希望通过本书对CDN技术、标准、产品等方面的详细介绍,可以让业界和普通用户对CDN有更多的了解,从而不断地推动CDN技术及产业的发展。序

内容分发网络(CDN,Content Delivery Network)伴随着互联网商业化发展而发展,是现代互联网的重要支撑网络,也是现代通信网的重要组成部分。随着IPTV、网络视频、下载等业务的快速发展,及其对网络传输带宽和质量需求的提升,重要性日益突显。内容分发网络(CDN)作为流媒体系统的一个重要核心组成部分,开始被运营商接受和广泛部署。内容分发网络(CDN)进入了发展的快车道。

本书是中国电信股份有限公司广州研究院CDN研发团队多年研究成果的总结。通过对CDN技术进行全面分析,以发展趋势、关键技术、总体架构和业务应用等为线索,本书作者写成《内容分发网络(CDN)关键技术、架构与应用》一书,为推动国内 CDN 技术发展献力献策。

本书的作者均是中国电信股份有限公司在 CDN领域工作多年的具有丰富经验的专业人员,长期跟踪CDN技术的发展,并主持制定了国内及企业的CDN技术标准与规范。他们还是各种电信业务网络应用领域的专家,深刻了解CDN应用的需求。本书内容全面,注重工程实用性,是一本难得的实用型参考书。本书可以让业界和普通用户对CDN有更多的了解,从而不断地推动CDN技术及产业的发展。

相信本书会给广大读者带来思考、启迪和帮助。工业和信息化部电信研究院科技委主任 蒋林涛2013年9月

第一部分 内容分发网络(CDN)技术

第1章 内容分发网络技术发展与基本原理

1.1 CDN的基本概念和产生背景

20世纪 80年代末,WWW(World Wide Web,万维网,简称Web)的出现,使互联网的面貌发生了根本变化,互联网获得了急速发展,使其从单纯的数据通信网络发展成为能够在世界范围内共享和发送信息的分布式网络。

通常大家常说的互联网,是广义的互联网,由两层组成:一层是以TCP/IP为代表的网络层;另一层是以万维网(WWW)为代表的应用层。目前普遍存在一个认识误区,就是将互联网和万维网混为一谈。认清互联网的本质,辨识清楚互联网和万维网的区别,是理解整个互联网技术的关键和基础,也是认识CDN的基础。

国际标准化组织(ISO)定义了网络 7层参考模型,叫做开放系统互连(Open System Interconnection,OSI)模型。由于这个标准模型的建立,计算机网络标准化程度大为提高,大大推动了网络通信图1-1 OSI参考模型的发展。

OSI参考模型将整个网络通信的功能划分为7个层次,OSI参考模型如图1-1所示。它们由低到高分别是物理层(PH)、数据链路层(DL)、网络层(N)、传输层(T)、会话层(S)、表示层(P)、应用层(A)。每层完成一定的功能,每层都直接为其上层提供服务,并且所有层次都互相支持。第4层到第7层主要负责互操作性,而1~3层则用于创造两个网络设备间的物理连接。

TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/因特网互联协议)是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP定义了电子设备如何连入因特网,以及数据在它们之间传输的标准。协议采用了 4 层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

以TCP/IP为核心的狭义的互联网(Internet),实际上是广义互联网的下层,是网络基础,更一般地说就是TCP/IP网络。这一层的主要作用是通过计算机之间的互联,将各种信息的数据报文以极低的成本进行传输,俗称“管道”,所有信息和内容在这个管道里进行传送。互联网的设计理念是:网络是中立和无控制的,任何人都没有决定权;网络是应用无关的,它的任务就是更好地将数据包进行端到端传输。这个设计理念从互联网诞生之初到现在从未被撼动,任何针对某种(类型的)内容对互联网进行优化的尝试其最后效果都不甚理想。因此,可以认为互联网不会试图对任何内容进行传输优化。

以万维网(WWW)为代表的应用层,是广义互联网的上层。这一层包括多种类型的流量和应用,如邮件、软件、在线影视、游戏、电子商务、移动应用等,所有SP(Service Provider,服务提供商)提供的都是这些用户看得见、摸得着的应用,它们丰富和方便了人们的生活,构成了人们常说的互联网业务和信息经济。

从互联网的发展来看,网络流程的增长远远超出了人们的预期。初期(20 世纪 90年代中后期)人们使用窄带拨号方式上网。当以ADSL技术为代表的宽带接入网走进人们生活时,许多人认为用窄带拨号就可以满足一般的上网要求了,并不需要这么高的带宽。事实上,当带宽增长时,极大地促进了新业务的发展。在线音乐、在线视频、视频会议等都消耗了大量的带宽。目前,家庭宽带接入带宽正快速向光接入发展,接入带宽从20Mbit/s直至1 000Mbit/s。据统计,北美骨干网上的业务量已达到每6~9月左右就翻一番,比著名的摩尔定律(约18月翻一番)还要快2~3倍。为表述方便,下文以宽带网表示狭义的互联网。

随着宽带网的快速发展,催生了许多新的互联网业务,如IPTV业务、互联网视频、OTT等业务,这些业务对带宽要求高,正在快速吞噬着巨大的带宽。

从宽带运营网建设宽带网的模式来看,宽带网的接入带宽虽然增长很快,但骨干网的带宽并没有同比例增长。这是因为:第一,骨干网的建设成本比接入网要高得多;第二,用户使用的带宽有一个复用的关系,即每个用户同时使用的带宽是不相同的,大部分用户虽然连上了网,但使用的带宽并不高,所以无需为每个用户都在骨干网建设与其接入带宽相等的带宽。

现在宽带网形成了一个越往用户侧接近,带宽越充分,成本越低的局面。CDN的发展其实是与宽带网架构紧密相连的。对于如IPTV业务、互联网视频、OTT等业务,如果没有CDN,则每个用户都需要有一条从接入侧到骨干网的高带宽链路,其成本很高,质量也难以保证。

CDN(Content Delivery Network,内容分发网络)简单地说就是通过在不同地点缓存内容,通过负载平衡等技术将用户请求定向到最近的缓存服务器上获取内容,提高用户访问网站的响应速度。和简单的内容镜像不同,CDN通过用户就近性和服务器负载的判断,以一种更为高效的方式为用户的请求提供服务。

1.2 CDN发展历史

CDN的诞生是因为宽带网的骨干带宽小,接入带宽高,它本质上是通过一种分布式服务器构成的网络,把热点内容存储在网络靠近接入侧的服务器上,从而使用户访问热点内容时不用再访问骨干侧的服务器,减小骨干网流量需要,并提高服务质量。

CDN是为互联网上的应用服务的,它伴随着互联网的发展而逐步成长,其发展过程中的高峰低谷、起起落落与整个互联网的发展轨迹基本保持一致,这里借此回顾一下CDN的发展历史,如表1-1所示。表1-1 CDN发展历史(1)第一阶段:CDN随着互联网业务快速发展而发展

1991年之后的近10年间,公众主要以拨号方式接入互联网,带宽低而且网民数量少,此时主要的瓶颈在最后一千米—用户接入带宽,而没有给提供内容的服务器和骨干传输网络带来太大的压力。随着互联技术的发展和网民数量的增加,给内容源服务器和传输骨干网络带来越来越大的压力,互联网瓶颈从接入段逐渐向骨干传输网络和服务器端转移。

1995年,麻省理工学院教授、互联网发明者之一Tim Berners-Lee发起的一项技术挑战造就了后来鼎鼎大名的CDN服务公司Akamai。Berners-Lee博士预见到在不久的将来网络拥塞将成为互联网发展的最大障碍,于是他提出一个学术难题,要发明一种全新的、从根本上解决问题的方法来实现互联网内容的无拥塞分发,这项学术难题最终催生出一种革新性的互联网服务——CDN。

Akamai公司通过智能化的互联网分发,使得“World Wide Wait(世界一起等待)”的状态有了很好的解决方案。Akamai公司1999年开始提供商业服务,并宣布世界上网络流量最大的互联网公司雅虎成为自己的合同客户。

Akamai是全球第一家CDN网络运营商,从诞生之日起,就一直是全世界顶级的CDN服务商和CDN服务的领跑者。Akamai的成功表明互联网内容分发业务有着巨大的市场前景。

1999年到 2001年是全球互联网发展的高潮期,HTTP 网页内容的加速需求非常大,CDN成为产业关注的热点。2001年,Limelight Networks公司在美国亚利桑那州成立,是除Akamai之外最主要的CDN公司,自高盛将1.2亿美元投入Limelight后,全球CDN的发展呈现出风起云涌之势。Akamai和Limelight分别代表了“节点租用”和“节点自建”两种发展模式,引领了全球CDN行业的技术潮流。在这一时期,除了如Akamai、Limelight、Level3等这样独立、专业的CDN服务提供商,大型的IDC企业看到CDN巨大的市场前景也纷纷转型,加入这一行业。IDC企业的加入进一步推动了CDN行业的发展,与传统的独立CDN公司形成对峙之势。比如国外著名的 IDC—DigitalIsland 通过其遍布全美国的、数量众多的数据中心,建立了其自己的CDN网络,将CDN服务作为一种增值服务向其数据中心的客户提供。

在中国,互联网的高速发展同样始于20世纪90年代末。以新浪、搜狐、网易3大门户为代表,众多资本、科技人才投入其中,网站和互联网服务如雨后春笋般蓬勃生长,启动了国内第一次互联网发展高潮。互联网内容的丰富和功能的拓展吸引了越来越多的用户,网上冲浪成为当时最时髦的娱乐形式。网民数量的剧增给网络带来巨大的压力,导致网络服务质量和用户体验下降,同时限制了流媒体等新业务的发展。在这样的背景下,中国的CDN产业应运而生。

2000年信息产业部颁发了中国第一个CDN试运行许可证,这标志着CDN正式在中国落地发展。2000年10月,中国建立了第一个CDN节点;2001年1月,中国发展了第一个CDN商用用户,标志着中国CDN的正式启动。

从我国CDN的发展来看,早期CDN发展时期,CDN在中国的应用是落后于国外发达国家的。(2)第二阶段:CDN发展起起伏伏

2001年,第一次互联网泡沫破碎,大量.com公司倒闭,网站关闭。CDN客户一夜之间骤减,一息尚存的网站也缩减成本开支,CDN 产业几乎立刻进入了停滞期。彼时 CDN服务商鼻祖Akamai公司也难逃此劫。

虽然互联网泡沫破裂对整个行业产生了巨大的冲击,但互联网复兴的种子已播下,第一次泡沫期间大量投资建设的基础设施,为日后产业的再次发展奠定了良好的物质基础。

从2002年开始,DSL等宽带技术在全球逐渐普及,用户接入带宽提高到兆比特级别,为网络流媒体服务提供了基础条件。从2004年起,伴随着互联网的回暖、流媒体服务的发展和Web 2.0的兴起对CDN提出了新的技术要求,CDN的需求开始回升并持续增加,CDN又变得热门起来。

在CDN回暖的同时,P2P技术发展成熟,迎来了高速发展的时期,业界发出了CDN是否还有存在价值的疑问。

P2P正式步入发展的历史可以追溯到1998年。在1998年,美国波士顿大学的一年级新生、18 岁的肖恩·范宁为了解决他的室友的一个问题——如何在网上找到音乐—而编写了一个简单的程序,这个程序能够搜索音乐文件并提供检索,把所有的音乐文件地址存放在一个集中的服务器中,这样使用者就能够方便地过滤上百的地址而找到自己需要的MP3文件。

到了1999年,令他们没有想到的是,这个叫做Napster的程序成了人们争相转告的“杀手程序”—它令无数散布在互联网上的音乐爱好者美梦成真,无数人在一夜之内开始使用Napster。在最高峰时Napster网络有 8 000万的注册用户,这是一个让其他所有网络望尘莫及的数字。这大概可以作为P2P软件成功进入人们生活的一个标志。

到了2001年后,P2P技术发展得非常快。使用P2P技术的软件比比皆是,人们也在不知不觉中感受到了P2P作为高科技发展载体的快乐。从国外传过来的BT、电驴软件,到迅雷等软件无一不是使用P2P技术。

P2P 技术将互联网从一个基于文件的网页和电子邮件网络转变成一个动态的、颗粒状网络,在网络中,特定的信息组件可被有效地放置和分享。但P2P带来的版权问题、管理困难、垃圾信息、吞噬网络带宽等问题一直未能有效解决,而CDN正好是可以避免这些问题的有效平台。

除了上述的缺点以外,P2P网络还是一种比较脆弱的网络:在P2P网络中,服务器不再是网络的中心,但是仍然协调着整个网络的工作,服务器的瘫痪将导致整个网络的瘫痪。不难想象,一个拥有众多用户的P2P网络将会成为黑客的攻击目标,这将极大地威胁P2P网络的安全。

在这一阶段,全球CDN发展起起伏伏,没有与网络应用一样迎来快速发展的机会。(3)第三阶段:互联网泡沫的冲击和CDN第二次大发展

2008年后,传统HTTP和下载使网络数据量飞速上升,网络游戏产业逐渐成熟,特别是网络视频等需要高带宽的内容,对服务器和网络带宽的压力更大,对CDN服务需求迫切。

网站的内容类型不断增加和丰富,在新的需求下,流媒体、Flash、视频和下载等网站内容及业务成了新的主要应用对象。为了给软件下载、视频流媒体、企业Web应用、B2B交易和Web 2.0互动等各种服务加速,在传统的CDN技术之上又增加了压缩、流量整形、智能路由和网络优化等技术。

而且随着CDN能够提供加速的内容类型不断丰富,其提供的服务也已从单纯的内容加速拓展到应用和服务的加速。Akamai 公司营销主管 KieranTaylor 曾感慨地说:“内容分发网络这个词确实有些过时了,我们的设想是为所有在线业务加速。”

除了带来新的技术要求和业务需求外,Web 2.0和流媒体的发展将互联网的发展推向了新的高峰,互联网逐步形成了清晰稳定的盈利模式,生存力的增强使得互联网公司变得更加健康和稳定,为CDN服务生成了真正的市场和稳定的客户群。

总而言之,市场需求的急速膨胀与CDN自身的发展,包括技术的成熟、设备价格的下降等因素,共同引发了CDN的新一轮发展热潮。CDN技术自诞生时的第一次爆发式发展之后,又迎来一段难得的发展盛世。在我国从 2006年开始,随着网络视频应用的普及,CDN进入快速发展时期,到2009年底,中国CDN市场营业收入已达到5.01亿元人民币。

与此同时,CDN市场的风险投资交易金额逐年走高,2008年CDN市场的风险资本交易金额更是达到了创纪录的3.25亿美元。2009年10月30日,上海网宿科技股份有限公司作为首批创业板28家上市公司之一,正式登陆深交所创业板上市。2010年10月1日(美国当地时间),蓝汛通信(NasdaqGM:CCIH)成功登陆纳斯达克交易市场。两家国内CDN服务领先者的成功上市,是国内CDN产业发展的重要里程碑,也标志着资本市场和公众对CDN产业的认可。

2010年开始的云计算风潮对CDN也产生了不小的影响。一方面,很多云计算平台在对外提供服务时不可避免地会用到CDN的分发能力;另一方面,CDN的技术特点使得其本身就很像一种云服务,很多CDN服务商也正在积极尝试各种云计算技术在CDN系统中的应用。云计算究竟会对CDN产生什么样的影响?我们拭目以待。但可以肯定的是,这将是一种良性的促进,也许将推动CDN技术和业务发展进入一个新的阶段。

1.3 互联网用户访问模型

互联网内容巨大,任何CDN都只能针对性地对部分内容进行缓存。CDN之所以能通过用户就近性和服务器负载的判断,以一种更为高效的方式为用户的请求提供服务,其基本依据是互联网用户访问模型。

二八定律又名帕累托定律,也叫巴莱多定律、80/20定律、最省力的法则、不平衡原则等,是19世纪末20世纪初意大利经济学家帕累托发明的。他认为,在任何一组东西中,最重要的只占其中一小部分,约20%,其余80%的尽管是多数,却是次要的,因此又称二八法则。

二八定律也同样适用于互联网用户访问,即大部分用户都是访问互联网的少量热点内容,大部分内容访问的人是很少的。因此,CDN可以通过自身的算法,只缓存热点内容就可以为大部分用户提供服务。

通过对互联网用户访问行为的进一步分析,人们发现,内容访问近似符合 Zipf 定律(Zipf’s,law)。这个定律是美国语言学家Zipf发现的,他在 1932年研究英文单词的出现频率时,发现如果把单词频率按从高到低的次序排列,每个单词出现的频率和它的符号访问排名存在简单反比关系,即:

经过对数变换,可以转换成:

这个公式可以表现成一条斜率为−a的直线。

这里r表示一个单词的出现频率的排名,P(r)表示排名为r的单词的出现频率,单词频率分布中C约等于0.1,a约等于1。

后人将这个分布称为齐普夫分布,这个分布是一个统计型的经验规律,描述了这样一个定理:只有少数英文单词经常被使用,大部分的单词很少被使用。这个定理也在很多分布里面得到了验证,比如人们的收入、互联网的网站数量和访问比例、互联网内容和访问比例(其他分布两个常数有所不同,a越大,分布越密集,对于VoD来说某些时候符合双Zipf分布)。

齐普夫分布可以看成是二八定律的数学抽象函数。根据齐普夫分布的参数调节,可以对CDN模型进行各种优化研究。

下面是某个系统内容的访问分布,图1-2 所示为热度统计曲线。可以看到,多数访问集中于少量内容上。图1-2 热度统计曲线

图1-3所示为对数坐标的访问频率曲线,源数据和图1-2一致,可以看到近似为一条直线。图1-3 访问频率曲线

根据齐普夫分布,可以针对性地对需要加速的业务系统进行分析,结合网络条件,设计CDN各级存储的比例,设计合理的缓存替换算法,从而找出最佳CDN部署方案。

1.4 内容分发基本原理

从用户使用的角度来看,CnDN是透明的,用户在使用互联网业务时,该业务是否使用了CDN承载,是不改变和影响用户的正常操作流程的。CDN操作流程如图1-4所示。

当内容提供商/运营商(CP/SP)接入 CDN(假设 CDN的URL为http://sample.ctccdn.com)时,在接入CDN成功后,把接入CDN后的URL发布到业务图1-4 CDN操作流程门户上。

用户使用业务的流程如下。(1)用户终端(如计算机)从门户上观看一个在线视频,在打开一个播放页面后,点击播放按钮,该播放按钮URL的地址实际是指向CDN的,如http://sample.ctccdn.com/001。(2)用户终端携带该URL向CDN发起播放请求,CDN通过内容分发机制把内容传送给用户。

CDN的内容分发机制是CDN的核心技术,如何高效地把内容由中心节点分发传送给用户是各大CDN厂商研究的重点内容。CDN的高效分发,指的是在有限的资源下,能实现用户就近服务最大化、网络消耗最小化。1.4.1 基于PULL的分发机制

基于PULL(下拉)的CDN分发机制如图1-5所示。

基于PULL(下拉)的CDN分发机制基本原理主要是通过把用户服务请求调度到合适的边缘节点,如果发生内容未命中,则该边缘节点向上PULL(下拉)内容,如果其上级也没有,则逐级向上下拉。其流程如下。(1)用户计算机通过门户得到访问CDN的URL后,向CDN发起服务请求,如http://sample.ctccdn.com/001。图1-5 基于PULL(下拉)的CDN分发机制(2)CDN检查访问请求的源IP地址,并根据调度策略,把用户访问请求进行重定向,返回边缘的访问地址,如http://bianyuan1.ctccdn.com/001。(3)用户计算机根据得到的重定向地址,如http://bianyuan1.ctccdn.com/001,向CDN边缘服务器发起服务请求。(4)边缘服务器检查发现本机没有“001”内容,则发起 PULL 机制,向上发起下拉“001”的请求。(5)CDN节点逐级检查是否存在“001”内容,如不存在则向上PULL内容,最终把内容下拉下来,并由边缘服务器向用户提供服务。

从基于PULL的CDN分发流程来分析,CDN的处理机制是比较简单的:CDN的主要调度策略是不需要考虑内容的分布情况的,CDN 只需要根据用户访问请求的源 IP 地址,把用户访问请求调度到合适的边缘服务器。

CDN 节点间的下拉机制也比较简单,一般下级节点只需要把所需要下拉的内容 ID,如“001”向上发起请求即可。1.4.2 基于PUSH的分发机制

基于PUSH(推)的CDN分发机制如图1-6所示。

基于PUSH(推)的CDN分发机制基本原理主要是,把用户服务请求调度到有内容的 CDN 最接近用户的节点。在这种机制下,就不会发生内容未命中的情况。其流程如下。(1)用户计算机通过门户得到访问CDN的URL后,向CDN发起服务请求,如http://sample.ctccdn.com/001。(2)CDN检查访问请求的图1-6 基于PUSH(推)的CDN分发机制源IP地址,检查“001”内容在CDN的分布情况,并根据调度策略,对用户访问请求进行重定向,返回有内容的CDN最接近用户的节点,如http://quyu1.ctccdn.com/001。用户计算机根据得到的重定向地址,http://quyu1.ctccdn.com/001,向该服务器发送服务请求。(3)CDN统计“001”的访问情况,当发现“001”内容达到热度阈值时,中心节点就主动下推内容到区域节点。(4)区域节点发现“001”内容达到热度阈值时,也主动把内容下推到边缘服务器。(5)当再有用户服务请求“001”内容时,CDN即把用户请求调度到有内容的边缘服务器。

从基于PUSH的CDN分发流程来分析,CDN的处理机制是相对较为复杂的:CDN需要了解到全网 CDN 内容的分布,能正确把用户调度到有内容的服务器上,而且 PUSH 的主动下发,需要对内容热度有完全的统计信息。1.4.3 混合分发机制

混合分发机制就是PUSH与PULL分发机制结合的一种机制。混合分发机制有多种方案,最常见的混合分发机制,是利用 PUSH 机制进行内容预推,后续的 CDN 内容分发机制则使用PULL机制。

需要支持智能分发(Push或Pull)方式,支持根据当前内容分发系统中的内容服务状况,采用推拉的方式动态地调整内容在内容分发系统中的分布,对于热点内容自动智能地将其缓存在边缘节点。

对于Push分发方式需要支持手工分发、自动分发、单个分发、批量分发、逻辑群分发(可选);至少应支持即时、定时、增量的内容分发策略;根据节点分组信息、节点IP地址段等策略进行内容分发;应支持根据访问量设置分发门限、定向分发,客户自定义等分发策略;支持分类、分级的内容分发策略;支持对内容的分发优先级、更新频率、新鲜度设定等管理功能。

第2章 内容分发网络关键技术

内容分发网络是为业务提供服务的,它可提高各种业务的内容传输的服务质量、节省骨干网络带宽,所以分析内容分发网络的关键技术离不开各种业务的特点。下面以目前对内容分发网络需求最旺盛的IPTV业务为例,分析内容分发网络关键技术。

2.1 IPTV业务服务流程示例

IPTV点播业务流程如图2-1所示。

流程说明如下。(1)IPTV终端开机时,EPG或从首页进入其他页面时,终端需向EPG服务器发出页面下载请求。(2)EPG检查用户请求,根据部署的不同,可能还需要向后台发起用户合法性检查。(3)根据用户的ID或IP返回相应的分级EPG页面。(4)用户浏览 EPG,当看到感兴趣的节目时,点击订购,则终端向 EPG 发起订购请求。(5)EPG检查用户请求,向后台转发订购信息,通过后,生成防盗链信息。(6)终端下载含指向CDN的播放页面。(7)用户点击播放键,终端客户端启动,根据播放页面的链接向 CDN RR(Request Routing)发起播放请求。(8)CDN RR根据用户 IP以及调度策略产生重定向地址。(9)CDN RR向终端返回重定向地址。(10)终端根据CDN返回的重定向地址重新发起播放请求。(11)CDN服务器检查本地有没有该内容,并检查负载情况。(12)如果CDN服务器本地没有该内容,则CDN服务器向上级CDN服务器下拉内容。(13)CDN服务器边下拉边为用户提供流媒体播放服务。(14)CDN服务器统计该内容的热度,决定是否缓存该内容。图2-1 IPTV点播业务流程

2.2 内容分发网络关键技术

由上节IPTV业务服务流程可以看出,使用CDN分发的业务流程与未使用CDN分发的流程相比,多了几次重定向。由于应用层重定向是由客户端的软件自动完成的,完全不需要人工的参与,因此从操作的步骤来看,用户是完全感觉不到是否使用了 CDN进行加速的。

但对于许多业务而言,CDN又是必需的。从上节的IPTV的业务流程来看,用户终端的播放请求经过了多次重定向,目的就是为用户终端找到一个最优的服务器,从而保证用户访问的质量。

通过IPTV的示例,可以归纳出CDN使用的一些关键技术。1.内容统一编码(编址)

上节IPTV终端从EPG上获取了节目在CDN的访问链接后,由CDN RR服务器为其选择合适的服务器为其服务。所以每一个访问的节目在 CDN 进行存储分发时,都应有一个唯一的ID,这个唯一的ID可以唯一地标识一个节目内容。这里带来一个问题,CDN不是为单个CP/SP或单个业务服务。CDN RR需要对接很多个门户系统,这些门户系统的节目 ID是没有统一规定的,也没有办法统一规定。如何解决内容统一编码是CDN在总体架构设计时首先要考虑的问题。

内容统一编码的解决办法总体而言有两种思路。(1)内容在进入CDN前进行统一的编码,即所有由CDN承接加速的业务都应按预先制定好的规律进行统一的编码。使用这种方式编码的局限性很明显:CDN对业务提出了统一编码的要求,对于已经建好的业务系统来说,是很难进行内容的统一再编码的。(2)CDN不要求内容预先统一ID的编码,而是对每个接入的业务或CP/SP内容增加唯一标识。这个标识是CDN统一增加的,可以保证在CDN的唯一性,当然每个业务或CP/SP的内容ID也是唯一的。2.用户请求重定向调度

上节IPTV终端访问的示例中,CDN RR要利用重定向调度技术来把用户的请求调度到最优的服务器上。用户请求重定向调度过程中,RR 应能通过判断服务器的负载,包括CPU占用、带宽占用等数据,决定服务器的可用性,同时能判断用户(访问者)与服务器间的链路状况,选择链路状况最好的服务器。因此RR是对服务器和链路进行综合判断来决定由哪个地点的服务器来提供服务,实现异地服务器群服务质量的保证。目前用户请求重定向调度的技术主要有两种。(1)基于DNS重定向

当用户在浏览器访问时,首先要进行DNS解析,即查找出IP地址,然后用户与该IP地址建立TCP连接访问网站内容,DNS流量分配方式工作在DNS解析过程中,通过在域的DNS服务器上增加一条NS记录(Name Server记录是域名服务器记录),NS记录指向位于某一全局负载均衡设备(如CDN RR)的 IP地址,对的解析将由该RR负责。(2)基于网络就近性判断

与方式一相比,全局负载均衡策略的不同点也是最大的优点在于:省中心节点的CDN RR不仅需要解析相应的域名,同时还根据用户真实IP地址来进行最优站点计算和判断,最终将用户流量重定向到相应的服务节点上。本方式主要利用应用层的重定向把用户请求调度到网络就近的节点。如何判定“网络就近”是CDN提高质量与效率的很关键的一环。3.本地负载均衡技术

IPTV示例中,当用户已经被重定向到了媒体服务器时,媒体服务器其实还有一个关键的工作要处理,即进行本地负载均衡。本地负载均衡技术是对本地服务器群进行负载均衡处理。该技术通过对服务器进行性能优化,使流量能够平均分配在服务器群中的各个服务器上。

CDN的媒体服务器其实在部署时往往是一个服务器群组,用户的请求最终需要调度到具体的服务器上,这就需要使用到本地负载均衡技术。

负载均衡提供了一种廉价、有效、透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力,提高网络的灵活性和可用性。

负载均衡技术具有如下优点。(1)高性能:通过调度算法,将客户端请求合理地均衡到后端各台服务器上,消除系统可能存在的瓶颈。(2)可扩展性:当服务的负载增长时,系统能被扩展以满足需求,且不降低服务质量。(3)高可用性:通过健康性检测功能,能实时监测应用服务器的状态,保证在部分硬件和软件发生故障的情况下,整个系统的服务仍然可用。(4)透明性:高效地使由多个独立计算机组成的松耦合的服务系统构成一个虚服务器;客户端应用程序与服务系统交互时,就像与一台高性能、高可用的服务器交互一样,客户端无须作任何修改。部分服务器的切入和切出不会中断服务,而用户觉察不到这些变化。4.缓存替换算法

IPTV示例的业务流程中,在流媒体服务节点为用户提供服务的同时,也同时计算该内容的热度,并根据热度及磁盘利用率来更新其缓存的内容。这种更新算法就是缓存替换算法。

缓存替换算法最传统的包括LRU、MRU、LFU等。

LRU(Least Recently Used,最近最少使用)算法,是基于这样一个事实:已经很久没有使用的内容很可能在未来较长的一段时间内不会被用到。因此,只需要在每次进行缓存替换时,找到最近最少使用的那个内容,并将其删除,这样就空出空间给新的热点内容。这就是LRU算法的基本思路。

MRU(Most Recently Used,最近最常使用)法算,MRU算法与LRU算法基本原理是一样的,但处理方法就正好相反。MRU算法基于的事实是最近最常使用的内容未来较长一段时间也是会经常被用到的。所以,在每次进行缓存替换时,找到最近最常使用的那些内容,把其后不常使用的内容删除,这样就空出空间给新的热点内容了。这就是MRU算法的基本思路。

LFU(Least Frequently Used,最少频率使用)算法,LFU算法与LRU算法很相似,两者的区别在于LFU算法是统计全部使用时间内的总使用次数,而LRU算法只统计近期频率,也即LRU算法是计算单位时间内的使用次数,而LFU算法是计算总时间内的使用次数。5.媒体服务

CDN最终为用户服务是由边缘媒体服务器提供的。媒体服务包括Web服务、流媒体服务、下载服务,等等。上节示例CDN为用户提供的是IPTV服务,属于流媒体服务的一种。

当用户请求的内容在媒体服务器存在时,由媒体服务器向用户发送媒体流。当用户请求的内容在媒体服务器不存在时,流媒体服务器边下载内容边为用户提供服务。

媒体服务的种类多样,运营商不可能为每一种媒体服务都建设一个 CDN,所以 CDN往往可以提供多种媒体服务能力。而由于各媒体服务使用的媒体服务的控制协议、编码格式、媒体封装等都不一样,因此在设计CDN时需要对这些媒体服务特性进行归类,分析异同点,从而找出可以在同一CDN中提供加速服务的业务类型。

2.3 内容统一ID

CDN需要依靠内容ID来定位内容,并为用户提供服务。CDN的内容ID的唯一性很重要,因为如果出现了重复的内容ID,则CDN将会把错误的内容发送给用户。2.3.1 统一资源定位符

当看到统一内容 ID,相信很多读者会想到统一资源定位符(URL,Uniform/Universal Resource Locator)。URL是因特网上标准的资源的地址(Address)。它最初是由蒂姆·伯纳斯·李发明用来作为万维网的地址的。现在它已经被万维网联盟编制为因特网标准 RFC 1738了。URL使用广泛,而且有一套机制保证其不会重复。

互联网上的每一个网页、每一个资源都具有一个唯一的名称标识,通常称之为URL地址。URL一般由几部分组成,即协议类型、主机名、路径及文件名。协议类型主要有HTTP、FTP、Gopher、Telnet、File等几种。(1)protocol(协议):指定使用的传输协议。(2)hostname(主机名):是指存放资源的服务器的域名系统(DNS)主机名或IP地址。有时,在主机名前也可以包含连接到服务器所需的用户名和密码(格式为username:password)。(3)port(端口号):整数,是可选参数,省略时使用方案的默认端口,各种传输协议都有默认的端口号,如http的默认端口为80。如果输入时省略,则使用默认端口号。有时候出于安全或其他考虑,可以在服务器上对端口进行重定义,即采用非标准端口号,此时,URL中就不能省略端口号这一项。(4)path(路径):由零或多个“/”符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。(5)内容ID:由字符串组成,一般用来表示该路径下的唯一文件标识。

除了以上部分的内容外,URL还可以包括parameters(参数),这是用于指定特殊参数的可选项。如查询参数,?query(查询),用于给动态网页(如使用CGI、ISAPI、PHP/JSP/ASP/ASP.NET等技术制作的网页)传递参数,可有多个参数,用“&”符号隔开,每个参数的名和值用“=”符号隔开。2.3.2 CDN内容统一 ID

前节介绍了统一资源定位符(URL),读者自然会想到,直接使用统一资源定位符(URL)作为CDN内容的统一ID不就是最好的方案吗?

许多CDN确实是直接使用URL作为其CDN的内容ID的。这带来的好处是很明显的:CDN不再需要进行设置,由URL的唯一性特性来保证CDN内容ID的唯一性。但这种方法有以下两个主要缺点。(1)内容ID没有可以被CDN利用来进行分类的信息,即内容ID没有CDN可利用的信息。在实际的应用中,CDN对内容加速时,如果能根据内容的一些属性提供一些特殊的功能,对CDN总体性能十分有用。(2)不适合没有使用URL标识的内容。在许多应用场景,内容接入CDN是通过内容管理系统注入的,往往这些内容只在内容管理系统标识唯一,没有使用URL作为标识。

所以CDN内容统一ID单纯使用URL标识并不是一个很好的办法。考虑到CDN需要支持多源CMS和在同一CMS上存在多屏内容注入的需求,可考虑引入二元组UniContentID来唯一标识不同CMS注入的不同内容域的唯一的内容文件。以下为一种CDN内容统一ID方案。

UniContentID 可定义为二元组(ProviderID,ContentID),是 CDN 全网中进行全局调度的唯一内容标识。ProviderID定义为每个CMS的不同内容域在CDN中的唯一标识,需在CDN全网中进行配置。CDN为每个CMS的内容域开户时,需要在接入点设置配置表。

用户所有的媒体服务请求在进入CDN时,均首先指向RR。RR根据调度策略(如基于用户源IP调度、负载等)把用户请求调度到相应的媒体服务节点。RR把用户请求调度使用RTSP/HTTP等重定向,具体要求如下。

RR判断收到请求的host值为域名并且这个域名不是自己RR的域名,那么RR在调度完成后构造重定向URL,在该URL前添加下级RR或者SLB地址+“/”+host域名,然后返回给终端该重定向URL。

如:终端请求到RR的URL为http://sp域名/xxx/xxx?xxx……,RR返回终端的URL为http://下级RRip/sp域名/xxx/xxx?xxx……。

SLB/媒体服务器如果在收到的请求URL的开头发现带有自己的域名或IP地址,则剥离掉自己的域名或 IP 地址后去匹配服务配置表中的“PlaybackURLprefix”字段,如果获得配置表里唯一确定的一条记录,则可以直接查询到ProviderID,再通过“ContentURLParseRule”配置的解析规则解析出ContentID,然后以(ProviderID,ContentID)一起唯一确定内容。ContentID长度为不超过512Byte。

如:终端请求到RR的URL为http://RR域名/xxx/xxx?xxx……,RR返回终端的URL为http://下级RRip/xxx/xxx?xxx……。

2.4 用户请求重定向调度

内容服务的请求路由机制(Request Routing System,RRS)是CDN网络规划中最关键的因素之一,它的设计直接关系到CDN的核心思想“就近服务”能否实现。而全局负载均衡策略又是整个内容请求路由机制设计的基石,它的主要内容包括就近性判断和服务重定向机制,全局负载均衡的成功与否直接关系到最终用户的访问是否成功与质量。2.4.1 设计原则

内容路由的设计涉及就近性判断、重定向机制和流量分配策略等问题。内容路由机制设计需考虑以下主要因素。(1)流媒体服务的特征要求内容请求必须(或最大限度地)由距用户最近的POP点提供服务,只有当该节点无法提供服务能力时,才由确定为次佳节点提供备份服务。这就要求内容路由机制以静态内容请求路由为主,并有确定的备份请求路由方案。(2)以静态内容路由为主,辅助于确定的备份路由策略同时是网络管理和性能调优的需求。(3)请求路由的设计必须考虑CDN作为应用支撑平台,必须支持不同的ICP的服务提供模式,即无论ICP是否采用域名来提供服务,CDN都应有相应的内容请求路由机制保证用户能得到就近的边缘服务。ICP在提供流媒体服务时,不仅有采用域名的,也有许多情况下直接给出IP地址的方式提供服务。这就要求CDN的内容请求路由机制要支持直接给出IP地址的服务模式。2.4.2 基于DNS重定向

图2-2所示为基于DNS重定向的全局负载均衡策略。图2-2 基于DNS重定向的全局负载均衡策略

当用户在浏览器访问video.site.com时,首先要进行DNS解析,即查找出video.site.com的IP地址,然后用户与该IP地址建立TCP连接访问网站内容,DNS流量分配方式工作在DNS解析过程中。通过在域site.com的DNS服务器上增加一条NS记录,即video.site.com的NS记录指向位于某一CDN RR设备的控制IP地址,对video.site.com的解析将由该CDN RR负责,由DNS的工作过程可以知道如下内容。(1)用户将DNS请求发到其本地DNS服务器,该DNS服务器通过一系列的DNS查询得知,video.site.com的授权解析服务器是CDN RR。(2)CDN RR收到DNS查询请求后,将video.site.com解析为经过计算后所选定的最优站点的IP地址(负载不重、距离用户最近),这个地址可能是主站点IP,也可能是分站点IP地址。(3)各分布节点接受用户请求并最终将流媒体内容发送给用户。2.4.3 基于网络就近性判断

图2-3所示为基于网络就近性判断示意图。图2-3 基于网络就近性判断示意图

当用户访问已经加入CDN服务的流媒体服务网站时,CDN RR首先会通过TCP/IP握手获得客户的IP,并在静态最近路径表中查找该IP所属的网段是否存在,如存在该客户即被透明地导向到静态最近路径表中所设定的优先级最高的POP点。如没有该记录,则CDN RR会以同样方式去查动态最近路径表,如仍没有记录CDN RR会通知各POP点一同去测各POP点离用户的距离及时延,并通过协议报告,确定最优站点,然后通过HTTP重定向技术来实现将用户导向到最佳CDN节点,与此同时,该IP地址所在的C类网段会被添加至动态最近路径表,供今后使用;CDN的服务器(节点上的高速缓存)负责将用户请求的内容提供给用户。2.4.4 用户请求重定向调度方式对比

基于DNS重定向与基于网络就近性判断调度方式各有优缺点,现总结如下。1.基于DNS重定向的优缺点

该方式的特点在于整个就近性判断和重定向过程都发生在用户请求域名解析时,而非用户真正请求服务器连接时。该策略的优点在于:(1)实现简单,内容请求路由简捷,核心(骨干)节点负载均衡设备的负载情况较基于网络就近性判断的方式理想。(2)并不依赖于分发内容类型及相应的协议,无论是基于Web、MMS、RTSP等分发都毫无影响。

在CDN的全局负载均衡方案的应用中,如果只采用DNS流量分配方式,则存在着如下几个潜在问题。(1)DNS解析记录信息可能被整个DNS解析行程中的任何一个DNS服务器Cache,这会导致全局的DNS流量分配失败,因为这个DNS服务器不会再将DNS的解析请求转发给WSD-NP,从而用户将不能得到最新的最优站点的IP地址。(2)就近性判断是对用户本地的DNS服务器进行的,而不是用户本身。如果用户客户端设定的Local DNS服务器不是距离用户最近的DNS服务器,则用户无法得到就近服务。(3)无法向支持直接给出IP地址的业务提供CDN服务。2.基于网络就近性判断的优缺点

该方式的特点在于可以根据用户的真实IP地址进行就近性判断,方案的优点在于:(1)利用用户IP编址的规律,可以真正做到根据“网络的就近性”分配流量,可以进行CDN的流量管理和调优。(2)可以对用户访问请求实现完备的、细颗粒的策略控制。(3)与基于DNS重定向的策略可以无缝结合,实现合理、完善内容请求路由。(4)支持不同的ICP接入CDN的业务模式,服务割接非常快捷。

本方式的不足之处在于:(1)由于此方式的就近性判断与重定向是当用户与核心节点VIP建立连接时发生的,故对于相应的分发内容类型和相关协议有所限制,如针对HTTP可以采用通用的302协议重定向;但对于类似于MMS这类私有协议就无法通过通用做法来实现。(2)随着访问用户的增加和网络规模的扩张,核心点的压力会较大,因此核心点设备的冗余设计变得非常关键。

2.5 负载均衡技术

2.5.1 什么是负载均衡1.负载均衡的介绍

所谓负载,一般指处理节点的CPU负载、MEM利用率、网络负载、可用的缓冲区、应用系统负载、用户数量以及其他的各种系统资源的当前状态信息。所谓负载均衡,是指处理节点的负载信息通过某代理软件传递给均衡器,由均衡器做出决策并对负载进行动态分配,从而使集群中各处理节点的负载相对趋于平衡。

由于CDN同一节点内往往包括多台服务器,为取得服务器性能的最优,需要应用负载均衡技术。当用户访问量较大时,单台缓存设备在处理繁重的内容分发任务时会在处理能力、吞吐能力等方面形成严重的性能瓶颈。在这种情况下,缓存服务器集群就是解决相关问题的有效手段。在用户和内容服务器之间部署缓存服务器集群,能够充分利用集群中各个节点形成的强大的计算能力,同时各节点可以被并行访问,能够有效改善系统吞吐率。2.负载均衡两方面的含义

首先,将大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间;其次,单个重负载的运算分担到多台节点设备上作并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高。负载均衡能够均衡所有的服务器和应用之间的通信负载,根据实时响应时间进行判断,将任务交由负载最轻的服务器来处理,以实现真正的智能通信管理和最佳的服务性能。

负载均衡和调度的任务是使得任务在集群各节点间得到尽可能合理的分摊处理,从而达到高效利用系统资源的目的。一般将组成集群的元素分为处理节点和均衡节点两类。处理节点的处理器负载、应用系统负载、用户数量、可用的网络缓冲区、可用的系统内存或者其他的与系统资源有关的负载状态信息通过节点上的代理软件传递给均衡节点,由均衡节点做出决策。负载均衡的一个要点是节点的资源使用状态。由于该类系统的最终目的是使系统中各节点的资源使用状态尽可能达到平均,因此准确地把握节点负载状况,并根据各个节点当前的资源使用状态动态调整负载均衡的流量分布,是负载均衡与调度考虑的关键问题。

负载均衡通过重新分配系统负载,使各服务器间负载达到相对均衡,从而降低任务的响应时间,提高系统资源的利用率,使系统的性能得以提高。它要解决的问题主要有:(1)为用户提供更好的访问质量。(2)提高服务器响应速度。(3)提高服务器及其他资源的利用效率。(4)避免了网络关键部位出现单点失效。(5)解决网络拥塞问题,服务就近提供,实现地理位置无关性。3.负载均衡方案的选择与评估

负载均衡问题的首要环节就是如何衡量服务器性能和当前的负载均衡状况,给出合理的负载均衡指标。衡量服务器性能和当前运行情况的有效衡量指标包括:(1)CPU利用率。(2)内存使用率。(3)带宽利用率。(4)硬盘IO吞吐率和网络IO吞吐率。(5)单位时间内完成的服务次数。(6)单位时间内连接客户数。(7)完成一个请求任务所用的响应时间。

理想的负载指标应满足以下条件:测量开销低,能体现所有竞争资源上的负载,各负载指标在测量及控制上彼此独立。

在引入负载均衡方案时不管是采用哪种方式都需要考虑以下问题:(1)采用负载均衡方案后,服务器接收和转发数据报的速度及负载均衡的整体检测能力是首先要考虑的重点问题。(2)负载均衡方案应能满足网络流量不断增长的需求,能均衡不同操作系统和硬件平台之间的负载,能均衡不同流量的负载。(3)负载均衡设备自身出现故障时应该有良好的冗余解决方案,保证可用性,避免系统遭受重大损失。(4)采用灵活、直观和安全的管理方式,这样便于安装、配置、维护和监控,提高工作效率,避免差错。2.5.2 负载均衡的原理1.负载均衡的工作原理

负载均衡的作用就像轮流值日制度,把任务分给大家来完成,以免让一个人过度劳累。但是与轮流值日制度不同的是,它是一种动态均衡,通过一些工具实时地分析数据包,掌握网络中的数据流量状况,把任务合理分配出去。对于不同的应用环境,使用的均衡策略是不同的,所以均衡策略也就有了多种多样的形式。广义上的负载均衡既可以设置专门的网关、负载均衡器,也可以通过一些专用软件与协议来实现。在OSI 7层协议模型中都有相应的负载均衡策略,在数据链路层上实现负载均衡的原理是根据数据包的目的 MAC 地址选择不同的路径;在网络层上可利用基于IP地址的分配方式将数据流疏通到多个节点;而传输层和应用层的交换,本身便是一种基于访问流量的控制方式,能够实现负载均衡。

在高性能计算领域,某些并行群集系统可以达到如此高的带宽和低延迟,其原因是它们通常绕过使用网络协议。虽然网际协议对于广域网很重要,但它包含了太多的开销,而这些开销在节点相互已知的封闭网络群集中是不必要的。2.负载状况的获取

由于负载均衡分配器根据所有服务器的负载情况来决定新的用户访问请求的取舍,这要求每个服务器必须将自己的当前负载及时上报至分配器。探知负载状况的技术主要有3种。(1)利用Agent技术使用网管协议SNMP。在需要的服务器上运行设计的Agent,定时通知分配器,从而得到服务器的确切情况。(2)第三方的软件。有一些第三方开发的软件可以完成这种工作,需要分配器有相应的接口,从而可以调整分配的结果。(3)自己开发的软件去主动获取。最简单的集成方法就是自己去开发,由分配器去探测服务器的负载状况。2.5.3 负载均衡的实现层次1.基于客户端的负载均衡

这种方法指的是在网络的客户端运行特定的程序,该程序通过定期或不定期地收集服务器群的运行参数:CPU占用情况、磁盘IO、内存等动态信息,再根据某种选择策略,找到可以提供服务的最佳服务器,将本地的应用请求发向它。

该方法需要每个客户端程序均具备一定的服务器集群知识,进而以负载均衡的方式将请求发送到不同的服务器,比如,在Berkeley研究的SmartClient中,服务提供一个JavaApplet在客户端浏览器中运行,Applet向各个服务器请求收集服务器的负载等信息,再根据这些信息将客户的请求发到相应的服务器;当服务器没有响应时,Applet向另一个服务器转发请求,实现高可用性。

该方法的缺点是透明性不够完善,需要每个客户端程序具备集群功能,不具有普遍的适用性。2.基于服务器端的负载均衡

将客户端的负载均衡层移植到某一个中间平台,形成三层结构,则客户端应用可以不作特殊的修改,透明地通过中间层应用服务器将请求均衡到相应的服务节点。比较常见的实现手段就是反向代理技术。3.高层协议内容交换

除了上述的负载均衡方式之外,还有在协议内部支持负载均衡能力的技术,即URL交换或 7 层交换,提供了一种对访问流量的高层控制方式。Web 内容交换技术检查所有的HTTP报头,根据报头内的信息来执行负载均衡的决策。4.网络接入协议交换

当前负载均衡主要用于解决服务器的处理能力不足的问题,所以并不能充分发挥交换机带来的高网络带宽的优点,使用基于操作系统的第4层交换技术因此孕育而生。通过开放源码的Linux,将第4层交换的核心功能做在系统的核心层,能够在相对高效稳定的核心空间进行IP分组的数据处理工作。2.5.4 负载均衡的技术分类

目前有许多不同的负载均衡技术用以满足不同的应用需求,如软/硬件负载均衡、本地/全局负载均衡、链路聚合技术等。1.软/硬件负载均衡

软件负载均衡解决方案,是指在一台或多台服务器相应的操作系统上,安装一个或多个附加软件来实现负载均衡,如DNS负载均衡等。它的优点是基于特定环境、配置简单、使用灵活、成本低廉,可以满足一般的负载均衡需求。

硬件负载均衡解决方案,是直接在服务器和外部网络间安装负载均衡设备,这种设备通常被称为负载均衡器。由于专门的设备完成专门的任务,独立于操作系统,整体性能得到大量提高,加上多样化的负载均衡策略,智能化的流量管理,可达到最佳的负载均衡需求。

一般而言,硬件负载均衡在功能、性能上优于软件方式,不过成本昂贵。2.全局/本地负载均衡

负载均衡从其应用的地理结构上分为本地负载均衡和全局负载均衡。本地负载均衡指对本地的服务器群作负载均衡,全局负载均衡指对分别放置在不同的地理位置、有不同网络结构的服务器群间作负载均衡。

本地负载均衡有效地解决本地集群数据流量过大、网络负荷过重的问题,并且无需花费昂贵开支购置性能卓越的服务器,可充分利用现有设备,避免服务器单点故障造成数据流量的损失。其通过灵活多样的均衡策略把数据流量合理地分配给服务器群内的服务器共同负担。即使是再给现有服务器扩充升级,也只是简单地增加一个新的服务器到服务群中,而无需改变现有网络结构、停止现有的服务。

全局负载均衡主要用于在多区域拥有自己服务器的站点,为了使全球用户只以一个IP地址或域名就能访问到离自己最近的服务器,从而获得最快的访问速度;也可用于子公司分散站点分布广的大公司通过Internet来达到资源统一合理分配的目的。3.链路聚合技术

随着带宽增加,数据流量不断增大,网络核心部分的数据接口将面临瓶颈问题,原有的单一线路将很难满足需求,而且线路的升级又过于昂贵甚至难以实现,这时就可以考虑采用链路聚合技术。链路聚合技术将多条物理链路当作一条单一的聚合逻辑链路使用,网络数据流量由聚合逻辑链路中所有物理链路共同承担。由此在逻辑上增大了链路的容量,使其能满足带宽增加的需求。2.5.5 负载均衡的算法

负载均衡算法是负载均衡技术的核心内容。负载均衡的研究分为两个方向,即静态负载均衡和动态负载均衡。静态负载均衡是采用某种分配算法在任务执行前即确定分配到各个节点的方案,其分配基于系统平均情况,不考虑系统瞬时状态变化,基于对负载的计算量、通信关系和依赖关系,以及计算机集群本身的状况等先验知识或预测形成远程执行进程表。动态负载均衡可根据当前运行状态自适应决定负载均衡策略,动态方法是通过集群系统的实时负载信息,动态地将负载在各个计算节点进行分配和调整。

考虑到服务请求的不同类型、服务器的不同处理能力、网络状况以及随机选择造成的负载分配不均匀等问题,为了更加合理地把负载分配给内部的多个服务器,就需要应用相应的、能够正确反映各个服务器处理能力及网络状态的负载均衡算法。(1)轮转调度(Round-Robin Scheduling)算法

假设所有服务器处理性能相同,将外部请求按顺序轮流分配到集群中的服务器上。这种算法的优点是其简洁性,无需记录当前所有连接的状态,是一种无状态调度算法,但是不适用于服务器组中处理性能不一的情况,而且当请求服务时间变化较大时,容易导致服务器间的负载不平衡。(2)加权轮转调度(Weighted Round-Robin Scheduling)算法

为保证处理能力强的服务器处理更多的访问流量,用相应的权值表示服务器的处理性能,将请求数目按权值的比例分配给各服务器。调度器可以自动询问服务器的负载情况,并动态地调整其权值。这种均衡算法也是一种无状态调度算法,但可以解决服务器间性能不一的情况,能确保高性能的服务器得到更多的使用率,避免低性能的服务器负载过重。(3)随机均衡调度(Random Scheduling)算法

把来自网络的请求随机分配给各个服务器。(4)加权随机均衡调度(Weighted Random Scheduling)算法

此种均衡算法类似于加权轮转算法,不过在处理请求分担时是个随机选择的过程。(5)最小连接调度(Least-Connection Scheduling)算法

该算法是一种动态调度算法,通过服务器中当前所活跃的连接数来估计服务器的负载情况,把新的连接请求分配到当前连接数最小的服务器。但是,当各个服务器的处理能力不同时,该算法并不理想。(6)加权最小连接调度(Weighted Least-Connection Scheduling)算法

用相应的权值表示各个服务器的处理性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询服务器的负载情况,并动态地调整其权值。(7)目标地址散列调度(Destination Hashing Scheduling)算法

根据请求的目标 IP地址,将其作为散列键(Hash Key),通过散列(Hash)函数将这个目标IP地址映射到一台可用且未超载的服务器,将请求发送到该服务器,属于静态映射算法。(8)源地址散列调度(Source Hashing Scheduling)算法

与目标地址散列调度算法相反,根据请求的源 IP地址,作为散列键(Hash Key),通过散列函数将请求的源IP地址映射到一台可用且未超的服务器,将请求发送到该服务器。除了将请求的目标IP地址换成请求的源IP地址,该算法采用的散列函数与目标地址散列调度算法相同,算法流程与目标地址散列调度算法的基本相似。在实际应用中,源地址散列调度和目标地址散列调度可以结合使用在防火墙集群中,它们可以保证整个系统的唯一出入口。(9)基于局部性的最少链接调度(Locality-Based Least Connections Scheduling)算法

找出请求的目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;否则用“最少链接”的原则选出一个可用的服务器。算法的设计目标是在服务器的负载基本平衡情况下将相同目标IP地址的请求调度到同一台服务器,来提高各台服务器的访问局部性和主存Cache命中率。(10)带复制的基于局部性最少链接调度(Locality-Based Least Connections with Replication Scheduling)算法

与基于局部性的最少链接调度算法的不同之处在于,它要维护从一个目标IP地址到一组服务器的映射,而不是从一个目标IP地址到一台服务器的映射。该算法找出请求的目标IP地址对应的服务器组,按“最少链接”原则从服务器组中选出一台服务器,若服务器可用且没有超载,将请求发送到该服务器;否则按“最少链接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,再将请求发送到该服务器。另外,若该服务器组有一段时间未被修改,则将最忙的服务器从服务器组中删除,以降低复制的程度。(11)响应速度均衡调度(Response Time Scheduling)算法

负载均衡设备对内部各服务器发出一个探测请求,然后由对探测请求响应最快的一台服务器来响应客户端的服务请求。(12)处理能力均衡调度(Processing Capacity Scheduling)算法

负载均衡设备记录集群内部处理负荷(根据服务器CPU型号、CPU数量、内存大小及当前连接数等换算而成),将服务请求分配给负荷最轻的服务器。由于考虑到了内部服务器的处理能力及当前网络运行状况等不同情形,因此这种均衡算法相对来说更加精确,尤其适合运用到第7层(应用层)负载均衡的情况,但附加开销也较大。(13)DNS均衡调度(DNS Scheduling)算法

分处在不同地理位置的负载均衡设备,收到同一个客户端的域名解析请求,并在同一时间内,把此域名解析成各自相对应服务器的IP地址,并返回给客户端,客户端将以最先收到的域名解析IP地址来继续请求服务,而忽略其他的IP地址响应。

还有一些其他的均衡算法,在此不一一列举。总的说来,各种算法都有其优缺点。均衡效果越好,算法越复杂,考虑的因素越多,附加的开销就越大。在能满足负载分配均衡要求的情况下,应尽可能使用简单的算法,以提高均衡器的工作效率,来避免负载均衡器的瓶颈效应。

2.6 缓存替换算法

以下所讨论的缓存替换算法,是指在具有多个节点的内容分发网络中,单个节点的内容替换算法。若无特别说明,节点可能包括多台物理设备和多个IP,但在某一服务区域(一般指地理区域)作为整体对外提供内容;缓存是指长时间保存在各节点某一物理设备的内容,若无特别说明,缓存或内容均可能是指文档、照片、视频及其他格式的存储内容。

在以下缓存算法举例中,内容格式一般以视频为例。2.6.1 CDN缓存替换概述

从操作系统内存置换到CPU内存读取,缓存的应用无处不在,在CDN中运用缓存技术同样可以提高CDN的运行效率。正如缓存的其他应用一样,CDN中缓存算法的使用也大致相同。基于CDN的架构,不可能把所有资源都放在一个低层服务器上,需要对资源进行选择,并将选择出来的资源放到缓存中,缓存算法便是对这些资源进行选择和更新的过程。缓存,相当于部分原始数据的一个池,这些数据会通过缓存算法时不时地进行更新,以便很好地响应用户的请求。CDN缓存的工作过程是这样的:用户发出一个请求,如果请求被命中,缓存将对用户的请求进行响应,返回其请求的数据;如果未被命中,缓存向上拉取用户需要的数据,并对其存储的数据进行替换。无论是否命中,缓存算法都应该更新每个资源对应的“分数”,这个分数将决定该资源能否继续呆在缓存之中。缓存算法的意义在于,根据用户的请求习惯,对缓存中的数据进行更新,使用户请求的命中率提高,或是从另一种角度看,缩短整体响应用户请求延时,并同时极大地提高高峰时间网络所能承受的访问容量。一个良好的缓存算法,不仅重视命中率,还考虑相应的存储成本、运行效率等众多因素。总之,缓存算法是基于用户请求情况,对缓存中的数据进行筛选的过程,其目的在于提高响应用户请求的效率。

早期的缓存技术可用来节省带宽以减少网络拥塞,但它们不可避免地引起了以下问题:一是用户有可能得不到网页的及时更新,因为缓存区不可能自动跟踪网页的变化;二是为得到最新网页,用户访问时需要首先查询真正的服务器上的内容,这将导致访问速度的降低。因此,需要对缓存算法进行改进。缓存算法发展至今,已有一些效果令人较为满意的成果,从一开始的包括基于访问频率的算法到基于访问时间的算法再慢慢完善,现在已有了访问时间与访问频率相结合等较为理想的算法。基于访问频率的算法,通过在某段时间内对资源被访问的次数进行统计,以此来判断该资源接下来会不会被访问。这类算法理所当然最容易理解,因此也最容易被接受,包括LFU(Least Frequently Used),以及在此基础上发展起来的 2Q(2 Queues)、LIRS(Low Inter-Reference Recency Set)等算法;基于访问时间的算法,通过记录资源访问的时间,以时间作判断依据,包括LRU(Least Recently Used)算法;访问时间与访问频率相结合的算法,综合了基于访问频率和访问时间的算法,包括LRFU(Least Recently Frequently Used)、FBR(Frequently Based Replacement)等算法。当然,因为现实当中有各种各样的因素,这些缓存算法各自或多或少地存在一些优点和缺点,所以没有一种缓存算法能完美解决所有的缓存问题。结合实际情况,通过对已知的缓存算法进行改善,使之能切合我们的目标,才是关键所在。2.6.2 CDN缓存算法介绍

目前CDN缓存算法主要分为访问频率、访问时间以及由此衍生出的变种算法,下面将介绍这几种算法。(1)“最近最少使用”算法;(2)“最近最少使用”算法的变种;(3)“最少频率使用”替换算法;(4)“基于分数因子”的缓存算法;(5)“块等级”缓存算法。1.“最近最少使用(LRU)”算法“最近最少使用(Least Recently Used)”算法,顾名思义,缓存中将保留最近一段时间内经常使用的数据,而淘汰最近未被经常使用的数据。LRU基于这样一个事实:在最近一段时间内经常被使用的数据在未来一段时间内也会被使用,而未被经常使用的数据在未来很长时间内不会被用到。因此,在替换内容时只需找出最近最少使用的那些数据进行替换即可。

LRU在缓存中维持一个内容列表,存储最近被使用的数据。当有数据被请求时,它将跃至第一位。如果被请求的数据在列表中,即已经在缓存中存储(比如排在第k位),那么排在 k 之前的数据位置将拉到向后一位,没有内容会被淘汰。如果被请求的数据不在列表中,它将被提取到缓存中,跃至第一位的同时,其他内容的位置顺次拉后一位,排在最后一位的内容将被淘汰。

例如,假设有1、2、3、4、5共5个内容,底层服务器只够容纳3个内容,初始时为1、2、3这3个内容。第一个用户请求内容2,内容2在服务器中存在,内容次序改为2、1、3;第二个用户请求内容4,内容4在缓存中不存在,缓存向高级服务器拉取内容4,并将内容4提至第一位,次序变为4、2、1,原来的内容3将被淘汰。“最近最少使用”算法遵循这样的一个原则:最近被访问的内容在未来访问的几率增大,于是才出现了经典的“最近最少使用”算法。“最近最少使用”算法的提出是显然的,它基于内容访问热度来对内容进行取舍,留下访问次数多的,剔除访问次数少的,这符合多数人的设想。然而,不难看出,该算法,具体的操作过程仍然需要研究和改进。经典的“最近最少使用”算法单纯地从最近的访问次数出发,直接将最近一次被访问的内容的优先级提至最高。然而,最近被访问的内容不一定是最热门的,这将导致有些非热门的内容次序将较高,影响用户访问内容和服务器响应用户的效率。因此,从这种角度上来看,这种算法的效率很低,需要对其进行改进。2.“最近最少使用”算法的变种“最近最少使用”算法的一个最大缺陷是将最近访问的内容的次序直接提至第1位,这是不合理的,因为最近被使用的内容不一定是最受欢迎的,提至第1位的做法略为不妥。于是,从这个角度出发,可以对该算法进行一些改进,因此产生出了“最近最少使用”算法的变种。

在“最近最少使用”算法中,每当用户访问一个内容时,该内容的次序提至第1位,而在该算法的变种中,被访问的内容的次序将不再被提至第1位而是图2-4 “最近最少使用”算法示意图被提至第J位,排在第J位之后的内容次序依次增加,末位遭到替换,如图2-4所示。

如图2-4所示,在“最近最少使用”算法中,原来第7位的内容由于最近依次被访问导致它被提至第1位,但是该内容有可能在未来一段时间内不被访问,因此,对其作出这样的改动:该内容提升J位(J=3),从而降低因为它不被访问而占用首位资源造成的低效率。

这样做可在某种程度上提升“最近最少使用”算法的效率,毕竟这使得“最近最少使用”

算法不再那么紧张,在内容排序上有了一定舒缓的空间,最近依次被访问的内容有了更多的上升空间,其他未被访问的内容也有更多变化的可能。3.“最少频率使用(LFU)”算法

在“最近最少使用”算法及其变种中,最近访问的时间是考虑的重要因素。而“最少频率使用”算法从频率上出发,按照内容访问频率对内容进行排序,这比单纯地考虑访问时间要合理得多,毕竟,访问频率才是能够反映内容热度的一个重要的标准。在以后的很多算法中也采取了跟访问频率相关的方法。另外,“最少频率使用算法”也使用了不同于“最近最少使用”算法的缓存机制。

在“最少频率使用”算法中,缓存一般分为两部分:一部分是固定缓存(AC,Actual Cache),一部分是隐藏缓存(SC,Shadow Cache)。固定缓存,是更新不频繁、资源变动较少的那部分缓存;隐藏缓存,则是更新频繁、资源变动较大的那部分缓存。当用户发出访问请求时,未命中的内容将先被存储到SC中。在一定时间间隔T内,缓存中会维持一个频率列表,记录每个内容被访问的次数。T时间过后,{AC,SC}中被请求次数最多的内容将被更新到AC中,而下一轮T之内,AC内的内容不会被替换掉。

从理论上来看,“最少频率使用”算法从内容的访问频率上对内容进行排序,留下访问频率高的,替换掉访问频率低的,而因为访问频率跟内容热度有很大的关联,所以,热度高的内容将会有很大的概率保存下来,这正是缓存算法优化的目的。“最少频率使用”算法从另一个角度出发,考虑了内容被访问的次数,即内容被访问的频率,显然这是符合常理的,能够反映内容的热门程度。另外,AC和SC的增加使得“最少频率”的准确率得到提高,这是该算法的优势之一。然而,“最少频率使用”算法也有其难点所在,比如计算频率的时间段T的控制、AC和SC容量的控制、替换的时间设定等。总之,在不同场合,该算法都需要进行不同的改进。4.基于分数因子的缓存(Scoring based Caching)算法(1)定义:最简单的基于分数因子的缓存算法,是对每一个视频(ν),都维护一个分数(s)。每一个视频i在被放进缓存时,都会ii得到一个初始化的分数,比如s=B。每一次视频i被请求,该视频都得i到一个新的分数,而其余视频的分数也会相应调整,比如s=s+A,而ii其余视频的分数s=s−1(k≠i)。kk(2)替换规则:简单的基于分数因子的缓存算法,在维护一个分数的基础上,有两种替换策略。

① 区间分数法,是定义一个有效分数区间[M,N]。若某部不在缓存中的视频的分数,达到了这个区间,即M<s<N,则把这部视频i放到缓存中;若某部已在缓存中的视频的分数,离开了这个区间,即s<M或s>N,则在缓存中删除该视频。ii

② 最优分数法,是根据一个节点的最大的存储能力,如L部视频,选择最优分数的内容进行缓存。每次有一部视频的分数有改变,则进行排序,凡分数不在前L的视频从缓存中删除,凡分数在前L的视频加入缓存中。(3)请求处理:在以上规则下面,每一个对CDN视频的请求,会出现以下3种处理事件。

① 请求的视频已经在缓存中,即请求“命中(hit)”。在这种情况下,对视频的分数作出调整,但无需在缓存中剔除任何内容,也没有必要向上级节点请求内容。在这种情况下,CDN内部没有流量消耗。

② 请求的视频不在缓存中而算法要求节点缓存该视频,因为算法使得该视频在被请求后达到了某个进入的分数,如区间[M,N]或前L名,则需要在缓存中剔除掉原来的第L部视频(若需要),并且向上级节点复制被请求的视频,然后在复制视频之后向请求用户发送被请求的视频。在这种情况下,CDN内部有流量消耗,即边缘节点向中心节点复制了视频内容。

③ 请求的视频不在缓存中而算法不要求节点缓存该视频,因为该视频没有进入区间或前L名。在这种情况下,依然调整该视频的分数,但是不需要从中心节点复制任何内容。即,CDN内部没有流量消耗。(4)其他。

① 一般来说,节点应该维护每一部视频的分数s(每一部是指出i现在CDN系统内且允许用户请求的视频)。但是实际上,分数过低的视频,一般就不维护它的分数,而是将其从关注列表中移出。

② 影子存储(Shadow Cache)。因为记录视频分数及其他存储需要,每个节点的存储能力都将分为两个部分,较大的一部分用来存储视频内容,较小的一部分用来存储视频列表、分数等与管理相关的内容。存储管理相关内容的存储空间,会与视频内容的空间严格分开,因此从管理者的观点看去,节点有一部分存储能力“消失”了。这部分“消失”的存储能力,称为影子存储。(5)评价:事实上,绝大多数复杂的缓存算法,都是基于分数因子的。分数因子提供了一个对视频重要性(或者说受欢迎程度、未来需求量)的评价,依据这个评价可以决定是否缓存或者剔除一个视频。因此,基于分数因子的缓存算法不是一个实践中的独立的算法,它是其他算法的一个基础或者框架。5.基于块等级的缓存(Chunk-level Caching)算法(1)定义:基于块等级的缓存算法,是在上述的分数因子的缓存算法基础上,把每部视频分成大小相同、内容连续的K块分别存储,然后每个视频块的分数s继承自原视频的分数s。我们定义第i个视频ki的第k块视频的分数为s。i,k(2)计分策略。

每次视频i被访问,则对视频i内的所有块,均有s=s+1。每次i,ki,k视频i的第k块被用户完整访问(观看),则对该块的分数有s=si,ki,k−1。

如果一个用户停止观看视频的某块(停止观看包括“快进”和“快退”等操作,表明用户对该块不感兴趣),则分数s要依据以下i,k规则进行改变:所有k之后的块需要执行以下操作s=s−1(k<j<K)。i,ji,j(3)请求处理:大部分时候,块等级的缓存算法,与基于分数因子的缓存算法十分相像,即上面SC出现的3种请求处理的情况都会出现。不同之处在于之前是比较s来进行取舍,现在是比较s。ii,k(4)评价:基于块等级的缓存算法,主要用于单个内容较大的内容分发网络,如视频分发网络。它考虑了以下一个事实,即人们可能对视频的某一段感兴趣,把整个视频存储下来会产生浪费;或者人们只浏览了视频的开头,就会选择看或者不看。因此,在计分规则中,充分考虑了这些事实。

① 一个用户请求了某个视频,则可能对这个视频的其他部分都感兴趣,因此计分策略1体现了这个需求。

② 一个用户看完了某一块,则可能不会再回去看了,因此计分策略2体现了这个需求。

③ 一个用户停止观看某段视频,则可能不会再看这段视频之后的其他视频块,因此计分策略3体现了这个需求。6.其他缓存算法

基于流行度的块等级缓存算法:这是一个仅考虑流行度的块等级缓存算法,即计分方式是统计每个块被访问的次数,属于一个较简单的变种。2.6.3 缓存算法的比较

优劣的定义:缓存的意义在于尽快满足用户的访问,即希望用户的请求尽可能多地利用节点现有内容去提供,而不需要向上级节点复制内容。因此,缓存算法的优劣应该看对“未来”访问的命中率。我们可以定义一个未来时间段t,假设有M次访问到达,而这些访问命中缓存的次数是N,则t时间内的命中率为p=N/M。若t和p都较大,表明在较长的时间内,命中率较高,则这是一个好的缓存算法。

2.7 媒体服务

目前CDN服务的类型根据其服务的内容主要分为网页加速、流媒体服务、文件传输加速和应用协议加速4类。2.7.1 网页加速

互联网有一项著名的8s原则,用户在访问网页时,如果时间超过8s就会感到不耐烦,如果下载需要太长时间,他们就会放弃访问。随着网民数量的日益增长,以及网页服务和网络固有的延迟,给网络宽带形成了巨大的压力,大大影响了用户的体验度。如何缩减网页访问延迟、改善WWW服务质量已经成为改善Internet应用环境的主要目标。而CDN技术的出现,及时解决了网络响应速度的问题。

网页加速是最早出现的CDN服务类型。最初,网页的内容主要以文字、图片、动画等形式为主,支持文本方式的电子邮件交换,因此CDN技术最初的应用重点就是用来对这些网页的静态内容进行加速。采用CDN网页加速服务后,网站提高了交易的成功率以及客户的满意度—主动将经常被访问的网络内容发送到距离用户更近的 CDN 节点可以缩短网站响应时间。

网页加速服务主要面向各类门户网站、新闻发布类网站、访问量较大的行业网站、政府机构网站和企业门户网站等。随着互联网应用的发展,网页加速也逐渐从静态内容加速向动态内容加速扩展,支持股票行情、电子商务、在线游戏等网站的动态内容加速。详见后续章节说明。1.技术原理

网页加速服务的技术原理是通过将网页内容缓存到各个CDN节点上,并将用户请求调度到最优节点上来获得所需的内容,从而加速页面响应速度,减轻源站点的访问负担。网页加速服务平台由分布在网络边缘的应用服务器群组成,将网站源服务器中的内容存储到分布于网络边缘的各个缓存服务器中,通过CDN的负载均衡机制,将用户请求路由到健康可用并且最靠近用户的服务器上,有效地提高网络资源的利用效率。网页加速网络架构示意图如图2-5所示。图2-5 网页加速网络架构示意图

网页加速服务具有可靠性的特点,局部问题不影响整体布局,保证用户的访问正常;由CDN节点替代源站被直接访问,有效保护源服务器避免遭到黑客攻击;加速了页面的响应速度,同时,用户访问也是透明化的,无需修改源站内容。2.动态网页

随着互联网业务的发展,网站内容逐步个性化,很多还包含动态内容。另外,为大量用户同时动态生成个性化的页面和动态内容将导致传输延时和数据传输失败。因此,传统的网页加速缓存方案已经不能满足要求。为了满足用户的个性化需求及减少网络带宽需求和网络延时,多种动态网页分发加速技术诞生了。

动态网页分发加速技术可以分为两大类:一是传输加速技术,目的是减少从源服务器到用户之间传输动态网页所需的带宽和延时,主要包括 ESI(Edge Side Includes)规范和CDE(Class-based Delta Encoding);二是动态网页生成加速技术,用以提高服务器端产生动态网页的性能,主要包括预取技术DUP(Data Update Propagation)和DCCP(Dynamic Content Caching Protocol)。(1)ESI

ESI片段缓存是加速网页应用的一种有效技术。ESI是一种基于XML的标记语言,用于定义包含片段、变量和其他控制指令的模板,使得用户、代理和CDN能够在片段的级别缓存文档。ESI将网页分解成具有不同缓存特性的片段(可缓存和不可缓存),支持页面片段的动态装配,每个片段作为一个独立的元素保存在缓存服务器上。缓存服务器在响应用户请求时只需要获取那些不可缓存或者过期及没有命中的片段,减少了响应时间和源服务器的负担。ESI分离内容传输和内容生成如图2-6所示。图2-6 ESI分离内容传输和内容生成(2)CDE

DE(Delta Encoding,增量编码)指的是以基文件(定义见下文)对目标文件进行编码的过程,编码后的结果称为Delta(增量)。该方法是在一个慢速链接的两端分别存储一个文档的相同副本,称该副本为基文件。慢速链接的服务器端从服务器取回文档的当前副本,并计算当前副本与存储副本的差异(增量),然后再把增量发送到慢速链接的另一端。当客户机收到增量以后,就把增量与基文件结合起来生成当前副本。因此,响应一个对动态网页的请求时,只需要传输编码得到增量,通过基文件和增量进行解码生成当前页面。技术原理如图2-7所示。

DE的缺点是不能解决服务器端的可扩展性问题,动态文档的数量在不断增加,服务器端存储容量的需求随着动态内容的数量的增加而增加。对于这个问题,有专家提出了一种CDE(Class-based Delta Encoding)方法。

① 对多个文档进行分类,每类只保存一个基文件。

② 当服务器端对当前响应进行增量编码的时候,如果所用的基文件没有保存,则在编码后的响应中包含该基文件的URL。

③ 当用户收到响应后,如果发现没有该基文件就先请求该基文件。因此在第一次请求某网站的网页时,需要请求两次才能获得该网页。图2-7 DE传输加速网络示意图(3)预取

预取是根据用户当前的访问请求和历史访问记录,预测用户将来可能发出的访问请求,在用户浏览当前网页页面时将预测的内容取到本地高速缓存中。用户在真正要访问这些页面时只需从本地高速缓存下载,从而达到快速响应的目的。预取也被称为主动缓存技术,有专家提出主动缓存方案(Active Cache Scheme),它通过一种CacheApplet(CacheApplet是由源服务器提供给代理的代码,可以通过其URL获取)的方式把部分用户请求处理的任务转移到代理上。当缓存网页时,代理会从源服务器上获取相应的CacheApplet。当用户请求命中缓存的动态网页时,代理把用户请求作为参数传递给已下载到本地的Applet,Applet根据情形选择:①通过计算返回一个新的页面;②返回对象的拷贝;③要求代理转发请求到源服务器。(4)DUP

DUP(Data Update Propagation)可以确定底层数据的改变对缓存对象产生的影响。它通过建立底层数据和缓存内容的精确依赖关系,并计算和实时更新这种依赖关系,触发缓存内容更新。当底层数据变化的时候,系统更新或者使缓存对象失效。缓存内容可能是整个网页也可能是网页中的片段。当系统感知到底层数据改变时,就使用算法确定受到影响的缓存对象。一旦发现缓存对象过期就让它失效或者进行更新。(5)DCCP

有专家提出了一个新协议—DCCP(Dynamic Content Caching Protocol),该协议支持个性化内容生成程序(如CGI应用软件,JavaServlets等)指定不同GET请求之间的等价或者部分等价,网页缓存可以依据该信息来响应相同的或者等价的请求。对于部分等价的请求,当生成和传送实际内容的时候,可以把已经缓存的内容作为一个近似的结果作为响应。(6)小结

上文介绍了几种典型动态网页分发加速技术,整体可分为传输加速技术和生成加速技术。CDE可以有效地减少响应时间和带宽需求,但是个性化长尾效应越明显,该技术获得的效果就越不显著。ESI有效地重复利用了片段性内容,但是产生了对网页进行分片的开销。

对于生成加速技术,比较容易在服务器端用增加硬件和部署新技术来提高动态网页的生成速度。因此,动态网页分发加速技术今后的发展方向主要是传输加速技术的发展。表2-1对这几种动态网页分发加速技术进行了小结。表2-1 动态网页分发加速技术分类2.7.2 流媒体服务

随着互联网业务的发展,大量视频网站的涌现,流媒体流量随之迅速攀升,从而驱动了CDN技术的应用重点也逐步转向为流媒体加速服务。流媒体加速的实现是通过将流媒体内容推送到距离用户最近的节点,使得用户能够从网络边缘获取内容,从而缩短响应时间,提高视频传输质量,节省骨干网络流量,解决中心服务器的瓶颈问题。流媒体加速服务又可以分为两类。(1)流媒体直播服务。直播(Live)是指在互联网上以流媒体的方式同步传输的电视台或电台正在播放的节目或现场实时制作的直播节目。P2P 技术也是在流媒体直播业务的催生下红极一时。(2)流媒体点播服务。流媒体点播(Video-on-Demand)是指用户根据需要或兴趣选择播放以内容类别、版本等为索引存放在服务器上的流媒体。它与直播方式的最大区别在于,用户不受电视台播放节目时间和内容的限制,在自己合适的时间观看自己想看的内容。流媒体点播的加速原理是将流媒体文件快速同步传输到加速节点上,当终端用户访问时将其对网站的请求路由到距离用户最近的可用节点上。通过分布于各地的 CDN 节点直接响应大部分用户访问请求,从而解决了突发的大量服务请求,保证了用户的服务质量。

下面重点对流媒体协议进行介绍。

在IP网络中,用于多媒体数据实时传输的协议通常有4种,即资源预留协议(Resource ReserVation Protocol,RSVP)、实时传输协议(Real-time Transport Protocol,RTP)、实时控制协议(Real-Time Control Protocol,RTCP)和实时流协议(Real-Time Streaming Protocol,RTSP)。

RSVP 被主机用来为特定应用流向网络请求一定的服务质量(QoS),它也被路由器用来在节点间传送这种服务质量请求,从而建立能提供特定服务质量的状态,并维护这种状态。资源预留协议最终将在数据流的路径上预留相应的资源(主要包括内存资源和CPU资源)。

实时流协议(RTSP)定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或RTP完成数据传输。与HTTP相比,HTTP请求由客户机发出,服务器响应请求;使用RTSP时,客户机和服务器都可以发出请求,即RTSP可以是双向的。

下面分别说明这些协议。1.RSVP

音视频数据流对网络的延时比数据业务更敏感,如何在网络中传输高质量的音视频信息,除了带宽要求之外,还需其他条件。RSVP是一种Internet资源预留协议,它通过采取预留一部分网络资源(带宽)的措施,在一定程度上为流媒体传输提供 QoS。如某些网络视频会议工具就集成了RSVP。2.RTP和RTCP

RTP是在Internet上针对多媒体数据流的一种传输协议,工作于一对一或一对多的传输情况,可提供时间信息和实现流同步。RTP通常使用UDP来传送数据,也可在TCP或ATM协议之上工作。当应用程序开始一个RTP会话时,会使用到两个端口,一个给RTP,一个给 RTCP。RTP 本身并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,而是依靠RTCP提供这些服务。通常RTP算法并不作为一个独立的网络层来实现,而是作为应用程序代码的一部分。

RTCP与RTP共同提供流量控制和拥塞控制服务。在RTP会话期间,参与者周期性地传送 RTCP 包,这些包中含有已发送数据包的数量、丢失数据包的数量等统计数据,服务器可根据这些信息动态地改变传输速率,甚至改变有效载荷类型。RTP与RTCP的配合使用可有效地进行反馈,从而减小开销,提高传输效率,非常适合传送网上的实时数据。3.RTSP(1)RTSP协议介绍

RTSP是由哥伦比亚大学、Netscape公司和RealNetworks公司联合提出的一种基于TCP/IP的应用层协议,相关 IETF RFC标准参见RFC 2326。它定义了如何使一对多应用程序有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP、RTCP之上,它使用TCP或RTP完成数据传输。RTSP协议用于具有实时性的流媒体播放控制,它在客户端和流媒体服务器之间建立起实时会话,客户端可以发起播放、暂停、快进、快退、退出等控制命令与服务器交互,而在客户端发起连接请求到连接中断的整个过程中,服务器会一直监听客户端的状态,持续不断地发送媒体数据分组,保证传输质量。RTSP对流媒体提供了诸如暂停、快进和快退等控制,而它本身并不传输数据,RTSP的作用相当于流媒体服务器的远程控制。传输数据可以通过传输层的TCP、UDP协议,RTSP也提供了基于RTP传输机制的一些有效的方法。该协议支持以下操作:

① 从媒体服务器上获取媒体;

② 邀请媒体服务器加入会议(Conference);

③ 在一个已存在的演示(Presentation)中加入新的媒体流。

RTSP协议一般与RTP/RTCP和RSVP等底层协议一起协同工作,提供基于Internet的整套的流服务。它可以选择发送通道(例如UDP、多播UDP和TCP)和基于RTP的发送机制。它可以应用于组播和点播。

RTSP标准规范中定义的方法如表2-2所示。表2-2 RTSP标准规范中定义的方法

通过抓包软件分析,图2-8 展示了一个典型的 RTSP 请求实例,客户端和服务器之间通过OPTIONS、DESCRIBE、SETUP等方法进行交互。图2-8 RTSP请求实例

在这个实例中,客户端首先通过OPTIONS请求获取服务器的可用方法,指明URL地址是rtsp://video.fjtu.com.cn/vs01/flws/flws-1.rm,RTSP协议版本为1.0,收到服务器200 OK响应后通过DESCRIBE请求声明数据连接类型,再通过 SETUP请求建立流媒体传输。

RTSP协议目前主要应用于对实时性要求较高的流媒体服务,如IPTV点播、直播、时移、回看业务,由于客户端和服务器需要一直保持连接状态进行信令交互和流传输,对服务器性能及网络质量也有较高要求。

介于后续CDN网络架构讨论中涉及HTTP协议,这里也介绍一下HTTP协议及其与RTSP协议的比较。(2)HTTP协议介绍

HTTP是一个属于应用层的面向对象的协议。它于1990年提出,经过几年的使用与发展,得到不断的完善和扩展。

HTTP协议的主要特点可概括如下。

① 支持客户/服务器模式。

② 简单快速。客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

③ 灵活。HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

④ 无连接。无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

⑤ 无状态。HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另外,在服务器不需要先前信息时它的应答就较快。

下面介绍HTTP协议的几个重要概念。

① 连接(Connection):一个传输层的实际环流,它是建立在两个相互通信的应用程序之间。

② 消息(Message):HTTP通信的基本单位,包括一个结构化的八元组序列并通过连接传输。

③ 请求(Request):一个从客户端到服务器的请求信息包括应用于资源的方法、资源的标识符和协议的版本号。

④ 响应(Response):一个从服务器返回的信息包括 HTTP 协议的版本号、请求的状态(例如“成功”或“没找到”)和文档的MIME类型。

⑤ 资源(Resource):由URI标识的网络数据对象或服务。

⑥ 实体(Entity):数据资源或来自服务资源的回映的一种特殊表示方法,它可能被包围在一个请求或响应信息中。一个实体包括实体头信息和实体的本身内容。

⑦ 客户机(Client):一个为发送请求目的而建立连接的应用程序。

⑧ 用户代理(User agent):初始化一个请求的客户机。它们是浏览器、编辑器或其他用户工具。

⑨ 服务器(Server):一个接受连接并对请求返回信息的应用程序。

⑩ 源服务器(Origin server):是一个给定资源可以在其上驻留或被创建的服务器。

⑪代理(Proxy):一个中间程序,它可以充当一个服务器,也可以充当一个客户机,为其他客户机建立请求。请求是通过可能的翻译在内部或经过传递到其他的服务器中。一个代理在发送请求信息之前,必须解释,并且如果可能应重写它。代理经常作为通过防火墙的客户机端的门户,代理还可以作为一个帮助应用来通过协议处理没有被用户代理完成的请求。

⑫网关(Gateway):一个作为其他服务器中间媒介的服务器。与代理不同的是,网关接受请求就好象对被请求的资源来说它就是源服务器;发出请求的客户机并没有意识到它在同网关打交道。网关经常作为通过防火墙的服务器端的门户,网关还可以作为一个协议翻译器以便存取那些存储在非HTTP系统中的资源。

⑬通道(Tunnel):是作为两个连接中继的中介程序。一旦激活,通道便被认为不属于HTTP通信,尽管通道可能是被一个HTTP请求初始化的。当被中继的连接两端关闭时,通道便消失。当一个门户(Portal)必须存在或中介(Intermediary)不能解释中继的通信时通道被经常使用。

⑭缓存(Cache):反映信息的局域存储。(3)RTSP与HTTP的比较

RTSP 协议负责在服务器和客户端之间建立并控制一个或多个时间上同步的连续流媒体,其目标是类似HTTP协议为用户提供文字和图形服务那样为用户提供连续媒体服务。因此,RTSP协议的设计在语法和操作上与HTTP协议很相似,这样,对于HTTP的大部分扩展也适用于RTSP。但是RTSP协议和HTTP协议在很多方面有着区别。

① HTTP是一个无状态协议,而RTSP协议是有状态的。

② HTTP本质上是一个非对称协议,客户端提出请求而服务器响应;而RTSP是对称的,服务器和客户端都可发送和响应请求。

在RTSP中,每个演示(Presentation)及其所对应的媒体流都由一个RTSP URL标识。整个演示及媒体特性都在一个演示描述(Presentation Description)文件中定义,该文件可能包括媒体编码方式、语言、RTSP URLs、目标地址、端口及其他参数。用户在向服务器请求某个连续媒体流的服务之前,必须首先从服务器获得该媒体流的演示描述(Presentation Description)文件以得到必需的参数,演示描述文件的获取可采用HTTP、E-mail或其他方法。RTSP中的所有的操作都是通过服务器和客户方的消息应答来完成的,其消息包括请求(Request)和响应(Response)两种,RTSP正是通过服务器和客户端的消息应答来完成媒体流的创建、初始化(Setup)、VCR控制(Play、Pause)以及拆线(Teardown)等操作的。在基于Client/Server 结构的分布式视频点播系统中,客户机在向视频服务器请求视频服务之前,首先通过HTTP协议从网页服务器获取所请求视频服务的演示描述文件,利用该文件提供的信息定位视频服务地址(包括视频服务器地址和端口号)及视频服务的编码方式等信息。然后客户机根据上述信息向视频服务器请求视频服务。视频服务初始化完毕,视频服务器为该客户建立一个新的视频服务流,客户端与服务器运行实时流控制协议(RTSP),以对该流进行各种VCR控制信号的交换,如播放(Play)、停止(Pause)、快进、快退等。当服务完毕,客户端提出拆线(Teardown)请求,需要说明的是,服务器使用RTP/UDP协议将媒体数据传输给客户端,一旦数据抵达客户端,客户端应用程序即可播放输出。在流式传输中,使用RTP/RTCP/UDP和RTSP/TCP两种不同的通信协议在客户端和服务器间建立联系。4.Http Progressive Download

Http Progressive Download,即渐进式下载,本质上就是标准的HTTP协议(RFC 2616)。具体原理是客户端向服务器发起视频点播请求后,服务器通过 HTTP 方式向客户端传输视频内容,传输速度取决于客户端侧、网络侧和服务器侧的网络带宽,当客户端下载的视频内容达到一定大小时(例如下载到了视频内容中的关键帧)即开始播放,播放时仍然继续下载后续的内容,从而实现边下边播的功能。目前国内外众多主流的视频网站均采用了这一方式提供服务,如YouTube、优酷、土豆、奇艺等。

Http Progressive Download有以下一些特点:

部署非常简单,通过微软 IIS(Internet Information Services,互联网信息服务)、开源的Apache、Lighttpd、Nginx等技术可以轻松部署HTTP服务器,而客户端只要支持HTTP标准协议即可。

HTTP是无状态的协议,服务器只被动地接收客户端请求,将请求数据传输给客户端,并不主动检测客户端的状态,每次HTTP连接都是一个独立的会话,HTTP协议可看作“单向”,而RTSP协议可看作“双向”。

HTTP标准规范中定义的方法见表2-3。表2-3 HTTP标准规范中定义的方法

通过抓包软件分析,图2-9展示了一个典型的Http Progressive Download请求实例,客户端通过GET、POST等方法向服务器发起请求。图2-9 Http Progressive Download请求实例

在这个实例中,可以看到GET、POST等方法由客户端(192.168.1.102)主动发起,而服务器只被动地返回 200 OK响应。5.Http Adaptive Streaming自适应流媒体

前两节介绍了RTSP和Http Progressive Download,本节介绍基于HTTP协议的另一种流媒体协议,即 Http Adaptive Streaming(自适应流媒体)。先介绍一下 Http Adaptive Streaming的基本原理:在节目内容编码和制作阶段,将同一个节目内容生成多个不同码率的内容(如高清、标清内容),并进行切片处理,将每个内容切割成一小段一小段的视频内容,客户端对每个视频短片都要发起一个基于HTTP协议的内容请求,服务器仍是被动地响应客户端的请求,客户端可以随时根据当前的网络带宽情况调节HTTP请求信息,获取不同码率的文件内容,从而实现流媒体的带宽自适应。Http Adaptive Streaming和 Http Progressive Download的区别包括以下几点。(1)Http Progressive Download按照网络的最大可用带宽进行整个视频内容的下载,不对带宽进行控制,容易消耗大量的带宽,而Http Adaptive Streaming对于每个内容切片都进行相应请求,客户端实时地检测带宽变化,请求相应的码率内容,带宽利用效率高。(2)Http Progressive Download对应的视频内容只有一个码率,当网络带宽小于视频码率时,会出现卡顿、无响应等现象,影响用户体验,而Http Adaptive Streaming可根据带宽情况的不同在高、中、低码率之间无缝切换,用户体验佳。(3)Http Progressive Download会将视频内容下载到客户端中缓存,对内容版权会造成一定损害,而Http Adaptive Streaming可以控制是否将切片内容保存到客户端中,可保证内容版权。(4)Http Progressive Download的特性决定了它不适用于实时性要求极高的直播业务,只能用于点播业务,而Http Adaptive Streaming具备实时流媒体的特性使其可适用于直播和点播业务。(5)Http Progressive Download服务器和客户端部署非常简单,只需支持HTTP协议即可,而Http Adaptive Streaming需要服务器进行切片处理,需要客户端检测带宽变化并切换内容码率,部署相对复杂一些。

Http Adaptive Streaming兼具RTSP和Http Progressive Download的一些优点,在互联网上快速流行了起来。目前互联网上主流的Http Adaptive Streaming技术有 3种:苹果公司的Http Live Streaming、微软公司的Http Smooth Streaming和Adobe公司的Http Dynamic Streaming,这 3家公司均提供了完整的Http Adaptive Streaming解决方案,覆盖了头端编码器、切片服务器、CDN分发组件、用户客户端等层面。此外还有一些国际标准组织如OIPF、MPEG、IEFT也提出了相应的Http Adaptive Streaming技术标准,和苹果、微软、Adobe公司的解决方案非常相似,其详细技术方案介绍见后续章节。2.7.3 文件传输加速

通过使用CDN节点提供下载服务,可大大缓解文件下载带来的性能压力和带宽压力,提高用户的下载速度。目前CDN技术可以支持HTTP下载、FTP下载和P2P下载等多种下载方式,主要用于补丁发布、病毒库更新、游戏客户端下载以及其他提供文件下载服务的网站,比如视频、音乐网站等。

文件传输加速的技术原理与前文网页加速和流媒体加速技术原理类似,将源站大量的文件内容数据注入至CDN中,根据分发策略将文件内容分发至各CDN边缘节点,以支持用户端的下载应用,从而减少了源站服务器的下载压力,满足了终端用户就近迅速高效的下载需求。2.7.4 应用协议加速

应用协议加速是通过对TCP/IP等传输协议的优化,改善和加快用户在广域网上的内容传输速度,或者对一些特定协议,如SSL协议进行加速,解决安全传输时的性能和响应速度问题。主要的应用协议加速服务有如下几种。(1)广域网应用加速。其目的是处理多种分布式企业网络环境下的各种应用和协议,尤其针对那些在局域网上可正常运行,在广域网却受到极大影响的应用和协议,比如CIFS协议、NFS协议等。广域网应用加速能够在不改变远程用户使用习惯的前提下,将分布式的IT基础设施如文件服务器、邮件服务器、网络附加存储(NAS)和远程办公室备份系统等集中起来,整合到统一的数据中心。此外,广域网应用加速还支持通过长距离广域网链路进行文件备份与复制操作,在不升级带宽的前提下在现有的广域网上提供比以前丰富得多的应用服务。(2)SSL应用加速。其目的是在保证安全性的前提下提高SSL应用的响应速度,有效减少源站点服务器在SSL应用方面的资源开销。目前许多基于网络的重要核心应用都采用了SSL技术来保证服务的安全性和私密性,但是由于SSL应用需要进行大量的加密解密运算,其对服务器端的资源消耗是非常巨大的。CDN提供SSL应用加速后,由CDN的专用SSL 加速硬件来完成加密解密运算工作,通过认证之后建立起数据传输通道,用户的源站点无须面对海量用户,只需信任有限的CDN缓存即可,从而减轻了运算和认证的资源开销。该应用适用于进行网络办公的企业和电子商务网站及金融网站,例如:分支机构遍布全球的大型企业,B2C的网络交易平台等。(3)网页压缩。现在的网页包含的内容越来越丰富,可能含有大量的Flash、图片等内容,文件体积也显著增大,因此在HTTP 1.1协议中提出了对网页压缩功能的支持。在服务器端对网页数据进行压缩,用户访问该网页时,将压缩后的文件传输至用户端,然后在用户的浏览器端解压并显示。CDN加速为网站提供网页压缩传输技术,从而达到减少数据传输时间,加快页面响应的目的。

第3章 CDN主要技术指标

3.1 服务指标

前文中介绍了多种媒体服务形式,如Web、流媒体、动态网页、文件下载等,这些媒体服务为了保证用户服务质量(Quality of Service,QoS)和用户体验质量(Quality of Experience,QoE),通常都自建或采用第三方CDN进行分发。网络运营商和服务提供商对CDN的服务指标有严格的要求,本章将介绍一些常见的CDN服务指标。3.1.1 命中率

CDN的主要功能就是将网络的热点内容缓存到本地节点,用户通过调度机制访问最近的CDN服务节点,如果被访问的内容已缓存,则直接由该节点提供服务,否则用户被重定向至源地址进行访问。CDN的效率体现在用户的访问内容是否在缓存中,用公式表示即“命中率=命中次数/(命中次数+未命中次数)”。假设用户通过CDN访问某网站内容,命中次数是a,未命中次数是b,可计算出命中率为a/(a+b),未命中率为b/(a+b)。可见命中率越高,说明CDN效率越高,能够尽可能通过本地缓存满足用户的访问请求,从而减轻源地址的访问压力,优化网络流量。

下面结合IPTVCDN来详细说明命中率的意义,图3-1所示为一个典型的IPTVCDN。

IPTVCDN从网络结构上看,通常分为3层:中心节点、区域节点和边缘节点。中心节点将内容推送到区域节点,区域节点再将内容推送到边缘节点,由边缘节点为用户提供服务。边缘节点未命中时,会将用户重定向到上一级的区域节点,若区域节点仍未命中,则将用户调度到上一级的中心节点。

IPTV的所有内容都保存在CDN中心节点,而区域节点和边缘节点通常只存储一部分热门的内容,目的是在保证一定命中率的情况下节约大量的存储。在经济学上意大利经济学家巴列特曾提出著名的“二八定律”,即总结果的80%是由总消耗时间中的20%所形成p的。二八定律应用到CDN领域,即可大致理解为80%的用户访问了20%的热门内容,用户的访问行为具有规律性,大多数的用户关注的都是一小部分热门的内容,而非线性的关系,表3-1是某省某运营商近3个月IPTV用户访问行为的统计结果之一,可以很好地说明这一点。图3-1 IPTV CDN示意图表3-1 用户访问统计

表3-1中的数据说明了用户比例和访问的热门内容占比,以第一个数据10 881为例,说明在5月份,最热门的10 881个视频内容满足了60%的用户访问请求,占内容总数量的4.9%。

从表3-1可见,20%的热门内容满足了90%的用户访问请求。存储是CDN的重要成本之一,网络运营商和服务提供商在建设CDN时通常要在命中率和存储比例之间选择一个平衡点,存储比例达到一定程度时已经可以达到较高的命中率,若再花巨资大幅提高存储比例,命中率小幅提高带来的收益往往得不偿失。在运营商IPTVCDN的实际配置模型中,每个区域节点通常存储30%~50%的热点节目内容,每个边缘节点通常存储20%~30%的热点节目内容,CDN中心节点会不断统计每个节目内容被点播的次数,达到一定阈值即判断为热点内容并推送到区域节点和边缘节点。边缘节点的存储比例已经能够满足大部分用户的访问请求,若边缘节点未能命中内容,则将用户调度到上一级的区域节点进行服务,只有非常少量的冷门内容请求会被调度到中心节点进行服务。3.1.2 吞吐量

CDN的吞吐量通常指的是单台CDN服务器在单位时间内(一般以s计算)成功传输的数据大小(一般以bit、kbit、Mbit、Gbit计算),是CDN服务器的重要性能指标之一。CDN服务器可分为机架服务器、刀片服务器、机柜式服务器等多种形态,其吞吐能力取决于多方面因素。(1)硬件配置:CPU、内存、磁盘类型、磁盘大小、磁盘缓存、网卡类型、网卡速度、总线速度等,其中硬盘I/O通常是瓶颈。(2)软件配置:操作系统版本、管理软件等。(3)网络带宽:取决于CDN服务器在网络中的位置,运营商的CDN服务器通常放置在城域网出口等关键位置,能够保证带宽需求。

表3-2给出了CDN服务器的一些关键参数,对吞吐量有较大影响。表3-2 CDN服务器关键参数

早期的CDN设备以PC服务器、机架服务器为主,架构简单,内置存储,性能较弱,单台服务器吞吐量通常不超过1Gbit/s。随着硬件性能的提高和IT技术的不断发展,目前主流的CDN设备以刀片服务器、机柜服务器为代表,存储通常采用外挂方式通过光纤交换板等高性能设备与主机连接,存储类型包括直连式存储(Direct-Attached Storage,DAS)和网络存储(Fabric-Attached Storage,FAS),而网络存储又分为接入式网络存储(Network-Attached Storage,NAS)和区域式网络存储(Storage Area Network,SAN)。这些外挂存储技术有效地提高了CDN设备的吞吐量,单台CDN设备的吞吐量超过1Gbit/s,性能最高的可以达到10Gbit/s以上。在第4章中我们将对CDN硬件进行详细介绍。3.1.3 并发值

并发值也是CDN的重要服务指标之一。从CDN服务类型看可分为两类,首先是Web Cache、动态网页、文件下载等互联网应用服务,这类服务通常传输数据量较小,单位时间内频繁发起TCP/UDP连接,对CDN的会话处理能力要求很高;其次是视频点播、视频直播等流媒体服务,这类服务通常要求较高的带宽以保证视频稳定传输,TCP/UDP连接请求不如前者频繁,但对CDN的吞吐能力要求很高。两者对CDN的并发处理能力要求如表3-3所示。表3-3 CDN服务类型和并发能力要求

对应于并发值,还有个指标即“并发比”,指的是同一时刻内发起服务请求的用户(即活跃用户)占所有用户的比例。用户的访问行为具备分散性和集中性,同一天内不同时段活跃用户的比例不一,而且出现热门内容时活跃用户的比例也和平时会有区别,图3-2 是某省IPTVCDN的一个中等规模的边缘节点在一天内不同时刻的活跃用户统计。图3-2 IPTV活跃用户数量统计

从图3-2可见用户的活跃程度和作息时间有密切的关系,晚上8点到10点是用户访问的高峰期,活跃用户数量达到了当天的最大值。网络运营商和服务提供商在建设CDN网络时通常要考虑各个节点的并发值,避免建设能力过多造成投资浪费,在IPTV业务中,运营商根据以往运营的经验值测算并发比,该值通常为1:3左右,即该节点服务的IPTV用户总数为10 000的话,只要按照3 000左右的并发值进行CDN建设即可满足用户需求。同理,建设区域节点和中心节点时,也要充分测算该节点的并发值需求,合理地进行建设。3.1.4 响应时间

在CDN中,响应时间是指用户通过终端的浏览器或者客户端发出内容访问请求,到收到内容第一个数据包的时间,也可称为端到端响应时间。响应时间对用户体验有很大的影响,响应时间过长会造成用户心理烦躁和不安,逐渐失去使用该业务的兴趣,因此响应时间也是CDN最重要的服务指标之一。一个完整的端到端响应时间通常由图3-3中的几部分组成。图3-3 端到端响应时间(1)DNS 地址解析:用户终端将内容请求的域名地址发送给本地 DNS 进行解析,返回CDN IP地址。(2)访问CDN服务器:用户对CDN的访问请求通常会被指向到CDN的负载均衡设备进行处理。(3)CDN内部重定向:CDN负载均衡设备根据用户IP地址、节点负载情况、网络流量等综合信息,将用户重定向到离其最近的CDN服务节点。(4)收到数据包:用户终端与CDN服务节点建立连接,收到CDN服务节点发来的第一个数据包。

以上各部分精确的响应时间可以通过抓包软件或第三方专用仪表测量。目前网络运营商和服务提供商对响应时间都有严格的要求,以IPTV业务为例,如节目菜单(Electronic Program Guide,EPG)响应时间不超过 2s,流媒体点播、直播、快进/快退/暂停/定位等操作响应时间不超过1s,频道切换时间不超过1s等,充分保证用户的服务质量和业务体验。3.1.5 MDI

MDI(Media Delivery Index,媒体传输质量指标)是由思科和 IneoQuest公司联合提出的一套媒体服务指标,通常用来测量和评估基于IP 网络的视频流媒体的传输质量。MDI并不限定视频流媒体的传输格式和编码格式,这使得它可以广泛应用于IPTV、OTT、数字电视等基于IP网络的流媒体领域。RFC组织于2006年发布了MDI相关标准(RFC 4445),并已成为IP视频流媒体传输质量测试的行业标准。

MDI是媒体延迟和媒体丢失率的综合评价指标,包括两个重要参数。1.DF(Delay Factor,延迟因子)

DF 值用来衡量视频流的延迟和抖动情况,单位为ms。DF 是指单位时间内(通常为1s)被测试设备流入与流出的视频流字节数除以视频码率的最大值与最小值的差值。用公式表示即:

DF=(MAX[流入字节数−流出字节数]−MIN[流入字节数−流出字节数])/视频码率

其中流入字节数即设备接收到的字节数,可通过实际测量获取,而流出字节数即视频解码所需的字节数,可通过分析视频流解码获取。

DF值反映的是视频流的抖动变化情况,由于流媒体的实时性,用户终端一方面通过网络获取视频流,一方面通过视频解码器消耗缓存的视频流,而视频流的数据包到达时间间隔因为网络抖动往往容易出现变化,DF值就是将网络抖动情况换算为对视频流进行缓存的需求。当解码器缓存的视频内容大于DF 值时,不会出现缓存内容已消耗完而没有后续的视频流这种情况,即网络抖动不影响视频播放质量;当 DF 值较大已超过解码器缓存的视频内容时,解码器消耗完了缓存内容而没有收到后续的视频流,就会出现卡顿、马赛克等现象。

因此,DF值越小说明视频流抖动越小,对CDN和用户终端等设备视频缓冲区相应的要求越低,不会影响视频播放效果。2.MLR(Media Loss Rate,媒体丢包速率)

MLR指的是单位时间内(通常为1s)丢失的视频流字节数,用公式表示即:

MLR=(应收到字节数−实际收到字节数)/时间

MLR值反映的是视频流的数据包丢失情况,通过测量MLR可以及时了解视频流传输的网络质量。数据包丢失将直接影响到视频的播放效果,因此理想的MLR值为0,由于视频流在编码过程中通常会采用一些冗余和纠错技术,而且在传输过程中会采用丢包重传技术,因此在实际应用中可根据具体情况设定MLR上限。

由于MLR只反映单位时间内的丢包速率,不能反映丢包的持续性,MLT(Media Loss Total,媒体丢包总数)指标则是统计总共丢包数量,其中MLT-15用来统计之前15min的丢包总数,MLT-24用来统计之前24h的丢包总数,结合这些指标可以更好地了解测试期间的媒体丢包情况。3.1.6 MOS

MOS(Mean Opinion Score,平均意见指标)值早期主要用于评价通信系统中的语音质量优劣,目前MOS值已延伸到了视频通信等领域,通常也用来评价流媒体类型CDN的服务质量。MOS 值的取值区间是[0,5],分数越高说明视频质量越好,MOS 值各级别如表3-4所示。表3-4 MOS值对照表

MOS值测量方法有两种,一种是主观评价,另一种是客观评价。(1)主观评价方法是选取一组测试评价人员(通常不少于10个),由他们分别观看视频源文件和通过用户终端观看视频内容并进行对比,每个人都基于观看效果进行主观打分,然后将各位人员的分数进行平均计算得出主观MOS值。(2)客观评价方法则是通过第三方测试仪表或软件进行测量,目前如思博伦、安捷伦等专业仪表厂商的相关产品均可测试MOS值。

由于CDN设备需要长时间为用户提供Web Cache、文件下载、流媒体等内容的分发服务,这些媒体服务具备并发量大、传输码流高、连接时间长等特点,对CDN设备的稳定性和可靠性要求很高,以下是一些常见的CDN相关服务指标要求。(1)用户点播、直播流媒体服务的成功率不低于99%。(2)用户请求、切换EPG页面成功率不低于99%。(3)用户访问内容准确率不低于99.9%。(4)单次流媒体服务故障率不超过0.1%。(5)单个CDN节点故障率不超过0.01%。(6)当CDN节点出现故障时,将用户切换到另一个节点的时间不超过5s。(7)CDN设备存储支持热插拔技术,更换磁盘不影响用户访问请求。

3.2 CDN服务指标测试方法

测试是CDN相关工作中最重要的环节之一,为了验证CDN是否支持所要求提供的服务功能、能否满足各类服务指标等,必须进行CDN测试工作。通过测试能够了解CDN的具体情况,为CDN大规模商用推广以及进一步优化CDN打下扎实的基础。

由于流媒体服务类CDN应用广泛、技术成熟、用户体验要求较高等特点,本节以流媒体CDN为基础,介绍相应的测试技术和测试方法,并简述了一些第三方工具的使用方法。流媒体CDN测试大致可分为功能测试、性能测试、功耗测试、稳定性测试4个部分,以下将分别介绍这4部分的测试内容和测试方法,其中重点介绍性能测试,并简要描述了一些测试仪表的使用方法,关于仪表的详细教程本书不作过多介绍,请各位读者查阅仪表说明文档。3.2.1 功能测试

CDN功能测试主要通过CDN自有的管理软件以及终端来完成,目的是验证CDN能否满足功能需求。CDN的功能测试主要包括以下几方面。1.内容管理(1)内容注入:将点播内容注入到CDN中,直播内容以组播或者单播方式注入到CDN中,生成相应的索引文件、节目单、直播频道等信息。(2)内容修改:修改已注入的内容的相关信息,如节目单、频道信息等。(3)内容删除:删除已注入的内容,删除节目单、频道信息等。2.内容分发和调度(1)内容分发:通过PULL和PUSH将内容分发到各级CDN节点,其中PUSH方式应支持单个分发、批量分发、设置优先级、设置策略等多种分发方式。(2)内容调度:通过综合调度机制实现内容在各个CDN节点内的均匀分布,主动将热点内容推送到服务节点,清理冷片。3.负载均衡(1)节点调度:根据用户 IP 地址、CDN 节点负载、网络流量、流媒体服务类型等综合信息将用户调度到最合适的CDN服务节点。(2)策略配置:配置基于DNS的节点调度,基于应用层重定向的节点调度等策略。4.流媒体服务(1)点播服务:通过PC、机顶盒、手机等终端验证流媒体点播功能,验证播放、暂停、定位、拖动、快进、快退等功能。(2)直播服务:通过PC、机顶盒、手机等终端验证流媒体直播功能。(3)其他服务:例如IPTV业务中的时移、回看等功能。5.流媒体接口(1)HTTP接口:通过网络抓包分析POST、GET、HEAD等HTTP请求方法和相关参数。(2)RTSP接口:通过网络抓包分析OPTIONS、DESCRIBE、ANNOUNCE、SETUP、PAUSE、PLAY、TEARDOWN等RTSP请求方法和相关参数。6.网络管理(1)节点设备管理:查看所有CDN节点和设备的信息,包括服务器状态、用户访问情况、网络负载等;对CDN设备进行配置,如全局性策略、性能阈值、路由策略等。(2)网络拓扑管理:查看网络拓扑信息,增加或删除CDN节点,修改CDN节点配置。(3)故障告警管理:实时监控CDN节点状态,当出现设备达到性能阈值、硬盘故障、节点瘫痪、服务质量下降等情况时主动告警。(4)统计分析:采集CDN各类性能指标数据,按时段统计CDN节点命中率、吞吐量、并发值等关键数据。(5)系统管理:配置管理员账户权限,记录管理员操作日志,备份系统数据等。3.2.2 性能测试

在3.1节中介绍了命中率、吞吐量、并发值、响应时间、MDI、MOS等CDN服务指标,这些指标是用来衡量CDN性能的重要参考依据。在CDN性能测试中,为了保证测试过程稳定以及进行详细的统计分析,通常需要借助第三方专业测试仪表,仪表的测试原理如图3-4所示。

CDN性能测试仪表模拟成多个客户端,向CDN发起服务请求,同时对服务过程进行实时监控,保存相应的数据进行统计分析。在实际测试场景中,测试仪表通常要发起数百上千个服务请求,并且可以向单个或者多个CDN节点发起请求。下面介绍一些常用的CDN性能测图3-4 CDN测试仪表示意图试仪表以及响应的测试方法。1.Spirent Avalanche

Spirent 公司的 Avalanche 系列测试仪表支持HTTP、RTSP、RTMP 等多种流媒体协议,这里以 HTTP 流媒体性能测试为例进行介绍。将设备连接好后打开对应的管理软件“Spirent TestCenter Layer 4-7 Application”,新建项目,新建测试脚本,界面如图3-5所示。图3-5 Spirent Avalanche管理界面

在 Avalanche 软件中可配置详细的脚本,使仪表能够模仿多个客户端进行操作。在性能测试中用户脚本通常可以分为以下几类。(1)1:1脚本:模拟单个用户访问单个文件,通常用于功能性测试、接口验证等。(2)N:1脚本:模拟N个用户访问同一个文件,通常用于模拟出现热点内容时用户集中访问的场景。(3)N:N脚本:模拟N个用户访问N个文件,每个用户访问的文件都不相同,通常用于模拟用户平均访问内容的场景。(4)N:M脚本:模拟N个用户访问M个文件,每个用户访问的文件可相同可不相同,通常用于模拟特定复杂场景。

下面以最常用的N:1脚本为例,简述仪表脚本配置和使用方法。(1)设定一个测试过程中的阶段数量和每个阶段的用户访问行为。图3-6 所示为一个较为典型的阶段配置示意图,在主界面 Loads 标签中进行配置:(a)阶段是初始化阶段,仪表稳定运行5s,不发起服务请求;(b)阶段是平滑爬坡阶段,模拟10个用户在10s内接连发起服务请求;(c)阶段是阶梯爬坡阶段,模拟20个用户在1s内发起服务请求,然后稳定 4s,该过程重复 5 次;(d)阶段是稳定运行阶段,所有用户稳定运行 40s;(e)阶段是下线阶段,在20s内完成所有用户下线。该脚本总共运行100s,并发用户数为110。图3-6 阶段脚本配置示意图

对应的阶段脚本配置波形图如图3-7所示。(2)在Actions标签中配置触发动作,由于所有用户访问的是同一个文件,可配置为“1get http://192.168.43.79/test.flv”,模拟HTTP协议的 get请求。图3-7 阶段脚本配置波形图(3)在Subnets标签中配置仪表模拟的客户端的IP地址段、掩码、网关等。(4)这些标签和其他标签的具体内容可根据测试实际需要调整,在此不作详细讲解,配置完成后点击运行图标启动测试,规定的100s测试时间结束后,Results标签中会显示非常详细的测试结果,包括成功连接数、带宽统计、吞吐量、用户连接时间、用户响应时间、丢包率等大量数据,可供提取关键数据作为CDN服务指标。测试结果可以导出为Excel文件,或者通过“Spirent TestCenter Layer 4-7 Results Analyzer”软件进行分析,如图3-8所示。2.Shenick diversifEye

Shenick公司的diversifEye系列测试仪表常用于RTSP流媒体性能测试。设备的LCD面板可显示设备IP地址、网关、掩码等信息,将PC配置成同一网段IP地址并与设备直连,可直接在浏览器中打开http://设备IP地址/cgi-bin/netif.cgi,远程设置设备IP地址、网关、掩码等。

设备通过自带的diversifEye软件进行管理,具体过程如下。(1)打开脚本编辑器iScript-SHK.exe,设置完各项参数后,生成XML文件,如图3-9所示。其中Server IP填写CDN流媒体服务器地址,Client IP填写客户端地址,Client Mask Bits填写子网掩码的位数,Gateway IP填写网关,Client Host Num填写客户端分组数量, Shenick Interface默认选 1,勾选上UDP Trans(测试IPTV业务选择MPEG2-TS/RTP);Client Number填写总共模拟的客户端数量,Start Distance填写同一组内每个客户端发起连接的间隔时间(单位:ms),Group Distance填写一组客户端完成请求后与下一组客户端的间隔时间,Group Number 填写每组多少个客户端、Transport Method(IPTV业务填写MPEG2-TS/RTP/UDP);Media List是媒体播放列表,具体列表保存在 id.txt文件中,如果是N:1测试则对应1个媒体内容,如果是N:N测试则需要在id.txt中加入多个媒体内容id。图3-8 Spirent TestCenter Layer 4-7 Results Analyzer图3-9 diversifEye脚本编辑器(2)将生成的XML文件导入到diversifEye软件中,调整其他测试参数,运行脚本。(3)脚本运行完成后可查看详细的测试数据,如响应时间、丢包率、吞吐量、码流抖动、MOS值等,作为RTSP流媒体性能测试的评价依据。部分指标如图3-10所示。图3-10 diversifEye分析结果3.IneoQuest SINGULUS

IneoQuest公司的SINGULUS系列仪表常用来分析MDI指标,包括DF、MLR、MLT等关键视频质量指标。SINGULUS 仪表通常结合 Shenick diversifEye 仪表一起使用,在diversifEye软件中可配置SINGULUS仪表IP地址,将部分媒体数据流发送给SINGULUS仪表进行分析。

打开IQMediaAnalyzerPro管理软件,配置仪表IP地址,连接成功后即可收到媒体数据流,如图3-11所示。图3-11 IQMediaAnalyzerPro分析结果3.2.3 功耗测试

在CDN测试中功耗测试也是重要的一环,CDN设备的功耗对机房布局、机架规格、电源负荷、机房温度、排气通风等方面都有影响,而且功耗大小直接决定了电力成本,因此对服务提供商和网络运营商而言,CDN设备的功耗是一项重要的参考依据,在CDN设备部署过程中必须考虑。

功耗测试的仪表有很多种,本文介绍的是日本YOKOGAWA公司生产的WT210功率计,该功率计以串联的方式接入到 CDN 设备和电源之间,通过 LCD 面板和自带的WTViewer 软件可以实时检测电流、电压、功率等指标,此外通过软件还可以采样测试数据并进行统计分析。软件界面如图3-12所示。图3-12 WTViewer示意图

在CDN功耗测试中,通常有以下3种测试场景。(1)轻载测试:使用仪表向CDN设备发起单用户服务请求,测试CDN设备在负荷很小可以忽略不计的情况下的功耗值。(2)平均测试:使用仪表向CDN设备发起一半的并发用户服务请求,例如该设备最大并发值是 2 000,则发起 1 000个服务请求,测试CDN设备达到一半负荷时的功耗值。(3)满载测试:使用仪表向CDN设备发起全部的并发用户服务请求,测试CDN设备满负荷运行时的功耗值。3.2.4 稳定性测试

CDN设备的稳定性测试指的是通过一些极限的、突发的事件对CDN设备的稳定性进行考量,在实际测试过程中通常有以下几种。(1)拷机测试:通过仪表按照CDN设备并发值上限发起服务请求,使CDN设备满负荷运行 24 小时以上,检查服务器状态并分析测试结果,包括 CPU、内存利用率是否突破阈值,设备是否过热,功率是否超标,用户服务指标如响应时间、MDI、MOS、吞吐能力是否出现异常等。(2)硬盘故障测试:通过客户端进行流媒体点播、直播,在此过程中拔去某台CDN设备一块硬盘,检查客户端播放效果是否受到影响,并通过仪表分析服务指标是否出现异常。(3)网络故障测试:通过客户端进行流媒体点播、直播,在此过程中拔去某台CDN设备某个网口的网线,检查客户端播放效果是否受到影响,并通过仪表分析服务指标是否出现异常。(4)服务器故障测试:通过客户端进行流媒体点播、直播,在此过程中关闭某台CDN设备电源,检查客户端播放效果是否受到影响,系统能否顺利将用户调度到另一台CDN设备,并通过仪表分析服务指标是否出现异常。

第4章 CDN硬件

4.1 CDN硬件发展

4.1.1 CDN硬件的种类1.按照硬件机箱结构划分

CDN硬件按照硬件机箱结构划分目前包括机架式服务器和刀片式服务器。(1)机架式服务器

机架式服务器的外形看起来不像计算机,而像交换机,如图4-1所示。

大小有1U,2U,3U,4U,5U,一图4-1 机架式服务器直到12U,1U的大小为1.75英寸,即4.445cm;此类型服务器采用了专业的服务器主板、专业的服务器电源、ECC内存、特殊的散热系统和专业的服务器机箱等保证整个服务器系统的稳定性。硬盘数量根据各厂家的内部结构有不同的盘位,一般可采用SATA类型盘、SAS类型盘、SSD类型盘;此类型的服务器优势在于采用了内置存储方式,整体功耗较低,占用空间小,存储扩容也可采用外置存储方式。(2)刀片式服务器

刀片式服务器是一种HAHD(High Availability High Density,高可用高密度)的低成本服务器平台,是专门为特殊应用行业和高密度计算机环境设计的,其主要结构为一大型主体机箱,内部可插上许多“刀片”,其中每一块刀片实际上就是一块系统母板,类似于一个个独立的服务器,它们可以通过本地硬盘启动自己的操作系统。每一块刀片可以运行自己的系统,服务于指定的不同用户群,相互之间没有关联。而且,也可以用系统软件将这些主板集合成一个服务器集群。在集群模式下,所有的刀片可以连接起来提供高速的网络环境,共享资源,为相同的用户群服务。在集群中插入新的刀片,就可以提高整体性能。而由于每块刀片都是热插拔的,因此,系统可以轻松地进行替换,并且将维护时间减少到最小。

刀片式服务器比机架式服务器更节省空间,同时,散热问题也更突出,往往要在机箱内装上大型强力风扇来散热。此型服务器虽然空间较节省,但是其机柜与刀片价格都不低,一般应用于大型的数据中心或者需要大规模计算的领域,如银行电信金融行业以及互联网图4-2 刀片式服务器数据中心等。

将刀片式服务器应用于CDN时缺点在于占用空间大,需要大量的外置存储,不适合应用于边缘节点;优点在于其计算主板的扩容较为方便。刀片式服务器如图4-2所示。2.按设备架构划分

按目前各大厂商研发情况来看,CDN硬件按照架构来分,目前有采用通用服务器架构,也有专用型服务器架构。(1)通用型服务器

通用型服务器是指并非为某种特殊服务专门设计的、可以提供各种服务功能的服务器。这类服务器不是专为某一功能而设计,所以在设计时就要兼顾多方面的应用需要,这类服务器多选用一些品牌型号,如国外的IBM、HP、DELL等,国内的曙光、浪潮、联想等。这种硬件架构优势在于通用性强,经过各种应用场景的测试稳定性和可靠性更强,选型空间大,成本低。(2)流服务器

流媒体服务器又是流媒体应用的核心系统,是运营商向用户提供视频服务的关键平台。其主要功能是对媒体内容进行采集、缓存、调度和传输播放,流媒体应用系统的主要性能体现都取决于媒体服务器的性能和服务质量。因此,流媒体服务器是流媒体应用系统的基础,也是最主要的组成部分。

流媒体服务器的主要功能是以流式协议(RTP/RTSP、MMS、RTMP等)将视频文件传输到客户端,供用户在线观看;也可从视频采集、压缩软件接收实时视频流,再以流式协议直播给客户端。

对于中心节点流媒体服务器,要求有存储容量大等特点,一般常采用刀片式服务器和外置存储架构方式。

对于缓存节点和边缘节点,要求并发量大,同时对单节点要求的占用空间较小,因此常采用机架式服务器。(3)RR设备

RR设备负责用户节点的调度,要求并发处理能力强,存储要求不高,通常考虑采用机架式服务器,选型空间大,占用空间小。(4)数据库服务器

数据库服务器属于CDN内部的核心设备,要求稳定,高并发,对于数据安全又较高的要求,通常采用双机热备方式,可采用外置存储方式。(5)专用型服务器

专用型服务器通常是在通用型服务器的基础上为了适应CDN特点而专门研发的设备,针对流媒体服务设备高存储、高网络吞吐、低功耗等特点,减少非必需功能,减少冗余部件;同时共享通用服务器基础架构,提高供电和散热效率,提升部署密度,降低功耗,提高可维护性。

专用型服务器可采用与定制化服务器厂商合作,对于定制化服务器,当量比较少时,成本相对较高。

适合定制化服务器的场景有:

① 互联网:百度、腾讯、新浪、阿里巴巴、Google、Facebook等。

② 云计算:Amazon EC2、Microsoft Azure、阿里云、盛大云。

③ 高性能:天河一号、TACC、Disney。

④ 大数据:Google、Facebook、Yahoo。

⑤ CDN设备商:华为、中兴、青牛、Cicso、UT等。3.按处理器架构划分

按服务器的处理器架构(也就是服务器CPU所采用的指令系统)划分可将服务器分为CISC架构服务器、RISC架构服务器和VLIW架构服务器3种。(1)CISC架构服务器

CISC的英文全称为Complex Instruction Set Computer,即复杂指令系统计算机,从计算机诞生以来,人们一直沿用CISC指令集方式。早期的桌面软件是按CISC设计的,并一直沿续到现在,所以微处理器(CPU)厂商一直在走CISC的发展道路,包括Intel、AMD,还有其他一些现在已经更名的厂商,如 TI(德州仪器)、Cyrix 以及 VIA(威盛)等。在CISC微处理器中,程序的各条指令是按顺序串行执行的,每条指令中的各个操作也是按顺序串行执行的。顺序执行的优点是控制简单,但计算机各部分的利用率不高,执行速度慢。CISC架构的服务器主要以 IA-32架构(Intel Architecture,英特尔架构)为主,而且多数为中低档服务器所采用。通常所说的x86平台也就是CISC架构。

如果企业的应用都是基于NT平台的应用,那么服务器的选择基本上就定位于IA架构(CISC 架构)的服务器。如果企业的应用主要是基于Linux操作系统,那么服务器的选择也是基于IA结构的服务器。如果应用必须是基于Solaris的,那么服务器只能选择SUN服务器。如果应用是基于AIX(IBM的UNIX操作系统)的,那么只能选择 IBM UNIX服务器(RISC架构服务器)。

CISC架构的服务器主要以 IA架构(Intel Architecture,英特尔架构)的服务器为主,市场上最大的两家处理器厂商就是Intel和AMD。(2)RISC架构服务器

RISC的英文全称为Reduced Instruction Set Computing,中文即精简指令集,它的指令系统相对简单,只要求硬件执行很有限且最常用的那部分执令,大部分复杂的操作则使用成熟的编译技术,由简单指令合成。目前在中高档服务器中普遍采用这一指令系统的CPU,特别是高档服务器全都采用 RISC 指令系统的 CPU。在中高档服务器中采用 RISC 指令的CPU主要有Compaq(康柏,即新惠普)公司的Alpha、HP公司的PA-RISC、IBM公司的Power PC、MIPS公司的MIPS和SUN公司的Spare。

通常RISC服务器搭配专有的UNIX操作系统,各个厂商软硬件的专属性很强。

以下列举了最新的硬件和软件信息。

IBM Power5/Power5+:IBM AIX 5L(5.2)。

SUN UltraSPARC IV/IV+:Solaris 10。

HP Alpha Server:HP True64 Unix、OpenVMS。

HP PA-RISC 8800:HP-Unix 11i。(3)VLIW架构服务器

VLIW是英文Very Long Instruction Word的缩写,中文意思是超长指令集架构,VLIW架构采用了先进的EPIC(Explicitly Parallel Instruction Computing)设计,我们也把这种构架叫做“IA-64架构”。每时钟周期例如IA-64可运行20条指令,而CISC通常只能运行1~3条指令,RISC能运行4条指令,可见VLIW要比CISC和RISC强大得多。VLIW的最大优点是简化了处理器的结构,删除了处理器内部许多复杂的控制电路,这些电路通常是超标量芯片(CISC和 RISC)协调并行工作时必须使用的,VLIW 的结构简单,也能够使其芯片制造成本降低,价格低廉,能耗少,而且性能也要比超标量芯片高得多。目前基于这种指令架构的微处理器主要有Intel的IA-64和AMD的x86-64两种。

EPIC和VLIW有很大的关系。VLIW是美国的Multiflow和Cydrome公司于20世纪80年代设计的体系结构,目前主要应用于Trimedia(全美达)公司的Crusoe和Efficeon系统的处理器中,AMD64处理器系列也借鉴了这一指令系统。而Intel最新的IA-64架构的EPIC(显示并行指令计算)也是从VLIW指令系统中分离出来的。4.按应用层次划分(1)入门级服务器

入门级服务器通常只使用一块CPU,并根据需要配置相应的内存(如256MB)和大容量IDE硬盘,必要时也会采用 IDE RAID(一种磁盘阵列技术,主要目的是保证数据的可靠性和可恢复性)进行数据保护。入门级服务器主要是针对基于Windows NT、NetWare等网络操作系统的用户,可以满足办公室型的中小型网络用户的文件共享、打印服务、数据处理、Internet接入及简单数据库应用的需求,也可以在小范围内完成诸如E-mail、Proxy、DNS等服务。

对于一个小部门的办公需要而言,服务器的主要作用是完成文件和打印服务,文件和打印服务是服务器的最基本应用之一,对硬件的要求较低,一般采用单颗或双颗CPU的入门级服务器即可。为了给打印机提供足够的打印缓冲区需要较大的内存,为了应付频繁和大量的文件存取要求有快速的硬盘子系统,而好的管理性能则可以提高服务器的使用效率。(2)工作组级服务器

工作组级服务器一般支持1~2个Xeon处理器或单颗P4(奔腾4)处理器,可支持大容量的ECC(一种内存技术,多用于服务器上)内存,功能全面,可管理性强且易于维护,具备了小型服务器所必备的各种特性,如采用 SCSI(一种总线接口技术)总线的 I/O(输入/输出)系统,SMP对称多处理器结构、可选装RAID、热插拔硬盘、热插拔电源等,具有高可用性特性,适用于为中小企业提供Web、Mail等服务,也能够用于学校等教育部门的数字校园网、多媒体教室的建设等。

通常情况下,如果应用不复杂,例如没有大型的数据库需要管理,那么采用工作组级服务器就可以满足要求。目前,国产服务器的质量已与国外著名品牌相差无几,特别是在中低端产品上,国产品牌的性价比具有更大的优势,中小企业可以考虑选择一些国内品牌的产品。此外,HP等大厂商甚至推出了专门为中小企业定制的服务器。但个别企业如果业务比较复杂,数据流量比较多,而且资金允许的情况下,也可以考虑选择部门级和企业级的服务器来作为其关键任务服务器。目前HP、DELL、IBM、浪潮都是较不错的品牌。(3)部门级服务器

部门级服务器通常可以支持2~4个Xeon(至强)处理器,具有较高的可靠性、可用性、可扩展性和可管理性。首先,集成了大量的监测及管理电路,具有全面的服务器管理能力,可监测如温度、电压、风扇、机箱等状态参数。此外,结合服务器管理软件,可以使管理人员及时了解服务器的工作状况。同时,大多数部门级服务器具有优良的系统扩展性,当用户在业务量迅速增大时能够及时在线升级系统,可保护用户的投资。目前,部门级服务器是企业网络中分散的各基层数据采集单位与最高层数据中心保持顺利联通的必要环节,适合中型企业(如金融、邮电等行业)作为数据中心、Web站点等应用。(4)企业级服务器

企业级服务器属于高档服务器,普遍可支持4~8个PIII Xeon(至强)或P4 Xeon(至强)处理器,拥有独立的双PCI通道和内存扩展板设计,具有高内存带宽、大容量热插拔硬盘和热插拔电源,具有超强的数据处理能力。这类产品具有高度的容错能力、优异的扩展性能和系统性能、极长的系统连续运行时间,能在很大程度上保护用户的投资,可作为大型企业级网络的数据库服务器。

目前,企业级服务器主要适用于需要处理大量数据、高处理速度和对可靠性要求极高的大型企业和重要行业(如金融、证券、交通、邮电、通信等行业),可用于提供ERP(企业资源配置)、电子商务、OA(办公自动化)等服务。4.1.2 专用硬件的发展1.基本发展

专用硬件发展历程如图4-3所示。图4-3 专用硬件发展历程

第一代的定制化服务器的结构采用通用服务器的架构模式,在通用服务器的基础上减少冗余部件,增加存储资源或者计算资源、散热资源,提高散热效率。

第二代定制化服务器采用松耦合模式,在一个机箱内包含多个存储节点和计算节点,允许混合节点类型,在不牺牲密度的前提下,可灵活配置计算型和存储型节点的比例。灵活适应不同存储需求和并发需求的CDN节点;同时可使用内置电源和机架整体电源供电模式,提供供电效率;可以热插拔。

第三代定制化服务器采用整机架结构,整体集中供电、散热、可支持热插拔,整体功耗较低,适合用于大并发、高吞吐、高存储的CDN节点;高吞吐的背板交换。

第四代定制服务器采用数据中心结构,降低整体空间、集中供电、集中散热、减少单机硬件冗余,采用自然冷却技术,减少风流,风道隔离。2.IT在服务器存储的趋势

服务器存储技术中存储缓存在硬件技术上的创新飞速发展,例如 EMC 公司的快速缓存技术,NetApp公司的性能加速模块。尽管这些物理存储的特征依旧很重要,但是厂商们正从软件层提供类似的功能,如VMware的Content-Based Read Cache(CBRC)技术。

在硬件和软件领域,高速缓存减轻了需要从存储媒体读取的数据量。依据硬件解决方案,数据仍然需要遍历以太网或光纤通道网络。然而,依据如CBRC的软件功能,数据缓存在Hypervisor级并且不需要遍历以太网或光纤通道网络。

有更多存储的例子:Pivot 3在本地Hypervisor所在的硬盘驱动器上创建了网格存储解决方案,Atlantis Computing的 ILIO创建了一个脱离本地或共享磁盘的NAS卷,增加了来自于Bison和缓存数据的存储。

这些周期性的创新已经表明,当解决方案还在起步阶段,需要更多的资源消耗,供应商通常会首先发布专用硬件。随着时间的推移,这些解决方案变得成熟,需要更少的资源,但是摩尔定律指明计算能力将会一直有所提升,直到软件实施变得可行。即使超过这点并引进软件选择,为实现高性能,基于硬件的工具将会继续推动创新并保留这一解决方案。

由于硬件的笨拙、昂贵,硬件供应商很可能会引起创新。大多数的计算机资源依附硬件,因为其稳定高效有利于新特征。然而,软件实施更灵活,通常比较便宜。硬件创新将为市场带来新的特性,软件会将此特征实现并提供给大众。3.云技术

随着云服务器的不断发展,这种服务器整合的趋势已经逐渐取代了原有服务器。传统的服务器运行时,如果数据量增加,计算量过大,就会添置价格不菲的新主机来增加计算量。这种大规模的主机模式使得服务器的资源被大大浪费。

虚拟化技术为这种传统服务器模式提供了新的解决方案,无需服务器提供商增加主机,只需要一次性购置性能极高的主机,在主机基础上配置多个服务器即可,减少了服务器的物理设备的同时还能给服务器的管理带来了很大的便利。

有了云服务器这种服务器模式,又在虚拟技术的基础上提升了一个层次。云服务能够由统一的云服务提供商来完成,只需要接入互联网,就可以在任何设备上进入到系统。云服务器的广泛应用可以使得用户更好地根据自己的发展需要自行针对业务需求寻找解决方案。用户可以多花点时间来分析业务,发掘业务中的技术问题,通过权衡利弊需求,尽量减少不能满足工作的系统风险,因此,企业的服务器安全性都牢牢掌握在自己的手里。4.1.3 通用硬件的发展1.CPU(1)服务器CPU的发展历程

1995年Intel 推出了第一款PC 服务器或者工作站用的处理器。2003年之前一直都是Intel一家独大,以至于PC服务器统称为IA架构(英特尔架构)。2003年AMD推出了划时代意义的AMD64架构,称为x86-64体系,打破了Intel的垄断地位。

表4-1列出了CPU的关键参数。表4-1 CPU关键参数(2)CPU的几个关键参数

主频也叫时钟频率,单位是MHz/GHz,用来表示CPU的运算速度。CPU的主频=外频×倍频系数。很多人以为CPU的主频指的是CPU运行的速度,实际上这个认识是很片面的。CPU的主频表示在CPU内数字脉冲信号振荡的速度,与CPU实际的运算能力是没有直接关系的。当然,主频和实际的运算速度是有关的,主频仅仅是CPU性能表现的一个方面,而不代表CPU的整体性能。

外频是CPU的基准频率,单位也是MHz/GHz。外频是CPU与主板之间同步运行的速度,而且目前的绝大部分计算机系统中外频也是内存与主板之间的同步运行的速度,在这种方式下,可以理解为CPU的外频直接与内存相连通,实现两者间的同步运行状态。外频与前端总线(FSB)频率很容易被混为一谈,下面的前端总线介绍就来谈谈两者的区别。

前端总线频率(即总线频率)直接影响CPU与内存直接数据交换速度。由于数据传输最大带宽取决于所有同时传输的数据的宽度和传输频率,即数据带宽=(总线频率×数据带宽)/8。外频与前端总线频率的区别在于:前端总线的速度指的是数据传输的速度,外频是CPU与主板之间同步运行的速度。也就是说,100MHz外频特指数字脉冲信号在每秒钟振荡1000万次;而100MHz前端总线指的是每秒钟CPU可接收的数据传输量是100MHz×64bit÷8Byte/bit=800MB/s。

缓存是指可以进行高速数据交换的存储器,它先于内存与CPU交换数据,因此速度很快。L1 Cache(一级缓存)是CPU第一层高速缓存。内置的L1高速缓存的容量和结构对CPU的性能影响较大,不过高速缓冲存储器均由静态RAM组成,结构较复杂,在CPU管芯面积不能太大的情况下,L1级高速缓存的容量不可能做得太大。L2 Cache(二级缓存)是CPU的第二层高速缓存,分内部和外部两种芯片。内部的芯片二级缓存运行速度与主频相同,而外部的二级缓存则只有主频的一半。L2高速缓存容量也会影响CPU的性能,原则是越大越好。在一些高端处理器中还有L3缓存,也是为了提高处理器读取数据的效率。

制造工艺指在硅材料上生产CPU时内部各元器件的连接线宽度,一般用μm/nm表示。微米值越小制作工艺越先进,CPU可以达到的频率越高,集成的晶体管就可以更多。目前Intel和AMD的都已经达到了95nm、65nm和45nm的制造工艺。(3)CPU最新热点技术概览

64位技术之前的RISC平台全是纯64位架构,包括后来的Itanium,2003年AMD推出兼容32位的x86-64,大家才开始讲64位,2005年下半年就全部是64位了。目前AMD凭借基于AMD64的Opteron在服务器市场达到了20%~25%以上的份额。

双核技术、多核技术,2001年IBM的双核Power4,2004年HP双核PA-8800、SUN双核UltraSPARC IV;AMD已经在推第二代 Socket F的双核,Intel的代表则是第三代的WoodCrestIntel在2006年年底推出了4核心芯片,AMD在2007年第二季度推出。

其他技术主要有 90nm制程转向 65nm、45nm制程;高缓存(双核Xeon每核 2MB L2或者 4MB共享缓存);防病毒(AMD的NX Bit、Intel的Execute Disable Bit);省电(Intel的DBS按需转换技术、AMD的Power Now!)。(4)Intel超线程技术——HT

Intel超线程技术示意图如图4-4所示。

超线程技术的优势体现在特定软件,如3Dmax、Maya、Office、Photoshop较明显的提升性能,适合多任务批处理工作,Windows XP经过优化。劣势体现在单任务性能下降,出错概率增大,大多程序没有经过优化。图4-4 Intel超线程技术(5)双核与超线程的比较

超线程是英特尔所研发的一种技术,于2002年发布。超线程的英文是HT技术,全名为Hyper-Threading。超线程技术原来只应用于Xeon处理器中,当时称为Super-Threading。之后陆续应用在Pentium 4中,将技术主流化。早期代号为Jackson。

双核给操作系统和应用层提供两个处理内核,而超线程是虚拟的内核。超线程是把一个物理处理器看成两个逻辑处理器,用以提高处理器的利用率。在超线程模式,CPU的缓存被“逻辑的处理器”划分,每一个逻辑处理器占用一定容量的缓存,而在 AMD的双核中,每个物理的核独占自己专有的缓存。采用超线程技术的处理器仍然无法解决前端总线的瓶颈,而AMD的双核技术基于直连架构。

并不是所有的应用程序都能从超线程技术中获益。CPU的支持,实现“超线程”的功能必须选购一块支持HT技术的处理器。Intel支持这一技术的CPU有Core i全系、Pentium4系列的3.06、2.4C、2.6C、2.8C、3.0GHz、3.2GHz处理器以及最新上市的Prescott核心的处理器。正式支持HT技术的芯片组有Intel的875P、E7205、850E、865PE/G/P、845PE/GE/GV、845G(B-stepping)、845E。其中875P、E7205、865PE/G/P、845PE/GE/GV以及最新推出的915/925芯片组均可直接支持超线程技术的使用,而早前的845E以及850E芯片组,只要升级BIOS就可以解决支持的问题。SiS方面有SiS645DX(B版)、SiS648(B版)、SiS655、SiS658、SiS648FX。VIA方面有P4X400A、P4X600、P4X800。同时,主板的BIOS也必须支持超线程功能。目前在微软的操作系统中只有Windows XP及以上的版本才能正式支持超线程技术,Windows 98/Me/2000均不支持此项功能。最大发挥HT技术的运行效能还需要真正支持超线程技术的软件,现实中这样的软件是少之又少的。除了MS Office系列软件和一些视频、图形如Photoshop等专业软件外几乎都不支持HT技术。很多游戏也不支持HT技术。(6)Intel 64位技术——EM64T

Intel官方对EM64T是这样定义的:EM64T全称Extended Memory 64 Technology,即扩展 64bit内存技术。EM64T是 Intel IA-32架构的扩展,即 IA-32e(Intel Architectur-32 extension)。

Intel为支持EM64T技术的处理器设计了两大模式:传统 IA-32模式(Legacy IA-32 Mode)和 IA-32e扩展模式(IA-32e Mode)。在支持EM64T技术的处理器内有一个称之为扩展功能激活寄存器(Extended Feature Enable Register,IA32_EFER)的部件,其中的Bit10控制着EM64T是否激活。

在IA-32e扩展模式下也有两种模式:兼容模式和64位模式。但其中只有64位模式是真正的 64 bit计算。此时处理器才能利用 64 bit指令操作来支持64 bit内存寻址,还可以进行双精度(64 bit)整数运算。

在不同模式的转换中,处理的最大变化便是寄存器的改变。64 bit与32 bit定义的最大不同就在寄存器上。(7)Intel节能技术

Demand-Based Switching(按需切换技术):通过 EIST(Enhanced Intel SpeedStep Technology,增强型英特尔SpeedStep技术)实现DBS,动态调整处理器电压和内核频率,支持软件电源管理特性,使系统在获得优异的应用特性的同时降低平均功耗;EIST(增强型英特尔Speedstep技术)可让系统动态调整处理器电压和内核频率,从而降低能耗而减少产生的热量,降低能量消耗和能源成本。EIST同时要求兼容CPU、BIOS和OS。表4-2至表 4-8以及图4-5至图4-7所示为Intel CPU节能技术。表4-2 Intel Server平台最新产品线表4-3 Pentium D系列表4-4 Xeon 3000/3200系列表4-5 Xeon 5300系列表4-6 Xeon 5000/5100系列表4-7 Xeon 7000/7100系列表4-8 Intel Itanium2系列图4-5 Intel Xeon DP平台3代双核的发展(1)图4-6 Intel Xeon DP平台3代双核的发展(2)图4-7 Intel Xeon 4核处理器

5300系列(Clovertown)采用两颗Woodcrast芯片封装在一起的做法,因而5300系列依然采用的是先进的酷睿微体系架构。实现内装4核后,5300系列处理器比5100系列处理器有40%~60%的性能提升。

价格和无缝升级才是Clovertown最强的杀手锏,5300系列的价格会和高端的5100系列价格相差无几,且和5100共用一个平台,如图4-8所示。图4-8 Intel Xeon下一代4核处理器(Nehalem)(8)AMD崛起——AMD64架构

AMD双核结构如图4-9所示。图4-9 AMD双核结构(9)AMD增强防病毒技术

增强病毒防护(EVP)是一项内嵌于AMD64处理器中的硬件功能。通过结合Windows系统中的数据执行预防技术,EVP不仅可以识别特定的恶意代码,尤其是那些执行缓存溢出攻击的代码,还可以防止它们在整个系统中自我复制和扩散。

据微软的统计,目前的病毒有超过50%是基于“缓冲溢出”漏洞对系统进行破坏的。AMD64处理器配合微软操作系统,阻止“缓冲溢出”型病毒(如蠕虫病毒、振荡波等)发作,使原来的病毒变成没有危害的程序,同时阻断了病毒在互联网上的传播。AMD Server平台产品路线图如图4-10所示。图4-10 AMD Server平台产品路线图(10)基于SocketF的第二代双核Opteron

基于SocketF的第二代双核Opteron建立在一致的架构上,能够降低总体拥有成本,比如一次性转换到新插槽基础架构,从双核无缝升级到 4核处理器,同时不增加散热量。Opteron具有持续领先的高性能、低功耗DDR2内存,一致的95W设计功耗和更低功耗选项;还有领先的 x86 虚拟化技术,包括 AMD 图4-11 AMDQuad-CoreOpteron(1)虚拟化(AMD-V)硬件辅助支持和行业领先的直连架构,如图4-11至图4-14所示。图4-12 AMD Quad-Core Opteron(2)

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载