《1 前言》

1 前言

分布交互仿真是指采用协调一致的结构、标准和协议,通过局域网或广域网,将分散在各地的仿真设备互联,形成可参与的综合性仿真环境[1]。分布交互仿真是为了解决 2 个问题 ——— 实现大规模复杂系统的仿真和降低费用,它要求建模与仿真过程中应该重视互操作性、重用性、可验证性、有效性。

HLA 于 2000 年被接受为开放标准 IEEE1516,是当前用于分布式仿真的通用技术框架。HLA 的理念是实现仿真应用系统的即插即用,易于新仿真系统的集成和管理,并能根据不同的用户需求和不同的应用目的,实现联邦的快速组合和重新配置,保证联邦范围内的互操作和重用。但是,大量实践应用表明 HLA 在支持重用性和互操作性方面还没有达到预期的效果[2],目前国内外有大量研究工作正在围绕 HLA 的改进和扩展进行。

在分析当前 HLA 扩展研究现状的基础上,重点针对 HLA 分布仿真互操作和重用的 2 个典型问题,结合 Web 服务技术,提出 HLA 分布仿真扩展框架,并基于 pRTI 和 AXIS SOAP 引擎实现了原型系统,在某坦克攻防作战仿真中进行应用,验证了可行性。

《2 研究现状》

2 研究现状

HLA 在军事上得到了许多成功的应用,并且在民用上亦引起广泛重视,正成为新一代分布仿真系统建立与应用的标准。HLA 只是分布交互仿真技术发展的新起点,它还存在一些尚待解决的关键问题,如对广域网范围的大规模分布仿真互操作性支持问题,仿真模型运行时的动态扩展性问题,仿真资源动态分配问题,仿真系统的容错性问题,仿真系统开发和执行的安全性问题等。

利用 Web 技术对 HLA 仿真进行改进性研究是当前建模与仿真领域的一个热点,比较典型的有如下几种。

1)美国海军研究院、George Mason 大学以及 SAIC 公司等牵头实施的可扩展建模与仿真框架(extensible modeling and simulation framework,XMSF)[2]项目是该领域的领跑者。XMSF 定义了一个在可扩展框架中使用的 Web 技术集合,促成新一代建模仿真应用的形成、发展和交互。XMSF 基于XML 标记语言,使用商用的 Web 技术作为共享的通信平台和通用的传输框架,增强建模与仿真的功能以满足训练、分析、采办的需要。其核心是应用开放的标准和资源,提高分布式仿真系统的效能和可应用性。

2)新加坡 Yong Xie 等提出了一个在网格环境下使用 HLA 的框架[3],用一个远程的代理代表特定的联邦成员与 RTI 进行交互。该结构隐藏了在网格环境中的网络通信并实现了网格上的通信对用户的透明性和仿真节点的可重用性。

3)美国 Fitzgibbons 等基于 OGSI 提出 IDSim 分布仿真框架[4],该框架使用网格服务数据成员表示仿真状态,同时允许“推”、“拉”的存取模式,并通过继承来简化集成和开发任务。

4)新加坡 Dan Chen 等提出了适用于分布仿真克隆的联邦成员体系结构[5],通过使用与物理联邦成员相连接的虚拟联邦成员的概念把仿真模型从运行时组件中分离出来。

5)我国北京航空航天大学设计了网格环境下的 RTI 资源管理系统[6],以支持网格化的 HLA 分布交互仿真环境,该系统利用 globus 支持的网格环境对基于 HLA 的分布交互仿真资源进行管理,实现联邦成员的运行状态、生命周期等管理。

6)波兰 Zajac 等在网格环境下开发了侧重于联邦成员迁移的 HLA 分布仿真系统[7],该系统包含了发现服务、信息索引服务等等,系统中 RTI 和联邦成员之间的通信建立在最初的 HLA 通信的基础上,需要打开一些预定义的端口进行通信。

《3 问题提出》

3 问题提出

由 HLA 的概念,一个仿真或者说一个联邦,由一系列逻辑上相关的仿真器(联邦成员)组成,联邦成员之间通过 RTI(run - time infrastructure,运行支撑环境)进行通信。HLA 定义了一系列规则和规范来支持仿真联邦成员的重用性和互操作性 ;RTI 软件保证遵循 HLA 标准规范的联邦成员之间的交互并实现同步。HLA 仿真逻辑结构和联邦成员结构分别如图 1 所示。

《图1》

图1 HLA 仿真逻辑结构和联邦成员结构

Fig.1 Logic framework of HLA simulation and federate framework

HLA 的主要目标是构建大规模的仿真系统,并解决代码重用和互操作问题。但是目前大量应用表明 HLA 没有完全实现可重用性和互操作性,主要表现在以下两个方面。

