APP下载

适用于软件通信体系结构的CORBA技术研究

2016-11-28窦茂森叶荣飞周继华

微处理机 2016年5期
关键词:共享内存中间件服务器端

窦茂森,敬 凯,叶荣飞,周继华

(1.中国人民解放军91404部队,秦皇岛066001;2.重庆金美通信有限责任公司,重庆400030)

适用于软件通信体系结构的CORBA技术研究

窦茂森1,敬凯2,叶荣飞2,周继华2

(1.中国人民解放军91404部队,秦皇岛066001;2.重庆金美通信有限责任公司,重庆400030)

介绍了软件通信体系结构和CORBA技术,描述了CORBA技术运行原理及在软件通信体系结构中的应用方式。CORBA技术为分布式应用提供了面向对象的抽象方法,能够解决分布式环境中不同的硬件设备和软件系统互联的问题,增强网络间软件的互操作性,解决传统分布式计算模式中的不足等问题,但现在的CORBA在ORB通信方面,基于TCP/IP的信息交换效率并不是最高,还有提高空间。针对软件通信体系结构实际需求,对CORBA信息交换方式进行了深入研究,提出了能够提高ORB之间信息传输效率的一种技术方案,对软件通信体系结构交换数据的方式进行了扩展,为软件通信体系结构的实现提供了一种高效的信息传输方式。

软件无线电;软件通信体系结构;公共对象请求代理体系结构;对象请求代理;ORB间互操作协议;网际网路ORB间协定

1 引 言

软件通信体系结构(Software Communication Architecture,SCA)是美国联合战术系统的联合项目办公室(JPO)为建立独立于设备的结构框架,并能够使开发的产品互通而提出的一种体系框架。SCA规范了软件可编程平台的软件体系架构、硬件体系结构和安全体系结构,定义了平台开发的标准框架。SCA已经被软件定义无线电(SDR,Software Definition Radio)论坛采纳为嵌入式系统的标准通信软件结构[1]。

自2000年JPO发布第一个正式版本1.0版,至今SCA已经更新到4.0版。1.0版对SCA进行了基本的描述和定义。2001年发布的2.0版对SCA的软件体系结构和硬件体系结构做了定义。2004年发布2.2.1版和3.0版,3.0版专门定义了数字信号处理硬件子系统(SPS)等硬件单元的可移植性附录,并且增加了安全体系结构附录,但由于3.0版的不足和低效2006年重新推出了2.2版。SCA2.2.2和它之前的版本都用公共对象请求代理体系结构(CORBA,Common Object Request Broker Architecture)作为中间件。目前符合SCA规范的软件无线电产品均是基于SCA2.2.2版本来做的。2012年2月最新的SCA4.0发布,进行了较多改动,不再要求CORBA为必需的中间件[2]。

SCA规范虽然不再规定CORBA作为必需的中间件,但是CORBA作为中间件仍是一个较好的选择。CORBA作为通信中间件,基于其消息传输技术可以实现分布式计算环境,能够屏蔽异构的硬件及操作系统,并可使用多种编程语言。通过CORBA,应用组件可以获得良好的可移植性、可重用性和互操作性。

由于CORBA性能直接决定了SCA组件通信效率,因此需要对CORBA的工作原理进行分析,结合SCA实际应用场景的需求,对CORBA信息的交换方式进行扩展,使CORBA能够更高效的进行信息交换,进而提高软件无线电系统的运行效率。

2 CORBA中间件技术研究

2.1CORBA简介

CORBA是由对象管理工作组(OMG,Object Management Group)基于众多开放系统平台厂商提交的分布对象互操作内容基础上提出的应用软件体系结构和对象技术规范[3]。CORBA核心是一套标准的语言、接口和协议。

CORBA是为了实现分布式计算而引人的,是一种分布对象中间件(Distributed Object Middleware)。所谓中间件,就是位于操作系统和应用软件之间的一个软件层,它向各种应用软件提供服务,能够屏蔽网络硬件平台的差异性和操作系统与网络协议的异构性,通过网络互相通信,使应用软件相对独立于计算机硬件和操作系统平台[4]。

CORBA技术为分布式应用提供了面向对象的抽象方法,能够解决分布式环境(DCE,Distributed Computing Environment)中不同的硬件设备和软件系统互联的问题,能够增强网络间软件的互操作性,解决传统分布式计算模式中的不足等问题,能够很好地支持网络异构环境下对数据源的访问,支持透明的远程访问[5]。

