一種可定制的異構網絡協議解析器的設計

2021-10-09 23:26蔣錁沅李曉明
軟件工程 2021年10期

蔣錁沅 李曉明

摘? 要:異構網絡(Heterogeneous Network)中包含多種使用不同網絡協議的設備,因此設計一種可定制化的網絡協議解析器是解決各設備之間信息交互,降低硬件設備更新和替換成本的重要課題。本文提出使用XML(可擴展性標記語言)作為網絡協議解析器的協議描述文件,利用XML文件的可擴展性、異構性和標簽之間的父子層級關系,實現該網絡協議解析器的通用性,達到更新或更換網絡協議時無須重新編寫代碼,只需更改或替換XML文件即可;同時,支持用戶可選當前解析器解析的最小顆粒度為bit或byte,滿足更多設備協議的數據要求。通過實驗表明,本文提出的網絡協議解析器滿足協議解析的要求。

關鍵詞:網絡協議解析器;XML文件;異構網絡

中圖分類號:TP311.5? ? ?文獻標識碼:A

A Design of a Customizable Heterogeneous Network Protocol Parser

JIANG Keyuan, LI Xiaoming

(Faculty of Mechanical Engineering and Automation, Zhejiang Sci-Tech University, Hangzhou 310000, China)

1393621017@qq.com; lxmzist@zstu.edu.cn

Abstract: Heterogeneous Network contains a variety of devices that use different network protocols. Therefore, designing a customizable network protocol parser is an important issue to realize information interaction between devices and reduce the cost of hardware equipment update and replacement. This paper proposes to use XML (Extensible Markup Language) as the protocol description file of the network protocol parser. Based on its scalability, heterogeneity, and parent-child hierarchy between nodes, the XML file can be used to achieve the generality of the network protocol parser, so that there is no need to rewrite the code when updating or replacing the network protocol, just change or replace the XML file. At the same time, the minimum granularity of the current parser users can choose is bit or byte, which can meet the data requirements of more device protocols. Experiments show that the network protocol parser proposed in this paper meets the requirements of protocol parsing.

Keywords: network protocol parser; XML file; heterogeneous network

1? ?引言(Introduction)

異構融合網絡的研究最早由美國加州大學伯克利分校的BARWAN(Bay Area Research Wireless Access Network)項目提出,并首次將不同類型的網絡組合構成異構網絡以支持不同運行網絡協議的網絡設備[1]。目前互聯網和物聯網產業的繁榮發展也催生了大量的新型協議,如MPLS、1553總線協議和IP-in-IP等。異構網絡為了支持這些新的網絡協議,必須持續不斷地更新中轉設備的協議解析能力,以滿足不同設備之間的通信需求[2]。

由于設備來自不同的設備制造商,且每個設備制造商有著自己獨有的網絡協議,網絡協議隨著產品的更新換代也在不斷地更新。而硬件開發周期長和部署成本較高的問題,也意味著異構網絡的部署和設計具有實驗困難、更新成本高和硬件升級周期長的特點。本文以屏蔽硬件底層協議構建信息交互層的設計思路,利用軟件的定義協議的思想[3]提出了一種基于XML的異構網絡協議解析器;設計了解析方式及其對應的XML文件結構,達到只需用戶配置XML文件中的標簽描述信息就可以實現使用不同網絡協議的設備之間的信息交互。本文使用Java語言對解析器進行代碼實現,一方面是Java具有平臺無關性;另一方面是Java擁有性能穩定且高效的XML解析工具庫[4]。最后通過實驗驗證了該解析器可以正常工作并具備對不同網絡協議設備的數據解析能力。

2? 異構網絡協議解析器方案設計(Solution design of heterogeneous network protocol parser)

網絡協議是為完成計算機網絡通信而制定的規則、約定和標準。一個完善的網絡協議由語法、語義和時序這三大要素組成。而網絡協議解析技術就是按照事先配置的網絡協議將數據信息從數據幀中解析出來。

現有的網絡協議解析方式可以分為兩類,一類是依靠硬件底層對其進行解析;另一類則是依靠軟件來實現數據的解析[5]。前者依靠硬件底層直接對數據進行解析,優點是解析速度快,但是設備更新周期長,對異構融合網絡的支持較差;后者則是在應用層對數據進行解析,底層設備只涉及數據的轉發,優點是對異構融合網絡的支持程度高,不同協議之間只是配置文件的替換,降低了搭建異構融合網絡的門檻。

