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

上传人:b****7 文档编号:16662710 上传时间:2023-07-16 格式:DOCX 页数:14 大小:224.28KB
下载 相关 举报
主动网络Socket编程的设计与实现.docx_第1页
第1页 / 共14页
主动网络Socket编程的设计与实现.docx_第2页
第2页 / 共14页
主动网络Socket编程的设计与实现.docx_第3页
第3页 / 共14页
主动网络Socket编程的设计与实现.docx_第4页
第4页 / 共14页
主动网络Socket编程的设计与实现.docx_第5页
第5页 / 共14页
主动网络Socket编程的设计与实现.docx_第6页
第6页 / 共14页
主动网络Socket编程的设计与实现.docx_第7页
第7页 / 共14页
主动网络Socket编程的设计与实现.docx_第8页
第8页 / 共14页
主动网络Socket编程的设计与实现.docx_第9页
第9页 / 共14页
主动网络Socket编程的设计与实现.docx_第10页
第10页 / 共14页
主动网络Socket编程的设计与实现.docx_第11页
第11页 / 共14页
主动网络Socket编程的设计与实现.docx_第12页
第12页 / 共14页
主动网络Socket编程的设计与实现.docx_第13页
第13页 / 共14页
主动网络Socket编程的设计与实现.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

《主动网络Socket编程的设计与实现.docx》由会员分享,可在线阅读,更多相关《主动网络Socket编程的设计与实现.docx(14页珍藏版)》请在冰点文库上搜索。

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

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

活跃网络Socket编程的设计与实现

K.L.埃迪劳,罗伊梁

爱德华·罗杰斯高级电气工程和计算机系

加拿大多伦多大学

加拿大多伦多

roy.leung@utoronto.ca

eddie@comm.toronto.edu

 

摘要:

可编程节点和活跃网络的概念将可编程引入到通信网络中。

代码和数据可以发送和修改。

近日,多个研究小组已经设计和实现自己的设计平台。

每个设计都有其自己的优点和缺点,此外,存在一个平台之间的互操作性问题。

因此,我们引入一个类似网络socket编程的概念。

我们建立一组为应用程序编程的简单接口。

这组被称为活跃网络Socket编程(ANSP)接口,将在未来的所有执行环境上工作。

因此,ANSP提供一个类似于“一次性编写,无限制运行”的开放的编程模型,它可以工作在所有的可执行环境。

它解决了在活跃网络的异构性,当应用程序需要访问异构网络内的所有地区,在临界点部署特殊服务或监视整个网络的性能时显得相当重要。

我们的方法是在现有的环境中,所有应用程序可以很容易地安装上提供了一个薄薄的透明层而不是引入一个新的平台。

关键词:

活跃网络;应用程序编程接口;活跃网络socket编程;

一.导言

1990年,克拉克和藤农豪斯[1]提出了一种新的设计框架以为互联网引入新的网络协议。

自公布这一标志性文件,活跃网络设计框架[2,3,10]已经慢慢在20世纪90年代末成形。

活跃网络允许程序代码和数据可以同时在互联网上提供积极的网络范式。

此外,他们可以在传送到目的地的过程中得到执行和修改。

ABone作为一个全球性的骨干网络,开始进行活跃网络实验。

除执行平台的不成熟,商业上活跃网络在互联网上的部署也成为主要障碍。

例如,一个供应商可能会不乐意让网络路由器运行一些可能影响其预期路由性能的未知程序,。

因此,作为替代提出了允许活跃网络在互联网上运作的概念,如欧洲研究课题组提出的应用层活跃网络(ALAN)项目[4]。

在ALAN的项目,活跃服务器系统位于网络的不同地址并且这些应用程序都可以运行在活跃系统的网络应用层上。

另一个潜在的方法是网络服务提供商提供更优质的活跃网络服务类。

这个服务类应该提供最优质的服务质量(QOS),并允许路由器对计算机的访问。

通过这种方法,网络服务提供商可以创建一个新的收入来源。

对活跃网络的研究已取得稳步进展。

由于活跃网络在互联网上推出了可编程性,应建立供应用程序工作的可执行平台。