1)互操作性方面。在广域网上应用受限,无法解决防火墙等安全限制问题。目前 RTI 软件的通信机制大都基于 TCP/UDP 实现,联邦成员之间的通信经常会受到防火墙等系统安全措施的限制而不能正常进行,这个问题在广域网环境下尤其突出。随着仿真规模和复杂性的增长,各仿真节点地理上的分布程度越来越深,广域网环境下的分布式仿真是一种必然趋势,HLA 分布仿真必须适应这种趋势。

2)重用性方面。HLA 通过 RTI 提供通用的、相对独立的支撑服务程序,将仿真应用同底层的支撑环境分离,在一定程度上解决了仿真代码的重用性问题,但是具体应用中无论是联邦成员代码和 LRC(local RTI component,本地 RTI 组件)之间还是 LRC 和 RTI 执行之间都具有比较高的耦合性,不利于仿真应用的动态组合。而且,单纯基于 HLA 进行仿真,在一定程度上能够实现仿真资源的重用,但是对资源的管理却缺乏统一的标准,不利于重用。

《4 HLA 分布仿真扩展设计》

4 HLA 分布仿真扩展设计

《4.1 扩展设计思路》

4.1 扩展设计思路

Web 服务是一种自描述、自包含的,能够通过 Web 进行发布、寻址和调用的应用程序组件[8],它是建立可互操作的分布式应用程序的新平台。Web  服务平台无关性可以解决系统异构的问题 ;Web 服务基于 XSD 的数据描述方式可以统一异构数据类型 ;Web 服务利用基于 HTTP 和 XML 的 SOAP 协议可以实现跨防火墙的、安全的、分布式的通信 ;通过 UDDI,可以实现服务的动态注册和发现。

SOAP 是一种基于 XML 的、用于在计算机之间交换信息的协议[8]。SOAP 能应用于各种消息接发系统,并能通过各种传输协议(如 HTTP,SMTP,BEEP 等)进行传递,SOAP 消息完全用 XML 编写,独具平台和语言的独立性。HTTP 是当前 SOAP 传输最流行的方法,它简单、稳定、使用广泛,大部分防火墙都允许 HTTP 通过。

在遵循 HLA 标准规范的基础上,结合 Web 服务技术对分布仿真应用进行扩展,实现更高层次的重用性和互操作性。主要有 :a. 使用基于 Web 的通信协议 SOAP/HTTP,从而使 HLA 兼容的仿真联邦成员能够与 RTI 在广域网、局域网等各类网络上通信。使用基于 HTTP 的 SOAP 消息,终端应用程序可以很容易地联接远程服务并调用远程方法,屏蔽防火墙等安全限制对通信的影响。b. 近期看,可以使 HLA 联邦成员通过 Web 服务与 RTI 进行通信 ;长远看,可以使多个联邦成员以 Web 服务的形式驻留在广域网上,允许终端用户在广域网上加入联邦或者通过浏览器组合一个联邦执行。c. 利用 Web 服务协议栈中的一系列标准协助仿真资源的统一管理,增强重用性。具体可以将各类仿真资源以 Web 服务的方式进行封装并接入广域网平台 ——— 由于 Web 服务能跨平台进行远程调用,并且具有良好定义和基于标准的接口,很好地解决了仿真资源分布和平台异构问题 ;引入 Web 服务机制,结合仿真资源的特点,对资源服务进行逻辑组织和统一管理(包括服务注册、服务发现、语义标注等),方便资源的重用和维护。

《4.2 体系结构》

4.2 体系结构

传统 HLA 应用中,仿真成员模型和 LRC 之间,LRC 和 RTI 执行之间具有较高的耦合性,而 Web 服务是典型的松散耦合技术框架,要结合 Web 服务实现 HLA 分布仿真扩展就必须将紧耦合的 HLA 仿真应用和松耦合的 Web 服务技术这对矛盾体统一起来。文章在遵循 HLA 标准规范的基础上,对 HLA 分布仿真中紧耦合的部分进行去耦处理,提出基于 Web 服务的 HLA 分布仿真扩展体系结构,见图 2。

《图2》

图2 基于 Web 服务的 HLA 仿真扩展体系结构

Fig.2 Architecture of HLA simulation extension based on web services

在该体系结构中,联邦成员去耦之后被分为联邦成员应用和 RTI 通信代理两部分。其中 RTI 通信代理把本地 RTI 组件中提供的 RTI 调用服务封装为Web 服务,并结合一个伪联邦成员大使处理 RTI 回调消息,然后以 SOAP 消息的形式转发给远程的联邦成员 ;联邦成员应用将仿真应用开发成 Web 服务的形式部署在广域网上,联邦成员代码使用预先封装好的 RTI 服务调用 API 与远程的 RTI 大使服务进行 SOAP 通信,并且让联邦成员应用服务接受并处理伪联邦成员大使发送的 SOAP 形式的 RTI 回调消息,推进仿真执行。

