?

可變報文格式編解碼模塊設計與實現*

2016-12-09 03:52劉澤平
電訊技術 2016年11期
關鍵詞:壓縮算法編解碼數據類型

劉 相,劉澤平

(華北計算技術研究所,北京100083)

可變報文格式編解碼模塊設計與實現*

劉 相**,劉澤平

(華北計算技術研究所,北京100083)

為適應現代戰爭數字化的軍事需求,解決戰場環境下需要傳輸的信息種類和數量日益增多以及網絡帶寬受限等問題,設計了可變報文格式(VMF)編解碼模塊,作為底層消息傳送的技術支撐。利用動態鏈接庫、JSON(Java Script Object Notation)、Snappy(壓縮算法)等技術為上層應用提供消息的編解碼服務,設計基于JSON的可變長報文模板、比特流集成壓縮算法、基于JSON的數據字典結構,實現報文的“按需發送”,根據不同的發送需求,動態地組合報文內容。實驗顯示所設計的模塊編碼解碼只需3 ms左右,而參考系統編解碼則需耗時200 ms以上,可見速率提升明顯,數據流長度也進一步縮短。

可變格式報文;編解碼模塊;JSON;數據字典;比特流集成壓縮

近年來,我國有不少科研機構針對性地開展了報文編解碼領域的理論技術研究,并針對某類系統、某種特定目標建立了報文協議模型和數據字典原型[3-6]。但為了應對未來更為復雜的戰場環境,在支持報文自由組報、平臺遷移、報文快速解析、信息安全等方面,仍需進一步研究。

本文在對報文協議進行充分歸納研究的基礎上,進行編解碼模塊設計,將抽象化的戰術數據報文標準的功能、語義、結構及語法規則等方面內容轉換為結構良好的報文模板及計算機可識別的統一的數據結構,作為與上層應用交互的數據接口;再結合跨平臺技術與加密機制,設計實現了可變報文格式的編解碼模塊;并通過多種類型的報文展示驗證了編解碼模塊的應用效果,證明了技術方法的可行性。

2 需求分析

VMF作為一種主要應用于指揮控制系統中的信息格式標準,保障指揮對象在帶寬有限的戰場環境能夠安全實時地傳輸指揮控制信息。典型的編解碼模塊需要包括自由組報、計算機自動識別處理、可以進行面向比特的數字信息操作。因此,指揮控制信息系統中的編解碼模塊應具備以下五方面能力:

(1)自由組報的能力

能在組報時實現報文的可變長,根據作戰需求在組報的過程中自適應地增刪報文數據字段,確保發送的報文中不會有任何冗余的字段。

(2)快速解析處理報文能力

在作戰環境中,能夠通過高級程序語言快速解析報文結構,處理報文信息,具備在短時間內處理大量報文的能力,使接收端不會出現大量報文囤積的情況。

(3)信息安全能力

能基于數據元素字典和集成壓縮算法,對原始報文信息或數據進行兩層加密,確保在戰場上傳遞的軍事機密不會輕易地被敵方截獲。

(4)跨平臺能力

具備靈巧的體系結構,能用較小的空間存儲報文結構以及數據元素字典的完整信息,報文相關文件不需人工轉換便能應用于多種系統或平臺。

(5)報文數據源擴展能力

具備開放的體系結構,基于報文模板參數庫,能自適應地增加、修改想定的報文種類、相關參數。

3 系統方案設計

3.1 模塊的體系結構

研究工作主要針對報文編解碼的各種技術,通過VMF報文通用描述格式、數據字典、集成壓縮算法實現對可變長報文的編解碼功能,設置比特計數器實現對報文各字段的按位操作;接收任意可變形式的報文進行解析,將解析完成的結果存放在一個結構統一的雙鏈表進行管理,這樣對報文的操作就轉換成對雙鏈表的操作,方便對JSON(Java Script Object Notation)文件解析完成后對報文的后續操作,并通過集成壓縮算法對編碼解碼完成后的數據流進行處理,進一步降低傳輸數據量。編解碼流程如圖1所示。

圖1 編解碼流程Fig.1 Encoding and decoding process

編解碼模塊可以分成三部分實現:一是使用數據結構將抽象的報文協議描述出來;二是編解碼程序的設計和實現,將待編碼的報文信息存儲到數據結構中;三是壓縮算法在編解碼模塊內部的集成,在接口內部封裝LZ4、Snappy、Zlib 3種壓縮算法,計算機編碼過程中自動選擇具有最高壓縮率的算法對報文信息進行處理,壓縮后的數據流長度進一步縮短,有效節省了傳輸帶寬。

3.2 關鍵技術

