摘 要 随着因特网发展的日趋完善,出现了很多所谓的“覆盖网络”(Overlay Networks),它们的形式多种多样,功能也不尽相同。本文综述了覆盖网络的现状,并对因特网上目前最流行的三种覆盖网络分别进行介绍。
关键词 覆盖网络;内容传送;弹性
1 引言
近年来人们不断对因特网提出新的需求,例如多播、点对点文件共享以及保护隐私等。这些促使了因特网的进一步发展,为了更好地满足这些要求,覆盖网络应运而生。本文主要介绍了三种应用较为普遍的覆盖网络:路由覆盖网络、内容传送网络和应用层组播。文章安排第2节介绍覆盖网络的定义和覆盖网络出现的原因,第3节简述三种常见的覆盖网络,并举例说明。
2 覆盖网络的含义
因特网的体系结构是一种分层的结构,其最上一层是应用层,它利用传输层提供的服务完成相应的应用功能,如Web浏览、电子邮件服务、FTP服务等。但这种传统的结构已经不能很好地满足越来越复杂的应用需求。例如,多媒体应用的发展迫切要求网络能够支持组播功能,而目前的因特网尚不能完全支持组播。因此,有人提出在应用层实现组播,具体做法是参加组播的计算机自己构成一个覆盖网络,然后在应用层维护组播树的结构并由应用结点参与进行组播转发。
覆盖网络的基本含义就是在现有的因特网上构建一个完全位于应用层的网络系统。覆盖网络服务不是由因特网服务提供商(Internet Service Provider)提供的,而是由一种新型的服务提供商提供。它存在于因特网基础设施和应用程序之间,利用ISP提供的服务来向其用户提供更加优化的服务。可以认为,覆盖网络是分布在因特网上的一组提供服务的主机的集合,它们为一个或多个应用程序提供下层的基础设施,在某种程度上转发和处理应用程序的数据,所采用的方式与目前因特网上的不同;由第三方运营和管理,不是当前因特网体系结构的一部分。
3 常见的覆盖网络
3.1 路由覆盖网络
路由覆盖网络的作用是为了控制或改善网络上数据传送的路径,在一个路由覆盖网络中,通信双方的端结点并不改变,改变的是其分组可能经过的路由。我们知道,因特网由很多个自治系统(Autonomous System)组成,每个自治系统由一个ISP维护,分组在一个自治系统内部的路径由管理该自治系统的ISP决定,受多个因素影响,其中包括自治系统的内部结构和传送分组所需的开销。每个ISP与其相连结的ISP一般都会有商业上的协定,这些协定决定了分组从哪一条路径传送到下一个自治系统的开销最小。自治系统之间运行边界网关协议(Border Gateway Protocol),BGP允许每个ISP设定关于接收、转发分组的控制策略,然后通过分布式计算来确定一条从源结点到目的结点的“最佳”的路径。
但是由于每一个ISP侧重的目标不一致,比如有的ISP考虑传送分组的开销,有的关注可用带宽和传输延迟,还有的希望尽量合理地使用下层物理链路以减小拥塞出现的几率。因此,这种所谓的“最佳”路径对于用户来说很大程度上并不是最佳的。因特网本身的路由机制,完全由ISP决定,端用户和应用程序无法参与,这种路由机制对于端用户和应用程序来说是不精确的,它仅反映了ISP对开销和运行效率的考虑,而不顾用户和应用程序的真正需求。下一节我们将要介绍的是针对这种现状而提出的,旨在改善路由选择,并与应用程序紧密联系的一种覆盖网络——弹性覆盖网络(RON)。
3.1.1 弹性覆盖网络介绍
弹性覆盖网络是一种分布式覆盖网络体系结构,分布于因特网上的RON结点可以仅用数秒的时间检测到链路的失效和周期性的性能恶化,并快速恢复,而目前的因特网BGP协议则需数分钟。RON结点自动监测连接它们的下层因特网链路的质量,使用收集到的信息并结合该应用程序对哪一路径因子(如延迟、分组丢失率、链路吞吐量等)更敏感来决定某一应用程序的分组是直接由因特网链路转发还是经由另一RON结点,这样可以更加优化应用程序的路由选择。
3.1.2 RON的功能实现
首先要明确一个概念,所谓“RON结点”,并不是特殊的路由器硬件,第2.2节已经阐述覆盖网络的特点之一就是不对下层的因特网基础设施进行改变,RON结点是分布在因特网上的一些有组织的主机,这些主机上运行专门的RON软件,实现的功能在某种意义上与路由器相同,但应区别这两者。
RON结点在现有因特网之上构建一个虚拟的网络,这个网络的任意两个结点之间都会维护一条由下层因特网链路构成的路径,称为“虚链接”(virtual link)。它们之间会定期或不定期通过发送探测包和监测来了解当前的网络状态。比如,有一个N个结点构成的RON系统,每一个结点都会及时探测最新的到其余N-1个结点的虚链接的状态,这个状态包括三个方面的内容,延迟、分组丢失率和链路吞吐量。结点将得到的最新的虚链接的状态信息保存在本地的一个性能数据库中,并以此作为路由选择的重要依据。
使用RON转发数据的应用程序称为“RON客户”(RON Client),RON的主要设计目标就是为客户程序提供更加可靠的路由机制。RON客户通过一种叫做“管道”(conduit)的接口与RON结点进行交互,如图1所示。通过管道接收分组的第一个结点被称为“入点”(entry node),相应地,分组经过的最后一个结点称为“出点”(exit node)。
图1 RON体系结构
图2 RON的路由表
当第一个分组到达入点后,入点将用其特有的路由选择方式查找转发表(稍后将介绍)为其选择下一跳路由,即下一个RON结点——如果不需路由则直接交给接收程序,与传统路由转发机制相似——下一个结点继续与第一个结点相同的工作,直到到达出点。在转发的时候入点为该分组封装一个RON包头,其中包含“流标识”字段。入点在转发了第一个分组之后,后续到达的属于同一个客户的分组将被标上相同的流标识,不再查找转发表,直接按第一个分组所走的路径转发,后续的RON结点也一样。除非探测到路径中某条虚链接发生重大问题,不再适合传输该类型的分组,相应的结点才重新查找转发表从另一条虚链接转发。因为链路状态信息的获取十分及时,所以一旦发生故障结点可以迅速改变转发路径,这是传统的BGP协议无法做到的。
分组转发的机制是这样的,图3为RON的路由表结构。RON结点分三步完成一个完整的查找过程,第一步查找该分组的路由策略的类型,第二步针对分组的特点选择不同的路径因子,第三步才是查找分组的下一跳。可以看出,查找路由表是比较复杂的工作,因此只有在第一个分组到达或链路状态发生重大变化时才查找路由表。
图3 CDN的构架示意图
3.2内容传送网络(CDN)
3.2.1 介绍
内容传送是当前比较热门的话题之一,而且占用Internet带宽的很大一部分。对于因特网内容提供者(Internet Content Provider)来说,如果采用传统的中央网站式的内容传送,会有主干网带宽浪费及使用者下载内容时间过长等问题。CDN是这样一种覆盖网络,它将内容和服务动态地缓存在分布在因特网各处的结点上,用户不需集中访问原始的服务器,而只需访问物理上或逻辑上“较近”的服务器的镜像,这样可以大大缩短延迟,同时减少主干网的带宽消耗。
3.2.2 CDN的构架
从技术角度讲,CDN由许多分布在因特网上的缓存服务器组成,这些缓存服务器向用户提供内容和服务,其上缓存ICP发布的服务和内容。最重要的问题是如何在覆盖网络中进行用户请求的重定向以实现负载平衡。当接收到一个用户请求时,如何为其选择一个合适的缓存服务器取决于多个因素,主要包括:网络上的距离(主要是由路由选择决定)、物理上的距离、响应时间、服务器负载等。
用户访问的基本流程
1) 用户在自己的浏览器中输入要访问的网站的域名;
2)浏览器向本地DNS请求对该域名的解析;
3)本地DNS将请求发到网站的主DNS,主DNS再将域名解析请求转发到重定向DNS;
4)重定向DNS根据一系列的策略确定当时最适当的CDN节点,并将解析的结果IP地址发给用户;
5)用户向给定的CDN节点请求相应网站的内容;
6)CDN节点中的服务器负责响应用户的请求提供所需的内容。
目前较为常见的商业性CDN网络有Akamai、Digital Island等。最大的商业CDN Akamai 自己宣称,其占用Web流量的15%。CDN正日益受到内容提供者和用户的青睐,市场前景较为广阔。
3.3 应用层组播
3.3.1组播介绍
Deering 很早就提出了IP组播体系结构,设想组播功能在网络层实现,但是实际中却遇到了很多问题。技术上的原因是IP组播需要每个路由器维护每个组播组的状态,路由器的路由表也需要为每个组播组维护一个地址项,这在现在的因特网上是很难实现的;而且IP组播中拥塞控制也太复杂。这些因素使IP组播无法得到广泛应用。而近年对组播的越来越多的需求使人们重新考虑这一问题,新的解决方案也就应运而生了,这就是应用层组播。应用层组播是使用覆盖网络进行组播的一种组播形式,下一节将以Overcast这种较有代表性的体系结构来介绍使用覆盖网络的应用层组播。
3.3.2 Overcast:使用覆盖网络的可靠组播
Overcast被设计用于单源组播,一个Overcast覆盖网络由一个源服务器(为了应付可能出现的故障一般会有备份)、任意数目分布在因特网上的Overcast中间结点和标准的HTTP客户端构成。Overcast使用一个简单的建树协议(tree-building protocol)将中间结点组织成一棵转发树,使用一种叫做“上/下行协议”(Up/Down protocol)的协议来有效地维护Overcast网络的全局状态。
结点之间的虚拟链接是建立在下层的因特网上的,因此转发树的构造对于覆盖网络的性能有很大的影响。在Overcast中建立转发树的原则是尽量增大从根结点(源服务器)到所有中间结点的带宽。当一个新的结点加入覆盖网络时,建树协议便开始工作了。新结点要连接根结点,根结点现在就被看作“当前结点”(current node),接着这个新结点便开始一次次地试探,在不牺牲到根结点的带宽的前提下尽量将自己定位到远离根结点的结点上,成为其孩子结点。每次试探中新结点都检测其到“当前结点”的带宽和到“当前结点”的每一个孩子结点的带宽,如果到一些孩子结点的带宽和到“当前结点”的带宽一样高,则其中距离该新结点网络距离最短(跳数最少)的一个孩子结点成为“当前结点”,新的一次试探开始。这就是Overcast建树协议的基本思想。
为了让客户快速方便地加入,Overcast网络必须实时掌握Overcast结点的状态,这就需要用到“上/下行协议”。网络中的每个结点,包括根结点,都维护一张信息表,记录所有在树的层次结构中低于自己的结点,并保存网络变更的日志。协议的基础是每一个结点周期性地向其直接父结点报告自己的存在,如果一个孩子结点在一定的时间间隔内没有报告,则父结点认为该孩子结点“死了”。有可能是结点自身的故障、链路故障或该孩子改变了父结点。
当一个客户想要加入组播组时,它使用一个组的URL来发送HTTP GET 请求,根结点根据结点的位置和组播树的状态来决定该用户应连接到哪一个结点上去。组播树的状态信息能够实时传到根结点,所以根结点可以很快做出决定,这就实现了快速加入。
4 结束语
覆盖网络是一个由应用推动的研究领域。人们对因特网的诸多新的需求促使很多研究人员开始关注这一领域,并业已取得显着效果,许多覆盖网络已由实验室走向因特网,为人们提供了更为方便的服务。本文只介绍了三种最受关注的覆盖网络,实际上还有很多功能各异的覆盖网络,限于篇幅,本文没有再作介绍。
覆盖网络是一个新兴的研究领域,有着很高的应用价值和商业价值,发展前景十分广阔,值得广大研究人员继续深入研究。
参考文献
[1]David Andersen, Hari Balakrishnan, Frans Kaashoek, and Robert Morris,MIT Laboratory for Computer Science, Resilient Overlay Networks
John Jannotti, David K. Gifford, Kirk L. Johnson, M. Frans Kaashoek, James W. O‘Toole, Jr., Cisco Systems, Overcast: Reliable Multicasting with an Overlay Network
Frederic Thouin and Mark J. Coates, Department of Electrical and Computer Engineering, McGill University, A Review On Content Delivery Network
Stefan Saroiu, Krishna P. Gummadi, Richard J. Dunn, Steven D. Gribble, and Henry M. Levy, Department of Computer Science & Engineering, University of Washington, An Analysis of Internet Content Delivery Systems
徐恪,熊勇强,清华大学计算机科学与技术系 吴建平,微软亚洲研究院 对等网络研究综述
Field Security Operations Defense Information Systems Agency,Voice Over Internet Protocol (VOIP) Security Technical Implementation Guide
Robert Stone, UUNET Technologies, Inc., CenterTrack: An IP Overlay Network for Tracking DoS Floods
Zhenhai Duan_, Zhi-Li Zhang, Dept. of Computer Science & Engineering, University of Minnesota. Yiwei Thomas Hou, Bradley Dept. of Electrical & Computer Engineering, Virginia Tech. Service Overlay Networks: SLAs, QoS and Bandwidth Provisioning