可编程网络模型及特征

来源 :互联网世界 | 被引量 : 0次 | 上传用户:liq123456
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  根据用户需要,快速的产生、利用和管理新的服务是推动可编程网络研究的一个关键因素。这个研究领域所取得的结果,对客户、服务提供商、设备提供者甚至对整个电信部门,如宽带、移动、IP网络都有很大的影响。现在的ISPs(Internet Service Providers)和将来的ISPs之间竞争的关键是对市场需求的反应速度。引进新的服务种类是一项富有挑战性的工作,这需要在产生服务的方法和工具上有很大的提高和进步;需要大量的具体的服务的计算、数据处理和交换;并且必须提供新的网络编程环境来使将来的网络基础是开放的、可扩展的、可编程的。


  在面临新的挑战之前,我们需要更好的了解现在的网络的局限性和使网络可编程的基础。现在越来越多的人认为可编程网络的基础与部署新的网络编程环境有很密切的联系。这些新的编程环境可能是基于广域网操作系统的支持,能够在网络的基础设施上明确的认出服务的产生、利用和管理。例如将来的可编程网络操作系统可以是以运行在节点的OS上的动态的网络执行环境为基础(如主动式网络),也可以是建立在支持多种控制结构共存的开放信令网络内核(Open Signaling Network Kernels,OSNK)上。但是这些方法不可避免的遇到相同的问题:如何开发网络、如何在受控和安全的方式下加速网络的可编程性,如何开发新的体系结构、服务和协议。
  把通信的硬件(如交换机,路由器等)从控制软件中分离出来是使网络具有更好的可编程性的基础。但是现在很难实现这一点。因为交换机和路由器实际上是结合在一起的,类似于七十年代的框架。通常情况下,服务提供商不能访问交换机/路由器的控制环境(如Cisco的IOS操作系统)、算法(如路由协议)、状态(如路由表,流量状态等)。这样就由于网络节点的封闭的特性,而使得开发利用新的网络服务很难实现,但这些新的服务可能是比控制系统的服务灵活得多的大量的命令。问题出来了,那就是我们怎样为第三方开发软件和服务提供黑匣子?
  
  方 法
  随着网络的发展,现在越来越需要新的网络服务或者用户定制的网络服务来满足新的应用需求。近来IP网络需要引入完整的和不同的服务来提高IP网络的服务质量,这是一个明显的例子。而在现存的网络上加入新的服务通常是一个手动的、费时的和费用高昂的过程。可编程网络的目标是简化开发和利用新的服务的过程,使网络自身支持服务产生和服务使用的过程。现在已经达成一个共识:通过使用开放的可编程接口(如网络APIs)、服务合成的方法及工具包,可以使可编程网络体系结构用户化。
  如何使网络可编程,出现两个学派。一个是Opensig为代表的,另一个是ActiveNetwork为代表的。Opensig认为:利用开放的可编程网络接口使通信硬件模块化,能够提供公开访问交换机和路由器的途径,因此就能够使第三方软件提供商进入电信软件的市场。Opensig还认为,通过这种方式开发交换机,可以实现开发新的、完全不同的体系结构和服务(如虚拟网络)。Open signaling采用远程通讯的方法来解决使网络可编程的问题。在这里,支撑可编程网络的传输、控制和管理之间有明显的区别,并且重点强调服务的质量。近来IEEE Project 1520正在继续Opensig方法来使ATM交换机、IP路由器、移动电信网络的可编程接口标准化。物理的网络设备被抽象为具有定义好了的开放可编程网络接口的分布计算模块。这些接口允许服务提供者通过使用中间件的工具包来控制网络的状态,从而创建和管理新的网络服务。
  AN认为:在现有IP网络限制内动态的引入和利用新的服务。这种在动态的运行时间内支持新的服务的方法,要远超过Opensig提出的方法,尤其是考虑到基于Active Packet概念的数据的发送、执行、存储转发。在AN里,数据包(capsules)由可执行程序包括代码和数据组成。代码的移动性代表程序传输,控制和创建服务的工具。通过安装完全新的交换机,使控制力度(granularity of control)可以从数据到流控整个范围。granularity of control指的是接收到的数据能够修改交换机/路由器状态的作用域的大小。特殊情况下,一个数据包能够启动一个完整的软件环境,来使到达此节点的所有数据都能看见。另一种情况下,一个数据包只能修改它所看见的状态。AN通过数据传输控制使网络服务用户化,而不是通过可编程控制平台来实现。AN是以增加编程模型的复杂性为代价,来为产生新的服务提供最大的灵活性。总之,AN的方法是使用大量的动态的命令,它要比Opensig的准静态的网络编程接口灵活的多。
  双方共同的目标是:超越现有的方法和技术来建设、开展和管理电信网中的新型服务。双方都在不同的结构途径上,进行了许多工作。例如,几乎没有AN研究者认为每个数据包必须是动态的数据,同样地没有Opensig工程认为可编程网络接口是静态的。Opensig方法把网络控制从信息传输中分离出来,并且主要目标集中于可编程交换上,它提供某一等级的服务质量。相比之下,AN工程主要集中于IP网络上,并且控制和数据路径是结合在一起的。
  
  可编程网络模型
  1.通信和计算(communication and computation)
  可编程网络与其它网络环境最明显的区别是:可编程网络提供一个很小的APIs集合,通过这个APIs集合人们可以理想的构造出无限的特殊的高层服务。下面给出了一个可编程网络模型,如图1所示的三维模型。
  这个模型实际上是Internet参考模型(也就是应用层、传输层、网络层和链路层)扩充了传输、控制,管理平台。传输、控制、管理的分离使得此模型能够广泛地适用于电信和Internet技术。传输、控制、管理之间的分离的概念在体系结构中是明显的。例如,就Internet而言有单一的数据通路,但是可以想象传输、控制、管理机制。对电信网络而言,在体系结构中也有对传输、控制、管理功能的支持。二者的区别是:这些网络功能是通过不同的方法实现的。但是无论是对Internet还是电信网络,通用模型里的平台都对不同的网络技术留有设计空间。
  网络服务的可编程性是通过在现有的路由器和交换机所提供的计算的能力基础上,引入新的计算实现的。为了区分可编程网络体系结构与普通网络体系结构,我们扩充了通信模块,给它增加了一个计算模块,来确保网络具有可编程能力。我们可以把如图1所示的可编程网络通用模型看成是由常规的通信模块(包括传输、控制和管理平台)和计算模块组成。换句话说,计算和通信模块组成了可编程网络。贯穿传输、控制、管理平台的计算模块提供可编程支持,使体系结构在各自层次(也就是应用、传输、网络、链路层)进行编程。另外一种观点是:可编程的支持是通过计算模块传送给传输、控制、管理平台。


  图2给出了另一种模型。在这里,计算模块的关键因素是分散的网络编程环境和节点内核的集合。节点内核就是实现资源管理的节点操作系统。节点内核只管理单一节点资源,所以它只有对本地节点有意义,但是有可能被多种可编程网络体系共享。网络编程环境为分散的网络编程服务提供中间件。图2也描绘了交换硬件与编程和通信软件的分离。此模型中提供两个接口集合,网络编程接口集合表示的是在网络编程环境与可编程网络结构之间的网络编程接口。节点接口集合表示的是在节点内核与网络编程环境之间的接口。将来会使这些接口标准化,使之适用于不同的网络平台。
  关于可编程网络的研究集中在这个模型的各个方面。研究者试用过不同的编程方法,不同层次的可编程性,不同的通信技术。一些工程,尤其是来自Opsensig的工程把重点放在APIs的定义上。另外一些工作集中于代码的移动性上,或者是应用领域。此外也研究过动态的创建或扩充协议和应用。
  2.节点内核
  许多节点厂商把操作系统融合在他们的交换机和路由器上,来提供网络节点的通信功能,例如CISCO路由器使用IOS环境,ATML ATM交换机使用ATMOS 微内核。通常这些节点操作系统支持各种各样的通信功能,如发信号、控制和管理进程、中间通信处理、存储转发功能等。目前,这些节点操作系统对第三方提供商是封闭的。但是,对节点引入计算能力这个想法不是新的,现在越来越需要计算元素来抽象节点功能,并且使它成为开放的和可编程的。计算模块能使通信模块具有可编程能力,但它需要有对通信抽象(如数据包、流量、通道、虚路径)的低层的可编程支持,也需要有动态分配资源和安全因素的支持。我们把这种运行在交换机/路由器上的低层可编程环境称之为节点内核。节点内核表示最低层的可编程能力,并提供一个小的节点接口集合。这些接口可以控制节点状态(如访问和控制通信资源),调用通信服务(如通信抽象和安全)。节点内核负责计算和通信资源的共享,并提供核心安全服务。节点内核可以工作在任何类型的网络节点、终端系统或设备上,如IP路由器,ATM交换机,基站等。
  3.网络编程环境
  网络编程环境支持创建新的网络、动态地开发和利用网络的服务和协议;网络编程环境支持不同级别的可编程性、编程方法、网络技术与应用领域。网络编程环境是建立在节点内核接口的集合上的,这些接口为实现可编程网络体系提供分散的工具包和服务控件。从这个意义上说,网络编程环境可以被认为是如图2所示的网络体系结构与节点内核之间的中间结合剂(middleware glue)。网络编程环境为那些网络设计者提供必须的环境和工具,使他们设计出不同的、运行在多节点内核上的、分散模式的网络结构。这一点网络编程环境又可类似于软件编程里面的软件开发包,软件开发包允许开发者建立运行在本地操作系统上的应用程序。
  网络编程环境可以建立在已经定义好了的分布计算环境对象上,或者是重新创建。例如,xbind(目的是实现宽带网的可编程性)和mobiware工具包(目的是实现移动网的可编程性)是通过使用COBRA中间件技术建立的。另外一种方法是使用移动代码和虚拟机技术来实现对网络进行编程。例如,动态网络传输系统(Active Network Transport System,ANTS)使用了数据包封装技术和Java虚拟机技术来开发新的协议。上述这两种方法的最终目的是:产生运行在节点内核上的工具包,为产生新的服务和开发不同的网络体系结构提供更高级别的可编程性。
  网络编程环境为网络设计者研究不同的网络体系结构时,提供开放的接口和服务。网络编程环境通过服务组合、服务控制、资源与状态的管理,支持网络体系的创建。这些服务范围很广,有简单的分散的网络对象之间的远端程序调用(Remote Procedure Calling,RPC),也有复杂的移动代码的动态调用和机器式的快速完成。不同类型的网络编程环境提供不同级别的可编程性。移动代码技术与基于中间件的远端程序调用技术相比,它为可编程网络中的服务开发提供更基本的解决办法。我们认为可编程性的级别(level of program-mability)是可编程网络的一个重要特征。
  4.可编程网络体系
  网络编程环境的目标是对新的网络体系进行编程提供支持,但它不提供限制和区别不同网络体系的核心网络算法(如寻路,信号传输等),就像操作系统不在起内核了嵌入具体的应用算法。相反,网络编程环境为创建新的网络体系结构提供网络编程接口。
  可编程网络体系应具有的特征是:
  (1)网络服务,它是作为分散的网络算法集合由网络体系结构实现的,并提供给终端系统;
  (2)网络算法,包括传输、信号控制、管理机制;
  (3)多时隙,它影响网络算法的设计;
  (4)网络状态管理,它包括网络算法运行的状态,如交换、路由、服务质量等,目的是支持一致的服务。
  网络编程环境提供创建和开发工具与机制,允许网络结构可以编程产生新的体系结构。可编程网络结构是通过利用网络算法集合,并考虑网络状态时隙分配等因素实现的。网络算法是不同的。可编程网络结构可以是简单的存储转发结构,也可以是复杂的能够随着无线服务质量和连接动态变化协议的结构。要保证网络算法的不同,网络编程环境和节点内核必须是可编程的、可扩展的,以便支持大量的、不同的网络结构。
  
  可编程网络的工作及其分析
  在前文我们介绍了可编程网络的一般模型及其特征,来帮助理解可编程网络的概念。在本节我们给出一些工程并对它们做一个简单的比较。
  1.开放的可编程网络接口


  在许多可编程网络工程里面都使用开放的可编程网络接口。开放接口是服务编程和引入新的网络结构的基础。Xbind宽带内核通过使用CORBA/IDL来对ATM网络设备进行抽象,然后它支持比较复杂的Binding Interface Base。另外一些集中于对IP网络进行编程的工作(如ANTS、Switchware、CANEs)促进了API的使用,这些API提供对节点原语的抽象,支持网络的可编程性和新的服务合成。许多网络编程环境采用基础上不同的方法来对服务合成提供公开的接口。工程中采用的编程方法(例如基于RPC的分布对象技术,移动代码或混合方法等)对网络体系的可编程性的级别有着很重要的影响,如当网络引入新的APIs和算法时的的紧密程度(granularity)、分时和复杂性等。
  Xbind和ANTS APIs是两种相对的方法。但是ANTS是以极其灵活的方式利用新的APIs,这代表了一种高度动态的编程方法。相对简单的PRC模型,ANTS的方法是复杂的编程模型。Xbind的绑定接口和编程范例是以CORBA/IDL和RPC机制为基础。Xbind方法本质上是比较静态的和相对简单的。这两种方法代表了网络可编程性的两个极端。
  有一种观点认为,以RPC为基础的准静态APIs是受限制的方法;相反,有人认为引入和管理APIs的方法比以capsule为基础的编程范例方法要简单,并且对服务合成和服务控制可以进行更加容易的管理。同样人们认为主动式消息和capsule技术是更加开放的,这是因为capsule可以实时的在路由器上接入新的APIs,使capsule网络编程模型本质上继承了灵活性。Xbind方法就缺乏这种灵活性。有一些工程采用了混合方法。例如mobiware工具包把静态的APIs和动态的引入Java服务插件技术结合起来。在这个领域一个明显的进步是开放网络,为编程实现新的网络体系提供APIs、服务和协议。
  2.虚拟化和资源划分
  许多工程使用了虚拟技术来支持不同类型的通信抽象的可编程性。Tempest框架是使用网络基础虚拟的方法的很好的例子。低层的物理交换接口通过抽象然后产生叫做switchlet的交换区分的接口集合。Switchlet允许多个控制体系共存和共享同一交换机的物理资源(如容量,路由表,命名空间等)。通常,可编程网络里的抽象是和安全区分资源的方法共存的。以这种方式对网络进行虚拟代表了一种新的想法。从交换机和链路,到switchlet,主动式节点,routelet,虚拟网络都可以进行抽象。
  NodeOS接口对节点资源提供一种类似的抽象。开放接口的使用允许多个网络编程环境与普通的网络节点体系共存。ANEP(Active network Encapsulation Protocol)协议把封装作为一种机制来把数据包发送给不同的执行环境。用上面的方法使用封装允许不同的相互重叠的执行环境共存于使用一个节点内核的同一路由器上。但是这种虚拟的概念不是新鲜的。Internet中类似的想法导致了Mbone的出现。Internet虚拟化中的新发展促进了X-bone协议的产生,这个协议提供一种动态开发相互重叠网络的编程环境。其它的工程如Supranet提出了在对共存的、合作的环境进行分离和私有化的过程中使用隧道和封装技术。
  3.可编程的虚拟网络(programmable virtual networking)
  动态合成和开发新的服务可以扩展到合成整个网络体系结构。Netscript 工程在IP网络上支持虚拟主动式网络(virtual active network)。虚拟网络引擎使虚拟节点集合和虚拟链路集合相互联系形成虚拟主动式网络。Tempest框架通过使用对ATM硬件的安全区分来支持虚拟网络。Tempest提供两种级别的可编程性。首先,网络控制机制可以通过heavyweight开发进程,经过长时隙被动态引入。第二,lightweight特殊应用的用户化的控制结构经过很快的时间就可以动态引入。在Tempest框架里物理交换区分的抽象实现了多个控制结构的共存。Tempest方法的目的是通过面向连接的ATM技术改善服务质量,通过控制结构的共享技术来研究物理资源。Darwin工程和Netscript工程同样也支持一个一用户化的方法来共享底层的物理基础。NodeOS工程同样也提供执行环境共存的功能。
  4.Spawning网络
  Spawning 网络是一种新的可编程网络类,它可以自动产生、使用和管理不同的网络结构。Spawning是类似于操作系统产生子进程。我们可以想象可编程网络具有产生复杂的网络体系而不是进程的能力。Spawning里使用的技术是Genesis Kernel,它是一种虚拟网络操作系统并且代表着开发网络编程环境的下一代方法。
  Genesis的最重要的能力是它使用虚拟网络生命周期处理进程来控制虚拟网络的产生与利用,这通过下面的步骤实现:
  (1)profiling,它根据一个全面的profiling脚本程序,来捕捉虚拟网络结构的蓝图(blueprint);
  (2)spawning,它运行profiling程序然后建立网络拓扑、地址空间,并且把传输控制和管理对象与物理基础设施绑定起来;
  (3)管理(management),它对虚拟物理体系和资源进行管理。
  Genesis kernel产生的虚拟网络与其它的网络带来的流量相互隔离。由双亲网络(parent network)产生的子网络继承双亲网络的体系控件。
  
  结 论
  本文论述了可编程网络的主要思想和方法,并给出了可编程网络的通用模型和其应具有的特征,这有助于更好地理解可编程网络的各个工作之间的关系。下面的概念和想法在使网络具有更高层次的可编程性这个方向上有很重要的影响。
  (1)硬件从软件中的分离;
  (2)开放的可编程接口的有效性;
  (3)网络基础设施的虚拟化;
  (4)新的网络服务的快速产生和利用;
  (5)资源的安全区分和不同的网络体系共存于同一物理硬件上。
  通过使用开放的可编程接口、资源分配和网络设施的虚拟化,可编程网络为合成、开发虚拟网络体系提供了一个平台。我们面临的关键问题是建立在这个平台上的可编程的虚拟网络环境的开发。
其他文献
数据采集与监视控制系统——SCADA系统为天然气生产向自动化的发展提供了方向。改变了传统的人工记录、逐级汇报的天然气采输监控方式,使生产调度达到了快速化、数字化、信息
介绍了ALTERA公司的可编程逻辑器件的上电配置方式,着重介绍了采用MSP430F1121单片机和串行EEPROM组成的配置板的设计方法。并对多电压配置和加快配置速度的方法进行了讨论。