软件定义显控台关键技术研究

2021-08-26 09:09孔祥营李相莲
指挥控制与仿真 2021年4期
关键词:中间件共用虚拟化

孔祥营,李相莲

(江苏自动化研究所,江苏 连云港 222061)

显控台是现代舰艇作战系统基础设施的重要组成部分,是系统功能实现的载体。系统重组和台位功能可定义一直是作战系统对显控台的设计要求。传统的方法是采用CORBA[1]、DDS[2]等中间件以降低软件的耦合度。通过在每个台位配置软硬件的功能模块全集,根据系统需要加载不同的软件模块实现功能重定义,从而完成系统重组。上述方法存在以下问题:首先难以实现跨操作上述平台的系统重组;其次同一操作系统平台运行的不同软件模块可能存在依赖冲突,并且需要配置硬件模块全集。

随着作战使命的转变,为提高舰艇装备的战技指标,作战系统提出减战位、减台位等新需求,要求显控台支持台位功能共用,也即可在一个显控台上同时运行两个或两个以上的台位功能,这类系统称之为双任务或多任务系统[3]。通用动力(General Dynamics,GD)公司为DDG1000提供的公共显示系统(Common Display Console,CDS)即是一种双任务显示系统(Dual/Multi-task Display System)[3-4],能够支持在同一个显控台上同时运行两个任务系统[5]。国内原有的设计方法受限于硬件架构和软件体系,都不能支持这一功能的完美实现。近年来逐渐成熟的软件定义技术为解决这一问题给出了新的思路。

1 GD公司CDS简介

为提高系统弹性扩充和柔性重组能力,美国DDG-1000导弹驱逐舰、LCS濒海战斗舰和CVN78“福特”级核动力航母都采用了雷声公司的全舰计算环境(Total Ship Computing Environment,TSCE)和通用动力公司的公共显示系统。文献[6]详细介绍了TSCE的原理、组成,但是系统性介绍CDS的文献较少。从文献[3-5]推断CDS的相关原理与性能。图1是DDG-1000舱室的视频截图。图1中的三屏控制台即是CDS。GD公司官网给出的CDS外观如图2所示。

图1 DDG1000 TSCE视频截图

图2 GD公司CDS外观图

根据文献[4-5]介绍,CDS主机采用英特尔架构的四核CPU主板,集成6路1000Base-T接口,支持标准的WUXGA(1920×1200)显示,可同步支持4路30 fps、640×480分辨率视频显示或支持一路1920×1080p、30fps视频实时显示,并提供一路将视频输出到远端显示器的专用IP视频网络和两路DVI-I(Digital Video Interface)接口。DDG-1000舰桥上的指挥官和执行官都配置了一台CDS,每台CDS可以运行多个Linux虚拟机客户操作系统。CDS留有标准的USB接口,可以接入如轨迹球或特制控制设备。CDS的独特之处在于:在DDG-1000G之前的舰艇上,所有武器系统的操作界面都是独立开发的,都有自己独有的处理器或者系统设置及界面,这种设计造成操作人员不可能坐在一个地方同时进行多个任务;而在DDG-1000上,所有在岗监控者都可以在任何一台CDS上调出自己所需要的系统界面,真正实现了随需显示、台位功能重定义和台位共用。CDS因而也被称作双任务或多任务系统。

CDS采用的操作系统是LynxSecure。LynxSecure[7]是Lynx Software Technologies为军用、航空电子、工业和汽车市场中的安全关键应用而设计的实时分离内核Hypervisor。LynxSecure具有与传统的类Unix和微内核不同的内核体系结构。其将所有异常处理、API、I/O服务抽象到用户空间,精简的设计旨在通过消除CPU权限提升的可能性来提高主机的安全性,并对CPU调度提供严格的控制。LynxSecure支持半虚拟化的Linux和LynxOS实时操作系统,以及完全虚拟化的Windows操作系统。LynxSecure的构建符合多重独立等级安全(Multiple Independent Levels of Safety/Security,MILS)体系结构,可用于需要高安全性的嵌入式系统。默认情况下,LynxSecure使用基于ARINC 653的固定周期调度算法,但也允许使用动态调度策略。