3.2.1 基于DLL的通用型標準接口

報文編解碼模塊為上層應用提供標準動態鏈接庫接口函數,上層應用只需要調用接口就可以完成對報文數據的編碼和解碼工作。在實際應用中,需對VMF協議進行分析、總結,從而提煉出統一的數據結構,如圖2所示。

圖2 基于DLL接口的完整調用流程Fig.2 Complete call flow based on DLL interface

3.2.2 基于JSON的VMF消息結構設計

VMF消息語法主要通過數據標識符(DATA)、字段出現標識符(FPI)、字段重復次數標識符(FRT)、組出現標識符(GPI)、組重復次數標識符(GRT)來定義,VMF根據包含、省略、重復字段、組(即字段組合)等控制消息來實現消息的長度和格式的自由可變。

可變格式報文消息由若干個數據字段、指示符、組、重復組、組嵌套組成,因此,VMF協議中應用的數據類型往往錯綜復雜,需要提供一種統一、支持多種數據類型的報文結構描述方式,這里采用JSON語言對報文進行描述。JSON文檔適合作為一種跨平臺協議標準的基本格式。當對上層應用傳來的數據進行編解碼時,依據數據的功能類型在文件系統中查找對應的JSON文件,在JSON文件中的數據元素對報文進行組幀,完成后即可以進行比特編碼操作。JSON語言定義的數據元素標識使得編解碼接口對于VMF數據結構解析速率更快,定義簡潔高效,格式規范。

(1)DATA基本數據元素

最基本的數據元素包括了字段名稱、DFI、DUI等屬性,類似于下列結構:

{"FIELD":

{"NAME":"6013",

"DFI":"4003",

"DUI":"023",

}

}

在實際操作中通過唯一的DFI/DUI值實現對數據元素的快速索引。NAME存儲數據元素名稱。

(2)FPI數據域出現標識

{"FIELD":

{"NAME":"6013", "DFI":"4003",

"DUI":"023",

"-minOccurs":"0", "-maxOccurs":"1",

}

}

屬性minOccurs表示該數據元素最小出現次數,maxOccurs表示該數據元素最大出現次數,這里的minOccurs只能為0,maxOccurs只能為1。通過minOccurs與maxOccurs的組合實現該數據元素的省略或出現。

(3)GPI組出現標識

{"GROUP":

{"-NAME":"坐標",

"-minOccurs":"0", "-maxOccurs":"1",

}

……}

包含組名稱、組最小出現次數、組最大出現次數等屬性,組內包含若干數據元素字段。(4)FRT數據域重復次數標識

{"FIELD":

{"NAME":"6013", "DFI":"4003",

"DUI":"023",

"-minOccurs":"0",

"-maxOccurs":"100",

}

}

區別于FPI,FRT中的minOccurs可以是小于等于maxOccurs的任意正整數,maxOccurs為大于等于0的任意正整數。通過FRT可以實現對多個相同類型的數據元素在VMF消息中的增刪組合。

(5)GRT組重復次數標識

{"GROUP":

{"-NAME":"坐標",

"-minOccurs":"0",

"-maxOccurs":"100", }

……}

GRT中的minOccurs和maxOccurs實現對多個相同類型的組在VMF消息中的組合。為了程序中報文解析操作,增加了組開始標志(BGI)和組結束標志(BFI)。

3.2.3 基于JSON的數據字典技術

針對報文解析過程中出現的數據存儲無序、查詢和調用不方便等問題,采用JSON文件來保存數據字典中對于數據模型的所有約束信息。

表1和表2為數據字典庫中關于國家及地區的數據表。在此定義1個數據結構,將其數據結構名設為CountryDic。DFI的編號是“6013”,DUI的編號是“001”,最大值以及最小值的變量為“unsigned short”型,這決定了消息字段的取值范圍。步長分子(PACE_NUMERATOR)和步長分母(PACE_DENOMINATOR)為“long”型變量,兩者決定了數據元素值的精度范圍。

表1 消息字典數據表Tab.1 Message dictionary table

表2 編碼字典表Tab.2 Coding dictionary table

采用JSON來描述“國家”數據元素:

{"ELEMENT":

{

"DFI":

{"-ID":"6013",

"DUI":{

"-ID":"001",

"TYPE":"unsigned char", "MIN_VALUE":"0",

"MAX_VALUE":"255",

"PACE_NUMERATOR":"1", "PACE_DENOMINATOR":"1"

}}}

"VALUE": {

"-NAME":"國家",

"ID":"0","#text":"未知",

"ID":"1","#text":"中華人民共和國"

}}