針對異構融合網絡中底層設備采用不同協議,不同廠商之間的設備難以互聯的問題,本文提出的解析器方案為基于軟件的解析方案,用戶只需按照解析器提供的標準XML標簽來描述當前設備需要接收的網絡協議,就可以打通多個設備在異構融合網絡中的數據通信壁壘。

解析文件是使用XML語言來描述當前信源設備網絡協議的描述文檔。該解析文件被應用于本文提出的網絡協議解析器中,為信宿和信源設備提供數據解析服務。

網絡協議解析器軟件由協議管理器(FrameManager)、可解析節點(ParseableNode)、解析鏈(ParseableList)和解析結果鏈(ParsedVarList)四大部分組成。協議管理器負責管理當前解析器可解析的所有協議,可解析節點是指解析文件中參與解析的表述節點,解析鏈則由多個可解析節點組成,而解析結果鏈則存放了所有解析完成的初始狀態的數據。解析鏈數據結構如圖1所示。

3? XML協議描述文檔的設計與實現(Design and implementation of XML protocol description document)

本文提出的網絡協議解析器需要在異構融合網絡中扮演“解釋者”的角色[6]。在異構融合網絡中,設備與設備之間往往不是一對一的關系,而是一對多、多對一的關系。而作為一個異構融合網絡往往意味著隨著時間的流逝,設備的數量和種類即協議的種類是不斷遞增和更新的,而不同的協議對數據解析的顆粒度往往不同[7]。除此之外,由于網絡中數據量大且完成一次任務時不同協議切換較頻繁,因此對解析器和描述文件便有以下要求:協議可替換和可增減,數據解析顆粒度可伸縮,協議切換要迅速。

為了滿足以上設計要求,本文利用XML自身具有的樹形結構和節點之間的父子層級關系,可以很好地支持協議的增減替換,并對設備本身的協議按照字段分塊,規定最小解析單位,由此達到解析顆粒度的自由選擇。

為了滿足協議的動態切換和增減,本文利用面向對象的思想設計了一個協議管理器,該管理器在內存中管理多個協議。因為目前計算機中的內存大多使用DDR4內存,而DDR4的傳輸速率可達2,133—3,200 MT/s[8]。因此在解析器初始化時,將描述網絡協議的XML文件以特定的數據結構存儲在內存中可以有效解決計算機IO資源的阻塞和浪費,并采用懶加載的方式對協議文件進行動態擴容。

3.1? ?XML協議描述文檔設計

本文提出的協議描述文件的XML標簽主要有根標簽frames、協議標簽frame、塊標簽block、最小解析標簽seg、可變長字段標簽random、循環標簽loop和時間標簽time。各個標簽的主要功能如表1所示。

XML文件的樹形關系和XML協議描述文檔實例如圖2、圖3所示。

3.2? ?解析協議數據結構設計

解析協議的數據結構用于映射當前XML文件中的標簽和標簽中的屬性值,并且按照XML文件中的標簽順序對解析節點進行排列組合。程序中有關解析節點之間的類圖關系如圖4所示。

ParseableNode為SegNode、TimeNode、RandomNode和LoopNode的父類,表示可解析單位。SegNode是最小解析對象,也是整個解析鏈的節點。RandomNode、LoopNode、TimeNode和SegNode之間為聚合關系。所有的解析方式都由SegNode的實例對象完成。一個Frame對象表示一條網絡協議,并負責管理多個Block對象;Block對象則管理著ParseableNode的所有子類對象。因此在解析器加載完XML文件后,可以由此在內存中生成一個多分支解析鏈表,FrameManager對象管理所有加載的Frame對象。

3.3? ?解析結果JavaBean設計

數據流被解析器成功解析后,所有解析出來的數據都需要打上對應的標識,為后續數據的使用提供鍵值映射。得到的數據需要經過二次加工或二次內部協議的加工之后才可使用。而當兩個網絡設備使用的網絡協議不相同時,則需要描述信息來描述該數據的數據類型、來源、所屬幀等信息,因此需要設計一個JavaBean作為該數據信息的載體。該JavaBean的屬性內容如表2所示。

