趙夢(mèng)瑤,劉逸明,王龍生*
(1.中國(guó)鐵道科學(xué)研究院通信信號(hào)研究所,北京 100000;2.國(guó)家鐵路智能運(yùn)輸系統(tǒng)工程技術(shù)研究中心,北京 100000)
鐵路行車安全始終是鐵路運(yùn)輸?shù)牡谝灰亍hF路有史以來發(fā)生的重大行車安全事故都導(dǎo)致巨大災(zāi)難性的后果,并造成具有廣泛破壞性的社會(huì)影響[1]。鐵路信號(hào)控制系統(tǒng)是保障行車安全的關(guān)鍵設(shè)備,是典型的實(shí)現(xiàn)重大生命攸關(guān)功能的安全苛求系統(tǒng)。其中鐵路信號(hào)安全計(jì)算機(jī)平臺(tái)作為鐵路信號(hào)控制系統(tǒng)最基礎(chǔ)、最重要的組成部分,是實(shí)現(xiàn)不同系統(tǒng)的應(yīng)用所需要的硬件平臺(tái)和軟件底層平臺(tái)的設(shè)備。
為了提高鐵路信號(hào)安全平臺(tái)的安全性和可靠性,安全平臺(tái)的結(jié)構(gòu)從最初的單套系統(tǒng)升級(jí)為雙機(jī)熱備系統(tǒng),又再次升級(jí)為2 取2 冗余結(jié)構(gòu)或基于3 取2 冗余結(jié)構(gòu),以達(dá)到一個(gè)性能和成本的平衡;同時(shí)“故障-安全”軟件設(shè)計(jì)和功能測(cè)試方面技術(shù)的提升,使得目前的鐵路信號(hào)安全計(jì)算機(jī)平臺(tái)技術(shù)相對(duì)穩(wěn)定。但是,目前鐵路安全平臺(tái)都是集中放置、單站放置的形式,存在造價(jià)高、建設(shè)周期長(zhǎng)等缺點(diǎn),特別是隨著鐵路網(wǎng)的高覆蓋率,對(duì)運(yùn)輸效率和行車安全提出了更高的要求。
因此,本文設(shè)計(jì)了一種基于RAFT 共識(shí)算法的鐵路信號(hào)安全計(jì)算機(jī)云平臺(tái)實(shí)現(xiàn)方法[2],對(duì)于鐵路沿線上的多個(gè)車站,將每個(gè)站分立的安全計(jì)算機(jī)平臺(tái)替換為中心服務(wù)器的方式,再通過光纖與每個(gè)站的操作表示界面以及室外控制設(shè)備相連,在保障高安全性、高可靠性的前提下,可以有效降低維護(hù)量、提高性能和擴(kuò)展性、縮短施工時(shí)間和資源消耗。
鐵路信號(hào)安全計(jì)算機(jī)平臺(tái)是鐵路信號(hào)安全相關(guān)應(yīng)用系統(tǒng)所使用的專用安全計(jì)算機(jī)平臺(tái),是適用于實(shí)現(xiàn)車站進(jìn)路控制、行車間隔控制以及超速防護(hù)等鐵路信號(hào)重大安全功能的專用安全計(jì)算機(jī)平臺(tái)[3],例如鐵路列控系統(tǒng)的聯(lián)鎖系統(tǒng)、列控中心和無線閉塞中心等。
鐵路信號(hào)安全計(jì)算機(jī)平臺(tái)的核心關(guān)鍵在于:具有較高的實(shí)時(shí)性要求,具有極高的可靠性和安全性之外,還必須滿足“失效-安全”的相關(guān)設(shè)計(jì)原則,同時(shí)滿足于SIL4 級(jí)安全完整性要求[4]。現(xiàn)計(jì)算機(jī)聯(lián)鎖系統(tǒng)使用較多的為基于2 取2 乘2 冗余結(jié)構(gòu)如圖1 所示,或基于3 取2 冗余結(jié)構(gòu)如圖2 所示的聯(lián)鎖安全計(jì)算機(jī)平臺(tái)。
圖1 2 取2 乘2 冗余結(jié)構(gòu)原理
圖2 3 取2 冗余結(jié)構(gòu)原理
設(shè)計(jì)、實(shí)現(xiàn)一個(gè)鐵路信號(hào)安全平臺(tái),需要重點(diǎn)進(jìn)行2 個(gè)方面的設(shè)計(jì)和研究。首先是實(shí)現(xiàn)該平臺(tái)基礎(chǔ)應(yīng)用功能的技術(shù)方案及其特點(diǎn),更重要的是針對(duì)如何支撐這些技術(shù)方案、確保信號(hào)系統(tǒng)安全應(yīng)用的技術(shù)措施的研究。
“故障-安全”顧名思義就是系統(tǒng)故障后導(dǎo)向安全的一種設(shè)計(jì)理念,是鐵路信號(hào)中最根本的設(shè)計(jì)原則。隨著工業(yè)控制技術(shù)的發(fā)展,一些國(guó)內(nèi)外的電工標(biāo)準(zhǔn)、鐵路行業(yè)設(shè)計(jì)標(biāo)準(zhǔn)、可靠性設(shè)計(jì)方法等技術(shù)也被廣泛地知曉和應(yīng)用,特別是IEC61508 中定義、規(guī)定的安全完整性要求和EN50129 中“失效-安全”理念和技術(shù),從根本上保障安全平臺(tái)的可靠性和安全性[5]。IEC61508 研究了安全平臺(tái)的硬件和軟件安全相關(guān)功能的安全性必須滿足安全完整性要求,能夠?yàn)槠脚_(tái)所承載的安全相關(guān)應(yīng)用軟件完成其應(yīng)用功能提供安全保障;以及進(jìn)行平臺(tái)的可靠性、安全性,“失效-安全”的技術(shù)措施的相關(guān)研究[6]。EN50129 從理念和技術(shù)這2 個(gè)不同層面構(gòu)建了完整的“失效-安全”體系,并確立了相當(dāng)完備的“失效-安全”基本原則;系統(tǒng)地解決了提高信號(hào)可編程安全相關(guān)系統(tǒng)的“失效-安全”應(yīng)該怎么樣做、應(yīng)該做到什么程度以及如何衡量的原則性和技術(shù)性問題。這些將成為這個(gè)安全平臺(tái)能否成功應(yīng)用的關(guān)鍵[7]。
安全冗余結(jié)構(gòu)的邏輯平臺(tái)中,同步表決是保障安全性的首要條件。但是,在云平臺(tái)架構(gòu)下,服務(wù)器各個(gè)節(jié)點(diǎn)的運(yùn)算及數(shù)據(jù)交互模式將發(fā)生巨大變化,單平臺(tái)的同步和表決機(jī)制不再適用,所以引入共識(shí)機(jī)制算法以實(shí)現(xiàn)云平臺(tái)系統(tǒng)的同步表決。
共識(shí)機(jī)制是使得各服務(wù)器節(jié)點(diǎn)在某種協(xié)議的保障下對(duì)計(jì)算結(jié)果達(dá)成一致。針對(duì)于不同的應(yīng)用場(chǎng)景,共識(shí)機(jī)制在保證安全性和一致性的基礎(chǔ)上,也需要平衡系統(tǒng)的性能效率、擴(kuò)展性和資源消耗等因素。目前常見的分布式系統(tǒng)一致性算法包括PoW、PoS、DPoS、RPCA、Paxos、RAFT、PBFT 等[8],各種算法都有優(yōu)缺點(diǎn),在某一種應(yīng)用中可以使用一種算法計(jì)算核心部分,并與其他算法相結(jié)合。
RAFT 算法因其具有復(fù)雜度低,易于理解,易于工程應(yīng)用實(shí)現(xiàn)的特點(diǎn),更適合本文提出的鐵路信號(hào)安全計(jì)算機(jī)云平臺(tái)的工程應(yīng)用。
在現(xiàn)有鐵路安全計(jì)算機(jī)平臺(tái)的基礎(chǔ)上,分布式安全平臺(tái)主要側(cè)重分布式邏輯運(yùn)算架構(gòu),由現(xiàn)有本地、集中的邏輯運(yùn)算單元提升為基于共識(shí)機(jī)制的多個(gè)、分布式的邏輯運(yùn)算平臺(tái),實(shí)現(xiàn)了更高的可靠性、可用性和可擴(kuò)展性,具體架構(gòu)設(shè)計(jì)如下。
分布式安全平臺(tái)主要包含操作表示層、邏輯處理層和執(zhí)行層3 部分,如圖3 所示。其中,操作表示層可以為一個(gè)車站、多個(gè)車站或調(diào)度集中系統(tǒng)(CTC)/列車調(diào)度指揮系統(tǒng)(TDCS)中的人機(jī)交互計(jì)算機(jī),操作人員通過人機(jī)交互界面進(jìn)行指揮車站作業(yè)、控制車站信號(hào)設(shè)備和監(jiān)控信號(hào)設(shè)備工作狀態(tài)等操作。
圖3 分布式安全平臺(tái)架構(gòu)圖
邏輯處理層由多個(gè)分布式設(shè)置的服務(wù)器組成,每個(gè)服務(wù)器均可作為一個(gè)節(jié)點(diǎn)加入共識(shí)機(jī)制算法之中。邏輯處理層接收來自操作表示層的操作指令,通過RAFT 算法計(jì)算后多個(gè)服務(wù)器將產(chǎn)生一條安全命令發(fā)出,并且每一個(gè)服務(wù)器均會(huì)同步保存這一次指令的計(jì)算過程和結(jié)果,最終實(shí)現(xiàn)區(qū)域內(nèi)多個(gè)車站控制邏輯的分布式計(jì)算和控制。
執(zhí)行層由各個(gè)車站的執(zhí)行電路或系統(tǒng)以及最終被控的室外軌旁信號(hào)設(shè)備組成,在接收到來自邏輯處理層的動(dòng)作命令后進(jìn)行相應(yīng)動(dòng)作,同時(shí)將本站信號(hào)設(shè)備的工作狀態(tài)、報(bào)警信息等數(shù)據(jù)上傳至邏輯處理層,實(shí)現(xiàn)對(duì)站場(chǎng)信號(hào)設(shè)備最終的安全控制。
基于共識(shí)機(jī)制的安全平臺(tái)中的邏輯處理層是進(jìn)行邏輯運(yùn)算、采集驅(qū)動(dòng)處理以及通信數(shù)據(jù)轉(zhuǎn)換等功能的核心層,主要完成的功能如下。
(1)安全通信以及采集驅(qū)動(dòng)功能。接收來自各個(gè)車站或TDCS/CTC 的站場(chǎng)作業(yè)操作和控制信號(hào)設(shè)備操作等信息,同時(shí)接收?qǐng)?zhí)行層上傳的站場(chǎng)內(nèi)信號(hào)設(shè)備的工作狀態(tài)等采集信息;將這些信息進(jìn)行轉(zhuǎn)義和整合,用于各服務(wù)器節(jié)點(diǎn)之間的同步和通信以及聯(lián)鎖邏輯的運(yùn)算;最后將最終生成的安全命令發(fā)送至執(zhí)行層進(jìn)行驅(qū)動(dòng)輸出。
(2)以RAFT 算法為核心的同步機(jī)制及自身調(diào)度功能。運(yùn)用RAFT 算法進(jìn)行各服務(wù)器節(jié)點(diǎn)之間的同步與運(yùn)算結(jié)果比較,替代了現(xiàn)有安全計(jì)算機(jī)平臺(tái)中主從交互采集信息和主從交互運(yùn)算結(jié)果等環(huán)節(jié),是本安全平臺(tái)的主要特點(diǎn)和核心功能。
(3)運(yùn)行聯(lián)鎖邏輯處理軟件。將現(xiàn)有的聯(lián)鎖軟件運(yùn)行于共識(shí)機(jī)制的安全平臺(tái)中,根據(jù)平臺(tái)處理后的操作命令以及站場(chǎng)設(shè)備的采集狀態(tài)進(jìn)行聯(lián)鎖邏輯運(yùn)算。
鐵路信號(hào)安全平臺(tái)采用分布式結(jié)構(gòu)后,最關(guān)鍵的問題仍然還是如何保證系統(tǒng)的“故障-安全”特性,即要保持如圖4 所示中邏輯處理層中的各節(jié)點(diǎn)的一致性,無論哪部分發(fā)生故障,只要該層中的大部分節(jié)點(diǎn)可以正常工作,則這些節(jié)點(diǎn)就具有相同的狀態(tài),保持一致,實(shí)現(xiàn)安全性冗余的功能。
圖4 現(xiàn)有計(jì)算機(jī)平臺(tái)和共識(shí)機(jī)制平臺(tái)工作流程比較
鐵路信號(hào)安全平臺(tái)基于RAFT 算法的平臺(tái)軟件計(jì)算過程如下。
3.1.1 系統(tǒng)初始化
完成系統(tǒng)硬件功能初始化,邏輯層各服務(wù)器選取Leader,其他服務(wù)器自動(dòng)變成Follower[9]。
3.1.2 周期邏輯處理
完成通信后,Leader 完成命令分發(fā)給Follower,進(jìn)行IO 采集、邏輯計(jì)算后,F(xiàn)ollower 將形成的結(jié)果傳回Leader,Leader 進(jìn)行安全比較,形成驅(qū)動(dòng)輸出等過程。
3.1.3 邏輯服務(wù)器異常處理
(1)Leader 異常處理:邏輯層某服務(wù)器成為L(zhǎng)eader后,會(huì)周期發(fā)送心跳包給其他的Follower,如果Follower 超過一定時(shí)間沒收到心跳包,會(huì)觸發(fā)重新選舉Leader 的邏輯;
(2)Follower 異常處理:Leader 發(fā)現(xiàn)有Follower 不能正常接收下發(fā)的命令或者不能回復(fù)狀態(tài)后,F(xiàn)ollower會(huì)重啟恢復(fù)。
以鐵路信號(hào)列控系統(tǒng)中的聯(lián)鎖系統(tǒng)為例,詳細(xì)描述基于RAFT 的平臺(tái)層軟件的實(shí)現(xiàn)。如圖5 所示,5 個(gè)車站配置了5 套操作表示機(jī),對(duì)于5 個(gè)車站各自的執(zhí)行層設(shè)備,邏輯處理層中有4 個(gè)服務(wù)器。
圖5 RAFT 共識(shí)算法流程
(1)4 個(gè)服務(wù)器分別命名為S1、S2、S3、S4,上電完成硬件功能初始化,4 個(gè)服務(wù)器都成為Candidate。
(2)服務(wù)器角色初始化,4 個(gè)服務(wù)器互相投票,選舉Leader,假設(shè)S1 成為L(zhǎng)eader,那么剩下的S2、S3、S4自動(dòng)成為Follower,完成初始化。
(3)周期執(zhí)行開始,車站1 要排列進(jìn)路,發(fā)出進(jìn)路命令給S1(Leader)。
(4)S1 收到命令后轉(zhuǎn)發(fā)給其他所有的Follower(S2、S3、S4)。
(5)每個(gè)Follower 收到轉(zhuǎn)發(fā)的命令,調(diào)用自身的邏輯處理功能模塊檢查進(jìn)路開放的條件,采集室外設(shè)備的狀態(tài),計(jì)算進(jìn)路開放需要操作的道岔。
(6)Follower 計(jì)算和采集完成后發(fā)回給Leader(S1)。
(7)Leader(S1)一致性檢查,Leader(S1)接收到2個(gè)服務(wù)器發(fā)回來的計(jì)算結(jié)果及采集狀態(tài)一致時(shí)則認(rèn)為該結(jié)果及狀態(tài)有效,形成最終執(zhí)行命令。
(8)Leader(S1)將命令發(fā)送給執(zhí)行層的相關(guān)設(shè)備執(zhí)行命令操作,將狀態(tài)返回車站1 顯示車站設(shè)備和進(jìn)路的狀態(tài)。
(9)各服務(wù)器無異常時(shí),周期執(zhí)行(3)-(7)的過程,實(shí)現(xiàn)系統(tǒng)的正常運(yùn)行。
(10)Leader(S1)異常后,進(jìn)入過程(2),剩下的S2、S3、S4 重新選舉新的Leader。
安全平臺(tái)軟件流程描述了平臺(tái)軟件實(shí)現(xiàn)的主要流程,但是為了保障算法實(shí)現(xiàn)的安全性,還需要設(shè)計(jì)以下功能確保安全性。
3.3.1 網(wǎng)絡(luò)和通信保障
RAFT 在非拜占庭錯(cuò)誤情況下,包括網(wǎng)絡(luò)延遲、分區(qū)、丟包、冗余和亂序等錯(cuò)誤都可以保證正確,不會(huì)返回錯(cuò)誤結(jié)果,這就是安全性保證。實(shí)際上就是保證所有成員狀態(tài)機(jī)都以同樣的順序,執(zhí)行同樣的命令。
3.3.2 服務(wù)器節(jié)點(diǎn)數(shù)量和功能
服務(wù)器節(jié)點(diǎn)數(shù)量的增加可以提高系統(tǒng)的容錯(cuò)能力,常規(guī)的如果有5 個(gè)服務(wù)器節(jié)點(diǎn),那么可以允許2 個(gè)服務(wù)器故障,如果如圖5 所示的4 個(gè)服務(wù)器結(jié)構(gòu),就只能允許1 個(gè)服務(wù)器故障;同時(shí),每個(gè)服務(wù)器應(yīng)有一個(gè)自檢程序,用于檢查自身故障后保障系統(tǒng)宕機(jī),而非異常計(jì)算和輸出。
3.3.3 命令時(shí)效性
服務(wù)器的Leader 只接收當(dāng)圈周期的命令,避免使用歷史命令造成的風(fēng)險(xiǎn)。
3.3.4 同步處理
邏輯服務(wù)層中各服務(wù)器只有Leader 接收車站的命令,并由Leader 轉(zhuǎn)發(fā)給所有的Follower,如果Follower 在計(jì)算過程中收到Leader 發(fā)送的新命令,會(huì)舍棄原來的計(jì)算按照最新的命令重新計(jì)算,Leader 來調(diào)度這些并發(fā)請(qǐng)求的順序,并且保證Leader 與Followers 狀態(tài)的一致性,這種機(jī)制保障了邏輯處理的同步[10]。
對(duì)于基于RAFT 的分布式信號(hào)安全平臺(tái)而言,其邏輯處理層執(zhí)行邏輯運(yùn)算、采集驅(qū)動(dòng)處理以及通信數(shù)據(jù)轉(zhuǎn)換等功能,也是應(yīng)用分布式算法提升系統(tǒng)可靠性與安全性的關(guān)鍵。因此,本文著重對(duì)平臺(tái)邏輯處理層的可靠性與安全性進(jìn)行分析。
對(duì)于簡(jiǎn)單的單系統(tǒng),其平均故障間隔時(shí)間(MTBF)可由下式推出[11]:
式中,RS為系統(tǒng)可靠度,λ 為系統(tǒng)故障率。
由RAFT 算法特性可知,在不考慮共因失效和車站數(shù)量造成的業(yè)務(wù)數(shù)據(jù)量的情況下,系統(tǒng)內(nèi)有3 臺(tái)或以上服務(wù)器可以正常工作時(shí),系統(tǒng)處于正常工作狀態(tài)。假設(shè)各服務(wù)器的可靠度相同且失效率均服從指數(shù)分布,不考慮系統(tǒng)的可維修性,則系統(tǒng)的可靠度與MTBF可以由下式表述:
以前文中的控制5 個(gè)車站情況舉例,基于RAFT的分布式信號(hào)安全平臺(tái)的平均故障間隔時(shí)間為:
而雙機(jī)熱備、3 取2、2 乘2 取2 等冗余結(jié)構(gòu)的平均故障間隔時(shí)間分別為:
精確分析系統(tǒng)的可靠性其工作量非常巨大,但是,將各冗余結(jié)構(gòu)框定在一些限定條件下進(jìn)行比較,亦可做出定性判斷。經(jīng)過比較,本文提出的基于RAFT 的分布式信號(hào)安全平臺(tái)在可靠性方面勝于當(dāng)前應(yīng)用的各種冗余結(jié)構(gòu),能夠保障各類信號(hào)控制業(yè)務(wù)的穩(wěn)定運(yùn)行。
本文設(shè)計(jì)了一種分布式鐵路信號(hào)安全計(jì)算機(jī)云平臺(tái)架構(gòu),并研究了其基于RAFT 算法的共識(shí)機(jī)制實(shí)現(xiàn)方法。對(duì)于鐵路沿線多車站場(chǎng)景,本文提出的安全計(jì)算機(jī)云平臺(tái)能夠有效減少系統(tǒng)設(shè)備的數(shù)量,降低施工的周期,方便擴(kuò)展,不同車站的相同列控系統(tǒng)或者同一車站的不同功能列控系統(tǒng)都能以軟件的形式運(yùn)行在這一個(gè)服務(wù)器群中。同時(shí),研究了鐵路信號(hào)安全平臺(tái)在RAFT 算法下如何完成同步表決和安全功能的實(shí)現(xiàn),以鐵路信號(hào)聯(lián)鎖系統(tǒng)為模型,設(shè)計(jì)了詳細(xì)的平臺(tái)軟件流程步驟,最后又單獨(dú)分析了算法和實(shí)現(xiàn)中的安全性設(shè)計(jì)。