MILS[8-9]是由斯坦福研究所的John Rushby在20世纪80年代提出,被美国国家安全局和美国空军研究实验室(AFRL)采纳。MILS既指在单一安全内核上执行不同安全级别应用的可验证高确保性安全体系架构,又指为高确保系统的规范和验证提供可重用的形式化框架的安全系统设计方法。MILS结合了满足FAA DO-178B level A级准则的防危性(safety)解决方案和满足NAS/NIAP Common Certier(CC)EAL7级的安全性(security)解决方案,可用于关键任务嵌入式和实时系统,包括高确保的武器、通信系统和C4I平台等应用领域,从根本上解决多级安全关键,高确保系统的安全性和防危性。

LynxSecure体系结构如图3所示。LynxSecure分离内核(Separation Kernel)支持应用根据需要分离成多个分区,每个分区可运行不同的操作系统,如LynxOSSE、Windows、Linux等,在操作系统之上运行不同的应用程序,这样保证了原来需要运行在处理器/操作系统各异的多台设备上的多个异构应用软件在同一台设备上安全隔离的同时执行,满足软件定义设备功能需求。

图3 LynxSecure体系架构

2 SDC关键技术

在基于上述分析的基础上,进一步讨论舰载应用虚拟化客户操作系统间面临的时间一致性和操控部件共用等问题,给出软件可定义显控台的设计方案。

TSCE与CDS的核心都是基于软件定义技术,是软件定义基础设施在舰船信息化基础设施建设中的具体应用。所谓软件定义是指通过虚拟化等技术手段,将软件和硬件分离,将物理硬件提供的计算、存储、网络、显示、控制资源池化,最终实现这些池化的虚拟化资源按需分割和重新组合。软件定义技术可有效提高信息系统的弹性扩充和柔性重组能力。

但是,与一般的计算机信息系统不同,舰艇作战系统是一个信息物理系统(Cyber Physical Systems,CPS),是集成计算、通信与对物理世界反应控制于一体的智能系统,通过人机交互接口实现与物理世界的交互,采用网络通信以远程的、可靠的、实时的、安全的、协作的方式操控传感器、武器等物理实体。因此舰艇作战系统实现软件可定义仍有一些关键技术需要解决。这些关键技术也是决定显控台实现功能迁移与共用程度的重要因素。

2.1 形式化描述

一个典型的作战系统S可以形式化表示为一个二元组(T,C),其中T是数量有限的任务集{t1,t2,…,tn};C是台位集,可以简单认为是数量有限的显控台集合{c1,c2,…,cm}。通常在S中,T和C是一一对应的,也就是说,m=n,两个集合的元素数量相等,令这种映射记作f:T→C,是系统S的一种确定任务-台位的分配状态,也就是某种环境下,任务集在台位集上的分配。

令集合F={f1,f2,…,fu}为系统S允许的所有的任务-台位分配状态。所谓台位重定义和系统功能重组,是指S从fi转变为fj的过程,即任务集在台位集的重分配,其中,fi,fj∈F。

所谓台位共用,是指当m≤n时,出现不少于两个任务同时部署运行在同一个台位上的情形。台位共用通常发生在以下几种情况下:

1)系统在台位未变化时,增加了新任务,以适应新的作战使命;

2)一个或多个台位发生故障,原有的任务需要迁移到其他台位中运行,以保障系统功能的正常运行或降功能使用;

3)为方便战备值班等需求,需要在一台设备ci中查看、操作其他任务tj的执行情况,令f为S当前的任务-台位分配状态,ci≠f(tj);

4)新系统设计时,为满足减战位、减台位需求,m<n。这时f不再是一一映射,而是多对一的映射关系。

