彭博文,陳 昕,施 林
(湖南中車時代通信信號有限公司,北京 100070)
用于網絡數據包分析的工具中,Wireshark 由于開源,便于用戶二次開發,對于當下的主流協議Wireshark 都有自帶解析插件,如 IP、ARP、TCP、UDP、HTTP、DHCP 等大受歡迎。但在實際應用中,這些協議通常只是傳輸數據過程的載體,有不少軟件之間的通信協議都是私有的,如車載設備(VOBC)和區域控制器(ZC)之間的交互協議,Wireshark 無法具體解析出各種字段之間的含義,只能顯示接收的二進制數據,給協議的分析和問題的排查帶來了一定的困難,尤其是協議內容比較復雜時。
軌道交通CBTC 系統互聯互通主要指兩種方式的運營,分別為共線和跨線。共線指同一條線路上裝備不同信號廠商的車載設備列車可以在裝備不同信號廠家軌旁設備正常運營;跨線指不同信號廠商的車載設備可以無縫切換到另外一條線路正常行駛。一般來說,實現跨線前需以實現共線為前提。它們對于實現軌道交通網絡化運營,降低軌道交通線網建設成本和提高運營的資源利用率有巨大的促進和影響。
互聯互通車地通信協議是以統一的數據格式的方式用于ZC 和VOBC 之間數據通信,協議約定了使用的安全通信協議和應用協議,可粗略的分為兩大部分:
車載設備與區域控制器之間可采用RSSP-II 或RSSP-I 安全通信協議通信。RSSP-II 安全通信協議的具體要求參見運基信號【2010】267 號文件《RSSP-II 鐵路信號安全通信協議》;RSSP-I 安全通信協議的具體要求參見運基信號【2010】267 號文件《RSSP-I 鐵路信號安全通信協議》。
1.2.1 通用信息包格式
互聯互通車地連續通信規范的通用包中約定了車地雙方通信的接口信息類型、發送方標識信息、接收方標識信息、數據版本校驗信息、本方消息序列號、通信周期、對方消息序列號、收到上一條消息時本方序列號、協議版本號和應用層數據長度,用于對車地雙方通信信息做進一步的校驗。
1.2.2 應用層信息包格式
互聯互通車地連續通信規范的應用層信息包括報文長度、報文類型、預留字段、報文內容。根據信息包發送方向可分為二類,VOBC 至ZC 共4 種信息包,分別為列車位置信息包、應用層注冊/注銷請求、VOBC 城市自定義幀、VOBC 廠商自定義幀;ZC 至VOBC 共6 種信息包,分別為列車控制信息、應用層注冊/注銷響應、ZC 主動注銷請求、特殊控制報文、ZC 城市自定義幀、ZC 廠商自定義幀。不同類型數據包可同時存在在一個數據包當中,并且對于發起方VOBC 發送某種特定類型的數據包,應答方ZC 需響應符合要求的對應的數據包。
(1)列車位置信息包。列車位置信息包主要用于車載設備自身在線路上定位成功后,完成與之對應的區域控制器注冊成功后,周期性向區域控制器發送信息,其包含運行方向、激活端、列車包絡線(列車最大安全前端、列車最小安全前端、列車最大安全后端、列車最小安全后端)、列車運行控制級別、列車駕駛模式、車輛狀態(停車保證、折返狀態、列車完整性、無人折返燈、緊急制動狀態)、列車速度/距離信息(列車速度、速度方向、退行距離、停準停穩信息、保護區段允許解鎖)、受控ZC 編號。
(2)應用層注冊/注銷請求。應用層注冊/注銷請求包主要用車載設備通過應答器獲取初始定位位置后,邏輯判斷需要與ZC 開始注冊或者需要斷開通信鏈接時發送,其包含注冊/注銷請求標識、注銷原因、預留。
(3)VOBC 城市自定義幀。VOBC 城市自定義信息包用于實現各城市特有的互聯互通相關,具體內容在工程中根據實際需求約定,各廠商均應適配實現相應功能。
(4)VOBC 廠商自定義幀。VOBC 廠商自定義信息包用于實現各廠商特有功能,由各廠商分別定制。VOBC 判斷通信的ZC 與自身屬于同一廠商時,方可發送廠商自定義幀。
(5)列車控制信息。列車控制信息包主要用ZC 判斷滿足發送條件后,向列車周期性發送,其包含下一個ZC 的編號、MA 信息(MA 信息長度、MA 方向、停車保證、MA 起點、安全防護點位置、障礙點位置、保護區段有效性)、路徑信息(包含的道岔編號及位置)、屏蔽門狀態、緊急停車按鈕狀態、無人折返按鈕狀態、臨時限速信息(臨時限速數量、臨時限速范圍、臨時限速限速值)、ZC-ZC 通信延遲、緊急制動命令、運行目的地屬性信息、信號機狀態。
(6)應用層注冊/注銷響應。應用層注冊/注銷響應包是ZC 對于車載設備發送的注冊/注銷請求包的響應數據包,其包含注冊/注銷響應標識,注冊失敗原因、預留。
(7)ZC 主動注銷請求。ZC 主動注銷請求包是ZC 在某種特定的場景下,判斷注銷條件成立后,向VOBC 發送,其包含注銷命令、注銷原因、預留。
(8)特殊控制報文。特殊控制報文是主要用于ZC 判斷在不滿足發送列車控制信息報文,但需要維持通信鏈路時或者判斷需要列車緊急制動時發送,其包含緊急制動命令和特殊控制原因。
(9)ZC 城市自定義幀。ZC 城市自定義包用于實現各城市特有的互聯互通相關功能。具體內容在工程中根據實際需求約定,各廠商均應實現相應功能。
(10)ZC 廠商自定義幀。ZC 廠商自定義包用于實現各廠商特有功能,各廠商分別定制。ZC 判斷通信的VOBC 與自身屬于同一廠商時,方可發送廠商自定義幀。
1.2.3 應用層信息包共存性
不管VOBC 發送給ZC 的數據包,還是ZC 發送給VOBC 的數據包,在不同場景下其信息包組合均有相應的規則,如表1 所示:

表1 VOBC→ZC 各信息包共存表
Wireshark 軟件作為實驗室和工程調試過程中廣泛使用傳輸數據的抓取和分析軟件。Wireshark 軟件本身擁有強大的過濾器引擎,同時支持抓取 UDP、TCP、IP、FTP、ICMP、HTTP 等協議數據包,也支持使用Lua 腳本語言進行二次開發,非常方便與靈活,可用于互聯互通車地應用協議。
互聯互通車地協議解析的實現:
互聯互通車地協議數據解析腳本由vobcToZc.lua 文件組成,用于互聯互通車地應用協議的解析,本文以車地通信采用TCP 方式的RSSP-II 安全協議舉例。
編寫vobcToZc.lua 的解析器腳本,分為三個過程,創建解析器對象、解析器函數、注冊至解析表中,其具體內容如下:

表2 ZC→VOBC 各信息包共存表
(1)創建解析器字段。創建解析器需要解析的字段,其具體實現如圖1 所示:

圖1 解析器字段
(2)解析器函數。解析器函數需要將數據包當獲取中的指定的具體位置字段取值后賦值,其具體實現如圖2 所示:

圖2 解析器函數
(3)注冊至解析表。解析器函數實現后,需要將解析器注冊到Wireshark 的解析表當中,具體實現如圖3 所示:

圖3 注冊解析器
Lua 語言為弱語言,無需編譯,可直接使用。直接將該腳本文件vobcToZc.lua 放在Wireshark 安裝目錄中,若安裝路徑在C 盤,則將腳本放入路徑C:Program Files(x86)Wiresharkplugins版本號,即可。
用Wireshark 打開之前的抓包數據,加載腳本插件后可以看出原來的傳輸數據已經被解析成自定義協議VOBCTOZC,如圖 4 所示。
打開樹狀圖,發現定義的解析字段已經賦上對應的值,如圖5 所示。

圖4 UI 信息顯示

圖5 樹狀信息顯示
目前已用于無錫4 號線室內系統調試的通用輔助工具,據使用人員反映測試過程使用,該腳本提供了較為直觀、快捷的解析數據方式,同時希望擴展和補充互聯互通區域控制器(ZC)通信協議腳本和互聯互通聯鎖(CI)通信協議腳本等。相比原有抓包再通過解析軟件進行解包分析的方式,基于Wireshark 下腳本語言插件的解析方式具有以下優點:
(1)實現性。在Wireshark 實時抓包時,通過腳本語言插件的解析方式就可以直接看到相關對應字段的取值。
(2)便捷性。分析問題時候,可以直接設置過濾條件,找到對應的數據包,如查找某一具體周期的數據、字段取值為特定值的數據包等。
本文利用Wireshark 軟件易于二次開發的特性,采用Lua 腳本語言進行解析腳本的編寫,將互聯互通車地通信應用協議關鍵字段進行解析,從而能夠通過Wireshark 軟件可以直觀地顯示傳輸數據的內容、篩選符合特定條件的數據包。
已在無錫4 號線室內測試中逐步使用。本文構建的協議數據分析插件為調試、故障排查、測試帶來的便利,減少將數據拷貝到特定解析軟件解析的過程,提高了調試效率。隨著新基建、城市軌道交通行業的發展,本文構建的協議數據分析模式及其實現方式將會在自身及互通廠商室內軟件調試、實際工程項目運用中有廣闊的應用前景。