2.2CORBA运行原理

CORBA的运行原理如图1所示。

CORBA的客户端是通过对象引用来对服务器端的对象实现进行访问的。对象引用类似一个指针,但可以表示不同进程中的对象实现。

图1 CORBA运行原理图

“stub”可译作码根。客户程序必须与stub结合起来才算完整。stub是自动生成的,不需要程序员参与。静态框架就像服务器端的stub,它并不负责对象的实现。客户端程序也可以通过动态调用接口(DII,Dynamic Invocation Interface)向远端对象发起调用。可以将DII看作是一组标准的API,客户程序可以不需要stub而使用这些API动态发起一个CORBA调用。DII和stub是两种相互独立的调用途径。当客户端动态调用接口的时候,服务器端也有相对应的动态框架接口(DSI:Dynamic Skeleton Interface),同样的,DSI也可以被看作是一组标准的API。动态框架接口不依赖于静态框架,客户端和服务器端是分开实现的,双方可以选择自身合适的方式自由组合。对象适配器提供了服务器端对象实现与ORB核心之间的适配层,不同的对象实现需求会有不同的适配器。

ORB(Object Request Broker,对象请求代理)负责处理底层网络通信细节。在客户端发起调用的时候,输入的参数格式与特定的平台和特定语言有关,客户端ORB负责将它们编码成可以在网络上传送的在线格式(on-wire format),这一过程称为编组(marshlling)。这种格式在网络上传送后到达服务器端的ORB,服务器端的ORB负责将这些在线格式“还原”成本地所使用的特定平台和语言格式,这一过程称为解组(unmarshalling)。当服务器端调用结束以后,服务器端ORB将输出参数和返回参数编码成在线格式,并经网络传送到客户端ORB,客户端ORB再将这些在线格式“还原”成本地所使用的特定平台和语言格式,作为输出参数和返回参数送给客户端程序。编组和解组的引入,使客户端和服务器端的平台和语言可以不同,带来了CORBA平台独立与语言独立的特性。

CORBA中引入了通用的ORB互操作性结构体系,通用ORB间协议(GIOP,General Inter ORB Protocol)。GIOP是一类抽象协议,它指定了转换语法和一个消息格式的标准集,独立开发的ORB可以在任何一个面向连接的传递中进行通信。TCP/IP上实现的GIOP称为因特网ORB间协议(IIOP,Internet Inter-ORB Protocol)。基于以太网的CORBA用IIOP来交换信息。所有符合CORBA互操作性要求的ORB必须实现GIOP和IIOP。

2.3CORBA在SCA中的应用

SCA定义了用于管理、控制、配置软件无线电的软件体系结构。内容包含接口、行为规范、一般规则、波形应用程序接口(API)程序以及所需的安全。总体来讲,是一组用来实现软件无线电的规则、方法和设计标准。SCA规范包含了硬件体系结构定义、软件体系结构定义、安全体系结构定义以及应用程序接口四个部分。SCA软件规范能够将应用与操作环境分离使应用功能模块化。

SCA的架构结构如图2所示。在SCA中,一个应用程序由加载在分布处理系统上的多个软件组件组成。这些组件被一个框架控制接口的实现管理。这些应用组件既可以彼此通信又可以通过SCA定义的端口接口扩展与系统提供的服务和设备通信。相似的,应用与框架服务接口的通信通过CORBA中间件实现。有这样的趋势,这些服务和设备(图中的“系统组件”)接口会被特定的系统或域标准化,因此与框架接口关联,所有的应用与系统在不同系统的通信是统一的。然而,对于系统和域的规范,这些接口的标准化是在规范的范围之外的。

一个应用能够访问操作系统功能,但被限制在可移植操作系统接口(POSIX,the Portable Operating System Interface)规范子集SCA应用环境配置文件(SCA标准附录B)列举的操作。POSIX是一个公开的工业标准并且它的实时性扩展兼容支持OMG的CORBA规范需求。因为清晰的POSIX配置文件包含更多的功能部件而对于控制一个典型的实现不是必须的,这些规范定义了一个最小的POSIX文件促进SCA目的的达成。

图2 SCA层次结构示意图

