DDS在SCA系统中的应用
2013-09-08李欣宇
李欣宇
(中国西南电子技术研究所 通信部,四川 成都610036)
0 引 言
SCA是一个基于CORBA的规范[1],也是软件无线电事实上的标准,基于SCA开发的通信系统具有可移植性好、互操作性强、易于重用等特点[2]。然而,在某个基于SCA的通信系统的研制过程中,基于CORBA的SCA架构无法满足实时性较高的应用,同时也存在着冗余度大、单个软件组件无法在运行时故障重构等问题。DDS是由对象管理组织发布的和CORBA处于同一层次且兼容的规范[3],它可以满足以数据为中心的实时系统的需求[4]。本文利用CORBA和DDS互补兼容的特点,提出了一种将DDS集成到SCA架构中的方案,并通过工程实践表明该方案能很好地弥补SCA架构存在的不足。
1 SCA简介及不足之处
2000年之前,美军大多数旧电台系统不具备可重用性,新波形的引进常常导致旧设备的直接淘汰,造成了资源的严重浪费。为了解决这个问题,美国的联合编程办公室 为 联 合 战 术 无 线 电 系 统 (joint tactical radio system,JTRS)发布了软件通信体系结构 (software communication architecture,SCA)规范。SCA通过公共对象请求代理体系结构 (common object request broker architecture,CORBA)定义了一个统一的开发标准框架和通用结构,使得通信系统开发的软件和硬件可以分离,它的宗旨是:通过在同一硬件平台上加载不同的波形组件以实现不同的功能,也可根据特定的需要对系统进行部分升级,从而最大化地利用系统资源,目前最新的版本是2012年发布的4.0版本[5]。SCA将硬件描述为抽象的类,当设备不断变化时,也能对千差万别的硬件进行统一的描述;SCA将各种波形软件模块化,以组件的方式描述波形应用中不同软件的层次。可见,SCA是一个开放的、标准的平台,隔离了底层硬件与波形组件,让系统重用和升级变得简单,减少了支持和操作成本。从理论上看起来一切都很美好,但是从我们工程实践来看,基于SCA构建的通信系统存在一些不足,让我们从一个实例的介绍开始。
在基于SCA的通信系统中,虽然很多功能都是用软件实现的,但也需要一个硬件平台作为软件的载体,当然也包括了用于收、发信号的射频前端。图1为一个基于SCA的超短波数传通信系统的架构。在这个平台上,通过加载不同的波形组件,可以实现最小频移键控 (minimum shift keying,MSK)、直接序列扩频 (direct sequence spread spectrum,DS)和 跳 频 (frequency-hopping spread spectrum,FH)3种波形应用。发射信号时,数据源经过编码处理后,依次通过D/A转换、上变频,最后通过射频前端发送;接收信号时,会先由射频前端进行射频处理,依次经过下变频,中频处理和A/D变换完成从模拟信号到数字信号的处理环节,最后进行软件部分的信号处理。SCA核心框架可以加载、部署波形组件的硬件平台主要是现场可编程门阵列 (field-programmable gate array,FPGA)、数字信号处理器 (digital signal processor,DSP)和通用处理器 (general purpose processor,GPP)。在此平台上用FPGA实现信号的处理,主要包括数字下变频、扩频、解扩等功能;运算速率较大的一些组件,比如编解码器和快速傅里叶变换等会被加载到DSP上;实现各个波形组件管理和控制功能的核心框架、协议处理以及人机界面等运算量不大的组件则放在GPP上运行。FPGA、DSP、GPP节点间通过带宽为4G的RapidIO高速总线互联,CORBA总线采用e*ORB。
图1 超短波通信系统架构
以运行FH波形应用为例,FH波形一共有3个软件组件,需要部署在FPGA、DSP、GPP上,名字分别为FNode,DNode,GNode。按照SCA的要求,这3个组件均实现了Resource接口,并且通过扩展Port类实现了FH波形需要的API函数。根据SCA标准,波形组件的启动是在ApplicationFactory的create函数中实现,流程如图2所示。
图2 波形启动流程
我们对FH波形的功能、性能以及系统架构进行了综合评测,总结出基于SCA的通信系统有以下不足:
(1)系统耦合性高、冗余度大:SCA组件间的数据交互全部基于CORBA远程函数调用[6],需要命名服务器才能完成通信,任何两个节点之间在启动通信之前均需要在命名服务器上去取得对方的对象引用并保存到本地程序空间,当增加一个节点时,系统的耦合性呈指数级的增长。
(2)实时性不高:CORBA通信需要在硬件总线上实现GIOP (general inter-ORB protocol)和IIOP (internet inter-ORB protocol)的协议栈,这会占用较大的软件开销,在实时性要求较高的场合效果并不好。例如,在图1所示的环境上测试,发现其数据通信时延达到25ms,无法满足FH波形的要求。
(3)无法运行时重构,灵活性较差:SCA要求所有的波形组件作为一个整体安装、创建、运行,如果一个波形的某一个组件损坏,整个应用将不能正常运行,必须要由操作员进行释放、卸载整个应用,然后再安装、创建新的应用并启动新应用的逻辑处理[7]。
(4)组件之间同步耗费较多的开销:如图2所示,核心框架调用getPort和connectPort均是为了建立组件之间的同步连接,当组件较多时,过程会更复杂,开销更大,拖慢波形启动的速度。
有没有解决这些问题的方法?在回答这个问题之前,我们先介绍一下 DDS (data distribution service)技术的特点,并与CORBA技术做一个比较。
2 关于DDS
2.1 DDS简介
DDS是一套互联、互通协议规范和应用编程接口,它定义了一种以数据为中心的发布/订阅机制,数据由应用方发布,对该数据感兴趣的远程应用订阅数据。数据对象用“主题”进行标识,由接口定义语言 (interface definition language,IDL)定义,如图3所示。通过这种发布/订阅机制,DDS构建了一个共享的 “全局数据空间”,系统中的各个节点都挂载在此 “全局数据空间”上,通过DDS规定的标准接口完成数据的交互,DDS有效的降低了系统各种组件之间的耦合性,很容易构建一个以数据为中心、可扩展、与平台和位置无关的网络。每一个发布者均有一个与之关联的数据写入者,发布者的作用是发布写入者写入的数据。订阅者主要负责接收发布的数据并使数据能被数据读入者处理。主题用于联系发布和订阅,是通信双方联系的唯一纽带。
图3 DDS系统架构
2.2 DDS和CORBA的比较
通过比较分析,在数据通信这个层面上DDS相对于CORBA有以下优势:
(1)降低系统的冗余度,提高了灵活性:在CORBA结构中,各个通信节点是一种紧耦合的结构,任一通信节点均要保留远程通信对象的引用才能完成通信,使得整个系统结构比较复杂。而在DDS网络中,各个节点之间是松耦合的关系,参与通信的节点并不知道对方的信息,节点之间的通信仅仅需要一个主题就能完成。
(2)提高通信效率,降低网络延迟:CORBA是C/S(client/server)的通信模式,客户端向服务器端请求数据,在网络中需要一个数据中心服务器来处理并提供数据。在这种网络方式下,当多个节点需要同时发送数据时它们会并行的向服务器发起数据请求,服务器需要耗费较长的时间来处理这些请求,使系统的负担增加,造成了网络延迟。DDS网络的节点之间是一种对等网的关系,不需要中心服务器的连接,而且DDS底层协议栈并不复杂,不需要太大的软件开销,这大大提高了通信的效率和实时性。
(3)提供质量服务 (quality of service,Qos):CORBA仅有有限的定制能力,而DDS提供23个Qos。通过使用DDS的Qos可以在不产生额外工作的前提下实现对数传过程以及对整个网络的控制,为上层应用提供极大的方便[8]。
3 用DDS扩充SCA
简而言之,SCA是一套接口,运行规范和规则的定义,通过这些定义实现了软件模块化、可移植和可重用[9]。而DDS是一套在分布式系统中数据交互的标准,具有发布主题数据,订阅主题数据等功能。SCA的特色是可以通过加载不同的软件组件而在同一硬件平台上实现不同的波形,但是因为其基于CORBA,在数据通信这个层面上的效果并不好。而DDS正是为了解决数据通信问题而提出的一个规范,它屏蔽通信网络的底层细节,提供一个平台无关、位置无关、高效、灵活的模型。因此从本质上讲,SCA和DDS是两项互补的技术。SCA提供在硬件平台上加载、管理各个波形组件的方法,而DDS为各个波形组件提供了简单、高效的数传服务。它们解决的是系统中不同方面的问题,而两者又都具有平台无关、语言无关、接口用IDL描述等特点。因此新的软件方案在保证SCA兼容的前提下,采用 “各取所长”的原则,用DDS的优势来弥补SCA的不足。系统软件设计的总体思路是:波形组件的部署、加载和运行完全遵守SCA规范,各个波形组件之间的数据通信不用CORBA而采用DDS。为后续描述方便,简称引入DDS之前的方案为旧版方案,引入DDS之后的为新版方案。
3.1 软件设计
在旧版方案中,基于SCA的通信系统的软件设计包括核心框架设计和基于CORBA的波形组件API设计,在新版方案中变为核心框架设计和基于DDS的接口设计两部分。
3.1.1 核心框架设计
新版方案保持了原有核心框架接口和域描述文件格式的不变,加载各个波形组件的流程和规则也与旧版方案一致。区别在于波形组件的构成,各个继承自Resource的波形组件不再实现getPort接口即不再对外提供实现数据交互功能的Port对象,同时去掉SAD (software assembly descriptor)文件中描述各个波形组件间连接信息的内容即删除connection标签,因此,核心框架加载波形应用时将只加载并运行各个波形组件,不会去建立波形组件之间的连接,也不会处理波形组件之间的数据同步,和数传相关的工作都由DDS完成,软件架构如图4所示。
图4 新版方案架构
3.1.2 DDS接口设计
组件的接口设计对于实现基于SCA的系统来说是一个比较关键的工作。新版方案的核心框架只负责软件的加载和部署,因此在DDS接口设计中,需要完成接口定义、波形组件间的连接建立和数据同步这三方面的工作。
(1)接口定义
虽然SCA和DDS都是采用IDL来描述接口,但SCA的接口基于CORBA函数调用,而DDS是一种消息中间件,它只能定义消息结构,无法定义组件之间的函数接口。新版方案采用主题+IDL的方式解决了这个问题,函数接口是由 “函数名+参数”定义的,CORBA函数名正好对应到DDS的主题,CORBA函数的参数对应到DDS主题标识的IDL数据。以设置请求发送 (request to send,RTS)的CORBA接口为例,其定义为:
新版方案将这个接口的主题定义为 “setRts”,其对应的IDL定义为:
在新版方案中,将旧版方案中所有用来数传通信的CORBA接口全部以这种方式替换为DDS接口。因为这些DDS接口都是在各个组件的代码中实现,并不牵涉到SCA架构,所以这不会影响到系统的SCA兼容性。
(2)组件之间连接建立
DDS的组件之间是位置无关的,数据交互是用 “主题”这个纽带来实现即组件间的连接是DDS中间件去完成的,因此新版方案不用考虑这个问题。
(3)组件之间数据同步
因为新版方案的核心框架里没有实现波形组件之间的数据同步,即有可能出现这种情况:当数据发送方先启动,接收方随后才启动,这时就无法保证数传过程的完整。DDS提供了一个质量服务DurabilityQos解决了这个问题,它通过网络存储的方式保证后加入网络的节点能接收到之前在网络中发送的数据。图5描述了DurabilityQos的一个典型应用,可见通过使用DurabilityQos可以很容易地解决组件间的数据同步的问题。
图5 DurabilityQos
3.2 软件方案对比
新版方案中启动波形的流程如图6所示。
相对于旧版方案,新版方案有以下几方面的改进:
(1)启动波形的步骤减少:核心框架只需要完成波形组件加载、部署、启动即可,无需花费时间去完成波形组件之间连接的建立、数据的同步,这些事情都交给DDS中间件去完成了。
(2)冗余度降低:组件间采用DDS,可直接进行点到点的通信,不需要开启任何第三方服务器。相对于CORBA通信需要建立连接,开启命名服务,新版方案降低了系统的冗余度。
图6 新版方案波形加载
(3)单个波形组件可重构:在新版方案中,波形组件和核心框架之间只有加载的接口。每个波形组件启动后,组件只需通过 “主题”就可以完成通信功能,因此当某一个波形组件故障时,可以通过人工重启的方式完成重构[10]。而在旧版方案中,无法实现单个组件模块的重构。
3.3 性能对比
在旧版方案环境的基础上添加DDS中间件就构成了新版方案的测试环境,DDS产品使用的是RTI-DDSv4.5。我们还是用FH波形作为测试用例,在波形加载速度、数传时延、可重构性等方面对新版方案和旧版方案进行了综合的评测和对比,其结果表明新版方案优于旧版方案,见表1。
表1 对比结果
4 结束语
本文首先说明了在工程实践中基于SCA构建的通信系统存在的不足之处,即冗余度大、实时性低、无法故障恢复。然后介绍了造成这些短板的原因是组件之间采用CORBA进行数据通信。接着讨论了DDS技术,并把DDS和CORBA做了详细的比较,指出DDS在数据通信这个层面上优于CORBA,分析了将DDS技术引入SCA框架的可行性。最后介绍了新版方案,并通过测试和比较证明了新版方案优于旧版方案。
本文的创新点在于:在完全保持SCA规范兼容的前提下,用DDS来实现波形组件间的通信,提高了系统的实时性、灵活性和可靠性。
:
[1]Modular software-programmable radio consortium [R].Software Communication Architecture (Version2.2.2). Washington,JTRS Joint Program Office,2006.
[2]CHENG Feifei.Development of DSSS waveform based on software communication architecture [J].Telecommunication Engineer,2008,49 (4),65-69 (in Chinese). [陈飞飞.基于SCA的直接序列扩频通信波形的设计与实现 [J].电讯技术,2009,49 (4):65-69.]
[3]Object Management Group (OMG).Data distribution service for real-time system specification [S].Version1.2,2007.
[4]YAO Bin.Design and implementation of data distribution service based on DDS [J].Computer Engineering and Design,2009,30(3):619-625 (in Chinese).[姚兵.基于 DDS模型的数据分发中间件的设计与实现 [J].计算机工程与设计,2009,30(3):619-625.]
[5]Modular software-programmable radio consortium.software communication architecture (version4.0)[R].Washington,JTRS Joint Program Office,2012.
[6]LI Yaping.Application of CORBA technology for SCA system[J].Computer Engineering and Design,2008,29 (16),4200-4203 (in Chinese).[李雅萍.CORBA技术在SCA系统中的 应 用 [J]. 计 算 机 工 程 与 设 计,2008,29 (16):4200-4203.]
[7]ZHONG Pengfei.A runtime self-refactoring and compatible extension solution of SCA reference [J].Micro Computer Information,2009,25 (1-3):116-118 (in Chinese). [钟鹏飞.一种运行时可重构的SCA规范兼容扩展方案 [J].微计算机信息,2009,25 (1-3):116-118.]
[8]YANG Chuanshun.Research on quality of service of real-time data distribution system [J].Computer Technology and Development,2011,21 (5):231-234 (in Chinese).[杨传顺.实时数据分发系统的服务质量控制的研究 [J].计算机技术与发展,2011,21 (5):231-234.]
[9]ZHAO Qiuming.Study of minimum core framework based on software communication architecture [J].Computer Measurement & Control,2010,18 (5):1145-1147 (in Chinese).[赵秋明.基于SCA的小型化核心框架研究 [J].计算机测量与控制,2010,18 (5):1145-1147.]
[10]YANG Shuhui.Research on correctness preservation during system reconfiguration in data distribution service for real-time system(DDS)[J].Ship Electronic Engineering,2009,29 (1):5-8(in Chinese).[杨曙辉.实时数据分发服务系统重构正确性保证研究 [J].舰船电子工程,2009,29 (1):5-8.]