数据分发服务在指控系统中的应用设想①

2018-03-02 06:15刘海峰林福良
计算机系统应用 2018年2期
关键词:发布者队列数据包

周 隽,刘海峰,林福良

(北京控制与电子技术研究所 信息系统工程重点实验室,北京 100038)

1 引言

随着现代军事科学技术的发展,指控系统的系统复杂度和研发规模迅速扩大,系统集成的难度和风险都在大幅度提高.DDS以数据为中心的发/订阅模型很好的实现了分布式系统在空间、时间、数据流上的低耦合性为解决指控系统中各种异构节点的集成问题,以及指控系统的扩展性,抗毁伤能力的提高提供了良好的解决方案.然而指控系统作为一种特殊的实时分布式系统,其还存在网络带宽不一,带宽较小且利用率低,信道传输不稳定,通信控制复杂等诸多特点.市面上完全按照标准DDS规范开发的商用实时数据分发服务系统软件是无法满足指控系统的需求的,必须对其提出一些改进才能满足指控系统对数据分发服务的特殊需求.

2 传统的网络通信模型[1]

传统的网络通信模型主要包括三种.

(1)点对点模型(如图1):点对点模型是通信模型中最简单的形式,其只支持一对一的连接通信,传统的电话网络是点对点模型的一个典型例子.该模型显然无法满足作战指控系统中多节点间同时进行数据通信的需求.

图1 点对点模型示意图

(2)客户端/服务器(C/S)模型:针对点对点模型的可扩展性差问题产生了客户端/服务器模型,如图2所示.客户端/服务器模型指定一个特殊的服务器节点,它可以同时连接多个客户端节点,是一个“多对一”的架构.C/S模型很好的解决了点对点模型的扩展性问题,但C/S模型存在单点失效和服务器瓶颈等问题,从而导致其无法满足作战指控系统对于大规模数据的实时的发送/接收以及对抗毁伤性强等要求.

图2 客户端/服务器模型示意图

(3)发布/订阅 (P/S)模型:如图 3 所示,发布/订阅模型是一种典型的分布式模型.该模型中各通信节点主要通过关联主题(Topic,即数据的名称和定义)来进行通信,各通信节点只需申明其要发布和订阅的Topic即可进行通信,无需知道对方的其他信息,发布/订阅的数据在发布者和订阅者之间直接传递,省去了服务器节点.从而有效的降低了系统中各节点间的时间,空间,数据流的耦合度.能够很好的满足对数据具有高实时性,大数据量,可扩展性强等要求的网络通信系统.

图3 发布/订阅模型示意图

3 数据分发服务(DDS)规范概述

DDS规范是一个由对象管理组织(OMG)发布的基于发布/订阅模型的分布式实时应用系统中数据传输的规格说明书.DDS规范描述了两个独立的层次接口:一层是低层的以数据为中心的发布/订阅 (DCPS)层;另一层是一个高层的数据本地重构层 (DLRL),这一层是可选的.DCPS模型层是DDS规范的核心,为应用程序进行数据的发布/订阅提供了基本的架构,以及确保数据能够准确有效地传输给适当的接收者,并提供了一个与平台无关的数据模型[2].

3.1 DCPS的工作原理

DCPS模型(如图4)通过构建一个共享的“全局数据空间”的概念,所有的数据都存在于此空间中,各分布式节点通过简单的读,写操作便可以访问这些数据对象.DCPS模型中主要包括以下实体:Publisher(数据发布者),Subscriber(数据订阅者),DataWriter(数据写者),DataReader(数据读者),Topic(主题).

Publisher是负责实际数据发布的DCPS对象.Publisher拥有和管理DataWriter.当应用程序想要发布数据时,就通过Publisher将数据通过相对应Topic的DataWriter进行数据的发布.一个Publisher可以拥有多个DataWriter,但一个DataWriter只能被一个Publisher所拥有,且一个DataWriter只能发布一种特定Topic的数据.

Subscriber是对发布者发布的数据进行实际接收的DCPS对象.Subscriber拥有和管理DataReader.一个Subscriber可以拥有多个不同Topic的DataReader,一个DataReader只能被一个Subscriber所拥有.当应用程序想要接收某个Topic的数据时就通过相应Topic的DataReader获取接收到的数据.

