收藏 分享(赏)

主动网络Socket编程的设计与实现.docx

上传人:cjc2202537 文档编号:5998335 上传时间:2019-03-23 格式:DOCX 页数:11 大小:314.41KB
下载 相关 举报
主动网络Socket编程的设计与实现.docx_第1页
第1页 / 共11页
主动网络Socket编程的设计与实现.docx_第2页
第2页 / 共11页
主动网络Socket编程的设计与实现.docx_第3页
第3页 / 共11页
主动网络Socket编程的设计与实现.docx_第4页
第4页 / 共11页
主动网络Socket编程的设计与实现.docx_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、活跃网络 Socket 编程的设计与实现K.L.埃迪劳,罗伊梁爱德华罗杰斯高级电气工程和计算机系加拿大多伦多大学 加拿大多伦多roy.leung utoronto.ca eddiecomm.toronto.edu摘要:可编程节点和活跃网络的概念将可编程引入到通信网络中。代码和数据可以发送和修改。近日,多个研究小组已经设计和实现自己的设计平台。每个设计都有其自己的优点和缺点,此外,存在一个平台之间的互操作性问题。因此,我们引入一个类似网络socket 编程的概念。我们建立一组为应用程序编程的简单接口。这组被称为活跃网络Socket 编程(ANSP)接口,将在未来的所有执行环境上工作。因此,ANS

2、P 提供一个类似于“一次性编写,无限制运行”的开放的编程模型,它可以工作在所有的可执行环境。它解决了在活跃网络的异构性,当应用程序需要访问异构网络内的所有地区,在临界点部署特殊服务或监视整个网络的性能时显得相当重要。我们的方法是在现有的环境中,所有应用程序可以很容易地安装上提供了一个薄薄的透明层而不是引入一个新的平台。关键词:活跃网络;应用程序编程接口;活跃网络 socket 编程;一导言1990 年,克拉克和藤农豪斯1提出了一种新的设计框架以为互联网引入新的网络协议。自公布这一标志性文件,活跃网络设计框架2,3,10 已经慢慢在 20 世纪 90 年代末成形。活跃网络允许程序代码和数据可以同

3、时在互联网上提供积极的网络范式。此外,他们可以在传送到目的地的过程中得到执行和修改。ABone 作为一个全球性的骨干网络,开始进行活跃网络实验。除执行平台的不成熟,商业上活跃网络在互联网上的部署也成为主要障碍。例如,一个供应商可能会不乐意让网络路由器运行一些可能影响其预期路由性能的未知程序, 。因此,作为替代提出了允许活跃网络在互联网上运作的概念,如欧洲研究课题组提出的应用层活跃网络(ALAN)项目4。在 ALAN 的项目,活跃服务器系统位于网络的不同地址并且这些应用程序都可以运行在活跃系统的网络应用层上。另一个潜在的方法是网络服务提供商提供更优质的活跃网络服务类。这个服务类应该提供最优质的服

4、务质量(QOS) ,并允许路由器对计算机的访问。通过这种方法,网络服务提供商可以创建一个新的收入来源。对活跃网络的研究已取得稳步进展。由于活跃网络在互联网上推出了可编程性,应建立供应用程序工作的可执行平台。这些操作系统平台执行环境(EES) ,其中一些已被创建,例如,活跃信号协议(ASP) 12和活跃网络传输系统(ANTS)11 。因此,不同的应用程序可以实现对活跃网络概念的测试。在这些 EES 环境下,已经开展了一系列检查活跃网络概念的实验,例如,移动网络5,网页代理6,多播路由器7。活跃网络,引进了很多在网络上兼有灵活性和可扩展性的方案。几个研究小组已经提出了各种可执行环境,可通过路由器进

5、行网络计算。他们的成果和现有基础设施的潜在好处正在被评估8,9 。不幸的是,他们很少关心互操作性问题,活跃网络由多个执行环境组成。例如, ABone 中存在三个 EES。专为一个 EES 编写的应用程序不能在其他平台上运行。这就出现了一种资源划分为不同运行环境的问题。此外,总是有一些关键的网络应用需要跨环境运行,如信息收集和关键点部署监测网络的服务。在本文中,被称为活跃网络 Socket 编程(ANSP)的框架模型,可以在所有 EES 下运行。它提供了以下主要目标: 通过单一编程接口编写应用程序。 由于 ANSP 提供的编程接口,使得 EES 的设计与 ANSP 独立。这使得在未来的执行环境的