这些操作系统平台执行环境(EES),其中一些已被创建,例如,活跃信号协议(ASP)[12]和活跃网络传输系统(ANTS)[11]。

因此,不同的应用程序可以实现对活跃网络概念的测试。

在这些EES环境下,已经开展了一系列检查活跃网络概念的实验,例如,移动网络[5],网页代理[6],多播路由器[7]。

活跃网络,引进了很多在网络上兼有灵活性和可扩展性的方案。

几个研究小组已经提出了各种可执行环境,可通过路由器进行网络计算。

他们的成果和现有基础设施的潜在好处正在被评估[8,9]。

不幸的是,他们很少关心互操作性问题,活跃网络由多个执行环境组成。

例如,ABone中存在三个EES。

专为一个EES编写的应用程序不能在其他平台上运行。

这就出现了一种资源划分为不同运行环境的问题。

此外,总是有一些关键的网络应用需要跨环境运行,如信息收集和关键点部署监测网络的服务。

在本文中,被称为活跃网络Socket编程(ANSP)的框架模型,可以在所有EES下运行。

它提供了以下主要目标:

♦通过单一编程接口编写应用程序。

♦由于ANSP提供的编程接口,使得EES的设计与ANSP独立。

这使得在未来的执行环境的发展和提高更加透明。

♦ANSP针对不同执行环境之间的互操作性问题。

♦通过的ANSP设计,不同EES的优点和缺点显而易见。

这将有助于在未来设计更好的EES。

ANSP的主要目标是使在ANSP下编写的所有应用程序,可以运行在ABone测试平台。

而ANSP框架是统一网络环境作用中是必不可少的,我们相信,在不同环境下的可用性,对未来执行环境的发展是有利的。

ANSP并不是取代所有现有的环境,而是研究启用新的网络服务执行环境的设计。

因此,ANSP的设计是对所有执行环境之上薄而透明的一层。

目前,它的代码自动加载依赖于底层环境。

因此,部署在路由器的ANSP是可选的,不需要任何执行环境的变化。

二.针对ANSP的设计问题

ANSP统一现有各EES的编程接口。

ANSP设计在概念上类似于中间件的设计,为不同的EES提供适当的翻译机制。

一个统一的接口只是整个ANSP平台的一部分。

有很多需要考虑的问题,除了翻译一套编程接口,在不同EES下可执行文件调用,也包括其他的设计问题,例如,

♦一个统一的线程库处理线程操作。

♦一个全球性软件存储,可以在一个给定的路由器进行不同环境下的信息共享。

♦统一的解决方案用于在不同的环境,更重要的是,路由信息交换机制应横跨EES获得全球统一的网络视图。

♦应该是独立于任何活跃网络编程语言的编程模型。

♦最后,翻译机制来隐藏头结构的异构性。

A.异构性编程模型

在程序调用时,每个执行环境提供各种抽象的服务和资源。

一套定义组件模型每个部分都有其自己的编程接口。

对于抽象的封装编程模型[10]是在活跃网络中最流行的设计,这种模型在ANTS[11]和ASP[12]使用,并正被ABone支持。

虽然他们是在相同的封装模型基础上开发的,但各自的组件和接口是不同的。

因此,在一个EES上的程序不能运行在其他EES上。

ANTS和ASP的编程模型如图1所示。

ANTS包括三个不同的组件:

应用程序,封装,和执行环境。

存在针对唯一来源和目的地路由器的应用程序用户接口。

然后,用户可以指定其定制的网络行为。

根据程序的功能,应用程序发送一个或多个封装进行操作。

这两个应用程序和封装工作的执行环境,为其内部的编程资源提供输出接口。

每次访问路由器时封装便执行其操作。

当它到达目的地,在目的地的应用程序就会以封装进行回复或提示用户事件已经收到。

ANTS的一个缺点是,它仅允许“引导”的应用程序。

图1ANTS和ASP的编程模型

相比之下,ASP不限制用户运行“引导”的应用程序。

其程序接口与ANTS不同,但ASP也由三个组成部分:

客户端应用程序,环境和AA组件。

应用程序客户端可以在活跃或不活跃的主机上运行。

它可以通过简单的请求消息发送到EES来激活应用程序。