Topic是发布和订阅应用程序间互动的基本方法,在Publisher和Subcriber之间提供基本连接点.DataWriter对象和DataReader对象通过Topic进行关联,每个DataReader和DataWriter只能关联一种特定的Topic,且发布端的DataReader和订阅端的DataWriter在发布和订阅数据时必须是关联相同的Topic.

图4 以数据为中心发布/订阅(DCPS)概念模型[3]

3.2 QoS控制

QoS(服务质量)用于发布/订阅双方详细描述服务的行为.为满足各种实体(包括Topic、DataWriter、DataReader、DomianParticipant、Publisher、Subscriber等)对通信服务质量的不同需求,以及保证通信双方对服务质量的统一要求,DDS中引入了QOS服务模型.该模型中对不同的服务需求进行了建模,通过对各实体进行简单的QOS设置,实现不同场景的通信诉求.QoS服务模型为数据传输的实时性、可靠性等提供了有效的支持.

4 DDS在指控系统中的应用设想

基于标准的DDS规范开发的商业DDS产品,并不能很好的适应指控系统对数据分发服务的特殊要求,其主要存在如下问题:

(1)中间件庞大,复杂,带宽利用率低,实时性差等问题,如Open Splice DDS软件的代码规模达到18 M,最大占有带宽达到15 K,不能适用低带宽网络环境.

(2)对于不稳定信道,信息传输可靠性差,特别是传输数据量较大的情况,不能保证传输数据的可达性和完整性.

(3)不能支持异构网络和大文件可靠传输.

(4)缺乏自主可控性,对跨平台性的支持有限.

针对商用DDS软件中包含的问题,需要有一个能够满足指控系统应用需求的DDS软件中间件平台就必须基于标准OMG DDS(V1.4)并针对指控系统的特殊需求对DDS标准规范进行精简和拓展.为此以DCPS信息分发模型为基础,并采用了以下几种方法来满足指控系统的特殊需求.

4.1 应用级QoS控制

在整个指控系统中,各异构节点对数据传输的要求是不同的,有的传输要求时间的实时性和低延迟,对传输的可靠性要求不高;而有的场景要求较高的传输可靠性,即保证数据能够完整的传输,而对于传输时间以及传输延迟没有太高的要求.因此,需要根据网络的不同状况动态的进行QoS配置.

为了满足不同传输场景的需求,对服务质量进行的不同等级的划分,同时抽象出独立的QoS策略对象,专门负责整个通信系统中不同节点、场景下通信质量的控制、调节.其实现机制就是:通过进行适当地参数设置可以自由的进行QoS切换.相关的QoS参数主要包括:

Reliability:数据的可靠性,数据传输可以在最可靠(RELIABLE确保所有数据按照顺序被接收)与最高效(BEST_EFFORT不保证数据是否能被接收到,在没有高可靠性需求的应用中减少额外的开销)之间作选择.

Durability:数据的持久度,发送的数据不被保存(VOLATILE)、保存在内存中(TRANSIENT_LOCAL)或永久性保存(PERSISTENT)在数据库中.

History:数据的历史记录,全部保持(KEEP_ALL在可用资源的限制内,在队列中保存所有的数据)或保持最后N个.

Ownership:数据的所有权,缺省情况下对于同一个主题,可以存在多个数据发送者.但主题所有权也可以设置为互斥,根据所有权的权重来仲裁哪个发布者具有主题所有权.高权重的发布者失效后,低权重的可以取得所有权.

Topic-Priority:发送优先级控制,不同主题的优先级发送控制.

4.2 带宽自适应性

指控系统的通信网络复杂多变,由高/低带宽、高/低延迟的网络混合而成.节点之间需要进行状态信息搜集以及控制信息交互,而受到网络带宽的影响,节点交互频率应该是动态的.

为适应网络的动态性,提出带宽自适应的“心跳”信号机制监控网络中各DDS节点的运行状态,把新状态提交给DDS应用实例.图5给出了带宽自适应心跳工作原理.所谓带宽自适应的“心跳”信号是指各DDS节点根据网络通信环境会产生(收到)不同频率的“心跳”信号.局域网内的节点之间可以一秒产生若干次心跳,以便迅速发现故障、主备切换;而上下级通过无线窄带跨网路由时可以间隔若干秒产生一次心跳,减少带宽占用、防止故障误判.通过“心跳”信号发现故障节点,进而通知DDS实例注销与故障节点相关的发布、订阅信息,必要时,进行节点切换.