与应用组件相似,系统组件被框架控制接口通过基本设备接口有限的管理。然而不同于应用组件,系统组件对操作系统提供的功能的使用并不受限,因为这些组件符合通用的系统规范。

3 CORBA技术改进

GIOP是一个指导性协议,是一个规范,它为工作在具体传输协议之上的实施协议规定了编码方式和消息格式的框架,并不是具体协议。GIOP可以派生出各种具体的ORB互通协议,基于TCP/IP的就是IIOP,单机SCA中用到的CORBA协议通常为IIOP。

3.1基于TCP/IP的信息交换方式的不足

SCA代表了未来无线通信系统设计技术的发展方向,是软件无线电系统的唯一标准[5]。无线电的服务正从长期依赖硬导线连接向软件无线电方向演进。软件无线电的关键思想是构建一种通用、开放性、标准化的硬件平台,工作频段、加密类型、通信协议等都用软件来完成。软件无线电是新一代的无线通信系统,是可以用软件控制和重定义的平台。通过添加卸载不同的软件模块来实现不同的功能,软件可以升级更新[6]。软件无线电是对传统“纯硬件电路”模式的一种替代,是军队无线电通信发展的方向。与此同时,硬件功能让软件来替代,必然对软件性能有更大的要求,这就需要软件的运行尽可能高效。但是现在的CORBA存在一些问题,就是在ORB之间的通信方面,数据交换的效率并不是最高的,还有提高的空间。

CORBA规范将GOIP定义为它基本的互动性框架,它描述了特定协议如何进行创建以适用于GIOP框架。CORBA通过指定IDL(Interface Description Language,接口定义语言)使得开发人员可以使用不同语言来开发CORBA组件。通过指定网络协议GIOP,使得开发人员可以在不同的操作系统和不同的硬件平台上进行跨平台开发。GIOP指定了客户机和服务器之间进行通信所必需的大部分协议细节。IIOP(Internet Inter-ORB Protocol,因特网对象代理间通信协议)是GIOP基于因特网的实现,提供了TCP/IP到GIOP的映射,指出如何通过TCP/IP连接交换GIOP信息。IIOP为Internet提供了一个标准的协作工作协议,它是TCP/IP环境下基本的inter-ORB协议,最普遍的传输层。

IIOP是为分布式应用组件之间的通信设计的,用IIOP机制可以达到跨系统,跨硬件平台的目的。但是,就通信效率而言,它不是现存应用通信方式之中效率最高的。由于SCA中应用组件是基于单机通信的,可以采用操作系统提供的其他进程的通信方式来代替基于TCP/IP的IIOP通信机制,比如管道、信号量、消息队列和共享内存等,以提高SCA系统的运行效率。这些通信机制各自适用于不同的情况,大都适合应用在同构环境中[7]。

使得多个进程可以访问同一块内存空间,是最快的可用IPC(Inter-Process Communication,进程间通信)形式,是针对其他通信机制运行效率较低而设计的,往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据拷贝。有研究表明,在传输数据字节数在5000字节以前用共享内存的方式最快,传输数据大小在5000到11000字节左右时,TCP/IP的方法是效率最高的,大于11000字节数时,用管道的方法最优[8]。

3.2CORBA信息交换方式研究

3.2.1IIOP协议的处理

到目前为止,GIOP有五个版本:GIOP 1.0,GIOP 1.1,GIOP 1.2,GIOP 1.3和GIOP1.4。GIOP规范由三个要素组成:编码方式:GIOP采用的是公共数据表示(CDR,The Common Data Representation)传输语法[9]。消息格式:GIOP中定义了七种类型的消息用于相互通信。GIOP传输要求:GIOP只提出对底层网络传输的条件,符合传输条件的网络传输层都应能提供对GIOP的支持。CDR是一种传送语法,它是GIOP用来表示并传送数据类型的一种编码方式。GIOP只是一个指导性协议,它为工作在具体传送协议之上的实施协议规定了编码方式和消息格式框架。具体的实施协议只需在这个框架中填入特定传输协议所需要的信息。