6、发展和提高更加透明。 ANSP 针对不同执行环境之间的互操作性问题。 通过的 ANSP 设计,不同 EES 的优点和缺点显而易见。这将有助于在未来设计更好的EES。ANSP 的主要目标是使在 ANSP 下编写的所有应用程序,可以运行在 ABone 测试平台。而 ANSP 框架是统一网络环境作用中是必不可少的,我们相信,在不同环境下的可用性,对未来执行环境的发展是有利的。ANSP 并不是取代所有现有的环境,而是研究启用新的网络服务执行环境的设计。因此,ANSP 的设计是对所有执行环境之上薄而透明的一层。目前,它的代码自动加载依赖于底层环境。因此,部署在路由器的 ANSP 是可选的,不需要任何执行

7、环境的变化。二针对 ANSP 的设计问题ANSP 统一现有各 EES 的编程接口。ANSP 设计在概念上类似于中间件的设计,为不同的 EES 提供适当的翻译机制。一个统一的接口只是整个 ANSP 平台的一部分。有很多需要考虑的问题,除了翻译一套编程接口,在不同 EES 下可执行文件调用,也包括其他的设计问题,例如, 一个统一的线程库处理线程操作。 一个全球性软件存储,可以在一个给定的路由器进行不同环境下的信息共享。 统一的解决方案用于在不同的环境,更重要的是,路由信息交换机制应横跨 EES 获得全球统一的网络视图。 应该是独立于任何活跃网络编程语言的编程模型。 最后,翻译机制来隐藏头结构的异构

8、性。A. 异构性编程模型在程序调用时,每个执行环境提供各种抽象的服务和资源。一套定义组件模型每个部分都有其自己的编程接口。对于抽象的封装编程模型10 是在活跃网络中最流行的设计,这种模型在 ANTS11 和 ASP 12使用,并正被 ABone 支持。虽然他们是在相同的封装模型基础上开发的,但各自的组件和接口是不同的。因此,在一个 EES 上的程序不能运行在其他 EES 上。ANTS 和 ASP 的编程模型如图 1 所示。ANTS 包括三个不同的组件:应用程序,封装,和执行环境。存在针对唯一来源和目的地路由器的应用程序用户接口。然后,用户可以指定其定制的网络行为。根据程序的功能,应用程序发送一

9、个或多个封装进行操作。这两个应用程序和封装工作的执行环境,为其内部的编程资源提供输出接口。每次访问路由器时封装便执行其操作。当它到达目的地,在目的地的应用程序就会以封装进行回复或提示用户事件已经收到。ANTS 的一个缺点是,它仅允许“引导”的应用程序。图 1 ANTS 和 ASP 的编程模型相比之下,ASP 不限制用户运行“引导”的应用程序。其程序接口与 ANTS 不同,但ASP 也由三个组成部分:客户端应用程序,环境和 AA 组件。应用程序客户端可以在活跃或不活跃的主机上运行。它可以通过简单的请求消息发送到 EES 来激活应用程序。客户允许其用户在附近的活跃路由器触发操作。 AA 组件是网络

10、服务的核心,其规格分为两部分。其中一部分指定其来源和目的地路由器的行动,其作用类似于 ANTS 中的应用,但它不提供与用户交互的直接接口。另一部分定义了它在内部网络中的行为,与 ANTS 中封装的功能行为相似。为了解决这两种模式的异构性,ANSP 需要引进一套新的编程接口,它的接口和执行模型映射到内部路由器的 EES。B. 统一线程库为了各个实例之间不互相影响和访问其他信息,可执行环境必须保证各个实例间的独立性。有多种方法来执行访问控制。一个简单的方法是为实例应用程序配备一个虚拟机。这依赖于虚拟机隔离服务的安全设计。ANTS 就是采用这种方法的一个例子。然而,使用多个虚拟机需要的资源量相对较大

