楊則云,杜一帆,張玉琢,曹 源
(1.中車青島四方機(jī)車車輛股份有限公司 科技發(fā)展部,青島 266111;2.北京交通大學(xué) 電子信息工程學(xué)院,北京 100044)
由于列控安全計(jì)算機(jī)平臺(tái)的應(yīng)用功能越來(lái)越復(fù)雜,導(dǎo)致平臺(tái)通信數(shù)據(jù)量越來(lái)越大,對(duì)平臺(tái)通信性能提出了更高要求。安全計(jì)算機(jī)大多采用分布式冗余通信結(jié)構(gòu),但未有相應(yīng)的容錯(cuò)管理機(jī)制,不能充分發(fā)揮冗余通信結(jié)構(gòu)的容錯(cuò)能力[1-2]。基于當(dāng)前列控安全計(jì)算機(jī)平臺(tái)存在的問題,研究列控安全計(jì)算機(jī)平臺(tái)高速冗余通信結(jié)構(gòu)的容錯(cuò)管理機(jī)制具有重要意義。
對(duì)于高可靠性需求的實(shí)時(shí)系統(tǒng)而言,需要考慮系統(tǒng)的容錯(cuò)性。目前,容錯(cuò)的方法可以大致分為硬件容錯(cuò)和軟件容錯(cuò)[3]。部件級(jí)硬件故障容錯(cuò)的另一種方法是采用冗余的硬件和軟件方法,大部分采用檢查點(diǎn)向后恢復(fù)方法來(lái)克服硬件故障[4],其缺點(diǎn)是不能用于安全苛求實(shí)時(shí)系統(tǒng),因?yàn)槌鰰r(shí)間約束產(chǎn)生的輸出可能導(dǎo)致災(zāi)難性的后果。因此,許多人嘗試了基于檢查點(diǎn)的向前恢復(fù)技術(shù)[5]。但這些研究難以適用于重要的安全苛求系統(tǒng)。軟件容錯(cuò)中常見的方法有N版本表決算法、恢復(fù)塊技術(shù)以及主/備版本技術(shù)。文獻(xiàn)[6]研究的投票算法是基于N模塊冗余系統(tǒng)設(shè)計(jì)的,該算法大大降低了用于分布式投票所需的時(shí)間。文獻(xiàn)[7]研究了一種實(shí)時(shí)容錯(cuò)網(wǎng)絡(luò)通信技術(shù),所提出的容錯(cuò)網(wǎng)絡(luò)采用了主/備版本技術(shù)。然而上述介紹的容錯(cuò)技術(shù)均應(yīng)用于非實(shí)時(shí)領(lǐng)域,無(wú)法滿足實(shí)時(shí)系統(tǒng)的需求。
對(duì)于高可靠系統(tǒng),時(shí)間觸發(fā)架構(gòu)具有更大的優(yōu)勢(shì),時(shí)間觸發(fā)已經(jīng)在其它安全苛求領(lǐng)域成功應(yīng)用。因此本文在安全計(jì)算機(jī)中采用基于時(shí)間觸發(fā)機(jī)制的通信方式來(lái)保障系統(tǒng)的通信可靠性及安全性。在此基礎(chǔ)上,提出了基于時(shí)間觸發(fā)的GMP算法來(lái)提高系統(tǒng)的容錯(cuò)性,該算法能夠提供故障檢測(cè)、故障屏蔽以及實(shí)現(xiàn)系統(tǒng)重組。
時(shí)間觸發(fā)架構(gòu)中采用信息描述表(MEDL,Message Des-cription List)的方式來(lái)描述收發(fā)消息屬性的數(shù)據(jù)結(jié)構(gòu)[8]。時(shí)間觸發(fā)控制器按照該描述表中的配置信息,周期性發(fā)送或讀取信息。整個(gè)系統(tǒng)采用同一時(shí)間標(biāo)準(zhǔn),并且所有的節(jié)點(diǎn)都包含有預(yù)先定義的時(shí)間表。一旦傳輸?shù)臄?shù)據(jù)與時(shí)間表沖突,那么就認(rèn)為該節(jié)點(diǎn)錯(cuò)誤。如果節(jié)點(diǎn)發(fā)生錯(cuò)誤,則該節(jié)點(diǎn)立即退出,以保證整個(gè)通信網(wǎng)絡(luò)不會(huì)受到干擾。
此外,網(wǎng)絡(luò)中的每一個(gè)節(jié)點(diǎn)上都保存著一個(gè)成員列表用于提供成員響應(yīng)服務(wù)[9]。列表記錄了所有正常運(yùn)行的節(jié)點(diǎn),在節(jié)點(diǎn)收到消息時(shí)根據(jù)接收成功與否更新本地的成員列表。每次消息傳遞過程中接收方會(huì)檢查CRC 校驗(yàn)碼中的發(fā)送端的成員列表。若與接收端成員列表不同則會(huì)被認(rèn)為是錯(cuò)誤的,這樣就通過節(jié)點(diǎn)間相互的成員確認(rèn)保證了所有節(jié)點(diǎn)的一致性。這種成員服務(wù)在軟件的實(shí)現(xiàn)上可以通過組成員服務(wù)來(lái)實(shí)現(xiàn)。
容錯(cuò)時(shí)間觸發(fā)以太網(wǎng)(TTE)模型適用于可預(yù)測(cè)的傳輸時(shí)延和能夠容忍組件故障的系統(tǒng)中。容錯(cuò)TTE模型由若干個(gè)通信節(jié)點(diǎn)通過兩個(gè)或者多個(gè)容錯(cuò)TTE交換機(jī)相連,這種結(jié)構(gòu)適用于安全苛求系統(tǒng),因此適用于安全計(jì)算機(jī)。如圖1所示,每個(gè)通信結(jié)點(diǎn)由主機(jī)和容錯(cuò)時(shí)間觸發(fā)控制器組成。
圖1 容錯(cuò)時(shí)間觸發(fā)以太網(wǎng)模型
與標(biāo)準(zhǔn)的時(shí)間觸發(fā)控制器不同,容錯(cuò)時(shí)間觸發(fā)中間件在能保證通信網(wǎng)絡(luò)依據(jù)全局時(shí)鐘的推薦,并按照信息調(diào)度表進(jìn)行有計(jì)劃的數(shù)據(jù)調(diào)度之外,還實(shí)現(xiàn)了統(tǒng)一的容錯(cuò)時(shí)間以及故障隔離、系統(tǒng)重組、錯(cuò)誤診斷等服務(wù)。容錯(cuò)時(shí)間觸發(fā)控制器采用兩條冗余的通信信道傳輸與接收消息,從而對(duì)通信信道進(jìn)行容錯(cuò)。
組通信的核心思想是把分布在不同位置的多個(gè)實(shí)體(組成員)組織成一個(gè)邏輯上的組實(shí)體來(lái)執(zhí)行計(jì)算任務(wù),并為組成員之間提供各種通信原語(yǔ)。這些原語(yǔ)能夠使得通信消息按照一定的應(yīng)用語(yǔ)義約束傳遞到組成員。
在研究一個(gè)容錯(cuò)系統(tǒng)時(shí),應(yīng)該從對(duì)故障假設(shè)的說明開始,GMP中的故障假設(shè)如下:
(1)故障類型分為接收故障和發(fā)送故障且傳輸故障一致。
(2)每個(gè)時(shí)間段只有一個(gè)節(jié)點(diǎn)發(fā)送消息,且節(jié)點(diǎn)只在其指定的時(shí)間段發(fā)送消息。
(3)在一個(gè)時(shí)間段內(nèi)最多有一個(gè)通信通道故障。
在故障假設(shè)的前提下,組成員算法必須保證下面3個(gè)條件同時(shí)成立,這也是組成員算法的核心特征:
(1)成員表的有效性:每個(gè)節(jié)點(diǎn)都保存了一個(gè)本地成員列表,該表將所有故障節(jié)點(diǎn)從成員列表中刪除,只記錄正常運(yùn)行的節(jié)點(diǎn)。
(2)成員表的一致性:所有非故障節(jié)點(diǎn)應(yīng)該有相同的成員表。
(3)節(jié)點(diǎn)的診斷修復(fù):當(dāng)一個(gè)節(jié)點(diǎn)出現(xiàn)故障時(shí),它能夠在有效時(shí)間范圍內(nèi)診斷出自己的故障并且將本地成員列表清空。n節(jié)點(diǎn)系統(tǒng)中,在不超過3n+1個(gè)間隙時(shí)間內(nèi),故障節(jié)點(diǎn)能夠重新回到系統(tǒng)中。
組成員協(xié)議的模型如下:假設(shè)系統(tǒng)中有n個(gè)節(jié)點(diǎn),編號(hào)為0,1,2,……,n–1,根據(jù)時(shí)間觸發(fā)協(xié)議模型,對(duì)于時(shí)間片t,編號(hào)為t mod n的節(jié)點(diǎn)為當(dāng)前的發(fā)送節(jié)點(diǎn),該節(jié)點(diǎn)可以向其它所有節(jié)點(diǎn)廣播發(fā)送消息數(shù)據(jù)以及部分內(nèi)部狀態(tài)消息,并在消息的末尾加上CRC校驗(yàn)碼等信息。
GMP是通過不斷地更新每個(gè)正確節(jié)點(diǎn)成員列表數(shù)組來(lái)進(jìn)行容錯(cuò)的。定義正確節(jié)點(diǎn)為Ni,成員列表數(shù)組為Vi,Vi中的每個(gè)元素為Vxi。其中,Vxi是Ni的第x個(gè)組成員視圖,組成員協(xié)議通過一系列的算法來(lái)更新這些數(shù)組作為Vxi的值。如果x是Vi定義的最大索引,那么Vxi是Ni的當(dāng)前觀點(diǎn)且Ni在列表Vi中。節(jié)點(diǎn)的成員列表的初始狀態(tài)V0i由管理員手動(dòng)或監(jiān)督實(shí)現(xiàn),之后,如果Vxi已經(jīng)被加入,那么列表Vyi只有當(dāng)y>x時(shí)才能被加入。視圖列表具有有效性和一致性等特點(diǎn),通過這種管理,使得每個(gè)正確的節(jié)點(diǎn)都是它自己的視圖中的一個(gè)成員,系統(tǒng)中的正確節(jié)點(diǎn)通過相互信任成為組成員。
通過上述對(duì)GMP容錯(cuò)算法命令的描述,當(dāng)節(jié)點(diǎn)處于廣播狀態(tài)和接收狀態(tài)時(shí)的流程如圖2、圖3所示。
圖2 節(jié)點(diǎn)處于廣播狀態(tài)時(shí)的容錯(cuò)流程
圖3 節(jié)點(diǎn)處于接收狀態(tài)時(shí)的容錯(cuò)流程
為了驗(yàn)證基于時(shí)間觸發(fā)的通信容錯(cuò)機(jī)制,本文基于POWERLINK版本V2.6開源代碼基礎(chǔ)上進(jìn)行通信容錯(cuò)機(jī)制設(shè)計(jì)并測(cè)試。POWERLINK物理層是基于標(biāo)準(zhǔn)以太網(wǎng)并遵循著ISO分層模型,其協(xié)議棧功能實(shí)現(xiàn)與操作系統(tǒng),和底層硬件無(wú)直接聯(lián)系因此安全計(jì)算機(jī)中通信容錯(cuò)機(jī)制測(cè)試與基于以太網(wǎng)通信的軟硬件平臺(tái)測(cè)試具有相同特性。為更直觀地研究和描述通信容錯(cuò)機(jī)制,本實(shí)驗(yàn)平臺(tái)基于圖4中的2乘2取2結(jié)構(gòu)基礎(chǔ)上,分別采用基于VxWorks系統(tǒng)的嵌入式工控機(jī)作為通信單元,和基于Windows10的個(gè)人計(jì)算機(jī)作為通用處理單元,可實(shí)現(xiàn)對(duì)安全計(jì)算機(jī)平臺(tái)的以太網(wǎng)通信網(wǎng)絡(luò)組網(wǎng)仿真。安全計(jì)算機(jī)中的通信控制器作為兩個(gè)從站,形成4個(gè)節(jié)點(diǎn)的硬件平臺(tái)。
圖4 POWERLINK仿真平臺(tái)結(jié)構(gòu)圖
根據(jù)設(shè)計(jì)的時(shí)間觸發(fā)通信容錯(cuò)機(jī)制,本實(shí)例采用4個(gè)節(jié)點(diǎn)的POWERLINK結(jié)構(gòu)。其中,主站節(jié)點(diǎn)是基于Qt圖形化開發(fā)設(shè)計(jì)實(shí)現(xiàn)POWERLINK協(xié)議棧,利用Qt直觀地圖形化界面分析測(cè)試結(jié)果,即為MN(Manage Node)節(jié)點(diǎn)。從站采用基于控制臺(tái)方式的設(shè)計(jì),通信數(shù)據(jù)信息和程序運(yùn)行狀態(tài)通過控制臺(tái)方式顯示,并分別根據(jù)從站節(jié)點(diǎn)ID將節(jié)點(diǎn)命名為CN1、CN32、CN110節(jié)點(diǎn),每次通信后從節(jié)點(diǎn)會(huì)將組成員表信息顯示在控制臺(tái)上。
根據(jù)上述對(duì)GMP算法的流程描述,假設(shè)系統(tǒng)中有一組通信節(jié)點(diǎn)N={n0, n1, n2, n3},它們都能互相接收到正確消息,即初始時(shí)成員列表保持一致且Rej=0?,F(xiàn)在,假設(shè)系統(tǒng)在一個(gè)TDMA周期中發(fā)生故障,通過對(duì)該情況的分析,觀察各個(gè)節(jié)點(diǎn)成員列表和計(jì)數(shù)器的狀態(tài)變化,進(jìn)而實(shí)現(xiàn)對(duì)通信過程中的故障容錯(cuò)。
出現(xiàn)第1次故障消息時(shí):假設(shè)在n0發(fā)送消息時(shí),節(jié)點(diǎn)n1出現(xiàn)接收故障,未能成功接收消息,并且系統(tǒng)中的其他節(jié)點(diǎn)均正確接收消息。假設(shè)接下來(lái)至少有兩個(gè)輪詢時(shí)間段沒有發(fā)生錯(cuò)誤,那么系統(tǒng)節(jié)點(diǎn)的集合就分裂為兩個(gè)并行的子集:N0={n0, n2, n3},N1={n1}。
在n0發(fā)送消息后各節(jié)點(diǎn)的成員列表和計(jì)數(shù)器狀態(tài)如表1所示,測(cè)試狀態(tài)如圖5所示。在n0的發(fā)送時(shí)間段,由于n1接收n0信息失敗,將發(fā)送節(jié)點(diǎn)n0從其成員列表中刪除。
表1 各節(jié)點(diǎn)的成員列表和計(jì)數(shù)器狀態(tài)(n0發(fā)送消息后)
圖5 POWERLINK實(shí)時(shí)以太網(wǎng)通信狀態(tài)圖(n0發(fā)送消息后)
在n1發(fā)送消息后各節(jié)點(diǎn)的成員列表和計(jì)數(shù)器狀態(tài)如表2所示,測(cè)試狀態(tài)如圖6所示。由于n1和其他節(jié)點(diǎn)的成員列表不一致,無(wú)法通過CRC檢查,因此除了n1之外的節(jié)點(diǎn)均接收失敗,并且將n1從自身的成員列表中刪除。
表2 各節(jié)點(diǎn)的成員列表和計(jì)數(shù)器狀態(tài)(n1發(fā)送消息后)
圖6 POWERLINK實(shí)時(shí)以太網(wǎng)通信狀態(tài)圖(n1發(fā)送消息后)
在接下來(lái)的兩個(gè)時(shí)隙中,對(duì)于節(jié)點(diǎn)n2、n3發(fā)送的消息,節(jié)點(diǎn)n1均接收失敗,而其它節(jié)點(diǎn)均接收成功。此時(shí)各節(jié)點(diǎn)的成員列表和計(jì)數(shù)器狀態(tài)如表3所示。
由于新一輪調(diào)度時(shí)間周期的到來(lái),n0重置其計(jì)數(shù)器的值。而在n1的發(fā)送時(shí)隙中,節(jié)點(diǎn)n1由于派系失效機(jī)制無(wú)法發(fā)送數(shù)據(jù),清空成員列表成為非活躍狀態(tài)的節(jié)點(diǎn)。經(jīng)過該時(shí)隙,節(jié)點(diǎn)的成員列表再次相互一致。在n1發(fā)送消息后各節(jié)點(diǎn)的成員列表和計(jì)數(shù)器狀態(tài)如表4所示,測(cè)試狀態(tài)如圖7所示。
表3 各節(jié)點(diǎn)的成員列表和計(jì)數(shù)器狀態(tài)(n2、n3發(fā)送消息后)
表4 各節(jié)點(diǎn)的成員列表和計(jì)數(shù)器狀態(tài)(新一輪,n1發(fā)送消息后)
圖7 POWERLINK實(shí)時(shí)以太網(wǎng)通信狀態(tài)圖(新一輪,n1發(fā)送消息后)
通過對(duì)以上情況的分析,可以看到當(dāng)系統(tǒng)中的某個(gè)節(jié)點(diǎn)出現(xiàn)故障時(shí),各個(gè)節(jié)點(diǎn)成員列表以及計(jì)數(shù)器的狀態(tài)變化,從而展現(xiàn)GMP算法對(duì)通信過程中節(jié)點(diǎn)的故障容錯(cuò)過程。
本文分析了近年來(lái)安全苛求系統(tǒng)中通信網(wǎng)絡(luò),將時(shí)間觸發(fā)以太網(wǎng)應(yīng)用到安全計(jì)算機(jī),以滿足通信的實(shí)時(shí)性和確定性要求,同時(shí),時(shí)間觸發(fā)機(jī)制還支持多種容錯(cuò)策略和故障檢測(cè)機(jī)制,為性能優(yōu)化和容錯(cuò)機(jī)制的設(shè)計(jì)提供了一個(gè)基礎(chǔ)。根據(jù)安全計(jì)算機(jī)對(duì)通信網(wǎng)絡(luò)的實(shí)時(shí)性要求并使系統(tǒng)具有一定的容錯(cuò)能力,本文提出了可應(yīng)用于安全計(jì)算機(jī)中的通信容錯(cuò)機(jī)制,并在現(xiàn)有安全計(jì)算機(jī)架構(gòu)的基礎(chǔ)上,搭建仿真環(huán)境,對(duì)提出的容錯(cuò)機(jī)制進(jìn)行驗(yàn)證。結(jié)果表明,該機(jī)制提供故障檢測(cè)、故障屏蔽以及實(shí)現(xiàn)系統(tǒng)重組,保障系統(tǒng)的通信可靠性與安全性,對(duì)安全計(jì)算機(jī)通信的容錯(cuò)性有明顯的優(yōu)化效果。
參考文獻(xiàn):
[1]魯秋子,徐田華,唐 濤. 混雜系統(tǒng)主動(dòng)容錯(cuò)架構(gòu)在車載設(shè)備的應(yīng)用研究[J]. 鐵路計(jì)算機(jī)應(yīng)用,2014,23(1):1-5.
[2]陳 昕,周擁軍,蔣文保,等. AFDX協(xié)議性能分析及調(diào)度算法研究 [J]. 電子學(xué)報(bào), 2009,37(5):1000-1005.
[3]盧宏康,曹 源,馬連川. 基于動(dòng)態(tài)故障樹的異構(gòu)安全計(jì)算機(jī)系統(tǒng)共模故障分析研究[J]. 鐵路計(jì)算機(jī)應(yīng)用,2017,26(9):1-6.
[4]邱澤宇,曹 源,馬連川. 基于故障注入的安全計(jì)算機(jī)通信總線測(cè)試方法研究[J]. 鐵路計(jì)算機(jī)應(yīng)用,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ì)算機(jī)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[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ì)算機(jī)通信管理機(jī)制的形式化驗(yàn)證與實(shí)現(xiàn)[J]. 通信學(xué)報(bào),2016,37(11):196-202.
[9]黃智勇. 基于無(wú)線冗余的時(shí)間觸發(fā)架構(gòu)車載總線研究[D]. 合肥:合肥工業(yè)大學(xué),2013.