如图3所示,IIOP和GIOP的关系像是一个指定语言对OMG IDL的映射。GIOP可以映射到很多不同的传输,且具体指定对于所有的此类映射通用的协议元素,然而GIOP本身不提供完整的交互,类似IDL不能用作编译完整的程序。IIOP和其他类似的不同传输映射对于抽象的GIOP定义是具体的实现。ESIOPs(Environment-Specific Inter-ORB Protocols,特殊环境ORB之间的协议)定义了一个不同ORB之间的接口。环境特定的ORB间协议(ESIOP),能够针对已使用特定分布式计算基础结构的特殊状况构建ORB。IIOP是目前使用最为广泛的ORB互通协议,SCA体系中采用IIOP为信息交换的中间格式。

图3 ORB互通协议

socket是对TCP/IP的封装和应用,CORBA的实现也用到了socket。客户端需要一个对象的服务时必须用连接请求启动与IOR内指定地址的连接。监听服务器可以接受或拒绝连接,在一般情况下,服务器应当接受连接请求。一旦连接建立起来,客户端可以通过写入它拥有的用于连接的TCP/IP socket发送请求消息、定位请求消息或删除请求消息。这个服务器可以通过写入它的TCP/IP连接发送应答消息、定位应答消息和关闭连接消息。发送(或接收)一个关闭连接消息后,无论是客户端或服务器必须关闭TCP/IP连接。

3.2.2ORB信息传输方式的扩展

客户端与服务器端的操作只是一个调用和返回,因此报文大小不会太大,用共享内存的方式即可完成ORB之间的信息交换需求,考虑到共享内存方式的效率,共享内存是一种实现ORB之间更高效的信息传输方式。

不同的ORB实现对象引用的封装过程各不相同。OMG的CORBA规范把设计不同域边界之间的沟通成为桥接(bridge)。在每个域边界上,直接从一个域的内部格式转换为另一个域的内部格式被称为直接桥接。在每个域的边界上,进行域内部格式与域外部用的中间格式的交换方式被称为间接桥接。SCA系统中各个组件均使用相同的ORB则不存在不同ORB之间的桥接问题,因此对于共享内存方式来说,不用ORB域之间的数据转换,可以直接读取共享内存区域就可以达到信息传输的目的。

直接存储器访问技术(Direct Memory Access,DMA)是计算机科学中的一种内存访问技术,它能够允许某些计算机内部的硬件子系统独立读写系统存储器,而不需要中中央处理器的操作。在同等处理器的情况下,能够有效降低中央处理器的负担,达到快速传输数据的目的[10]。DMA的思想对于高性能嵌入式系统算法是很重要的,DMA的方式可以实现内存与内存之间的高速交换。由此可见,将共享内存和DMA相结合是一种较好的能够提高ORB之间数据交换效率,进而提高软件无线电系统运行效率的方式。

存储器到存储器之间的DMA传输过程:存储器到存储器的DMA数据传送采用数据块传送方式。首先送出内存源区域的地址和控制信号,将选中内存单元的的数据暂存,接着修改地址及字节数寄存器的值,然后输出内存目的区域的地址及控制信号,将暂存的数据,通过系统数据总线,写入到内存的目的区域中去,最后修改地址和字节数寄存器的内容,当字节计数器减到零或外部输入时即可结束一次DMA传输过程。

图4为在对SCA和CORBA分析之后提出的一个ORB之间信息交换方式的模型,可利用该模型对CORBA信息传输方式进行扩展。该模型运用DMA机制来操作内存到内存的访问。保留了TCP/IP信息传输方式,提供两条通路供开发者选出适当的方式进行信息传输。其中,共享内存需要增加互斥锁或信号量机制完成内存读写的同步。

4 结束语

SCA系统通常是基于单机的,用软件取代传统的硬件方式,因此对效率要求较高。因此CORBA中基于协议传输的方式拥有可改进的空间。本框架对软件通信体系结构交换数据的方式进行了扩展,为软件通信体系结构的实现提供了一种高效的信息传输方式。共享内存是速度最快的进程间通信技术,而且非常灵活,还可以把文件映射到内存,是加快数据访问的理想解决方案。

图4 ORB信息交换模型

[1]高宏伟,吴宇,施峻武,等.基于SCA的软件无线电在FPGA上设计与实现[J].现代电子技术,2011,34(19):105-110.GAO Hong-wei,WU Yu,SHI Jun-wu,et al.Design and Implementaion of SCA-based SDR on FPGA[J].Modern Electronics Technique,2011,34(19):105-110.