11、,并可能在某些情况下,效率低下。因此,某些环境,如 ASP,允许网络服务在虚拟机上运行,但只允许其有限地访问自己的包库。例如,ASP提供强制访问控制的线程库。因为在这些类型的线程机制的差异,ANSP 设计一个允许不同线程机制统一访问的新线程库。C. 软存储软存储允许封装在路由器上插入和检索信息,从而使多个封装能够交换网络内的信息。然而,网络服务在路由器不同的环境下执行时容易发生问题,尤其是当网络服务在一个环境中插入信息,稍后在同一路由器在另一个环境下检索其数据时这个问题尤其严重。由于执行环境不允许交换信息,网络服务无法检索其以前的数据。因此,我们的 ANSP 框架需要考虑到这个问题,并提供在每

12、个路由器上进行数据访问的软存储机制。D统一网络的完整视图当用 ANSP 编写应用程序时,它便可以在不同环境下完美运行。以前基于不同 EES 的小型分区网络可以合并成为一个大的网络,整个大网络的拓扑结构也就显得很有必要。然而,不同的执行环境有不同的解决方案和专有的路由协议。为了合并这些分区,ANSP 必须提供一个新的统一的解决方案。这项新计划在任何环境下都能由 ANSP 编译出来。定义了新的方案之后,新的路由协议可以实现在不同的环境之间交换拓扑信心。这使得在每个网络环境中,其网络拓扑结构有一个完整的视图。E独立语言模型任何编程语言都可以在在可执行环境下编写,Java 以动态代码承载能力使其成为最

13、常用的语言之一。实际上,ANTS 和 ASP 都是用 Java 开发的。然而,如图 2 所示的活跃网络架构不限制使用其他语言开发的额外的执行环境。例如,Abone 中的 anted 作为活跃网络后台进程提供路由器上多个执行环境的工作空间。又如,PLAN 未来将在 Abone 中部署在OCaml 中。虽然现在的网络设计可以用任何语言在多个环境中进行编程,但是缺少使得应用程序在这些环境中完美运行的工具。因此,ANSP 需要解决的问题之一就是设计一种可以使用不同编程语言的编程模型。虽然我们现在着重考虑 ANTS 和 ASP 的设计,PLAN 将是下一个待解决问题并提高 ANSP 的设计。图 2 AN

14、SP 框架模型F.封装头结构的异构性在不同的 EES 下头结构是不同的。他们执行相关的信息,例如封装,封装的种类,来源和目的地。当在目标环境中执行某些决定时这个信息是非常重要的。一个统一的模式,应允许其程序代码在不同环境下执行。然而,封装头阻止不同的环境来解析它的信息。因此,ANSP 应在目标环境收到这些信息之前进行相应头信息的转译。三ANSP 编程模型下面我们将予以讨论提到过的 ANSP 设计中遇到的编程模型的问题。这个建议框架提供了一套允许在所有执行环境下运行应用程序的统一的编程接口。该框架如图 3 所示。它是由两层活跃网络架构集成的,并且这两层都可以独立运作。上层的应用程序提供一个统一的

15、编程模型,下层的应用程序为在不同环境下的应用提供适当的转译过程。这项服务很必要,因为每个环境都有其自己的头定义。ANSP 提供了一套服务和资源的抽象编程调用。以封装为基础的模型已用于 ANSP 并映射到 ANTS 和 ASP 的模型中。因此,ANSP 允许应用程序通过一系列单一接口访问不同环境下的编程资源。映射必须以一致和透明的方式进行。因此,ANSP 好像是提供执行环境的应用程序,而实际上,它是一个能够使用底层所提供服务的重叠式结构。ANSP 编程模型是基于四个组成部分之间的相互作用:客户端应用程序,应用程序存根,封装,服务器。图 3 ANSP 的信息流应用程序客户端:在通常情况下,一个活跃