4? ?解析器的設計與實現(Design and implementation of the parser)

本文提出的網絡協議解析器作為網絡協議的載體,需要從XML協議解析文檔中得到單向多分支鏈表并對其進行管理。數據流到達解析器時,從多個協議中挑選對應的協議對數據流進行解析,因此需要設計一個面向軟件的協議解析器來完成協議的加載和數據的解析。本節將利用前面設計的數據結構來設計解析器并描述其解析過程。

4.1? ?解析器設計

解析器的解析功能會按照當前加載的XML協議描述文檔將數據信息從數據流中解析出來。由于數據信息在網絡中的傳遞可能會出現丟包等問題,因此解析器在解析數據流時需要對收到的數據流進行校驗,包括幀頭檢測、數據長度檢測、幀尾檢測、CRC校驗等[9],只有檢測通過才會進入下一步的數據解析工作。檢測不通過時常用的解決方式有兩種:丟棄或緩存。前者直接丟棄不完整的數據幀,可能會導致數據的丟失;后者會存儲不完整的數據幀并等待幀完整,但是會導致解析器因數據幀長時間沒有補全而發生阻塞。由于TCP/IP具有失敗重傳機制,且為了保證解析器的穩定運行,因此選用丟棄不完整數據幀的失敗機制。

4.2? ?解析器解析流程設計

解析器接收到來自某一設備發來的數據流,首先從數據流中檢測是否有幀頭信息,一旦檢測到幀頭信息就開始校驗數據長度和幀尾信息是否都符合,如果符合就進入數據的解析流程;否則就丟棄這一幀頭繼續等待下一幀數據流。解析器在解析過程中對應的狀態傳遞如圖5所示。

解析流程將按照本文第3節中所設計的數據結構,以協議驅動解析器解析數據流中的數據。解析器會先從FrameManager中匹配協議幀頭,匹配成功則開始解析;若沒有匹配成功則會進入懶加載機制,從文件中搜索對應的數據幀頭;若都沒有則放棄解析數據。解析時以block為單位分塊解析,若block標簽的pass屬性的屬性值不為1時,則進入解析;否則直接緩存對應字段的原始數據。

解析過程中的數據會使用Parsedvar類的對象存儲到鏈表中,每一個Parsedvar中都包含基本數據信息用于設備的軟件層對解析出來的數據進行處理。這時解析器不再關注當前數據信息的去向,而是交給運行在設備中的軟件決定。如果需要直接處理就直接處理,如果需要傳輸到下一個節點的設備就通過當前設備發送。

5? ?實例測試(Example test)

本文實驗使用課題組開發的通用式儀器平臺和多盒體組合式現場儀器進行實驗測試,使用組合式現場儀器搭建的自動測試設備。自動測試設備用于終端設備模擬和總系統模擬[10]。為了測試本文提出的解析器的異構性和通用性,通過在模擬總系統上使用該解析器,解析來自擁有不同網絡協議的模擬終端設備的網絡數據。因此可以將解析器是否成功解析出不同模擬終端設備發送的數據,并成功響應該請求作為該解析器是否達到解析異構融合網絡要求的檢驗標準。

實驗設備:X86架構的計算機、通用式儀器開發平臺、多盒體組合式現場儀器。

實驗設計:計算機和多盒體組合式現場儀器使用網口連接,通過客戶端控制多盒體組合式現場儀器作為模擬總系統向模擬終端設備發送命令,接收模擬終端設備上發出的數據。如果模擬終端設備可成功接收到來自模擬總系統的廣播數據和指令數據,模擬總系統可以接收到模擬終端設備上傳的數據且后面板解析成功并將解析的數據通過客戶端展示,則表明本文所提出的解析器符合要求。

本文提出的協議解析器已經作為jar包嵌入通用式儀器開發平臺搭建的測試仿真程序的組件庫中,并按照當前開發平臺的組件開發要求,將解析器以組件的形式對其進行仿真實驗。

5.1? ?實驗環境搭建