客户允许其用户在附近的活跃路由器触发操作。

AA组件是网络服务的核心,其规格分为两部分。

其中一部分指定其来源和目的地路由器的行动,其作用类似于ANTS中的应用,但它不提供与用户交互的直接接口。

另一部分定义了它在内部网络中的行为,与ANTS中封装的功能行为相似。

为了解决这两种模式的异构性,ANSP需要引进一套新的编程接口,它的接口和执行模型映射到内部路由器的EES。

B.统一线程库

为了各个实例之间不互相影响和访问其他信息,可执行环境必须保证各个实例间的独立性。

有多种方法来执行访问控制。

一个简单的方法是为实例应用程序配备一个虚拟机。

这依赖于虚拟机隔离服务的安全设计。

ANTS就是采用这种方法的一个例子。

然而,使用多个虚拟机需要的资源量相对较大,并可能在某些情况下,效率低下。

因此,某些环境,如ASP,允许网络服务在虚拟机上运行,但只允许其有限地访问自己的包库。

例如,ASP提供强制访问控制的线程库。

因为在这些类型的线程机制的差异,ANSP设计一个允许不同线程机制统一访问的新线程库。

C.软存储

软存储允许封装在路由器上插入和检索信息,从而使多个封装能够交换网络内的信息。

然而,网络服务在路由器不同的环境下执行时容易发生问题,尤其是当网络服务在一个环境中插入信息,稍后在同一路由器在另一个环境下检索其数据时这个问题尤其严重。

由于执行环境不允许交换信息,网络服务无法检索其以前的数据。

因此,我们的ANSP框架需要考虑到这个问题,并提供在每个路由器上进行数据访问的软存储机制。

D.统一网络的完整视图

当用ANSP编写应用程序时,它便可以在不同环境下完美运行。

以前基于不同EES的小型分区网络可以合并成为一个大的网络,整个大网络的拓扑结构也就显得很有必要。

然而,不同的执行环境有不同的解决方案和专有的路由协议。

为了合并这些分区,ANSP必须提供一个新的统一的解决方案。

这项新计划在任何环境下都能由ANSP编译出来。

定义了新的方案之后,新的路由协议可以实现在不同的环境之间交换拓扑信心。

这使得在每个网络环境中,其网络拓扑结构有一个完整的视图。

E.独立语言模型

任何编程语言都可以在在可执行环境下编写,Java以动态代码承载能力使其成为最常用的语言之一。

实际上,ANTS和ASP都是用Java开发的。

然而,如图2所示的活跃网络架构不限制使用其他语言开发的额外的执行环境。

例如,Abone中的anted作为活跃网络后台进程提供路由器上多个执行环境的工作空间。

又如,PLAN未来将在Abone中部署在OCaml中。

虽然现在的网络设计可以用任何语言在多个环境中进行编程,但是缺少使得应用程序在这些环境中完美运行的工具。

因此,ANSP需要解决的问题之一就是设计一种可以使用不同编程语言的编程模型。

虽然我们现在着重考虑ANTS和ASP的设计,PLAN将是下一个待解决问题并提高ANSP的设计。

图2ANSP框架模型

F.封装头结构的异构性

在不同的EES下头结构是不同的。

他们执行相关的信息,例如封装,封装的种类,来源和目的地。

当在目标环境中执行某些决定时这个信息是非常重要的。

一个统一的模式,应允许其程序代码在不同环境下执行。

然而,封装头阻止不同的环境来解析它的信息。

因此,ANSP应在目标环境收到这些信息之前进行相应头信息的转译。

三.ANSP编程模型

下面我们将予以讨论提到过的ANSP设计中遇到的编程模型的问题。

这个建议框架提供了一套允许在所有执行环境下运行应用程序的统一的编程接口。

该框架如图3所示。

它是由两层活跃网络架构集成的,并且这两层都可以独立运作。

上层的应用程序提供一个统一的编程模型,下层的应用程序为在不同环境下的应用提供适当的转译过程。

这项服务很必要,因为每个环境都有其自己的头定义。

ANSP提供了一套服务和资源的抽象编程调用。

以封装为基础的模型已用于ANSP并映射到ANTS和ASP的模型中。