16、的应用程序需要一些方法为它的用户提供信息,如网络的状态。如果 ANSP 在非活动主机上运行时,应用程序客户端将与图形用户界面(GUI )共同运行。应用程序存根:当应用程序启动时,它会激活应用程序客户端在其附近的活动节点创建一个应用程序存根。应用程序存根有两个任务。其中之一是应用程序客户端接收来自用户的指示。另一个是从网络接收传入封装和执行相应动作。通常,有两种类型的动作,即:通过网络回复或传达封装,或通知用户封装传入。封装:一个活跃的应用程序可能包含几个封装类型。他们每个都执行程序代码(也称为转发常规) 。由于应用程序定义了封装以及应用程序存根之间相互作用的一个协议,每个封装沿源和目的地之间的

17、路径访问执行其转发程序的每个路由器。服务器基端:服务器基端被设计成能够从应用程序存根和不同的 EES 输出路由器的环境服务和执行程序调用。当封装到达时,该基端被自动装载。ANSP 组件之间的相互作用如图 3 所示。 ANSP 在一些关键部件的设计,将在以下小节中讨论。A. 封装ANSPXdr decode()ANSPXdr encode()int length()Boolean execute()通过扩展抽象类 ANSP 封装来创建新类型的封装。新的扩展需要来定义他们自己的转发程序以及它们的序列化程序。这些方法如下所示:下面列出在 ANSP 中封装的动作。它与 ANTS 中的动作过程类似。1

18、封装在网络中以串行二进制表示。当活跃的路由器接收到一个字节序列,它调用decode()转换成封装序列。2 路由器调用封装转发程序,执行 execute()。3 当封装已完成其工作并通过调用 send()自身转发到下一跳,隐式调用 encode()便将封装转换成一个新的串行字节。lenth()在 encode()调用的时候用来确定所产生字节序列的长度。ANSP 提供了 XDR 库,也称为 ANSPXdr,用来减轻编码和解码工作的压力。B.服务器基端在主动节点,基端提供了一个统一的接口用来导出 EES 可用资源供其它的 ANSP 组件使用。这些服务可能包括线程管理,节点查询,以及软存储,如表 1

19、所示。表 1 服务器基端功能调用功能定义 描述boolean send(Capsule,Address)利用环境所提供的路线将封装好的内容发送到目的地ANSPAddress getLocalHost()将主机地址回执,这在封装要确定自身位置时尤为重要Boolean isLocal(ANSPAddress)当输入参数与主机地址匹配时为真值,反之为假createThread() 创建一个新的线程putSStore(key,Object)Object getSStore(key)removeSStore(key)这三个函数相应进行数据的存储、提取和更改forName(PathName) 在 ANSP

20、 中,该函数可以根据给定名字检索类对象。必要时此函数依赖于环境下的代码加载机制C.应用程序客户端boolean start(args)boolean start(args,runningEEs)boolean start(args,startClient)boolean start(args,startClient, runningEE)应用程序客户端是一个用户和附近活跃的源路由器之间的接口,它有下列功能:1注册代码:可能需要指定一些执行环境中应用程序代码的位置和名称,例如,ANTS。2应用程序初始化:它包括在源路由器上为应用程序选择一个执行环境。每个活跃的应用程序可以通过扩展抽象类 ANSP

21、Client 来创建一个客户端应用程序实例。这种扩展继承了 start()的方法来自动处理登记和初始化过程。所有的 start()重载版本接收一系列应用程序存根初始化时的参数。一个被称为 runningEEs 的可选参数允许应用程序客户端选择由标准化数值 ANEP ID,列表指定的特定环境变量集来执行代码登记。如果未指定此参数,默认设置只能包括 ANTS 和 ASP。D应用程序存根receive(ANSPCapsule)当应用程序客户端初始化完成和程序注册后,应用存根驻留在源和目的地路由器初始化 ANSP 应用程序。它的功能是负责接收和服务网络封装以及客户端要求的动作。ANSPApplicat

22、ion 便是一个通过扩展应用程序客户端抽象类而创建的新的实例。当 receive()被调用时,存根接收到一个新封装的定义。四ANSP 实例:TRACE-ROUTE已经创建了一个验证在异构环境中的 ANSP 设计正确性的实验平台。该实验台的路由器设置有三种类型:1包含在 ASP 上运行 ANTS 和 ANSP 后台程序的路由;2包含在 ANTS 上运行 ASP 和 ANSP 后台程序的路由;3同时包含 ASP 和 ANTS 的路由。这个 TRACE-ROUTE 测试程序是用 Java 编写的。程序记录所有中间路由器的源和目的地之间的访问,它还能测量它们之间的 RTT。图 4 显示了从客户端应用程

