杨则云,杜一帆,张玉琢,曹 源
(1.中车青岛四方机车车辆股份有限公司 科技发展部,青岛 266111;2.北京交通大学 电子信息工程学院,北京 100044)
由于列控安全计算机平台的应用功能越来越复杂,导致平台通信数据量越来越大,对平台通信性能提出了更高要求。安全计算机大多采用分布式冗余通信结构,但未有相应的容错管理机制,不能充分发挥冗余通信结构的容错能力[1-2]。基于当前列控安全计算机平台存在的问题,研究列控安全计算机平台高速冗余通信结构的容错管理机制具有重要意义。
对于高可靠性需求的实时系统而言,需要考虑系统的容错性。目前,容错的方法可以大致分为硬件容错和软件容错[3]。部件级硬件故障容错的另一种方法是采用冗余的硬件和软件方法,大部分采用检查点向后恢复方法来克服硬件故障[4],其缺点是不能用于安全苛求实时系统,因为超出时间约束产生的输出可能导致灾难性的后果。因此,许多人尝试了基于检查点的向前恢复技术[5]。但这些研究难以适用于重要的安全苛求系统。软件容错中常见的方法有N版本表决算法、恢复块技术以及主/备版本技术。文献[6]研究的投票算法是基于N模块冗余系统设计的,该算法大大降低了用于分布式投票所需的时间。文献[7]研究了一种实时容错网络通信技术,所提出的容错网络采用了主/备版本技术。然而上述介绍的容错技术均应用于非实时领域,无法满足实时系统的需求。
对于高可靠系统,时间触发架构具有更大的优势,时间触发已经在其它安全苛求领域成功应用。因此本文在安全计算机中采用基于时间触发机制的通信方式来保障系统的通信可靠性及安全性。在此基础上,提出了基于时间触发的GMP算法来提高系统的容错性,该算法能够提供故障检测、故障屏蔽以及实现系统重组。
时间触发架构中采用信息描述表(MEDL,Message Des-cription List)的方式来描述收发消息属性的数据结构[8]。时间触发控制器按照该描述表中的配置信息,周期性发送或读取信息。整个系统采用同一时间标准,并且所有的节点都包含有预先定义的时间表。一旦传输的数据与时间表冲突,那么就认为该节点错误。如果节点发生错误,则该节点立即退出,以保证整个通信网络不会受到干扰。
此外,网络中的每一个节点上都保存着一个成员列表用于提供成员响应服务[9]。列表记录了所有正常运行的节点,在节点收到消息时根据接收成功与否更新本地的成员列表。每次消息传递过程中接收方会检查CRC 校验码中的发送端的成员列表。若与接收端成员列表不同则会被认为是错误的,这样就通过节点间相互的成员确认保证了所有节点的一致性。这种成员服务在软件的实现上可以通过组成员服务来实现。
容错时间触发以太网(TTE)模型适用于可预测的传输时延和能够容忍组件故障的系统中。容错TTE模型由若干个通信节点通过两个或者多个容错TTE交换机相连,这种结构适用于安全苛求系统,因此适用于安全计算机。如图1所示,每个通信结点由主机和容错时间触发控制器组成。
图1 容错时间触发以太网模型
与标准的时间触发控制器不同,容错时间触发中间件在能保证通信网络依据全局时钟的推荐,并按照信息调度表进行有计划的数据调度之外,还实现了统一的容错时间以及故障隔离、系统重组、错误诊断等服务。容错时间触发控制器采用两条冗余的通信信道传输与接收消息,从而对通信信道进行容错。
组通信的核心思想是把分布在不同位置的多个实体(组成员)组织成一个逻辑上的组实体来执行计算任务,并为组成员之间提供各种通信原语。这些原语能够使得通信消息按照一定的应用语义约束传递到组成员。
在研究一个容错系统时,应该从对故障假设的说明开始,GMP中的故障假设如下:
(1)故障类型分为接收故障和发送故障且传输故障一致。
(2)每个时间段只有一个节点发送消息,且节点只在其指定的时间段发送消息。
(3)在一个时间段内最多有一个通信通道故障。
在故障假设的前提下,组成员算法必须保证下面3个条件同时成立,这也是组成员算法的核心特征:
(1)成员表的有效性:每个节点都保存了一个本地成员列表,该表将所有故障节点从成员列表中删除,只记录正常运行的节点。
(2)成员表的一致性:所有非故障节点应该有相同的成员表。
(3)节点的诊断修复:当一个节点出现故障时,它能够在有效时间范围内诊断出自己的故障并且将本地成员列表清空。n节点系统中,在不超过3n+1个间隙时间内,故障节点能够重新回到系统中。
组成员协议的模型如下:假设系统中有n个节点,编号为0,1,2,……,n–1,根据时间触发协议模型,对于时间片t,编号为t mod n的节点为当前的发送节点,该节点可以向其它所有节点广播发送消息数据以及部分内部状态消息,并在消息的末尾加上CRC校验码等信息。
GMP是通过不断地更新每个正确节点成员列表数组来进行容错的。定义正确节点为Ni,成员列表数组为Vi,Vi中的每个元素为Vxi。其中,Vxi是Ni的第x个组成员视图,组成员协议通过一系列的算法来更新这些数组作为Vxi的值。如果x是Vi定义的最大索引,那么Vxi是Ni的当前观点且Ni在列表Vi中。节点的成员列表的初始状态V0i由管理员手动或监督实现,之后,如果Vxi已经被加入,那么列表Vyi只有当y>x时才能被加入。视图列表具有有效性和一致性等特点,通过这种管理,使得每个正确的节点都是它自己的视图中的一个成员,系统中的正确节点通过相互信任成为组成员。
通过上述对GMP容错算法命令的描述,当节点处于广播状态和接收状态时的流程如图2、图3所示。
图2 节点处于广播状态时的容错流程
图3 节点处于接收状态时的容错流程
为了验证基于时间触发的通信容错机制,本文基于POWERLINK版本V2.6开源代码基础上进行通信容错机制设计并测试。POWERLINK物理层是基于标准以太网并遵循着ISO分层模型,其协议栈功能实现与操作系统,和底层硬件无直接联系因此安全计算机中通信容错机制测试与基于以太网通信的软硬件平台测试具有相同特性。为更直观地研究和描述通信容错机制,本实验平台基于图4中的2乘2取2结构基础上,分别采用基于VxWorks系统的嵌入式工控机作为通信单元,和基于Windows10的个人计算机作为通用处理单元,可实现对安全计算机平台的以太网通信网络组网仿真。安全计算机中的通信控制器作为两个从站,形成4个节点的硬件平台。
图4 POWERLINK仿真平台结构图
根据设计的时间触发通信容错机制,本实例采用4个节点的POWERLINK结构。其中,主站节点是基于Qt图形化开发设计实现POWERLINK协议栈,利用Qt直观地图形化界面分析测试结果,即为MN(Manage Node)节点。从站采用基于控制台方式的设计,通信数据信息和程序运行状态通过控制台方式显示,并分别根据从站节点ID将节点命名为CN1、CN32、CN110节点,每次通信后从节点会将组成员表信息显示在控制台上。
根据上述对GMP算法的流程描述,假设系统中有一组通信节点N={n0, n1, n2, n3},它们都能互相接收到正确消息,即初始时成员列表保持一致且Rej=0。现在,假设系统在一个TDMA周期中发生故障,通过对该情况的分析,观察各个节点成员列表和计数器的状态变化,进而实现对通信过程中的故障容错。
出现第1次故障消息时:假设在n0发送消息时,节点n1出现接收故障,未能成功接收消息,并且系统中的其他节点均正确接收消息。假设接下来至少有两个轮询时间段没有发生错误,那么系统节点的集合就分裂为两个并行的子集:N0={n0, n2, n3},N1={n1}。
在n0发送消息后各节点的成员列表和计数器状态如表1所示,测试状态如图5所示。在n0的发送时间段,由于n1接收n0信息失败,将发送节点n0从其成员列表中删除。
表1 各节点的成员列表和计数器状态(n0发送消息后)
图5 POWERLINK实时以太网通信状态图(n0发送消息后)
在n1发送消息后各节点的成员列表和计数器状态如表2所示,测试状态如图6所示。由于n1和其他节点的成员列表不一致,无法通过CRC检查,因此除了n1之外的节点均接收失败,并且将n1从自身的成员列表中删除。
表2 各节点的成员列表和计数器状态(n1发送消息后)
图6 POWERLINK实时以太网通信状态图(n1发送消息后)
在接下来的两个时隙中,对于节点n2、n3发送的消息,节点n1均接收失败,而其它节点均接收成功。此时各节点的成员列表和计数器状态如表3所示。
由于新一轮调度时间周期的到来,n0重置其计数器的值。而在n1的发送时隙中,节点n1由于派系失效机制无法发送数据,清空成员列表成为非活跃状态的节点。经过该时隙,节点的成员列表再次相互一致。在n1发送消息后各节点的成员列表和计数器状态如表4所示,测试状态如图7所示。
表3 各节点的成员列表和计数器状态(n2、n3发送消息后)
表4 各节点的成员列表和计数器状态(新一轮,n1发送消息后)
图7 POWERLINK实时以太网通信状态图(新一轮,n1发送消息后)
通过对以上情况的分析,可以看到当系统中的某个节点出现故障时,各个节点成员列表以及计数器的状态变化,从而展现GMP算法对通信过程中节点的故障容错过程。
本文分析了近年来安全苛求系统中通信网络,将时间触发以太网应用到安全计算机,以满足通信的实时性和确定性要求,同时,时间触发机制还支持多种容错策略和故障检测机制,为性能优化和容错机制的设计提供了一个基础。根据安全计算机对通信网络的实时性要求并使系统具有一定的容错能力,本文提出了可应用于安全计算机中的通信容错机制,并在现有安全计算机架构的基础上,搭建仿真环境,对提出的容错机制进行验证。结果表明,该机制提供故障检测、故障屏蔽以及实现系统重组,保障系统的通信可靠性与安全性,对安全计算机通信的容错性有明显的优化效果。
参考文献:
[1]鲁秋子,徐田华,唐 涛. 混杂系统主动容错架构在车载设备的应用研究[J]. 铁路计算机应用,2014,23(1):1-5.
[2]陈 昕,周拥军,蒋文保,等. AFDX协议性能分析及调度算法研究 [J]. 电子学报, 2009,37(5):1000-1005.
[3]卢宏康,曹 源,马连川. 基于动态故障树的异构安全计算机系统共模故障分析研究[J]. 铁路计算机应用,2017,26(9):1-6.
[4]邱泽宇,曹 源,马连川. 基于故障注入的安全计算机通信总线测试方法研究[J]. 铁路计算机应用,2017,26(8):1-4.
[5]Yang J. Safety-related Communication and Safety-related Communication Standard EN50159[J].Railway Signalling &Communication Engineering,2014.
[6]王 悉,马连川,袁彬彬. 2取2乘2安全计算机平台的设计与实现[J].都市快轨交通, 2011,24(4):17-21.
[7]Yu H,Xue L. Scheduling design and analysis for end-to-end heterogeneous fl ows in an avionics network[C]// INFOCOM,2011 Proceedings IEEE. 2011:2417-2425.
[8]梁 靓,曹 源,马连川,等. 安全计算机通信管理机制的形式化验证与实现[J]. 通信学报,2016,37(11):196-202.
[9]黄智勇. 基于无线冗余的时间触发架构车载总线研究[D]. 合肥:合肥工业大学,2013.