在传统 HLA 应用中,联邦成员代码直接通过 RTI 大使(RTI Ambassador)对 RTI 服务进行调用,并通过联邦成员大使(federate ambassador)接受 RTI 的回调消息,新的扩展框架在联邦成员和 RTI 之间加了一层基于 SOAP/HTTP 的 RTI 通信代理层,虽然性能上会有一定的损失,但是却巧妙地解决了分布仿真在广域网范围的应用问题,而且该框架在遵循HLA 标准规范的基础上强调联邦成员和 RTI 以 Web 服务形式在广域网上进行部署,使 HLA 分布仿真应用的动态组合成为可能。

《4.3 扩展设计》

4.3 扩展设计

基于 Web 服务的 HLA 仿真扩展设计框架如图 3 所示。RTIAmbassadorProxy 负责把联邦成员对 RTI 的服务调用请求封装为 SOAP 消息并通过 HTTP 转发给 RTIAmbassadorServices ;RTIAmbassadorServices 以Web 服务的形式部署在广域网上,负责接收远程的RTI 调用消息(以 SOAP 请求的形式),并通过调用LRC 提供的 RTIAmbassador 成员函数向 RTI 联邦执行发送数据、调用 RTI 服务 ;当 RTI 联邦执行需要回调联邦成员时,联邦执行直接将消息发送给实现FederateAmbassador 接口的伪联邦成员大使 FderateAmbassadorProxy,FederateAmbassadorProxy 负责接受 RTI 传来的回调消息并封装成 SOAP 形式,通过 HTTP 转发给对应联邦成员实现中的 FederateAmbassadorServices ;FederateAmbassadorServices 负责接收并处理 SOAP 形式的 RTI 回调消息并与仿真模型紧密结合,协调仿真进程的正常推进。

《图3》

图3 HLA 仿真扩展设计框架

Fig.3 Framework of HLA simulation extension design

《5 原型系统实现》

5 原型系统实现

在结合 Web 服务扩展 HLA 分布仿真设计的基础上,基于 pRTI 和 AXIS SOAP 引擎实现原型系统,并在广域网范围内的某坦克攻防作战仿真中得到成功应用,验证了可行性。原型系统实现的重点在于RTI 服务的封装部署以及 RTI API 调用和回调到 SOAP 消息的映射。

《5.1 服务的封装部署》

5.1 服务的封装部署

pRTI 是瑞典 Pitch 公司开发的第一个通过 DMSO HLA 鉴定测试的商业 RTI ;它实现了 HLA 接口规范中定义的所有服务,是纯 Java 开发的,能够确保跨平台的可移植性 ;既支持单一线程联邦又支持多线程联邦,而且是完全分布的 RTI,具有较高的运行效率[9]

AXIS 是基于 Java 的、最新的 SOAP 规范(SOAP 1.2) 和 SOAP with Attachments 规范(来自 Apache Group)的开放源代码实现。AXIS 本质上就是一个SOAP 引擎,提供创建服务器端、客户端和网关 SOAP 操作的基本框架。整个 AXIS 项目包括 4 个部分[10]:消息流子系统,传输框架子系统,数据编码子系统,支持 WSDL 以及日志记录、出错以及故障处理机制。AXIS 支持两种方式的 Web 服务部署 ——— 使用 JWS(java web sevice)文件快速部署,使用 WSDD(web service deployment descriptor)文件进行定制部署 ;支持 3 种方式的 Web 服务调用 ——— Dynamic Invocation Interface (DII),Stubs 方式和 Dynamic Proxy 方式。在原型系统中采用 WSDD 发布 RTI 服务和仿真联邦成员服务,用 DII 方式调用这些服务。

在 RTI 通信代理端,对 pRTI 实现中 RTIAmbassador 类所提供 6 大类服务中的联邦管理、声明管理、对象管理、所有权管理、时间管理等 5 类服务(除去数据分发管理服务)以及 HLA 支持服务(如获取对象类句柄等)共 89 个成员函数进行封装部署 ;在联邦成员应用端,对实现 FederateAmbassador 接口的与联邦管理、声明管理、对象管理、所有权管理、时间管理相关的 40 个回调服务函数进行封装部署。在 AXIS 引擎上部署之后可以得到相应的 WSDL 文档,这些文档用一种与具体语言无关的抽象方式描述了给定 RTI 服务和仿真服务收发的有关操作和消息,定义了一个 RTI 和联邦成员交换消息的通信端点集。WSDL 文档的具体内容略。

《5.2 API 调用到 SOAP 消息的映射》

5.2 API 调用到 SOAP 消息的映射