(1)ELEMENT對象:數據字典的根元素。作為JSON文檔的第一層對象,“ELEMENT”包含“DFI”對象和“VALUE”對象,“DFI”元素是這個數據字典的最主要部分,它含有表1里面的所有信息,“VALUE”元素有表2里的所有信息。

(2)DUI對象:第三層目錄,包含了表1中除DFI、DUI之外的其他屬性?!盌UI”元素中字段 ID為”001”時,域值名稱為”國家”。

(3)TYPE對象:包含了域值字段的數據類型,主要的數據類型有char、unsigned char、int、double、float等。

(4)MAX_VALUE和MIN_VALUE對象:當數據元素的數據類型為字符類型時,MAX_VALUE和MIN_VALUE用來表示數據元素字段的長度范圍,單位為b。

(5)PACE_NUMERATOR對象和PACE_DENOMINATOR對象:有當數據元素字段數據類型為浮點數時,使用PACE_NUMERATOR和PACE_DENOMINATOR,當需要表示的浮點數的精度是萬分之一時,PACE_NUMERATO的值為1,PACE_DENOMINATOR的值為10 000,比特數值1用來表示0.000 1。

(6)VALUE對象:和DUI一樣,都是第三層對象,表2的全部引用數據都被包括在里面,包括當數據元素字段作為編碼字段時的編碼值及其所表示的含義,并將表1中“名稱”作為數據元素名稱。

對于不同類型的元素編碼的編碼規則如下:

(1)當數據類型(TYPE)為整型(char、unsigned char、bool、short、unsigned short、int、unsigned int、long等)時,PACE_NUMERATOR和PACE_DENOMINATOR的值恒為1。假定當前要編碼的數值為M,對于M可以進行如下表示:

式中:N是M與該元素最小值的差;MIN_VALUE>0時,N要比M小,對N進行編碼要比M短;dn-1、dn-2…d0為轉換后得到的二進制序列值。

(2)當數據類型(TYPE)為浮點數類型時:

N=(M-MIN_VALUE)·

(PACE_NUMERATOR·PACE_DENOMINATOR)-1。(3)式中:M為所需要編碼的十進制數值;PACE_NUM RATOR為步長分子;PACE_DENOMINATOR為步長分母;N為待轉換為二進制序列的值,最后通過公式(1)將N轉換為二進制序列。

舉例:假定某偵查站于2016年6月18日15時30分30秒,在方位為東經109°、北緯32°發現異常目標,通信車通過可變報文格式將這一消息實時傳遞給指揮部。根據上述編碼規則編碼后數據如表3所示。

表3 報文數據結構實例Tab.3 Example of message data structure

3.2.4 編解碼算法

編解碼算法首先都需要通過JSON文件得到報文字段的DFI、DUI和名稱,在JSON數據字典中找到相應的字典元數據,將解析文件得到的元數據全部存儲到雙鏈表節點中,構造出來一個鏈表。雙向鏈表中每個節點代表報文體中的一個數據元素,鏈表節點內存有所有報文節點的信息。最終形成的雙鏈表結構如圖3所示。

圖3 消息的鏈表結構Fig.3 Linked list structure of message

在編碼算法中,對存儲有報文結構的雙向鏈表進行遍歷,根據數據域的標識類型,當標識類型為DATA,則從字節數組中取值后添加到比特數組;若為FPI,則FPI的值為1時,對下一個數據域編碼,否則跳過下一個數據域。GPI的值為1時,對下一組編碼,否則跳過該組。FRT、GRT的值決定該數據域、組重復出現的次數。

3.2.5 集成壓縮算法

壓縮是在保證有用數據不損失的前提下,縮減二進制數據量以達到傳輸過程節約網絡帶寬、提升傳輸效率的目的。壓縮算法對于數據類型具有很強的依賴性,同一種壓縮算法對于不同的數據壓縮后的壓縮比可能差異很大,針對這個問題,我們提出在報文編解碼系統中集成3種壓縮算法,讓計算機自動選擇出具有最佳效果的壓縮算法,算法流程如圖4所示。本系統中集成了Snappy(在谷歌內部被廣泛使用的C++解壓縮包)、LZ4(世界上速度最快的壓縮工具之一)和Zlib(壓縮率高的壓縮包),編碼完成后的二進制數據流長度為Length,通過Snappy、LZ4、Zlib壓縮后長度 Snappy_length、LZ4_length、Zlib_length,計算機自動選擇具有最優壓縮效果的數據流進行傳輸。接收方收到發送方傳輸過來的數據流后選擇對應的解壓算法解壓之后再交由編解碼接口編碼。此外,壓縮算法也作為一種加密手段提升了報文安全性。