23、序的 GUI,并找到三沿路径执行环境:ASP ,ANTS 和 ASP。TRACE-ROUTE 程序的执行顺序如图 5 所示。图 4 程序人机界面TraceCapsule 程序代码是通过扩展 ANSPCapsule 抽象类而创建的。当 execute()开始时,它会查询 returning 以确定它是否是从目的地返回布尔值。如果 TraceCapsule 返回源路由器,它就会默认设置为 true,否则就是 false。对传送过程中, TraceCapsule 保持分别在 path 和trace 阵列中已访问的传输环境和路由器地址。当它到达一个新的路由器,它调用 addHop()来追加这两个数组的

24、路由器地址和环境。当它终于到达目的地,它便将 returning 返回为false 并调用 send()转发回源路由。当它返回到源路由,它会调用 deliverToApp()提供本身已经从源头上运行的应用程序存根。 TraceCapsule 通过调用分别用外部数据封装和去封装的函数 encode()和 decode()在网络上传输数据字段信息。 ANSP XDR 语法服从 ANTS XDR 库。函数 length()返回数据的长度,或可以使用的 XDR 库中的原始类型进行计算。图 5 TRACEROUTE 封装包的数据流五结论在本文中,我们提出了一个主动网络 Socket 编程(ANSP)的新

25、模式。它允许每个应用程序在多种网络环境中运行。我们的实验成功地验证了 ANSP 架构的设计,它在不做任何架构改变的情况下已经成功地在 ANTS 和 ASP 上工作。事实上,统一的编程接口层具有可塑性,可根据要求动态部署。参考文献:1 D.D.克拉克,D.L.藤农豪斯, “关于新时代网络协议架构的思考” Proc. ACM Sigcomm90, pp.200-208, 1990。2 D.藤农豪斯,J.M. 史密斯,W.D .司空思吉,D.J. 维泽和 G.J.明登, “主动网络的研究调查”IEEE 通信杂志,第 80-86 页,1997.1。3 D.维泽,U.林格和 J. 古塔克, “新互联网服

26、务的引入 ”IEEE 网络杂志, 1998.7/.8。4M.弗莱, A.戈什, “应用层主动网络” ,计算机网络,31 卷,7 号,pp.655-667,1999。5K.M.陈, “应用程序计算环境的研究” ,科廷科技大学,2000.3。6 S.巴塔克杰 ,K.L. 卡瓦特和 E. W. 则古拉, “自组织广域网高速缓存” , IEEE INFOCOM98,旧金山,加利福尼亚, 1998.3.29-4.2。7 L.M.莱曼,S.J.卡兰和 D.藤农豪斯, “主动可靠组播” , IEEE INFOCOM98,旧金山,加利福尼亚,1998.3.29-4.2。8D.迪卡斯, G. 帕如卡和 B.普拉

27、特纳, “可伸缩高性能主动网络节点” ,IEEE 网络,1999.1 /.2。9E.L.尼格伦,S.J.卡兰和 M.F.卡少, “PAN:高性能主动网络节点,支持多种移动代码系统” ,第二届 IEEE 会议上开放式体系结构和网络编程(OpenArch99)论文集,1999.3。10 D.藤农豪斯, D.维泽, “活跃网络架构的创建” ,多媒体计算机和网络,1996.1。11 D.维泽,J. 古塔克和 DL 藤农豪斯, “ANTS:网络协议工具包和动态部署” ,开放式体系结构和网络编程,1998 年 IEEE,1998,P:117-129 。12 B.布拉登,A. 瑟帕和 T.麦嘉华等, “ASP 执行环境”:www.isi.edu/activesignal/ ARP/ index.html13“Java 语言:一张白纸” , Tech. Rep.,Sun Microsystems,1998。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > 开发文档

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报