注意,实际应用中,受处理器、显示屏幕等硬件资源和操作手视野等客观能力约束,每个台位同时执行的任务数受到一定限制。

2.2 影响功能迁移与共用的因素

影响任务在台位间迁移的因素主要是该任务软件运行所需要的硬件资源和软件资源是否可虚拟化。

硬件资源包括CPU、内存、特定硬件板卡、操控部件等,具体如视频叠加板、操纵杆、专用键盘等。例如在Intel X86计算机运行的软件不能直接迁移到采用MIPS指令集的龙芯计算机上,需要使用操纵杆的软件在没有配置相应硬件的台位上运行功能也会受限。软件包括操作系统、驱动程序、中间件、各种支撑库等,具体如视频播放软件,图形库。例如,Linux环境下的软件不能迁移到VxWorks环境下运行,基于Qt开发的人机界面软件在不具备Qt支撑库的环境中也无法运行。为保障软件能够成功迁移运行,新的台位要配备该软件运行所需要的软硬件资源的全集。

影响台位共用的因素除该任务软件运行所需要的硬件资源和软件资源外,还需要满足台位中多个任务间不存在干扰关系、硬件应提供满足多个任务同时运行所需要硬件资源等约束条件。如足够高的CPU性能,足够大内存空间和充足的网络通信带宽,足够大的支持多个任务信息显示的屏幕空间,软件依赖库间不存在冲突。

显然,传统的方法在硬件方面即使能够保证配置硬件全集,但也难以解决不同指令集间任务的迁移与共用;在软件方面即使通过安装多个操作系统满足不同软件对不同操作系统的需求,但却不能同时运行多个系统以满足异构软件的共用需求。

2.3 基于虚拟化技术的SDC

软件定义技术的核心是虚拟化。虚拟化技术为实现显控台软件迁移与共用提供了新的思路。

通过虚拟化,可以为不同任务的软件执行提供相应软硬件环境,如所需要的(虚拟)计算机、安装所需的操作系统和软件支撑环境(库)。通过虚拟多个计算机,每个安装对应的客户操作系统,可以为多个任务的执行提供相应的隔离环境,从而解决多个任务间的干扰问题。

但是,商用的虚拟化技术仅能虚拟CPU、内存、网卡、显卡、键盘、鼠标、硬盘等标准硬件设备,对于虚拟一个完整的显控台仍有若干关键技术需要解决。相关问题及解决途径讨论如下:

1)传感器视频显示问题

作战系统显控台需要显示雷达、光电传感器视频。传统上,这些视频的接入及显示是采用专用协议,并由专用硬件板卡实现。为实现软件可定义,传感器视频必须数字化为标准的网络视频,解除对特定硬件的依赖。标准的网络化的数字视频可以通过网络传送到网络中的各个节点,各节点只需要对应的操作系统能够提供相关的解码器和播放器即可实现视频的显示。目前相关领域的发展趋势亦是如此,传感器厂商已能提供网络化的传感器视频流,一些第三方厂商也已实现了VxWorks嵌入式操作系统下的解码器和播放器,这为实现传感器视频共用和可定义提供了可能。

2)专用操控部件虚拟问题

商用的虚拟机技术尚不支持用户专用键、可编程触摸键等舰载显控领域专用的操控部件。为实现这些专用操控部件的共用和可定义,可采取以下两种技术途径,一是设计支持多虚拟机映射的硬件设备,可将对应的操控部件同时虚拟到多个客户操作系统中,二是通过软件实现单一物理设备在多个客户操作系统中的虚拟映射。