圖4 集成壓縮算法流程Fig.4 Flow chart of the integrated compression algorithm

4 系統應用效果

4.1 實驗方法與數據

定義了報文4(420x00x10)想定模型:報文長度為420 B;00表示算術類型;01表示字符類型;02表示既有算術類型又有字符類型;10表示有重復數據;11表示無重復數據。

為進一步檢驗編解碼模塊在各種情況下數據處理效能,針對報文長度、數據類型、有無重復數據設計了9種報文應用場景,建立了報文1 (210x00x10)、報 文2(210x01x10)、報 文3 (210x02x10)、報 文4(420x00x11)、報 文5 (420x01x11)、報 文6(420x02x11)、報 文7 (420x00x11)、報文 8(420x01x11)和報文 9 (420x02x11)等9個想定報文模型。

4.2 結果分析

實驗采用與參考系統中進行對比的方法,收集整理9組報文數據在不同系統的編解碼模塊中運行1 000次的編碼和解碼時間以及編解碼后報文長度,取最后的平均值作為實驗結果,如表4所示。

表4 編解碼時間與報文長度表Tab.4 Encoding and decoding time and message

從圖5的實驗結果可知,對于長度較短的報文1、2、3,編碼后報文壓縮比相同;對于長度較長的報文,參考編解碼模塊與本系統編解碼對于算術類型報文編碼效果接近于一致,都具有極高的壓縮效果。然而,當兩種編解碼模塊對相同的字符類型報文編碼時,參考編解碼模塊編碼效果極差,本系統編碼后的壓縮比比參考系統壓縮比高出40%。對比報文5和報文8的壓縮比發現,當報文中存在一定量重復值時,本系統的編碼解碼效率更高。由此可知,本系統的編解碼模塊既延續了之前編解碼模塊擅長對算術類型報文的優點,又在對字符型報文數據編碼能力方面得到了增強。

圖5 編碼模塊壓縮率Fig.5 Compression ratio of coding module

從圖6可知,參考系統的編解碼模塊編碼解碼動輒耗時幾百毫秒,這也意味著原有的編解碼模塊1 s只能編碼解碼幾條報文??赡軙嬖谶@樣的情況:幾十個乃至上百個系統同時向一個系統發送報文消息,由于報文的解析處理速率不夠快,將會導致接收端系統囤積大量待解析的報文。而改進后的編解碼模塊編解碼耗時只需幾毫秒,意味著相同時間內能處理的報文數量變得更多,能夠有效緩解報文囤積的情況。

圖6 編碼模塊耗時Fig.6 Consuming time for encoding and decoding

5 結束語

基于VMF的報文編解碼模塊為VMF報文提供高性能標準化編碼和解碼方案,解決了實際應用中報文數據結構定義、數據字典結構定義、雙鏈表報文解析、報文數據源動態擴展等關鍵問題,實現了報文的自由組報功能。本文提出了在報文編解碼模塊中集成壓縮算法,進一步減輕了多余報文字段造成傳輸帶寬浪費的情況,減少了傳輸時延,對報文的使用也更加靈活方便,按位操作報文,而不是局限于字節,同時也提高了報文信息的安全性和對報文的解析速率,適合條件受限的環境下使用。相較于以往的編解碼技術,本文中的編解碼技術進一步降低了報文長度,但并不代表沒有進一步提升解析效率的空間,這一領域也將成為下一步研究的重點。

[1] 張曉紅.基于 VMF的作戰指揮信息短報文實現方法[J].艦船電子工程,2008,28(7):66-68. ZHANG Xiaohong.Implement method of short message for army command based on VMF[J].Ship Electronic Engineering,2008,28(7):66-68.(in Chinese)

[2] 楊猛,田暢.VMF的發展前景展望[J].四川兵工學報, 2009(1):111-112. YANG Meng,TIAN Chang.The development prospect of VMF[J].Journal of Sichuan Ordnance,2009(1):111-112.(in Chinese)

[3] 羅捷,潘江峰,耿修堂.某協議報文編解碼模塊的設計與實現[J].火炮發射與控制學報,2013(3):37-40. LUO Jie,PAN Jiangfeng,GENG Xiutang.Design and relization of message coding&decoding module of some protocol[J].Journal of Gun Launch&Control,2013(3):37 -40.(in Chinese)

[4] 廖龍靈,南建設.體系結構設計技術及應用[J].電訊技術,2014,54(4):408-411. LIAO Longling,NAN Jianshe.Techniques and applications of architecture design[J].Telecommunication Engineering,2014,54(4):408-411.(in Chinese)