4.3 可扩展二进制变长编码

为减少网络中信息编码的长度、减少数据发送量,以及提升编码的可扩展性,该平台针对不同的任务,设计了可扩展二进制变长消息协议.可扩展二进制变长消息编码用多字节表示数字,值越小的数字使用越少的字节数,这种表示法既能减少用来表示数字的字节数,又可以减少发送数据量,从而提高传输速 度;此外,采用Key-value(键值)对的方法,将key和value编码到二进制流中,解码时可以忽略不认识的键值对,这样可以将新的键值对插入不认识这些字段的程序消息中,以提升消息的可扩展性.

图5 带宽自适应“心跳”示意图

图6给出了可扩展二进制变长编码的结构.消息中的每个字段都是由键/值对组成的.这是一个多字节的编码方式.值用多个字节来表示,其中每个字节的高字节代表下一个字节是否属于该数值,如果为1,则表示下一个字节也是该数值的一部分,为0表示当前字节是该数值的最后一个字节.另外,键用一个字节进行编码,其中低3位代表了数据类型,而高5位则表示了数据的序号.

图6 可扩展二进制变长编码示意图

这种编码方式相对于固定长度的编码方式可以有效的减少编码的长度,从而起到压缩数据的效果,间接的提升了数据的发送速度.另一方面,由于采用了键值对的形式,可以根据需求的不同,向消息中插入新定义的键值,旧的应用可以跳过不识别的新键值,这样大大提高了扩展性和灵活性.

4.4 多线程信息发送及多优先级队列

对于同一个数据发布者要发布的多个数据队列,根据数据发送的QoS设置、数据类型等信息,产生多个(数量可配置)独立的线程并发读取消息队列,使得数据在消息队列中的等待时间进一步减少,如图7所示.

此外,根据发送方和订阅者对数据的QoS需求,设置多种优先级队列,避免一个队列的情况下,由于多个线程并发访问而对采用的互斥锁加锁解锁带来的延迟.

图7 多优先级队列与多线程信息发送示意图

4.5 信息实时可靠传输

在指控系统中对数据传输的时效性,可靠性有很高要求.为此当系统中某节点失效时必须能够进行节点的无缝切换,信道中断时能够进行主备切换.此外,当数据传输丢失时,需要采取重传等措施保证数据传输的可靠性.

4.5.1 信息生命周期管理

战场态势瞬息万变,只有掌握了最新的战场信息,才能够做出正确的指挥决策.因此指控系统对信息的时效性有较高要求.为了保证信息接收者能够接收到有效的数据,即具有一定时效性的数据,以及信息接收者能够保证接收到的数据仍然在其时效内提出了信息生命周期管理的方案(见图8).数据时效性的判断主要与QoS中的History参数设置的历史数据数相关联,每当应用程序有新的数据产生时,原有的根据History参数缓存的数据中最老的那个数据即被视为失效,不在保存在缓存中.

对于传入发布者的数据,发布者在发送数据前对数据的时效性进行判断,如果数据没有失效,那么发送给相关的订阅者;而对于已经失效的数据,则不发送.订阅者接收到发布者发送的数据后,也会进行相应的数据时效性判断,因为网络传输时延、中断等原因,订阅者接收到的数据不一定具有时效性,因此也需要进行判定.在时效期内的数据提交给用户,否则直接丢弃.

图8 信息生命周期管理原理图

4.5.2 丢包重传[4]

在指控系统的通信中,对数据传输的可靠性是一个非常重要的指标,当数据出现错误或丢失时,能够保证数据重传.