3)操控部件共用问题。当显控台功能共用时,存在多个任务共享键盘、鼠标、可编程触摸键盘、表页显示器等操控部件问题,由于可编程触摸键盘页面显示布局与具体应用紧密相关,因此当在不同应用间进行切换时,操控部件的状态也必须同步切换。因此如何共享可编程触摸键盘等与具体应用紧密相关的操控部件也是亟须解决的问题。一种可行的解决方案是通过改进这类操控部件的通信协议和固件,支持识别不同的应用请求,固件程序支持多个不同状态的快速切换,同时提供应用编程开发支撑的中间件也需要做相应修改,以支持多个应用的共享。例如通信协议中增加应用身份标识,但是如何确定系统中每个应用的身份标识也是一个需要解决的问题,最简单的方法是采用任务所在虚拟机的IP地址作为身份标识;运行在虚拟机中的可编程触摸键盘中间件初始化时,可通过系统接口获取IP地址,这样可保持中间件对应用软件的透明;可编程触摸键盘固件逻辑中增加对报文身份的识别,自动实现在不同状态间的切换。用户专用键采用键码显示可定义的器件,通信协议和固件按可编程触摸键类似方式进行修改。

4)任务共用时,多任务页面屏幕同时显示与布局问题

传统的显控台软件屏幕布局是固定的,当增加新任务时如何调整屏幕布局也是实现台位共用需要解决的问题。解决途径需要软硬结合,硬件上,提供更大的显示区域,通常是增加屏幕数和提高分辨率,软件上借助显卡虚拟化,实现多个客户操作系统显示区域的协同管理。

5)虚拟化环境中系统所要求的时间精确同步问题。与武器控制相关任务通常需要高精度的时间同步,在非虚拟化系统中,传统的方法是采用时统板获得毫秒级精度的时间同步。在虚拟化环境中即可通过设计支持多虚拟机映射的时统板,将对应的时统同时虚拟到多个客户操作系统中,从而获得同等精度的时间同步;也可以通过软件网络心跳报文实现多客户操作系统间的时间同步,但准确度会受到虚拟化和网络传输带来的影响,精度会有一定波动。

3 SDC原型实现与应用

我们基于软件定义的思想,设计实现了一个SDC原型。SDC原型体系如图4所示,实物外形如图5所示。

图4 SDC实现框图

图5 SDC实物图

3.1 SDC硬件组成

SDC硬件组成如图6所示。

图6 SDC硬件组成图

其中,主板采用Intel酷睿4核处理器,16 G内存,核0作为Host,其他三个核可分别运行一个虚拟机,用于执行不同的系统任务;主板集成4路千兆以太网口,可根据需要分别虚拟到对应的客户操作系统,用以接收传感器视频数据;同时采用一块千兆双冗余以太网卡提供与云服务器间高可靠信息交互;显卡采用AMD E8860芯片,支持多达6路显示输出;采用一块多路时统板,可提供4路时统信号,可分别虚拟为4路时统设备,为系统提供高精度对时功能;控制台安装3台显示器,单屏分辨率不低于1600×1200×32 bit真彩;可编程触摸键盘和用户专用键固件版本支持对当前通信的客户操作系统IP地址的自动识别。数据网连接全舰计算环境,视频网连接雷达、光电传感器。图6未给出操控部件,部件采用USB接口,可动态接入SDC,以适应应用需求。

3.2 SDC软件组成

SDC软件组成如图7所示。

图7 SDC软件组成图

舰艇武器装备对实时性有较高要求,这里的实时性是指确定性,即系统对给定事件(任务)的响应必须在确定的时间内完成。因此SDC软件实现在实时性方面做了大量优化改进工作。

主机操作系统和虚拟化软件采用JARI-Works+RTKVM,支持的客户操作系统包括Linux、VxWorks、JARIWorks。

JARI-Works是一款自主可控的国产嵌入式操作系统,核心基于Linux,在保持对Linux框架、接口兼容的前提下,在实时性和可剪裁定制方面做了大量优化。