本實驗使用Java的SWT技術搭建了一套地測測試設備客戶端,客戶端包含需要發送命令的命令樹,后面板開啟和停止按鈕用于控制后面板程序,協議解析表單則記錄當前實驗中所有通過本文提出的協議解析器應對不同網絡協議解析出來的數據,如圖6所示。

利用通用式儀器開發平臺搭建后面板程序如圖7所示,其中的ProtoParseModule組件就是由本文提出的協議解析器提供的解析接口所編寫的。

按照本文提出的XML文件標簽定義和層級關系編寫XML協議描述文件。該協議描述文件的部分內容如圖8、圖9所示,可以看到數據遙測和數據注入返回內容兩者的協議格式完全不同,如果可以使用解析器成功解析出數據信息則表示解析器具有通用性和異構性。

5.2? ?實驗

進行異構網絡協議解析器實驗測試,流程圖如圖10所示。

按照實驗流程,通過客戶端依次向后面板程序發送指令,后面板程序通過透傳的方式向組合式儀器發送指令;組合式儀器模擬各項設備并產回傳數據;回傳數據按照不同的數據幀格式返回給后面板程序;后面板程序利用本文提出的解析器解析該數據幀,并將解析后的數據鏈返回給客戶端展示。實驗結果如圖11所示。

客戶端發送的原始數據如圖12所示。

從實驗結果可以看出,解析器成功解析兩個不同網絡協議的數據,即數據遙測中的電壓電流數據和數據注入返回內容的溫度值,并在客戶端頁面中展示得到電壓電流和檢測點溫度變化數據。通過比對模擬終端設備的發送原始數據,本文提出的異構網絡協議解析器解析出的數據和發送端一致。

6? ?結論(Conclusion)

本文提出的基于XML的網絡協議解析器是一種網絡數據解析的軟件方法。針對XML文件結構具有異構性的特點,設計了本文提出解析器的XML標簽協議描述文檔,用戶只需要按照指定的格式描述設備的網絡協議即可在異構融合網絡中實現多個設備的信息交互。實驗結果表明,通過該解析器可以成功解析出不同設備的不同應用層協議。通過對協議解析XML文件中標簽的組合和標簽的屬性修改可以完成解析跳過、循環解析和可變長區域的數據解析等復雜情況,驗證了本文提出解析器的有效性、通用性,以及對異構融合網絡的支持性高等特點。同時,也表明本文所提出的軟件解析方法可以在工程研究、測試自動化、工業控制等領域推廣使用。

參考文獻(References)

[1] KATZ R H, BREWER E A. Case for wireless overlay networks[D]. Berkeley: Univ. of California, Berkeley, 1996.

[2] 趙宇,殷樹娟,李翔宇.一種可重構以太網數據包解析器中可重構單元的設計[J].計算機工程與科學,2020,42(02):220-228.

[3] 苗力心.軟件定義協議轉換關鍵技術研究[D].鄭州:戰略支援部隊信息工程大學,2020.

[4] 何卓桁,劉志勇,李璐,等.異構文本數據轉換中XML解析方法對比研究[J].計算機工程,2020,46(07):286-293,299.

[5] 盧憲.廣域監控系統的可重構協議解析器設計與開發[D].南京:南京理工大學,2009.

[6] 王孝龍,劉勤讓,林森杰.一種支持異構協議解析的可配置解析器設計[J].計算機應用研究,2018,35(06):1830-1833.

[7] 張會麗.異構融合網絡聯合資源分配算法研究[D].重慶:重慶郵電大學,2014.

[8] 張瑋.計算機內存及發展趨勢[J].電腦知識與技術,2018,14? (35):224-225.

[9] 王永娜,趙奎,王鴻亮,等.針對異構協議的動態解析器模型[J].計算機系統應用,2017,26(01):251-254.

[10] 王新亮,陳凱,薛琪琪,等.基于1553B總線的飛控軟件測試仿真平臺設計[J].計算機測量與控制,2020,28(11):12-15,20.

作者簡介:

蔣錁沅(1997-),男,碩士生.研究領域:機電系統集成,軟件開發.

李曉明(1976-),男,博士,副教授.研究領域:機電系統集成,軟件開發.本文通訊作者.

中文天堂最新版在线www-bt天堂网www天堂-电影天堂