数据发布者每发布一个新的数据包后,都会将该数据包插入数据传输通道的重发队列中,以便数据丢失时进行数据重传,且发布者周期性的发送心跳信号(HeartBeat)数据包来通知订阅者,到目前为止已经发送的数据包的序列号范围.订阅者在接收到心跳信号数据包之后必须发送一个确认信号(Ack)数据包来响应该心跳信号,告诉发布者本方到目前为止的数据接收的情况,如果在心跳信号数据包所给出的序列号范围内有数据丢失,则在确认信号数据包中的相应位置进行置位,请求丢包重传.发布者在接收到订阅者的确认信号数据包后,根据确认信号数据包内容确认数据是否被对方正确接收,如果所有的订阅者都接收了,则将该数据包从重发队列中删除,如果有订阅者没有接收到该数据包而请求重传,则在数据发布方的重发队列中找到该数据包,重传该数据包给相应订阅者,直到该数据包被所有订阅者确认接收才将其从发布方的重发队列中删除.或者因为网络原因该数据包被重传多次后,订阅方仍然没有接收到,而该数据包又在重发队列中失效了,则发布者向订阅者发送失效信号(GapMsg),来通知对方该数据包已经失效.订阅者接收到该失效信号后,跳过对该数据包的处理,并对下一个到达的数据进行处理.具体过程如图9所示.

图9 丢包重传示意图

4.5.3 断点续传

在指控系统中,由于通信信道的不稳定,以及需要传输大量数据时,往往会造成数据传输失败或不完整.因此,可以引入间断传输技术,当通信中断时记录中断位置,而当通信恢复时,进行数据续传,以支持数据传输的完整性.

当某个信道(如信道1)通信稳定时,利用该信道进行数据传输.然而,由于干扰等因素,造成信道不稳定或通信中断时,需要搜索新的可用的其他信道(例如信道2),或者等待信道恢复,同时,记录数据中断位置.若信道恢复或搜索到新的信道,则利用新的信道或原信道继续进行数据续传,从而保证发布者能够将数据完整的发送给感兴趣的订阅者.如图10所示.

4.5.4 信道切换

指控系统工作的环境复杂,以及通信过程经常受到各种干扰,造成通信信道的不稳定以及中断,这就对数据能否顺利发送给感兴趣的接收者到来困难.因此本文采用了信道切换技术来保证数据的可达性.当信道平稳或满足传输要求时,可以在该信道上进行数据传输.然而,当信道不稳定或中断时,导致数据无法传输或传输中断,此时,可切换到其他可用的信道继续进行数据传输,从而保证数据能够顺利发送给接收者,示意图见图11.

图10 断点续传原理示意图

4.6 应用设想综合实现效果

最后在以上各种应用设想的基础上构建一个实现了上述设想的数据分发服务原型系统,并分别在安装了Windows7和麒麟Linux操作系统的具有相同硬件条件的PC机上分别运行测试了该系统各项性能指标,通过与我单位原有应用系统(注:该系统使用TCP协议实现数据可靠传输)的各项指标进行对比发现数据分发服务方法的应用确实能够有效的提高作战指控系统的高效性、扩展性、可靠性等性能指标.两种系统综合对比结果如表1所示,并给出了该系统与现有系统在Win7 OS环境中不同网络带宽下传输不同大小数据的平均时延对比图(如图12所示).

图11 信道切换示意图

图12 Win7下平均时延对比图

5 总结

本文在对OMG DDS规范中以数据为中心的发布/订阅模型原理的研究基础上,根据指控系统的特殊需求,针对商用DDS软件:数据传输时效性,信息传输可靠性不足,对跨平台性支持不足,缺乏自主可控性,带宽利用率低,中间件规模庞大等不足.提出了应用带宽自适应性机制适应网络的动态性;可扩展二进制变长编码技术来减少网络中发送的数据量,从而提高传输效率;采用多线程信息发送及多优先级队列减少数据在消息队列中等待的时间;丢包重传,断点续传,主备切换,信息生命周期管理进一步提高了数据传输的高效性和可靠性.

1任昊利,李旺龙,张少扬,等.数据分发服务—以数据为中心的发布/订阅式通信.北京:清华大学出版社,2014.

2Data distribution service for real-time systems version 1.4.OMG Available Specification,2015.

3曹万华,谢蓓,吴海昕,等.基于DDS的发布/订阅中间件设计.计算机工程,2007,33(18):78-80,83.[doi:10.3321/j.issn:1002-8331.2007.18.026]

猜你喜欢
发布者队列数据包
二维隐蔽时间信道构建的研究*
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
队列队形体育教案
新加坡新法规引争议
队列里的小秘密
基于多队列切换的SDN拥塞控制*
带隐私保护的群智感知任务分配机制
在队列里
C#串口高效可靠的接收方案设计
软件众包任务发布优先级计算方法