把传统 HLA/RTI 的 API 调用映射到 SOAP 消息是扩展设计的另一个重点。在联邦成员应用端,RTIAmbassadorProxy 类中实现了遵循 HLA 接口规范的 RTI 提供给联邦成员的服务(原型系统实现了RTI 6 大类服务中的 5 类 ——— 联邦管理、声明管理、对象管理、所有权管理和时间管理),其原理是将联邦成员对 RTI 的服务调用封装为 SOAP 消息发送到RTI 通信代理端的相关 RTI 大使服务,获取相应的 SOAP 响应并解析返回结果 ;在 RTI 通信代理端,FederateAmbassadorProxy 类(实现 FederateAmbassdor 接口)提供了接受 RTI 回调并封装成 SOAP 消息然后通过 HTTP 转发到联邦成员应用端的功能。以receiveInteraction 回调服务为例,说明 RTI 回调到 SOAP 消息映射的实现。

实现 API 调用到 SOAP 消息的映射,其核心是实现调用参数的映射,receiveInteraction 回调服务的消息参数映射如表 1 所示。

《表1》

表1 ReceiveInteraction 回调消息参数映射表

Table 1 Parameters remapping table of receiveInteraction callback message

其中 ReceivedInteractionBean 类是结构化的用于表示交互类数据的 JavaBean,其内部数据包含了 ReceivedInteraction 类(RTI 类库提供)中的所有交互类相关数据。该类与 ReceivedInteraction 类的区别在于其遵循 JavaBean 规范,可以在 SOAP 传输和解析过程中方便地进行序列化(serialization)和反序列化(deserialization)。

在 RTI 通信代理端,联邦成员大使代理接收到 RTI 的 receiveInteraction 回调后马上将其封装成 SOAP 消息并通过 HTTP 转发到联邦成员应用端。封装之后通过 HTTP 发送的 SOAP 消息如表 2 所示。

《表2》

表2 receiveInteraction 回调的 SOAP 请求消息

Table 2 SOAP request message of receiveInteraction callback

联邦成员应用端成功接受该回调消息之后即返回一个接收成功的 SOAP 响应,如表 3 所示。

《表3》

表3 接收 receiveInteraction 回调的 SOAP 响应

Table 3 SOAP response of receiving the receiveInteraction callback successfully

《5.3 原型系统应用说明》

5.3 原型系统应用说明

该原型系统在广域网范围内的某坦克攻防作战仿真中得到了成功应用。该仿真应用中,有 3 个联邦成员模拟 3 辆白方坦克,3 个联邦成员模拟 3 辆红方坦克,对应的 6 个 RTI 通信代理,以及底层 RTI。其中 4 个坦克联邦成员,6 个 RTI 通信代理以及 pRTI 的执行进程运行于实验室局域网环境,剩下的 1 个红方坦克和 1 个白方坦克在广域网范围内跨省运行。原型系统运行框架如图 4 所示。

《图4》

图4 原型系统运行框架

Fig.4 Framework of prototype execution

该应用中,每个联邦成员都订购了所有对象类的所有属性以及所有交互类 ;每个联邦成员都是时间受限和时间调节的 ;相应的服务分别部署在 Tomcat 服务器 + AXIS 引擎上 ;为简化实现,假设各服务访问地址已知,没有引入 UDDI 机制。坦克攻防仿真过程在该原型系统的支撑下正常推进 30 min,初步测试验证了基于 Web 服务的 HLA 分布仿真扩展设计的可行性。

《6 结语》

6 结语

随着计算机和网络技术的不断发展,现代仿真环境越来越复杂,仿真系统大多数为多平台、多系统的复杂分布式应用。基于 Web 服务的 HLA 分布仿真扩展应用解决方案具有广泛的兼容能力,可以支持不同的系统平台,能够解决防火墙等安全限制问题,在广域网环境下,实现松散耦合的、跨平台的分布式仿真系统,能够利用 Web 服务协议栈中的一系列标准协助仿真资源的统一管理,增强重用性。

在分析当前 HLA 扩展研究现状的基础上,重点针对 HLA 分布仿真互操作和重用的两个典型问题,结合 Web 服务技术,将传统 HLA 仿真应用框架进行去耦处理,提出一个 HLA 分布仿真扩展体系结构,基于 pRTI 和 AXIS SOAP 引擎实现原型系统,并通过实例详细说明 RTI 服务的封装部署以及 RTI API 调用到 SOAP 消息的映射。在某坦克攻防作战仿真中应用,验证可行性。该设计思路能够封装原有的 RTI 库,将 HLA 分布仿真应用扩展到广域网环境。

引入基于 SOAP/HTTP 的 RTI 通信代理不可避免地会引起通信方面的性能损失,后续工作将在性能优化和仿真应用动态组合方面展开。