因此,ANSP允许应用程序通过一系列单一接口访问不同环境下的编程资源。

映射必须以一致和透明的方式进行。

因此,ANSP好像是提供执行环境的应用程序,而实际上,它是一个能够使用底层所提供服务的重叠式结构。

ANSP编程模型是基于四个组成部分之间的相互作用:

客户端应用程序,应用程序存根,封装,服务器。

图3ANSP的信息流

应用程序客户端:

在通常情况下,一个活跃的应用程序需要一些方法为它的用户提供信息,如网络的状态。

如果ANSP在非活动主机上运行时,应用程序客户端将与图形用户界面(GUI)共同运行。

应用程序存根:

当应用程序启动时,它会激活应用程序客户端在其附近的活动节点创建一个应用程序存根。

应用程序存根有两个任务。

其中之一是应用程序客户端接收来自用户的指示。

另一个是从网络接收传入封装和执行相应动作。

通常,有两种类型的动作,即:

通过网络回复或传达封装,或通知用户封装传入。

封装:

一个活跃的应用程序可能包含几个封装类型。

他们每个都执行程序代码(也称为转发常规)。

由于应用程序定义了封装以及应用程序存根之间相互作用的一个协议,每个封装沿源和目的地之间的路径访问执行其转发程序的每个路由器。

服务器基端:

服务器基端被设计成能够从应用程序存根和不同的EES输出路由器的环境服务和执行程序调用。

当封装到达时,该基端被自动装载。

ANSP组件之间的相互作用如图3所示。

ANSP在一些关键部件的设计,将在以下小节中讨论。

A.封装

ANSPXdrdecode()

ANSPXdrencode()

intlength()

Booleanexecute()

通过扩展抽象类ANSP封装来创建新类型的封装。

新的扩展需要来定义他们自己的转发程序以及它们的序列化程序。

这些方法如下所示:

下面列出在ANSP中封装的动作。

它与ANTS中的动作过程类似。

1.封装在网络中以串行二进制表示。

当活跃的路由器接收到一个字节序列,它调用decode()转换成封装序列。

2.路由器调用封装转发程序,执行execute()。

3.当封装已完成其工作并通过调用send()自身转发到下一跳,隐式调用encode()便将封装转换成一个新的串行字节。

lenth()在encode()调用的时候用来确定所产生字节序列的长度。

ANSP提供了XDR库,也称为ANSPXdr,用来减轻编码和解码工作的压力。

B.服务器基端

在主动节点,基端提供了一个统一的接口用来导出EES可用资源供其它的ANSP组件使用。

这些服务可能包括线程管理,节点查询,以及软存储,如表1所示。

表1服务器基端功能调用

功能定义

描述

booleansend(Capsule,Address)

利用环境所提供的路线将封装好的内容发送到目的地

ANSPAddressgetLocalHost()

将主机地址回执,这在封装要确定自身位置时尤为重要

BooleanisLocal(ANSPAddress)

当输入参数与主机地址匹配时为真值,反之为假

createThread()

创建一个新的线程

putSStore(key,Object)

ObjectgetSStore(key)

removeSStore(key)

这三个函数相应进行数据的存储、提取和更改

forName(PathName)

在ANSP中,该函数可以根据给定名字检索类对象。

必要时此函数依赖于环境下的代码加载机制

C.应用程序客户端

booleanstart(args[])

booleanstart(args[],runningEEs)

booleanstart(args[],startClient)

booleanstart(args[],startClient,runningEE)

应用程序客户端是一个用户和附近活跃的源路由器之间的接口,它有下列功能:

1.注册代码:

可能需要指定一些执行环境中应用程序代码的位置和名称,例如,ANTS。

2.应用程序初始化:

它包括在源路由器上为应用程序选择一个执行环境。

每个活跃的应用程序可以通过扩展抽象类ANSPClient来创建一个客户端应用程序实例。

这种扩展继承了start()的方法来自动处理登记和初始化过程。

所有的start()重载版本接收一系列应用程序存根初始化时的参数。

一个被称为runningEEs的可选参数允许应用程序客户端选择由标准化数值ANEPID,列表指定的特定环境变量集来执行代码登记。