RT-KVM是在KVM基础上进行了实时改进,已成功应用在捷云(JARI-Cloud,一个面向控制领域的私有云)中。由于KVM是基于Linux内核的虚拟化解决方案[10],因此RT-KVM的实时优化也与内核紧密相关。主要解决了如下问题:1)由于运行于虚拟机中任务的优先级和锁对主机是不可见的,即主机不能识别哪个VCPU具有更高的优先级;2)系统的事务性工作频繁调度可能会打断虚拟机运行,影响虚拟机实时性。

RT-KVM实时改进包括:1)扩展了RCU(Read-Copy Update)状态;2)修改了调度机制,将实时VCPU与特定CPU core绑定,约束事务性任务在非实时CPU Core上运行;3)对于不同的虚拟机采用不同的启动配置参数等。

采用KVM实时改进前后调度延迟Cyclictest对比测试结果如图8所示。其中纵坐标单位为微秒。可见实时优化后的RT KVM具有较好的实时性。

图8 KVM实时改进前后调度延迟对比测试

为提高通信的效率,我们集成了DPDK(Data Plane Development Kit)[11],如图7所示,网络通信采用DPDK,绕过了网络协议栈,从而避免了内核态和用户的频繁切换,可获得更高的通信性能。

每个客户操作系统根据需要加载虚拟网卡驱动、虚拟显卡驱动,虚拟时统板驱动、虚拟专用操控部件驱动,并加载传感器视频解码与播放器,专用操作中间件和对应的应用软件。

主机操作系统装载系统配置管理软件,可动态装/卸虚拟机,并加/卸载对应的客户操作系统、驱动程序、中间件及应用软件。

每个应用软件有一个对应的配置描述文件,包含该软件运行所需要的操作系统、驱动、支撑库、中间件名称及版本号、系统IP地址等配置信息。

系统提供管理程序,允许操作人员动态关闭SDC上虚拟机,加载新的任务。

对于三屏系统带来操作人员视角盲区问题,为保证操作人员在监控过程中不丢失重要信息,SDC配置了音频报警接口,为应用系统提供相应报警API,当重要事件发生时,应用软件可采用相应音频报警功能,以提醒操作人员及时做出响应。

3.3 基于SDC的系统设计原则

基于SDC的系统设计遵循以下原则:

1)系统基于公共计算环境技术体制,由全舰计算环境、SDC、传感器、系统管理计算机、武器及一定数量的与传感器武器相连接的适配器组成,全舰计算环境、SDC、系统管理计算机通过以太网互联;

2)软件设计遵循计算与显控相分离的原则,计算相关运算寄宿在全舰计算环境云服务上对应的客户操作系统中,显控相关功能寄宿在SDC上对应的客户操作系统中;

3)计算与显控信息交互采用数据订阅分发机制,这样保证了显控或计算任务不受虚拟机迁移的影响;

4)雷达等传感器视频采用数字化编码,以组播方式通过以太网传输,以降低网络流量,显控台通过加入对应的组,获取传感器视频,采用视频播放方式显示;

5)系统软件设计时尽量选用统一的操作系统版本(包括驱动、支撑库、中间件),以系统中操作系统版本异构数量最小为最优设计原则;

6)系统所有可能的操作系统版本(包括驱动、支撑库、中间件)及应用软件应在系统管理计算机中保存相应副本。

7)系统初始时,管理员进行配置,每个SDC加电时根据配置信息,创建相应虚拟机,从系统管理计算机加载对应驱动、支撑库、中间件,然后启动应用软件。

4 结束语

在分析GD公司的CDS原理与实现技术的基础上,基于虚拟化技术,提出了软件定义显控台的概念,给出了实现方法和设计原则,可有效解决作战系统发展面临的系统重组和台位功能共用问题。

猜你喜欢
中间件共用虚拟化
我国自主可控中间件发展研究
多种方法解“妇人洗碗问题”
活该你单身
以实力证明 用事实说话
还有一行
同时进行
浅谈虚拟化工作原理
用户怎样选择虚拟化解决方案
中移动集采:东方通中间件脱颖而出
虚拟化整合之势凸显