现有的互联网是基于业务的,路由交换设备支持特定的业务,每当有新业务出现,网络总会或多或少被改造。另外,目前的网络建设中,节点是封闭的,节点的升级和扩展只能由原提供商实施,无法实现开放。针对上述问题,我们摆脱传统网络技术体系束缚,提出一种可重构的、面向服务的网络模型。可重构网络由若干可重构件路由交换平台组成,实现路由交换功能的构件化是一种前沿的系统设计思想,对路由交换设备制造乃至整个网络行业的健康发展有着至关重要的推动作用。本文研究的是可重构路由开发环境。
这些年来可重构路由器的研究在很多方向上取得了进展。
构件开发技术也得到了越来越广泛的应用,例如CORBA分布计算技术是OMG组织基于众多开放系统平台厂商提交的分布对象互操作内容的基础上制定的公共对象请求代理体系规范,又如EJB是Sun推出的基于Java的服务器端构件规范J2EE的一部分,已经成为应用服务器端的标准技术。
嵌入式实时操作系统VxWorks以良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域,Tornado是与之对应的开发环境,它采用BSP(板极支持包)屏蔽底层硬件差异性,并且带有丰富的、可灵活拆卸的组件,如VxFusion组件、C++组件等。
可重构开发平台体系结构
1.体系结构概况
可重构路由开发环境包含一个可重构路由开发的系统平台,它的设计目标就是要让路由器的设计、开发像机械制造工业一样,可以用各种标准和非标准的零件来进行组装。
构件可以在不同的环境中使用,也可在同一环境中被复合使用,因此构件需要提供清楚的接口规范与对应环境进行交互。构件的封装、设计与外部表征尽量分离。构件对外发生作用或构件间的交互,都是通过规范定义的接口进行,构件使用者只需要知道构件的接口,而不用关心其内部实现,这是设计与实现分离的关键。构件开发平台就应当提供构件交互的规则,并基于这些规则实现类似容器的标准环境。
可重构路由开发环境基于现有的操作系统及硬件环境实现。在此开发环境中,可以方便、快捷地开发构件。开发平台还提供基于构件的组件生成架构。以可重构开发环境为基础,对构件单元库和可重构路由组件进行设计,最终实现可重构路由平台。
可重构路由交换开发环境在整个可重构路由交换体系结构中,它屏蔽底层差异向上提供统一支持。开发环境对上层开发的支持以构件为主线进行构件研制,并以构件为基础实现组件组装,并面向平台提供主要系统资源的管理。
可重构路由交换开发环境主要有如下功能模块:
面向构件的异构系统支持库:构件是功能独立、统一配置的单元,实现过程封装,使用构件时无需洞悉构件内部的实现细节。构件开发平台强调构件与操作系统或具体硬件的分离,因此构件开发要屏蔽底层系统的差异。
元构件:提供常用的构件组装零件,包括:链表、路由树、消息队列等。
构件库管理工具:包括构件的注册、入库、分类、索引等。
面向构件的系统资源管理:针对系统原始资源面向路由交换功能进行重整,并面向构件所涉资源进行管理。
构件集成工具:提供基于元构件的构件生成方法。
基于构件的组件生成架构:主要以路径消息传递和数据处理为主要线索,提供基于软总线等构件交互方式的组件生成架构。
2.可重构开发平台
通用路由器软件平台方案制定了一个可重构路由软件系统的基本框架,定义出规范化的可重构构件模型,并制定构件间交互的协议标准等细节,然后根据这个框架、模型和协议提出构件组装的方法。
可重构路由软件系统由一系列的构件组成。Ci是构件之间的接口。构件之间的消息传递是异步的、单向的,两个构件之间的连接是有向的。构件之间的连接可以通过以太网,或者是操作系统内部的消息机制,只要构件遵循接口协议,就可以实现构件灵活组装和替换,实现构件的分布式和异构系统的部署。构件之间的连接依赖于消息,是基于消息流的单向连接,只要服务请求者构件的输出端口的消息能被服务提供者构件的输入端口接收,则两者能够连接。
COM Agent是构件管理器,用于管理构件和协助构件间的通信。Agent的主要功能如下:
a) 管理构件的注册、注销和信息存储,实现构件可动态加载、卸载和构件检索;
b) 可以向构件发送命令,实现构件卸载或重起(采用或参考ForCES协议);
c) 将构件的通信方式(IP地址和socket端口号)通告与之相连的其他构件,实现支持分布式系统;
d) 通过向构件发送心跳信号查询构件的状态,维护各构件连接的拓扑结构。
在构件中引入Agent Client的概念,它是嵌入在构件中的功能模块,屏蔽构件与其他构件交互的底层细节以及与业务无关的功能。Agent Client的主要功能如下:
a) 为构件封装了对外接口;
b) 提供构件和构件、构件和Agent之间通信的功能,实现了多种进程间通信方式,使构件不必关心通信的具体细节;为构件屏蔽了具体操作系统底层的通信细节,实现了支持异构系统。
构件管理服务器是一台高性能PC,运行构件管理的服务器端程序,命令解析器能够接收远程命令并解析,通过CLI配置管理器实现对构件的配置。最终通过目标设备管理模块将管理协议报文下发给设备。构件管理系统的设备端软件集成在设备内部,是通用的构件控制响应程序,其中目标设备管理代理接收到构件管理服务器的命令报文后,能够实现构件的动态加载,卸载,构件连接关系的动态改变等等。此外,还能够通过业务命令解析配置模块实现构件的配置。业务命令解析配置器的大致工作原理是将用户的需求解析成设备的配置命令,然后通过原系统的命令接收和解析接口下发给目标构件。
3.开发环境总体结构设计
可重构开发环境的目标是要开发“面向路由器软件开发人员的可视化开发环境”,用户可以通过开发环境编辑程序代码,开发、管理元构件和构件,组装组件,并把工程编译为支持不同软硬件平台的可执行代码。
a) 用户主界面
用户界面包括主菜单、工具栏、文件内容区域、结果显示区域。
b) 代码编辑、管理、元构件/构件开发
代码的管理支持工程化的管理思想。每个工程可以包含多个源代码文件,并通过工程文件来实现管理,可以依据用户的配置,创建文件夹、修改源代码、复制文件。每个工程可以是一个元构件、构件,也可以是一个组件。
用户可以通过代码编辑器开发元构件和构件,以构件为例,选择构件生成后,弹出构件生成配置窗口,可以选择“链表”、“定时器”等元构件来组成构件。
c)元构件/构件管理
构件和元构件的管理,是在开发阶段对源代码级别的构件和元构件的管理,包括入库、出库、检索等功能。
d)构件组装成组件
构件组装成组件有静态组装和动态组装两种类型。静态组装是在系统开发阶段,通过选择需要的构件并且配置构件间的相互连接关系,完成一个组件的代码级别的组装开发。动态组装是在路由器运行期间,根据业务需求而实现自动改变构件连接关系和下载新的构件,实现软件系统的动态重构。
通过通用路由器软件平台,组件组装可以实现构件的增删、跳跃、并行。
4. 多平台编译
开发环境支持将代码编译成不同硬件平台和操作系统下运行的程序,具体如下:
多硬件平台:PBC,X86,ARM
多操作系统:VxWorks,Windows,Linux
用户在开始新建开发任务时,选择目标硬件平台和目标操作系统。在开发过程中需要调用时,统一调用开发环境提供的API来代替。API为用户提供统一的接口,在API内部将函数调用转换为对应的针对具体硬件和操作系统的系统调用。
在编译时,如果是要生成Windows目标代码,则直接调用windows编译程序编译连接;如果是要编译VxWorks目标代码,则通过命令行重定向来调用Tornado提供的命令行编译工具,并将结果返回到可重构开发环境中;如果是要生成Linux目标代码,则通过FTP将源代码文件传送到目标机器,调用gcc完成编译,并将编译结果和结果文件传回到本地和可重构开发环境中。
本文首先研究了可重构路由开发环境在可重构柔性网络研发中的功能定位,以及可重构路由开发环境的设计框架和各个功能模块,其中着重介绍了构件管理运营的过程。然后介绍了可重构开发环境的界面设计,它对元构件和构件开发、管理及构件生成组件的支持,最后本文还介绍了可重构开发环境如何支持多平台编译。
(作者单位为清华大学计算机系)
文章来源:《中国教育网络》杂志7月刊
特别声明:本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。