论文部分内容阅读
一.网络体系结构的发展
1946年,世界上第一台数字电子计算机问世了。1954年,人们使用一种叫做收发器的终端首次实现了将穿孔卡片上的数据从电话线路发送到远端的计算机。计算机网络的概念就这样诞生了。一台计算机通过多重线路控制器与多个终端相连接,这种面向终端的计算机网络结构最简单,称为第一代计算机网络。
1966年,英国国家物理实验室(NPL)的Davis首次提出了“分组(Packet)”的概念。1969年2月,美国国防部高级项目开发署(DARPA)的分组交换网ARPANET投入运行。从此,计算机网络的发展进入了一个新纪元。
ARPANET的实验成功使计算机网络的概念发生了根本的变化。早期的面向终端的计算机网络是以单个主机为中心的星型网,各终端通过线路共享主机的资源。而分组交换网则是以通信子网为中心,主机和终端都处于网络的边缘。这些主机和终端构成了用户资源子网。用户不仅共享通信子网的资源,还可以共享用户子网的资源。这种以通信子网为中心的网络称为第二代计算机网络。
计算机网络是一个非常复杂的系统,相互通信的双方必须高度协调工作,而这种协调是相当复杂的。最初的ARPANET设计时提出了分层的方法,将庞大的问题转化为若干较小的易于处理的局部问题。
网络体系结构出现后,使联网变得很容易。但用户如果购买了不同公司的网络设备,由于网络体系结构不同,则很难互相连通。
针对以上情况,ISO于1977年提出了一个使各种计算机可以联网的标准框架——开放式系统互联基本参考模型OSI/RM,简称OSI。按照此标准构建的网络称为第三代计算机网络。
进入80年代中期以来,Internet的飞速发展引人注目。但Internet仍属于第三代计算机网络,因为它也遵循分层的体系。它有一套自己的体系结构,通常称为TCP/IP协议族。
按照计算机网络的发展趋势,第四代网络体系结构的出现已成必然。目前,IPv6标准正在制定中。然而,在第四代网络到来之前,将有一个相对较长的过程,这是因为一个标准的最终出台,涉及到很多方面。现有的网络体系结构已不能满足目前的网络应用程序对带宽的需求,经常导致网络拥塞的发生。此外,随着大规模微电子技术的发展与成熟,处理器的运算能力远远超出了网络对它们的应用,从而造成了处理器资源的浪费。因此,在不改变网络体系结构的前提下,用一种过渡的方法使处理器的运算能力得到充分发挥。其中,可编程网络是研究方向之一,也称为主动网络(ActiveNetworking)。
二.主动网络的提出
分组交换网络使得共享传输设备成为可能,从而使数据包可以有效地在互连的系统之间传输。传统的基于包的网络只完成必要的处理工作,以便转发数据包到相应的目的地。然而,随着技术的发展,节点的计算能力越来越强,开销越来越低,同时网络功能越来越多。主动网络正是基于上述事实而提出的。它把更多的计算处理任务放在低价的网络节点中,在不增加带宽的情况下,更加有效和智能地利用现有带宽,使资源得到充分使用。
主动网络在网络节点中提供一个可编程接口,通过这个接口,此节点将其资源、机制和策略等优化以支持网络的主动性。它通过机制并利用上述资源来构建或细化新的服务。主动网络支持用户对网络行为动态修改;能够“智能化”地指导数据流向,这一点完全不同于传统的被动网络。另外,主动网络还提供了一种一致的、严格定义的方法,与目前的方法相比较,它在网络交互和控制方面更具有一般性,功能更强大。
三.主动网络的应用
主动网络的应用主要表现在其动态控制方面,可以分为以下几个层面:
*从网络服务提供者的角度来看,主动网络可以缩减开发和实施新的网络服务的时间。目前,网络的共享基础设施相对于其它计算机技术发展还很慢。主动网络在传输过程中将改变网络节点行为,使网络服务提供者在短时间内就可实施新的服务,而不必经历漫长的标准化过程。
*主动网络可以在一个更详细的层面上,让用户或第三方定制服务,以适合特殊应用程序。尽管网络的终端用户可能不会写网络程序,但从理论上讲,每个用户可以为其终端编程,可以从第三方提供的可选代码中定制服务。
*对于研究人员来讲,动态可编程网络为测试新的网络服务提供了一个平台,在不破坏常规网络服务的情况下,以可行的模式进行模拟。
四.主动网络的实现
用户通过以“方法”的形式,在网络节点或数据包内嵌入面向特定应用程序的功能,从而使整个网络处于主动态。这个“方法”类似于面向对象中的方法,它是一个嵌入对象中的可执行程序代码。
用户选择主动节点(如路由器),对其进行预编程,将定制的代码嵌入其中。用户也可将程序和数据封装在数据包中,然后传送到目的地。后面这种情况需要程序代码动态地配置网络,以满足程序运行时对环境的要求。
在上述两种方法中,用户能够通过软件动态地定制网络资源,并且可以快速修改它们,以适合应用程序的要求。经过代码定制的路由器和交换机能够完成各种数据计算,这些工作以前只有在末端节点才可以完成。
传统的包由数据和目的地址组成,传统的节点则只是简单地沿着数据的流向转发数据包。主动网络不同于传统的处理方式,它可以做更多的事情。“主动舱”式的包由数据、执行代码和地址组成,它可被预先设计成某些处理功能,当到达预定地点时,就执行相应的代码。上述可执行代码将访问主动节点中的方法,以便该节点正确地处理数据包。主动节点可以压缩、组合和传输多个数据包,从而节省了带宽;也可以为数据包重新寻找路由,以避免网络拥塞。图1描述了数据包的传统处理和主动网络的不同。
图1传统网络与主动网络数据包的处理方式比较
从总体上讲,主动网络的实施可分为主动节点、主动舱以及这两种方法的结合。
*主动节点
构建主动节点以完成必要的运算,这是一项复杂的任务,需要赋予节点CPU和I/O更多的处理能力。网络节点智能化赋予了用户和网络管理者更大的控制能力,他们可以在不改变网络实施结构的前提下,按需定制特殊应用,这种动态地控制网络功能的设想将是主动网络技术的最大优势。
*主动舱
主动舱中,要传输的数据包除了携带地址和数据之外,还要附加处理此数据的代码。代码(类似于数据对象)规定了在目的节点如何处理数据,也描述了数据对象之间如何相互作用,以及与网络资源之间的通信。
*二者的结合使用
交换机程序是主动节点和主动舱结合的一个例子,它由两部分组成,一部分是可编程的主动舱,另一部分是充当主动节点的交换机。这是因为在某些情况下,主动舱需要其本身不可能提供的资源(如路由表),而这些必须由主动节点(如路由器、交换机)来提供。另外,在主动舱和主动节点之间划分指令,还可以避免主动舱过于庞大而降低网络性能。
五.主动网络的研究课题
主动网络在被高效使用之前,必须解决许多潜在的问题。例如,当多个用户将不同类型的主动舱数据包装入网络中时,就需要理解和处理所导致的相互作用的问题。同样,用户也将面对主动舱包试图穿越防火墙时的问题。这些问题主要有三个方面:
*安全性
安全性是主动网络的一个非常重要的问题,尤其是当用户装入自己的代码时。这类问题在分布式系统和网络中已经出现过,例如,如何认证信息的源端、如何保护它不被修改等。
主动网络的安全问题比以往更重要,是因为数据包中携带了对网络节点资源进行访问的程序,它们在很大程度上可以对资源进行调用(如方法、过程)、修改等操作。所有这些都使网络受到“恶意”程序和有缺陷代码攻击的威胁。因此,如何构建一个安全的主动网络环境,是当前研究的主要课题。目前,一个解决方案是隔离有潜在问题的主动包,这主要通过节点过滤系统来完成;另一个方案就是设计一套网络层面上的原语,用户的执行代码通过这些原语与节点资源打交道。
*性能
由于现有的主动网络应用还处于开发的初级阶段,因此与传统的网络相比,在延迟和吞吐率方面优势并不明显。这是由于向网络中加入了控制功能,例如大量的执行代码,这些会给网络节点增加额外的处理负担和开销。
*互操作性
主动网络之间能够相互通信是非常重要的。一些研究人员将重点集中到交叉平台的兼容性上,设想创建一个通用网络应用程序接口API,并且将此API在主动网络之间传递,以便为编写装入到网络中的可执行代码提供一个通用运行平台,这将大大提高互操作性,从而易于开发主动网络应用程序。此外,一个通用平台可以为主动包“减肥”,减少主动包为每个运行平台而携带的相应代码,否则,将使主动包过于“肥胖”而导致带宽拥挤,降低网络性能。
六.结束语
主动网络可以提供传统网络所无法比拟的优势,尽管主动网络在安全性、性能和互操作性方面还不尽如人意,但是它将为下一世纪的网络体系结构打下坚实的基础。正如面向对象的程序设计思想使得程序开发可视化一样,主动网络也会使网络服务的改善、升级自动化,这将在实际应用中得到验证。