DDS与HLA技术现状
目前分布式仿真系统在系统体系架构上目前有两种常见的选择,第一种基于HLA(High Level Architecture)高层体系结构,第二种基于数据分发服务DDS(Data Distribution Service)机制。
HLA和DDS的设计目标都是促进互操作、重用,但由于侧重点的不同,它们之间又存在显著区别。
HLA是以事件为中心的体系结构,它的核心思想是互操作和重用,其显著特点是通过运行支撑环境RTI(Run-Time Infrastructure),提供通用的、相对独立的支撑服务程序,将仿真应用同底层的支撑环境分开,即将具体的仿真功能实现、仿真运行管理和底层通信传输三者分离,隐蔽了各自的实现细节,从而使各部分可以相对独立地进行开发,并能充分利用各自领域的先进技术。
DDS是以数据为中心的体系结构,具有数据中心的特征,采用发布/订阅通信模型传输数据,在通信实时性上为分布式仿真系统提供了更好的技术支持,并为实时性要求高的系统提供了低迟延率、高吞吐量以及对实时性能的控制级别。
因此从某种意义上讲,可以认为HLA是一套完整的分布式仿真解决方案,而DDS只实现一套高效稳定的网络通信机制(相当于但不局限于HLA的“数据分发管理”)。因此两者针对的应用领域存在一定的重叠,但存在各自的优势,因此不可能完全相互替代,反而目前出现了多个以HLA为系统仿真体系架构,同时使用DDS作为实时、可靠数据传输方面的补充应用。
美国国防部为了解决分布式仿真系统的互操作和可重用性,在 1995 年发布了分布式仿真系统新的规范标准高层体系结构 HLA(High Level Architecture ),该结构提供一个独立的运行支持环境 RTI,仿真应用可以通过 RTI 实现交互,该结构使应用层和底层通信层分离,目前它已经成为目前最为流行的分布式仿真系统框架,广泛应用在工业生产生活中。HLA 虽然提供了构造和描述仿真应用的通用框架,但 HLA 实时性较差,不能很好地满足数据传输的实时性要求,特别是人在回路的仿真,因而使得 HLA 在很多领域的应用受到限制。目前,虚实结合的仿真应用越来越多,这些系统对信息共享和交换提出了更高的要求,如舰艇作战系统仿真等,对实时性、可靠性等方面提出了更高的要求,现有的 HLA、DIS 技术很难满足要求,国内外的研究大都需要额外开发补充标准,对 HLA 规范进行扩充。
HLA 接口规范是联邦成员与 HLA 运行支撑环境(RTI)之间接口的规范,是对运行支撑环境(RTI)的接口服务的描述。RTI 作为 HLA 仿真系统的底层通信支撑软件,实现了HLA 接口规范中描述的所有内容,从而为联邦成员间的互操作、仿真系统的分层管理和联邦的管理提供了有效的技术支持。各个国家和研究机构都独自研究开发了自己的运行支撑环境(RTI)。国外的有些公司如美国的 MAK 公司和瑞典的 Pictch AB 公司都开发了自己的 RTI 商用产品,比如MAK RTI(MAK 公司,指出MAK RTI对CPU和内存的要求极小,并简化了与HLA兼容的仿真的体系结构。然而,这种RTI不能实现所有的DMSO RTI服务。因此,对于一些联邦成员而言不是所有的仿真要求都能被满足的。)和 pRTI(Pictch AB 公司,世界上第一个通过DMSO HLA兼容性测试的商用的RTI产品。它是HLA1.3版接口规范文档里所有服务的独立于实现了平台的。这种RTI和HLA也是兼容的。产品有pRTI1.3、pRTI1516等)。国内也有研究机构研究了HLA 规范并开发了自己的 RTI 产品,虽然国内对 HLA 研究比较晚,但是国防科技大学(KD-RTI、YH-RTI)、航天机电集团第二研究院(SSS-RTI)、北京航空航天大学(BH RTI /DVE_RTI)、浙江大学(CADRTI)针对我国仿真领域的需要,自主开发了我们国家自己的 RTI,已经应用到了我国军事仿真领域。这些平台各具特色,使开发周期缩短,难度降低,但由于各开发平台通用性不强,性能参差不齐,在实际应用中也存在很多问题。各家RTI对HLA规范的实现程度不同,导致各家RTI相互并不能做到完全兼容。
(1)提高仿真应用间的互操作可行性以及仿真资源的可重用性;
(2)通过运行支撑环境RTI(Run-Time Infrastructure),提供通用的、相对独立的支撑服务程序,将仿真应用同底层的支撑环境分开,即将具体的仿真功能实现、仿真运行管理和底层通信传输三者分离。
HLA是分布式仿真系统开发规范,依照HLA规则开发的分布式仿真应用程序集为一个联邦。联邦是由仿真对象模型SOM(Simulation Object Model),一个共同联邦对象模型FOM(Federation Object Model)(统称对象模型模板OMT(Object Model Template))和运行支撑框架RTI构成的集合,而集合中的单个应用程序称之为联邦成员(Federate),联邦成员是联邦的功能组成单元,整个仿真任务的执行过程称为联邦执行(Federation Execution)。联邦中的对象模型模板是为HLA仿真系统对象模型服务的,通过对象模型模板抽象捕述了仿真系统中的对象实例,包括对象类,交互类.类之间的继承关系以及对象类属性和交互类参数。
RTI是HLA规范中仿真服务的实现部分,是基于HLA仿真的核心部件。RTI实现了仿真系统底层的运行环境,保证数据可靠有效的传输,RTI就像一根软总线,所有的联邦成员通过这根总线进行数据的交互,并且RTI提供了仿真服务的接口供联邦成员调用。
(1)规则
HLA规则是应用HLA规范开发分布式仿真系统必须遵循的原理和约定,规则描述了HLA系统中联邦和联邦成员设计规范,为对象模型模板和接口规范提供设计规则,从总体上描述了HLA思想体系,为如何设计、使用和遵循HLA提供了指南。
(2)对象模型模板
HLA仿真系统中的联邦组成单位是联邦成员,联邦成员组成单元是仿真对象,联邦通过联邦对象模型描述联邦内仿真对象,联邦成员通过仿真对象模型描述联邦成员内仿真对象,对象模型和联邦成员对象模型统称对象模型模板。
(3)接口规范
接口规范是HLA底层运行环境为仿真过程提供仿真服务描述,仿真服务抽象成API,联邦成员调用API实现仿真任务,管理联邦执行。接口规范中共定义了六大仿真服务,包括联邦管理声明管理、对象管理、时间管理、所有权管理和数据分发管理。
HLA要求由各个联邦成员构成一个联邦,每个联邦对应不同的联邦目标。各联邦成员共享一个公共的联邦对象模型(FOM),并通过RTI软件基于FOM相互交换信息。
国外一些研究机构和公司利用数据分发服务 DDS(Data Distribution Service)技术来实现实时分布式系统。在仿真领域主要利用 DDS 作为实装设备的总线加入仿真环境。2004 年对象模型组织(OMG)针对实时仿真系统的广泛需要,发布了分布式实时仿真系统规范——数据分发服务 DDS,该规范以数据订阅发布机制实现数据的分发服务,并且提供了多种服务质量(QoS)约束,用于满足对高性能、可预见性有较高要求的关键任务领域的计算需求。
随着实时分布式仿真系统的广泛应用,基于数据的订阅发布的体系结构也得到了比较好的发展,该体系结构可以为订阅者和发布者之间建立连接,并能够使仿真系统实时地发送和接收可靠的仿真数据。2004 年 OMG 于制定了数据分发服务 DDS(Data Distribution Service)规范 v1.0 版,并在 2007 年更新至 v1.2 版。该规范在传统的订阅发布的基础上加入了 QoS 策略,并提出了完全分布式的体系结构,为实时系统的开发提供了更加可靠地机制。之后 Real-Time Innovations 公司开发实现了第一个支持 DDS 规范的DDS 商用产品 RTI DDS,该产品完全实现了 DDS 规范中的两个层次结构以数据为中心的订阅发布层和数据本地重构层。此外还有 OpenSplice DDS,它是由 PrismTech 公司实现的 DDS 版本。Open Splice DDS 符合“实时系统 v1.2 规范的 OMG 数据分发服务(DDS)”规定,能提供对 DCPS 层和 DLRL 层的完全执行。法国格勒诺布尔大学的 Didier DONSEZ教授出于教学的目的开发了 Java 版本的 DDS 实现,基于 ORB 所提供的事件服务实现DDS 服务,并在 Jacorb(OMG-CORBA 标准的 Java 实现)上测试通过。Open DDS 是一个开源的 C++实现的符合 OMG-DDS 规范的 DDS 版本。Open DDS 最初名为 TAO DDS,由 Douglas C.Schmidt 创建,现已独立出去并改名为 Open DDS,目前由 Object Computing公司提供代码支持和维护。Open DDS 开放了源码,用户可以免费使用。
目前国内研究 DDS 的也有多家公司已经推出商用产品或已经在各种系统(不局限于分布式仿真)应用,如北京神州普惠科技股份有限公司的AppDDS 高性能分布式实时应用开发平台,南京康沙科技有限公司的分布式数据分发服务中间件CoreDX DDS,中船信息科技有限公司自主知识产权产品:BLUE DDS等等。当然还有一些产品尚未公开,但已经应用到各类军用系统中。这些国产的DDS系统或多或少应该都借鉴了Open DDS的相关内容吧。
(1)促进分布式系统中数据分发的效率;
(2)实时、可信和高性能的发布/订阅中间件,其语义可通过服务质量(QoS,Quality of Service)标准进行控制。
DDS标准化了数据交换的接口和行为,它描述了两个层次的接口:
(1)以数据为中心的发布/订阅DCPS层
DCPS是DDS的核心层,提供发布与订阅数据的功能,使发布者能够发布拥有的数据,订阅者能够订阅感兴趣的数据,建立一个不需要维护的、快捷的数据通道。
(2)数据本地重构DLRL层
DLRL是DDS的可选层,建立在DCPS与应用层之间,以类的形式对DCPS层提供的服务进行了封装,DLRL层通过这些类让应用层可以快速地访问数据。
DDS为用户提供了统一的应用程序编程接口API,将数据发布、传递以及接收的接口和行为标准化。该规范实现对复杂系统中的数据进行实时,高效的传输要求;在分布式网络环境下,可以实现动态组网和数据的按需多点分发。同时规范化了QoS,使其能够满足实时通信的需求,优化了分布式系统的高实时性,用于满足对高性能、可预见性有较高要求的关键任务领域的计算需求。
DDS主要包括主题(Topic)、域(Domain)和域成员(Domain participant)、发布者(Publisher)和数据写入者(Data Writer)、订阅者(Subscriber)和数据读取者(Data Reader)、监听器(Listener)、条件触发器(Status Condition)等要素。其中:
(1)主题
发布者与订阅者之间通过主题(数据写入者与数据读取者的主题)进行匹配,具有相同主题的发布者与订阅者可以直接进行点对点的数据传输,不需要中间媒介;
(2)域和域成员
DDS通过域来划分逻辑网络,域名相同的应用相互之间才能通信,这样就可以在一个物理网络上虚拟多个通信网络;
(3)发布者和数据写入者
发布者将其数据写入者组织起来,由数据写入者对数据进行分发;
(4)订阅者和数据读取者
订阅者用来组织数据读取者,通过数据读取者从网络上获得数据并传递给应用;
(5)监听器
监听器为DDS中间件提供了一种通知应用程序相关的异步事件的机制;
(6)条件触发器
作为监听器的补充,提供了中间件与应用程序之间的另一种同步通信模式,是基于等待的。
QoS策略控制是DDS的最大亮点。它将资源的可用情况、提供方对资源的占有程度及请求方对资源的期待程度分别归纳为主题QoS,发布者QoS和订阅者QoS。QoS参数虚拟了底层和整个通信机制,包括带宽限制、可靠性、等待时间和资源限制等。发布/订阅数据过程中,中间件负责检查两者之间的QoS是否兼容,从而来确定数据连接的建立情况以及数据的传输控制,大大增加了通信的灵活性。
基于DDS的分布式系统中,加入DDS网络的节点发布自己想要发布的(或者想要订阅的)Topic和QoS,DDS网络上已经存在的节点收听到这个请求后和自己的发布订阅情况以及QoS标准进行对照,如果新加入节点的Topic信息与自己相关,并且QoS标准也符合要求,就主动同新加入的节点进行通信,将自己的Topic信息发送给新加入节点,同时,把新加入节点的相应信息注册到本节点上,以便有通信需求时建立点到点连接。
DDS和HLA的主要目的都是为了促进互操作和重用,特别是DDS充分借鉴了HLA的思想,因而它们有一定相似之处,但DDS和HLA之间也存在许多明显差别。
以下是白亮 冯东云《DDS与HLA技术对比分析》文章中的对比,但我认为仅仅将DDS与HLA的“数据分发管理”服务内容进行对比更准确一些。
HLA不是针对特定应用领域而设计的,它中立于具体的应用领域,因而适用于所有应用领域(如分析、试验、训练等)中的建模与仿真的开发与集成。它可以将构造的、虚拟的和真实的(CVL)仿真集成起来互操作。
DDS以数据为中心实现订阅/发布过程,并且标准化了实时分布式系统中的接口和行为,为数据的接收、传递和发布提供了相应的标准化服务,适用于低迟延率、高吞吐量和实时性要求高的分布式系统应用。
HLA体系结构是以事件为中心的体系结构,该结构使得进程通过事件的传播来通信,事件可以携带数据信息,该结构实现了分布式应用的松散耦合,以及应用的订阅发布。
DDS是以数据为中心的体系结构,进程通信借助一个公用的数据仓库或者分散的数据仓库,该结构使得分布式应用相对独立,数据中心性能高、响应速度快。
HLA和DDS两种规范的目标和内容各不相同,但是在一定程度上还是具备可比性,HLA和DDS基本概念对比如表1所示。
表1 HLA与DDS基本规范对比表
HLA |
DDS |
HLA-OMT |
DDS-DLRL |
HLA-RTI |
DDS-DCPS |
HLA-Rules |
|
Federation |
Domain |
Federate |
Participant/Application |
RTI Ambassador |
Domain Participant, Publisher,DataWriter Subscriber,DataReader |
Federate Ambassador |
Listener classes |
Object class |
Keyed Topic |
Interaction class |
Topic(no keys) |
Update attribute |
write“Keyed”instance |
Reflect attribute |
Read/Take “Keyed” data |
Samples |
Send interaction |
Write “non-keyed” instance |
Receive interaction |
Read/Take“non-keyed” |
samples |
通过对比HLA和DDS,可以看出虽然HLA和DDS具有不同的定义和规范,并且两个规范具有的功能也不同,但是HLA和DDS采用的相同的订阅发布通信机制,HLA与DDS中的对象模型和接口规范存在相应的对应关系。
HLA提出了六大服务功能,分别为联邦管理、声明管理、对象管理、时间管理、所有权管理和数据分发管理,DDS提供了自己的服务并可以通过设置QoS来对服务质量进行约束。表2为以HLA服务分类为标准描述的HLA与DDS服务对应关系。
表2HLA与DDS服务的对应关系表
|
HLA |
DDS |
联邦管理 |
提供了创建,加入,删除和退出联邦执行以及整个联邦状态的保存等功能 |
没有定义标准的API用来实现参与者的加入和退出、状态的保存和恢复,也没有定义强制的同步点 |
声明管理 |
用于发布订阅对象类、对象类的属性以及交互类及交互类的参数,支持仿真交互控制功能 |
DDS通过访问内置主题来访问元数据,元数据是关于DDS域中发生的事件的信息,这些事件包括参与者加入域、创建主题、创建数据读者或者数据写者等。 |
对象管理 |
提供联邦成员内仿真对象实例注册发现,更新和反射,以及联邦成员间交互信息的发送和接收 |
通过QoS策略,支持对象管理中的数据分发,更新的一致性和有序性,允许后来加入的数据读者探测发现和接收先前发布者发布的主题实例,支持对复杂的对象关系建模。 |
时间管理 |
为联邦内联邦成员在时间上同步所提供的服务,其主要服务就是时间管理策略和时间推进的方法 |
没有定义标准的API来实现时间管理 |
所有权管理 |
算理和协调联邦成员中的对象实例及对象实例属性的所有权,所有权具有排他性 |
通过主题的QoS策略OWNERSHIP来管理主题的所有权,支持两种所有权:排他性所有权和共享所有权。 |
数据分发管理 |
通过对路径空间的设定和管理,提供数据分发服务,使RTI能够提供有效的订阅发布,从而联邦成员能够有效的发送和接收数据 |
提供操作接口为中间件提供对发布者发布数据的管理。提供基于主题的数据内容的数据过滤方法,实现HLA中基于域的数据过滤功能。 |
参考:
白亮 冯东云《DDS与HLA技术对比分析》
朱瑞峰《基于桥接器的HLA与DDS互连技术研究》
等