[5] 耿臘元,毛玉泉,丁笑亮,等.基于VMF的近距空中支援應用研究[J].艦船電子工程,2009(7):9-12. GENG Layuan,MAO Yuquan,DING Xiaoliang,et al.Research on close air support application based on variable format[J].Ship Electronic Engineering,2009(7):9-12. (in Chinese)

[6] 康瑞琪,葛利嘉,張振宇.短波通信多組空時編碼中等效MIMO模型ZF解碼[J].電訊技術,2016,56(8): 906-912.

KANG Ruiqi,GE Lijia,ZHANG Zhenyu.Effective MIMO model zero-forcing decoding for multi-group space-time coding in HF communications[J].Telecommunication Engineering,2016,56(8):906-912.(in Chinese)

劉 相(1992—),男,四川南充人,2014年獲學士學位,現為碩士研究生,主要研究方向為體系結構設計與仿真;

LIU Xiang was born in Nanchong,Sichuan Province,in 1992.He received the B.S.degree in 2014.He is now a graduate student.His research concerns system structure design and simulation.

Email:George_xl@163.Com

劉澤平(1966—),男,重慶人,碩士,研究員,主要研究方向為軍事信息系統總體及系統集成。

LIU Zeping was born in Chongqing,in 1966.He is now a senior engineer of professor with the M.S.degree.His research concerns military information systems and systems integration.

Design and Implementation of a Variable Message Format Coding and Decoding Module

LIU Xiang,LIU Zeping
(North China Institute of Computing Technology,Beijing 100083,China)

In order to adapt to the military requirement of modern war digitization and solve the problems of increasing amounts and types of information need to be transmitted in the battlefield environment and constrained network bandwidth,a decoding module of variable message format(VMF)is designed as the technical support of underlying message.Using dynamic link library,Java Script object notation(JSON),Snappy and other technology,it can provide the service of message codec for the upper application.The design is based on the template of JSON,bit stream integrated compression algorithm and the data dictionary structure JSON,and then realizes the message sent"on demand"and the combination of dynamic message content according to the different delivery requirements.The experiment shows that coding and decoding only takes about 3 ms in the designed module,while the original decoding system takes over 200 ms.Obviously, it can increase the rate,and further shorten the length of the encoded data stream.

variable message format(VMF);coding and decoding module;Java script object notation (JSON);data dictionary;bit stream integrated compression

1 引 言

隨著世界各國軍事科技的快速發展,傳統的通信和指揮控制方式已經難以滿足指揮員對戰場信息獲取和新型武器對信息系統的需求,傳統的作戰指揮信息的傳輸處理方式已不能滿足信息的高實時性和安全性的要求。傳統的作戰指揮信息采用固定格式報文進行傳輸,固定格式報文內容均為預先定義的,而作戰過程中很多信息卻是暫時不需要傳輸的,報文在傳輸過程中會產生大量的數據冗余,浪費了有限的網絡帶寬[1]??勺冮L報文編解碼技術的出現解決了傳輸過程中的數據冗余等問題。為了適應未來信息化戰爭的要求,美軍從20世紀50年代就開始研制使用戰術數據鏈,先后發展了 Link1、Link4A/4C、Link11、Link14、Link16、Link22等數據鏈,并從16號數據鏈使用的戰術數字信息鏈技術中發展了可變報文格式(Variable Message Format, VMF)技術,并于2004年正式發布為獨立的VMF標準,作為美軍大力發展的數據鏈報文格式[2]。

The Special Fund Project of National Ministries and Commissions(No.403060101)

**通信作者:George_xl@163.Com George_xl@163.Com

TN919.3

A

1001-893X(2016)11-1260-07

10.3969/j.issn.1001-893x.2016.11.014

2016-07-22;

2016-09-08

date:2016-07-22;Revised date:2016-09-08

國家部委專項資金資助項目(403060101)

引用格式:劉相,劉澤平.可變報文格式編解碼模塊設計與實現[J].電訊技術,2016,56(11):1260-1266.[LIU Xiang,LIU Zeping.Design and implementation of a variable message format coding and decoding module[J].Telecommunication Engineering,2016,56(11):1260-1266.]

猜你喜歡
壓縮算法編解碼數據類型
ASN.1 的PER 分層運行庫系統的設計和實現
如何理解數據結構中的抽象數據類型
1553B總線控制器編解碼設計
基于參數識別的軌道電路監測數據壓縮算法研究
為多重編解碼世界做好準備
大型民機試飛遙測視頻編解碼方法研究
一種基于嵌入式實時操作系統Vxworks下的數據壓縮技術
基于SeisBase模型的地震勘探成果數據管理系統設計
線上眾籌產品的特征分析與研究
相似度計算及其在數據挖掘中的應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合