郝玲玲,傅妍芳
(西安工业大学 计算机科学与工程学院,西安 710021)
随着信息化建设的深入,各领域系统应用趋于复杂,如何让不同平台的系统进行通信已成为当务之急。目前大多数流行的信息传输中间件产品已能提供良好的开发平台和通信支持,但由于缺乏合适的系统控制接口和应用级服务质量(Quality of Service,QoS)的有效支持,并不能很好地解决通信的实时性和可靠性问题[1]。在数据分发服务(Data Distribution Service,DDS)应用方面,国内外目前已将DDS产品广泛应用到了各个领域,在无人机领域中,文献[2]构建了一个基于RTI-DDS消息中间件的分布式无人机地面站系统,提出了一种基于RTI-DDS的消息中间件解决无人机地面站系统软件通信的方法。在船舶通信领域中,文献[3]研究了船舶通信中的DDS中间件应用可行性和性能效果,讨论并比较了DDS的实时性指标,引入不同结构对发送和接收相同数据的传输时间作比较,通过验证得出DDS比较适合应用在船舶分布式通信系统中。文献[4]通过分析分布式卫星系统仿真支撑平台的特点,完成了基于数据分发服务的仿真平台的需求分析、硬件结构、软件功能和数据接口设计,确定总体设计方案,并对关键部分进行实验验证,仿真结果表明仿真支撑平台可以屏蔽分布式环境的低层技术细节,使用户可以将注意力集中到仿真应用上来,从而提高仿真系统开发的质量和效率。文献[5]设计了基于DDS和HLA的实时性联合仿真系统,该系统通过使用DDS替换HLA中的数据分发功能,利用HLA进行仿真系统中的联邦管理,DDS负责仿真节点间的数据分发功能,在半实物仿真中达到了实时仿真的目的,试验结果表明基于DDS和HLA仿真系统结构能显著提高基于HLA的半实物仿真系统的实时性,能有效满足分布式仿真的实时性需求。DDS技术的应用也正在航空、航天等领域普及[6-9],未来仍具有十分庞大的应用发展空间,因此开展DDS相关技术的研究和工程应用具有一定的实际意义。
本文在对实时系统信息传输领域研究的基础上,提出了一种基于发布/订阅模型的空战模拟仿真系统,拟通过DDS通信中间件集成空战模拟仿真系统中的不同资源,实现各仿真节点间的通信,并通过设计QoS策略来优化数据流在网络传输的传输质量。
DDS是对象管理组织(Object Management Group,OMG)关于分布式实时系统中数据分发的一个以数据为中心、基于发布/订阅通信模型、提供丰富的服务质量配置的中间件技术规范[10-11],其目标在于为分布式系统提供高效、可靠、实时的数据分发服务。DDS规范建立了具有以数据为中心的发布订阅通信模式的分布式应用程序所使用的应用程序编程接口(API)[12-15]。DDS规范的层次如图1所示,分为以数据对象为中心的发布/订阅层(Data Centric Publish Subscribe,DCPS)和数据本地重构层(Data Local Reconstruction Layer,DLRL)。
图1 DDS规范层次
图1中,DCPS为DDS系统的核心,为用户提供数据发布和订阅功能,负责数据对象在发布者和订阅者间的通信。DLRL建立在DCPS之上,为可选层,可将DCPS提供的服务抽象化,同时集成到应用层,一旦本地数据更新即可通知订阅者进行更新操作。DDS规范列举并正式定义了一整套全面的QoS策略,能利用QoS进行系统控制。这使得DDS可以很好地配置和利用系统资源,协调可预言性与执行效率间的平衡,以及能支持复杂多变的数据流需求等。
以数据为中心的发布/订阅模型构建在全局数据空间(Global Data Space,GDS)的基础上,所有的数据对象都存在于此全局数据空间中,分布式节点通过简单地读写操作便可以访问这些数据对象。计划向这个数据空间提供信息的应用称为“发布者”,计划从数据空间中获取数据的应用称为“订阅者”。每当发布者将新数据发送到全局数据空间,中间件就会把信息传播给那些对此信息感兴趣的订阅者。
DCPS层的数据流结构如图2所示。其主要由数据写入者(Data Writer)、数据读取者(DataReader)、发布者(Publisher)、订阅者(Publisher)、域(Domain)、域参与者(Domain Participant)与主题实体组成。
DDS中间件的建立数据流通信的过程如图3所示。在DDS规范下,应用程序通过DDS中间件通信,需要为通信内容定义数据类型并创建相关的发布端和订阅端,此外还需要完成其他实体的创建和匹配,才能进行数据的发布与订阅。
图2 DCPS层的数据流结构
图3 DDS通信过程
空战模拟仿真系统作为一个分布式仿真系统,集成了仿真控制管理、模拟器、计算机生成兵力、智能空战、战场环境态势显示和综合评估六个子节点,能够针对特定的仿真任务,快速构建仿真应用,包括了从仿真开发、部署、运行到评估的各个阶段。结合DDS技术和空战模拟仿真系统的特点,本文的层次化体系结构如图4所示。
图4中,总体结构分为数据交换层、数据模型层、仿真服务层和应用层4个层次。它是一种以数据为中心的、层次化和模块化的仿真体系结构,其目标是通过DDS将不同仿真资源进行集成,完成空战模拟仿真系统节点间的互联互通互操作。应用层包括空战模拟仿真系统的六个仿真节点,各节点通过调用服务层的不同服务来实现不同功能;服务层通过对DDS进行封装,为应用层提供调用接口,为整个体系结构提供数据交互、运行管理等服务;数据模型层通过以数据为中心的模型,支持多种体系结构互联,它包含应用程序编程接口来管理空战训练中使用的数据模型;数据交换层采用基于DDS的实现方式,用来传递各种数据,支持不同体系结构之间的数据通信,同时对各种公共服务的实现提供基础[16-17]。这种层次化的结构提高了仿真支撑平台的开放性、扩展性和可维护性。
图4 基于DDS的层次化体系结构
对象模型中包含模型间交互的信息和行为,有效的对象模型可以使得空战模拟仿真系统资源应用之间实现语义互操作性,本文的对象模型定义的方法主要由DataType、DataTypeField、DomainPara、Topic、CDDSCommuModuleBase 5个类完成。
DataType类为数据类信息,数据类作为发布/订阅的对象,记录该数据的值、数据类型(对象类,交互类)以及该数据的相关信息。
DataTypeField类为DataType类的属性类,记录节点的基本数据类型、成员名称、成员类型描述及成员描述信息。在空战模拟仿真系统中将数据结构按照Type类型分为对象类和交互类,对象类为系统运行过程中需要实时更新的状态类数据,交互类为系统运行过程中事件触发类数据。本系统共设计15种数据结构,其中对象类的数据结构为8种,交互类的数据结构为7种。所有数据结构见表1。
Topic类为主题类,作为节点发布/订阅的主题,记录仿真系统中各节点发布/订阅主题的名称、数据类型、主题所属域ID、主题描述以及主题的发布-订阅情况。空战模拟仿真系统中共设计11个主题,所有主题信息见表2。
表1 数据结构
表2 主题信息
Domain类为DDS域属性类,定义了各节点的通信域名称、ID、通信域描述、发布主题列表、域参与者、域数据写入者列表及域数据读取者列表。
DDSCommuModuleBase类中定义了DDS域列表,表明节点所处的通信域,定义了节点相关的数据类型列表。本文设计了DDSCommuModule接口类,实现对DDSCommuModuleBase类中原始API的封装,各节点通过继承DDSCommuModule后的类,调用相应API来实现各仿真成员互联互通互操作。封装之后的API见表3。
表3 Durability策略可取值
DDS的实时性是建立在其丰富的QoS策略之上的,OMG在DDS规范中定义了22种QoS策略,本文通过配置不同主题、不同发布者、不同订阅者的QoS策略来极大地优化空战模拟仿真系统的通信性能。结合DDS自身的QoS策略设计了适用于该空战模拟仿真系统的QoS策略,分别为持久性策略(Durability),历史策略(History),可靠性策略(Reliability)。
持久性策略描述了数据在其被发布的时刻之外是否继续存在。Durability策略参数值见表4。
表4 Durability策略可取值
在该空战模拟仿真系统运行时,将发布或订阅爆炸事件主题的节点的Durability策略设置为VOLATILE_DURABILITY,当战场环境态势显示节点因某种原因掉线重连时,原本已经发布爆炸事件主题的实体仍然存在于态势显示界面,这就会影响实际仿真运行;将Durability策略设置为TRANSIENT_DURABILITY_QOS,当计算机生成兵力节点因某种原因掉线但不继续参与战场战斗时,系统会自动将已经发布的爆炸事件主题保存到内存,对于掉线后不继续上线的节点是不需要存储与之相关的事件信息的;将Durability策略设置为PERSISTENT_DURABILITY_QOS,其实与TRANSIENT_DURABILITY_QOS的意义大致相同,但PERSISTENT_DURABILITY_QOS会将以往演练的所有永久策略的主题都存贮到系统硬盘中,需要使用者将历史中所有主题事件进行再次管理;所以本文将所有交互类的主题策略设置为TRANSIENT_LOCAL_DURABILITY_QOS,保证了仿真的正常运行。
历史策略描述了DDS会尝试发送最近的多少个数据给后加入的订阅者。History策略参数值见表5。
表5 History策略取值
将History策略设为KEEP_LAST_HISTORY_QOS,并指定depth值为n时,则表示DDS会尝试发送最近的n个数据给后加入的订阅者;KEEP_ALL_HISTORY_QOS为DDS会将所有发布过的数据发送给新加入的订阅者。
History策略是和Durability策略相互配合使用的,对于该空战模拟仿真系统而言具体保留最近多少个数据样本是难以确定的,所以本系统将History策略设置为KEEP_ALL_HISTORY_QOS,即保留所有配置该策略的主题到DDS。
可靠性策略描述了数据写入者和数据读取者怎样对待他们所处理的数据。Reliability策略参数值见表6。
表6 Reliability策略取值
RELIABLE_RELIABILITY_QOS将保证所有的数据被可靠地传输到数据读取者;BEST_EFFORT_RELIABILITY_QOS则没有数据的检测与重发机制,将不保证数据传输的可靠性。
在该空战模拟仿真系统运行时,将发布或订阅实体注册主题的节点的Reliability策略设置为参数1,战场环境态势显示节点可能只会显示个别节点或实体,因为参数1不保证数据传输的可靠性,所以没有收到的实体注册事件的实体在态势显示界面不会正常显示;但是对于对象类的主题,因为数据持续在更新,所以丢失个别数据包对整个系统运行是没有影响的。所以本系统将交互类主题的Reliability策略设置为参数2,这样就避免了各节点丢失重要的仿真控制命令以及交互类主题,整个仿真系统也能进行正常运行。
在完成系统总统架构设计、对象模型定义方法和QoS策略设计之后,实现各分布式仿真节点间的通信,其中仿真控制管理节点运行界面如图5所示,实时显示了当前搭载在DDS数据中间件上的各分布式节点,通过仿真控制管理节点可实现对整个仿真场景的启动、暂停、停止等操作。
图6为战场环境态势显示节点的实时运行界面图,图中战场场景是红方飞机锁定蓝方飞机后,发射多枚导弹攻击蓝方飞机,蓝方飞机进行相应的规避,绿色的线为多枚红方攻击弹的攻击轨迹,与此同时蓝方防空系统也锁定了红方目标。
图5 仿真控制管理节点运行界面图
图6 战场环境态势显示节点界面运行图
本文选用美国RTI(Real-Time Innovations)公司的DDS来搭建空战模拟仿真系统,在完成本系统节点间通信的基础之上,对该系统的实时性进行相关测试。所有仿真节点组成一个千兆局域网,各节点操作系统均为win10-64位,处理器为Intel(R)Core(TM)i7-7700CPU@4.20 Hz,内存为16 GB,使用RTIDDS5.3版本,测试程序为perftest_cpp.exe。本文共设计4组实验来研究系统在实时性、可靠性和吞吐量上的表现,主要从数据包长度、传输延迟、抖动、吞吐量及lost(网络丢包)的大小来衡量。
其中传输延迟为发送接收处理时间、响应时间、传输时间三个时间的总和,用来衡量网络传输时间长短,单位为μs;抖动为信号的某特定时刻相对于其理想时间位置上的短期偏离,用于衡量网络时延的稳定性,单位为μs;吞吐量为单位时间内成功地传送数据的数量,单位为mbps;网络丢包为数据传输过程中的丢包数,用于衡量网络的可靠性,单位为%。
实验一 测试系统在数据包大小不同时的传输延迟,共进行5次数据测试,测试结果如图7所示,5次数据传输的平均传输延迟为117.4 μs,数据包大小的变化对传输延迟不会产生明显的影响。
图7 传输延迟测试图
实验二 测试系统在数据包大小不同时的抖动,共进行5次数据测试,5次测试结果如图8所示,5次数据传输的平均抖动大小为26.54 μs,数据包大小的变化对抖动不会产生明显的影响。
图8 抖动测试图
实验三 测试系统在数据包大小不同时的丢包数量,共进行2组丢包数量(lost 1,lost 2)测试,测试结果见表7。
表7 数据丢包率测试
从表7中可看出每次实验发布数据包数量为300万,随着数据包长度增加,丢包数一直为零,可看出该仿真系统满足可靠性传输。
实验四 测试系统在数据包大小不同时的吞吐量,共进行5次测试,5次测试结果如图9所示。从图9可看出,随着数据包大小在148 byte以后,基本上吞吐量开始趋于稳定。吞吐量(860 mbps左右)接近网络的实际带宽(1 000 mbps),因此该系统能够实现对网络环境的充分利用。
图9 网络吞吐量测试图
1) 本文利用DDS通信中间件技术设计并实现了空战模拟仿真系统的数据交互功能,提出了一种基于数据分发服务的层次化体系架构,设计了各个仿真节点间的支撑环境接口、对象模型定义方法及QoS策略,实现将仿真控制管理、模拟器、计算机生成兵力、智能空战、战场环境态势显示和综合评估6个仿真资源的整合。
2) 在实现各节点互联互通互操作的基础上,测试了DDS通信中间件技术在空战模拟仿真系统下的传输延迟、抖动、丢包数量和吞吐量,系统的传输延迟稳定为117.4 μs,平均抖动大小为26.54 μs,丢包数量为0,且当数据包长度大于148 Byte时,吞吐量趋于稳定。表明文中方法在实时性、可靠性和吞吐量上表现良好,为空战模拟仿真系统的可靠性和实时性提供了一定的技术保障。