曹 楨,宋鵬飛,張 濤,楊 濤
分散自律調(diào)度集中系統(tǒng)(Centralized Traffic Control System,CTC) 和列車調(diào)度指揮系統(tǒng)(Train Dispatching and Commanding System,TDCS)廣泛應(yīng)用于鐵路信號(hào)控制領(lǐng)域,輔助調(diào)度人員對(duì)全線列車進(jìn)行管理,實(shí)現(xiàn)列車運(yùn)行監(jiān)督和控制[1-2]。在CTC/TDCS 系統(tǒng)內(nèi),各鐵路局相鄰線路之間設(shè)置接口服務(wù)器,用于信息共享,主要包括站場(chǎng)表示信息、車次號(hào)信息、調(diào)度命令和報(bào)點(diǎn)信息等。隨著鐵路行車密度持續(xù)增加、追蹤間隔不斷壓縮和多方向交路等新情況涌現(xiàn),對(duì)局間信息共享的穩(wěn)定性和可靠性提出了更高的要求。
目前,既有網(wǎng)絡(luò)設(shè)備故障、外界因素干擾和數(shù)據(jù)傳輸方式存在缺陷等,都會(huì)導(dǎo)致網(wǎng)絡(luò)通信故障,從而影響局間接口信息共享。為此,基于現(xiàn)有通信技術(shù)和雙網(wǎng)雙通道模式,對(duì)現(xiàn)有局間信息共享方式進(jìn)行優(yōu)化設(shè)計(jì),可避免在復(fù)雜傳輸環(huán)節(jié)中的單點(diǎn)設(shè)備故障對(duì)信息傳輸造成影響[3-8]。
網(wǎng)絡(luò)層面:CTC/TDCS 局間接口網(wǎng)絡(luò)采用雙網(wǎng)結(jié)構(gòu);路局與路局之間分別設(shè)置2 套路由器互聯(lián);局內(nèi)路由器與交換機(jī)交叉互聯(lián),局間設(shè)置網(wǎng)絡(luò)安全隔離設(shè)備;網(wǎng)絡(luò)設(shè)備通過路由計(jì)算選擇最優(yōu)路徑進(jìn)行數(shù)據(jù)傳輸。局間信息共享的網(wǎng)絡(luò)結(jié)構(gòu)見圖1。
圖1 現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)
軟件層面:CTC/TDCS 接口服務(wù)器采用IBM WebSphere MQ 中間件方式進(jìn)行數(shù)據(jù)傳輸?,F(xiàn)有MQ數(shù)據(jù)傳輸方式見圖2。
圖2 現(xiàn)有MQ數(shù)據(jù)傳輸方式
1.2.1 網(wǎng)絡(luò)層面
雖然相鄰路局CTC/TDCS 中心之間網(wǎng)絡(luò)有2 條物理通道,但實(shí)際只會(huì)在1 條路由最優(yōu)路徑的物理通道上傳輸應(yīng)用數(shù)據(jù)?,F(xiàn)場(chǎng)應(yīng)用中,廣域網(wǎng)通道環(huán)節(jié)涉及設(shè)備繁多,路由器端口、協(xié)議轉(zhuǎn)換器、防雷器件、同軸/光纖接頭等任一傳輸設(shè)備工作不正?;蚴艿诫姶鸥蓴_時(shí),均會(huì)導(dǎo)致通道質(zhì)量誤碼,從而影響接口數(shù)據(jù)正常傳輸[3-5]。
網(wǎng)絡(luò)層面信息共享缺陷主要表現(xiàn)在2 個(gè)方面:一是正在傳輸數(shù)據(jù)的物理鏈路發(fā)生中斷會(huì)導(dǎo)致路由重新計(jì)算,底層路由器進(jìn)行鏈路切換,通道出現(xiàn)短時(shí)間中斷,相應(yīng)的邏輯通道重建較慢;二是數(shù)據(jù)通道出現(xiàn)通道質(zhì)量誤碼導(dǎo)致通道時(shí)不時(shí)閃斷,路由不斷的重新計(jì)算選路,影響局間信息共享[9-10]。
1.2.2 軟件層面
目前局間信息共享通過MQ中間件進(jìn)行數(shù)據(jù)收發(fā),實(shí)現(xiàn)本局與鄰局之間的信息交互[2]。MQ 是一款消息傳遞中間件,它使用消息和隊(duì)列來支持應(yīng)用程序、系統(tǒng)、服務(wù)和文件之間的信息交換。MQ消息一旦進(jìn)入隊(duì)列,若遇到通信線路不通或應(yīng)用軟件停止取數(shù)據(jù)等故障時(shí),數(shù)據(jù)會(huì)留在傳輸隊(duì)列中,直到被成功的取出。
軟件層面信息共享缺陷主要表現(xiàn)在3 個(gè)方面:一是通道中斷后,大量超時(shí)數(shù)據(jù)殘留在隊(duì)列里面,通信恢復(fù)后會(huì)瞬時(shí)批量發(fā)送和接收過時(shí)的數(shù)據(jù),這一部分?jǐn)?shù)據(jù)全部是過時(shí)的;二是MQ中間件運(yùn)行在服務(wù)器上,通過群集管理器實(shí)現(xiàn)服務(wù)器主備機(jī)切換,但正在運(yùn)行的MQ應(yīng)用軟件只能單個(gè)運(yùn)行,無法做到雙機(jī)熱備;三是現(xiàn)有局間信息只發(fā)送一份,無冗余數(shù)據(jù)。
為了解決現(xiàn)有局間信息共享存在的缺陷,可針對(duì)網(wǎng)絡(luò)和軟件2 個(gè)層面優(yōu)化局間信息共享,通過優(yōu)化CTC/TDCS 系統(tǒng)局間雙通信鏈路的組網(wǎng)結(jié)構(gòu),解決網(wǎng)絡(luò)層面的缺陷;設(shè)計(jì)雙通道冗余方式傳輸數(shù)據(jù)軟件處理邏輯,解決軟件層面的不足,從而實(shí)現(xiàn)局間數(shù)據(jù)的冗余傳輸[3-8]。具體優(yōu)化設(shè)計(jì)方案包括以下2個(gè)方面。
在局間接口組網(wǎng)時(shí),雙網(wǎng)獨(dú)立,不再交叉連接,局間設(shè)置網(wǎng)閘等網(wǎng)絡(luò)安全設(shè)備,調(diào)整后的局間網(wǎng)絡(luò)結(jié)構(gòu)見圖3。
通過硬件組網(wǎng)調(diào)整及路由設(shè)定,局間的A 網(wǎng)、B 網(wǎng)完全獨(dú)立,數(shù)據(jù)傳輸保證A 局局間接口服務(wù)器1 的網(wǎng)卡A(或者接口服務(wù)器2 的網(wǎng)卡A)要與B局局間接口服務(wù)器1的網(wǎng)卡A(或者接口服務(wù)器2的網(wǎng)卡A)通信,只能通過兩局交換機(jī)S1、網(wǎng)閘W1和路由器R1 等A 網(wǎng)設(shè)備,從而選擇廣域網(wǎng)A(圖中藍(lán)色標(biāo)識(shí)的鏈路);A局局間接口服務(wù)器1的網(wǎng)卡B(或者接口服務(wù)器2的網(wǎng)卡B)要與B局局間接口服務(wù)器1的網(wǎng)卡B(或者接口服務(wù)器2的網(wǎng)卡B)通信,只能通過交換機(jī)S2、網(wǎng)閘W2 和路由器R2 等B 網(wǎng)設(shè)備,從而選擇廣域網(wǎng)B(圖中紅色標(biāo)識(shí)的鏈路),具體見圖3所示的網(wǎng)絡(luò)數(shù)據(jù)傳輸流向標(biāo)識(shí)。
圖3 局間網(wǎng)絡(luò)優(yōu)化設(shè)計(jì)
2.2.1 通信層邏輯通道建立方式
軟件層,不再使用MQ中轉(zhuǎn)方式,局間接口服務(wù)器通過網(wǎng)絡(luò)Socket直聯(lián)。建立2條端與端之間的邏輯通道(例如A局每臺(tái)局間接口服務(wù)器與B局每臺(tái)局間接口服務(wù)器之間),并且強(qiáng)制綁定通道關(guān)聯(lián)IP 地址(本地IP 地址及對(duì)端IP 地址)。由于A/B網(wǎng)段的隔離,對(duì)一條邏輯通道,確定本地IP 資源、對(duì)方服務(wù)器IP 資源,會(huì)唯一確定一條廣域網(wǎng)鏈路,即唯一確定了該邏輯通道由哪條鏈路承載(是由藍(lán)色的2M 鏈路還是紅色的2M 鏈路)。應(yīng)用層軟件在2 條邏輯通道上傳輸2 份完全相同的數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)傳輸冗余。軟件邏輯結(jié)構(gòu)見圖4。
圖4 通信層邏輯通道示意
2.2.2 增加雙通道冗余處理邏輯
通過通信層邏輯通道建立的方式,所有的應(yīng)用數(shù)據(jù)包會(huì)在2 條鏈路上傳輸,此時(shí)應(yīng)用層軟件增加邏輯,數(shù)據(jù)接收方需對(duì)2 條通道收到的數(shù)據(jù)進(jìn)行冗余處理,做到雙通道正常時(shí)數(shù)據(jù)冗余重復(fù)過濾,相同的數(shù)據(jù)只處理一份,單條通道故障的情況下使用正常通道的有效數(shù)據(jù)?;跀?shù)據(jù)接收方的角度,設(shè)計(jì)保護(hù)算法,實(shí)現(xiàn)信息幀的合法性、正確性、有效性、時(shí)限性、次序性檢查。主要流程如下。
1)角色的登錄和驗(yàn)證交互。A局局間接口服務(wù)器與B局局間接口服務(wù)器建立了邏輯通道之后,首先進(jìn)行角色登錄及驗(yàn)證交互,以完成身份的合法性檢查。以A 局局間接口服務(wù)器為申請(qǐng)端,B 局局間接口服務(wù)器為校驗(yàn)端為例說明,流程見圖5。
圖5 通信建立過程流程
邏輯通道建立后,由A 局局間接口服務(wù)器發(fā)出申請(qǐng)登錄消息(LoginReq Msg),B 局局間接口服務(wù)器收到此消息后,根據(jù)登錄的用戶名、密碼、設(shè)備實(shí)體ID 等進(jìn)行相應(yīng)檢查,檢查通過后,向A 局局間接口服務(wù)器反饋認(rèn)證成功消息(LoginAuthen Msg)。之后雙方均向?qū)Ψ桨l(fā)送本地實(shí)體的主備狀態(tài)及設(shè)備信息(RSR Msg),嘗試建立安全冗余連接,收到對(duì)方的RSR 消息后,主動(dòng)向?qū)Ψ桨l(fā)送RSR 確認(rèn)消息(RSR-Confirm Msg)。TLogintimout 秒之內(nèi)未收到對(duì)方的RSR-Confirm消息,視為此次驗(yàn)證失敗,通信的雙方均進(jìn)行重置,重新開始邏輯通道的建立及初始化過程。TLogintimout 為登錄驗(yàn)證超時(shí)檢查時(shí)間,一般設(shè)置為2 s。邏輯通道經(jīng)過登錄認(rèn)證之后,通信雙方視為安全冗余連接(Safety Link)建立成功,可進(jìn)行應(yīng)用層的數(shù)據(jù)發(fā)送。邏輯通道的雙方以THearttime 秒定時(shí)發(fā)送心跳數(shù)據(jù),以維持安全冗余連接的狀態(tài)。THearttime 為心跳定時(shí)時(shí)間,一般設(shè)置為5 s。通過登錄申請(qǐng)、登錄認(rèn)證等過程,確定安全冗余連接的建立,并以心跳信息進(jìn)行定時(shí)探測(cè),維持該安全冗余連接。
2)應(yīng)用數(shù)據(jù)的雙通道邏輯檢查。處理數(shù)據(jù)時(shí),按照接收方的角度設(shè)計(jì)算法,應(yīng)用數(shù)據(jù)增加序號(hào)控制及檢查邏輯,實(shí)現(xiàn)雙通道下的數(shù)據(jù)冗余傳輸、過濾、校驗(yàn)、使用。基本邏輯如下。
首先,通過序號(hào)控制,實(shí)現(xiàn)雙通道冗余傳輸數(shù)據(jù)檢查。每包應(yīng)用數(shù)據(jù)增加SN 序號(hào)字段,SN 序號(hào)范圍為[0,65535]。發(fā)送方在發(fā)送數(shù)據(jù)時(shí),需填寫本端發(fā)送方的SN 序號(hào),記為SN_send。每包應(yīng)用數(shù)據(jù)增加發(fā)送方的設(shè)備實(shí)體ID、系統(tǒng)當(dāng)前時(shí)間字段,由發(fā)送方在發(fā)送該應(yīng)用數(shù)據(jù)時(shí)填寫。在安全冗余連接初次建立、每一次重置時(shí),發(fā)送方均須將SN_send序號(hào)初始化為0。
其次,發(fā)送方對(duì)相同的接收方發(fā)送數(shù)據(jù)時(shí),2 包數(shù)據(jù)的SN 序號(hào)須相同。為此發(fā)送方維護(hù)一個(gè)<SN_send,OppRecvDevID>的Map映射列表,其中SN_send 為發(fā)送方的SN 序號(hào),OppRecvDevID為對(duì)端接收方的設(shè)備實(shí)體ID。發(fā)送方每向接收方發(fā)送一包數(shù)據(jù),需更新本地下一次發(fā)送數(shù)據(jù)時(shí)的SN 序號(hào) SN_next,在 SN_send<65535 時(shí),SN_next為此次SN_send 順序加1,若SN_send 等于65535時(shí),SN_next變?yōu)?。
最后,接收方需要對(duì)接收到的每一包應(yīng)用數(shù)據(jù)進(jìn)行時(shí)間檢查。接收方比較當(dāng)前時(shí)間與數(shù)據(jù)包內(nèi)部的發(fā)送時(shí)間,根據(jù)最大的網(wǎng)絡(luò)傳輸延時(shí),判斷數(shù)據(jù)是否有效。接收方需要對(duì)接收到的每一包應(yīng)用數(shù)據(jù)進(jìn)行序號(hào)控制檢查。接收方需要緩存記錄上一次從該發(fā)送方設(shè)備實(shí)體ID 接收到的數(shù)據(jù)包序號(hào)SN,記為<SN_last,OppSendDevID>Map 映射列 表,其中SN_last 為上一次有效數(shù)據(jù)包的序號(hào),OppSendDevID為對(duì)端發(fā)送方設(shè)備實(shí)體ID。接收方收到序號(hào)為0 的數(shù)據(jù)時(shí),不再進(jìn)行后續(xù)序號(hào)控制檢查,視此數(shù)據(jù)為有效數(shù)據(jù),并重置該發(fā)送方設(shè)備實(shí)體ID 的SN_last。接收方對(duì)之前收到數(shù)據(jù)的SN 序號(hào)、發(fā)送方設(shè)備實(shí)體ID 做緩存,記為<SN_recv,OppSendDevID>Map映射列表,緩存TPackvalidtime秒。其中SN_recv 為接收到的數(shù)據(jù)包序號(hào),TPackvalidtime 為數(shù)據(jù)最大緩存時(shí)間。接收方對(duì)新收到數(shù)據(jù)中的<SN_recv,OppSendDevID>進(jìn)行緩存匹配檢查,如果緩存中已經(jīng)存在相同的<SN_recv,OppSendDevID>,則視為冗余數(shù)據(jù),不處理此包數(shù)據(jù);否則需要繼續(xù)檢查處理。接收方檢查此次數(shù)據(jù)包的SN_recv,比較上一次從該發(fā)送方設(shè)備實(shí)體ID收到的SN_last,如果滿足SN_recv-SN_Last>0 或 SN_recv∈[1,SNLostThreshold]且SN_Last∈[65535-SNLostThreshold,65535],則視為有效的合法數(shù)據(jù),并更新SN_last值;否則視為無效數(shù)據(jù),拋棄不處理。其中SNLostThreshold是一個(gè)最大丟包容忍閾值。接收方超過TPackDelta秒沒有收到有效應(yīng)用數(shù)據(jù)時(shí),需重置邏輯通道及安全冗余連接。當(dāng)接收方超過TPackDelta秒仍未收到一包經(jīng)過雙通道冗余檢查的有效應(yīng)用數(shù)據(jù)時(shí),視為通道異常,需要重置該通道。
通過對(duì)局間信息共享的優(yōu)化設(shè)計(jì),能夠在以下3 種情況下確保不丟失局間應(yīng)用數(shù)據(jù),不影響CTC/TDCS 系統(tǒng)局間的信息傳輸,保證數(shù)據(jù)傳輸?shù)臅r(shí)序性、完整性、時(shí)限性:
1)本地某一網(wǎng)卡、網(wǎng)線故障;
2)本地某一交換機(jī)、路由器、協(xié)議轉(zhuǎn)換器、通信接口等單點(diǎn)故障;
3)某一條廣域網(wǎng)2 M 鏈路網(wǎng)絡(luò)設(shè)備收到干擾出現(xiàn)誤碼、丟包、傳輸延時(shí)、中斷等。
基于目前CTC/TDCS 系統(tǒng)局間接口設(shè)備現(xiàn)狀,本設(shè)計(jì)方案通過優(yōu)化局間雙通道網(wǎng)絡(luò)組網(wǎng)方式,設(shè)計(jì)與實(shí)現(xiàn)基本的安全通信協(xié)議功能和雙通道冗余方式傳輸數(shù)據(jù)的軟件處理邏輯,保證了信息冗余傳輸,能達(dá)到即使某一條鏈路或網(wǎng)絡(luò)設(shè)備出現(xiàn)故障也不會(huì)丟失應(yīng)用數(shù)據(jù),從而明顯提高了局間CTC/TDCS信息共享的穩(wěn)定性和可靠性。