[2]张琼.SCA规范的起源及发展研究[J].计算机光盘软件与应用,2013(4):138-140.ZHANG Qiong.The Research on the Origin and Development of SCA Specifications[J].Computer CD Software and Applications,2013(4):138-140.

[3]周艺林,李仁发,李肯立.无线CORBA中间件的系统结构分析与研究[J].计算机工程与设计,2005,25(7):1718-1725.ZHOU Yi-lin,LI Ren-fa,LI Ken-li.Research on Architecture and Technology of Wireless CORBA[J].Computer Engineering and Design,2005,25(7):1718-1725.

[4]Richard E.Schantz,Douglas C.Schmidt.Middleware for Distributed Systems:Evolving the Common for Networkcentric Applications[J].chapter in Encyclopedia of Software Engineering,2001.

[5]石贱弟,赵小璞.基于软件通信体系结构的DSP硬件抽象层研究与设计[J].电子设计工程,2011,19(17):123-129.SHI Jian-di,ZHAO Xiao-pu.Research and Design of DSP HAL Based on Software Communication Architecture[J].Electronic Design Engineering,2011,19(17):123-129.

[6]陶玉柱,胡建旺,崔佩璋.软件无线电技术综述[J].通信技术,2011,44(1):37-39.TAO Yu-zhu,HU Jian-wang,CUI Pei-zhang.An Overview of Software Radio[J].Communications Technology,2011,44(1):37-39.

[7]陈华清,吴键.开放系统桌面进程通信机制研究[J].计算机应用研究,2006(10):194-197.CHEN Hua-qing,WU Jian.Research on Desktop Inter-Process Communication of Open System[J].Application Research of computers,2006(10):194-197.

[8]孙叶萌.单机内进程间三种通信方法效率的比较[J].长春理工大学学报,2003,26(3):81-83.SUN Ye-meng.Research on the Three Methods of Process Communication[J].Journal of Changchun Institute of Optics and Mechanics,2003,26(3):81-83.

[9]薛斐,杜庆伟.GIOP的CDR编码特性的研究及其应用[J].计算机应用,2003,23(12):48-51.XUE Fei,DU Qing-wei.Research and Application of GIOP CDR Characteristics[J].Comuputer Applications,2003,23(12):48-51.

[10]魏建磊,王茹.DSP芯片中双通道DMA的研究与设计[J].计算机技术与发展,2008,18(3):36-39.WEI Jian-lei,WANG Ru.Design and Simulation of 2-Channel DMA in DSP[J].Computer Technology and Development,2008,18(3):36-39.

CORBA Technology Research for Software Communication Architecture

Dou Maosen1,Jing Kai2,Ye Rongfei2,Zhou Jihua2
(1.Unit 91404 of Chinese People's Liberation Army,Qinhuangdao 066001,China;2.Chongqing Jinmei Communications Co.,Ltd.,Chongqing 400030,China)

This paper introduces the software communications architecture and CORBA technology,describes CORBA technology operation principle and application in the software communications architecture.CORBA technology,providing an abstraction method of object-oriented for distributed application,can solve the interconnection problems of different hardware and software system in distributed environment,enhance the interoperability between network software and solve the problem of the deficiency of traditional distributed computing model and so on.But now,the efficiency of information exchange,based on TCP/IP,is not the highest in ORB communications.According to the actual demand for software communication architecture,we make a deep research on the mode of CORBA information exchange,put forward a technical scheme to improve the efficiency of information transmission between the ORBs and expand the mode of the software communications architecture data exchange,which provide an efficient way of information transmission for the realization of the software communications architecture.

Software Defined Radio;Software Communication Architecture;CORBA;ORB;GIOP;IIOP

10.3969/j.issn.1002-2279.2016.05.010

TP31

A

1002-2279(2016)05-0038-05

窦茂森(1979-),男,山东省平度市人,工程师/学士,主研方向:通信及指挥自动化。周继华(1979-),博士,正高级,主研方向:无线通信与移动网络。

2016-01-04

猜你喜欢

共享内存中间件服务器端
Linux环境下基于Socket的数据传输软件设计
通过QT实现进程间的通信
RFID中间件技术及其应用研究
基于Linux内核的文件服务器模型的研究与构建
基于Android 平台的OSGi 架构中间件的研究与应用
基于PCI总线的多处理器协同机制研究
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计
基于C/S架构的嵌入式监控组态外设扩展机制研究与应用
中间件在高速公路领域的应用