如果未指定此参数,默认设置只能包括ANTS和ASP。

D.应用程序存根

receive(ANSPCapsule)

当应用程序客户端初始化完成和程序注册后,应用存根驻留在源和目的地路由器初始化ANSP应用程序。

它的功能是负责接收和服务网络封装以及客户端要求的动作。

ANSPApplication便是一个通过扩展应用程序客户端抽象类而创建的新的实例。

当receive()被调用时,存根接收到一个新封装的定义。

四.ANSP实例:

TRACE-ROUTE

已经创建了一个验证在异构环境中的ANSP设计正确性的实验平台。

该实验台的路由器设置有三种类型:

1.包含在ASP上运行ANTS和ANSP后台程序的路由;

2.包含在ANTS上运行ASP和ANSP后台程序的路由;

3.同时包含ASP和ANTS的路由。

这个TRACE-ROUTE测试程序是用Java编写的。

程序记录所有中间路由器的源和目的地之间的访问,它还能测量它们之间的RTT。

图4显示了从客户端应用程序的GUI,并找到三沿路径执行环境:

ASP,ANTS和ASP。

TRACE-ROUTE程序的执行顺序如图5所示。

图4程序人机界面

TraceCapsule程序代码是通过扩展ANSPCapsule抽象类而创建的。

当execute()开始时,它会查询returning以确定它是否是从目的地返回布尔值。

如果TraceCapsule返回源路由器,它就会默认设置为true,否则就是false。

对传送过程中,TraceCapsule保持分别在path和trace阵列中已访问的传输环境和路由器地址。

当它到达一个新的路由器,它调用addHop()来追加这两个数组的路由器地址和环境。

当它终于到达目的地,它便将returning返回为false并调用send()转发回源路由。

当它返回到源路由,它会调用deliverToApp()提供本身已经从源头上运行的应用程序存根。

TraceCapsule通过调用分别用外部数据封装和去封装的函数encode()和decode()在网络上传输数据字段信息。

ANSPXDR语法服从ANTSXDR库。

函数length()返回数据的长度,或可以使用的XDR库中的原始类型进行计算。

图5TRACEROUTE封装包的数据流

五.结论

在本文中,我们提出了一个主动网络Socket编程(ANSP)的新模式。

它允许每个应用程序在多种网络环境中运行。

我们的实验成功地验证了ANSP架构的设计,它在不做任何架构改变的情况下已经成功地在ANTS和ASP上工作。

事实上,统一的编程接口层具有可塑性,可根据要求动态部署。

 

参考文献:

[1]D.D.克拉克,D.L.藤农豪斯,“关于新时代网络协议架构的思考”Proc.ACMSigcomm’90,pp.200-208,1990。

[2]D.藤农豪斯,J.M.史密斯,W.D.司空思吉,D.J.维泽和G.J.明登,“主动网络的研究调查”IEEE通信杂志,第80-86页,1997.1。

[3]D.维泽,U.林格和J.古塔克,“新互联网服务的引入”IEEE网络杂志,1998.7/.8。

[4]M.弗莱,A.戈什,“应用层主动网络”,计算机网络,31卷,7号,pp.655-667,1999。

[5]K.M.陈,“应用程序计算环境的研究”,科廷科技大学,2000.3。

[6]S.巴塔克杰,K.L.卡瓦特和E.W.则古拉,“自组织广域网高速缓存”,IEEEINFOCOM'98,旧金山,加利福尼亚,1998.3.29-4.2。

[7]L.M.莱曼,S.J.卡兰和D.藤农豪斯,“主动可靠组播”,IEEEINFOCOM'98,旧金山,加利福尼亚,1998.3.29-4.2。

[8]D.迪卡斯,G.帕如卡和B.普拉特纳,“可伸缩高性能主动网络节点”,IEEE网络,1999.1/.2。

[9]E.L.尼格伦,S.J.卡兰和M.F.卡少,“PAN:

高性能主动网络节点,支持多种移动代码系统”,第二届IEEE会议上开放式体系结构和网络编程(OpenArch'99)论文集,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.html

[13]“Java语言:

一张白纸”,Tech.Rep.,SunMicrosystems,1998。

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2