?

飛行試驗中UDP數據包丟失和失序處理研究

2018-07-05 06:04周訓強
計測技術 2018年2期
關鍵詞:失序數據包網絡化

周訓強

(中國飛行試驗研究院,陜西 西安 710089)

0 引言

隨著我國航空工業的不斷發展,研制型號和試飛型號不斷增加,飛行試驗中測試參數越來越多,數據流量也越來越大,使得集中式采集、分布式采集等傳統的機載數據采集系統架構已經不能滿足測試技術要求。2004年10月由美國發起的iNET項目開發技術得到了廣泛的支持并在數年內形成了比較成熟的技術框架和技術發展路線[1]。在國內,飛行試驗測試領域一直跟蹤iNET的發展,于2012年提出了空天地一體化遙測網絡系統[2-3]。

得益于國內試飛測試技術的迅速發展,基于以太網技術的高帶寬多數據流傳輸和記錄在飛行試驗中得以廣泛應用,機載網絡化數據采集記錄系統的概念及相關產品應運而生。

機載網絡化數據采集記錄系統的一般架構為:多臺采集器通過以太網掛接到網絡交換機,在交換機上進行數據包匯聚,再由同樣掛接在交換機上的網絡化記錄器對這些數據包進行接收記錄。更為龐大的測試系統(采集終端數量多)甚至存在多級交換機的級聯,而這些設備采用統一的時間源進行時間同步[4]。網絡化測試系統的廣泛應用使得基于以太網的高帶寬多數據流的傳輸和分析成為了飛行試驗領域的研究熱點。

1 失序和丟包分析與處理

1.1 失序和丟包分析

在飛行試驗領域,目前以太網數據包的傳輸主要采用TCP和UDP協議。TCP采用面向連接的數據管理策略并通過重傳保證數據可靠傳輸,多用于傳輸通信和控制數據包等可靠性要求高的場合。但對于高帶寬數據,頻繁的確認和重傳無法保證數據的實時傳送要求,因此一般采用無連接的UDP傳輸協議,其目的是減少不必要的網絡開銷,提高傳輸帶寬和傳輸效率。正因為如此,UDP傳輸協議不提供可靠性、流量控制和差錯恢復的手段[5]。

通常,在機載網絡化測試系統中,數據從發送端到目的端要經過若干的中間節點,節點與節點之間對數據的傳輸會產生延時。由于不同數據包可能經過不同的中間節點到達目的端,因此總的延時也不同,這導致數據包到達目的端的順序與期望順序可能不同,即失序。此外,由于緩沖區的溢出,數據包可能被中間節點拒絕,使得數據包丟失[6]。很顯然,數據失序不滿足試飛數據分析對數據時間相關性的嚴格要求。為了滿足數據分析時的時間相關性要求,需要對發生失序的數據進行重排,對丟失的數據進行補點。為此,在期望數據包全部到達之前要將到來的數據包暫存于一個緩沖區內。由此帶來的問題:緩存區的大小如何確定;暫存數據在緩沖區的存放規則是什么;發生丟包時如何處理。下文將對這些問題進行討論和分析。

1.2 重排緩存區的確定

根據網絡交換機對數據包的緩存及轉發原理,在網絡拓撲結構、網絡中的設備不發生改變,以及數據包在網絡按周期規律傳輸的情況下,逆序情況也是穩定的,從實際的機載網絡化測試系統中的數據包樣本的時間標簽的統計計算結果來看,也證明了這一點。機載網絡化測試系統中,每種網絡數據包的時間周期都是毫秒級(1/1024 ms~1/16 ms)的,對于一段完整的數據包樣本,在考察其逆序情況時,只需分析其中1 s時間跨度內的數據包的逆序情況即可。

根據飛行試驗中網絡數據包傳輸大多具有周期性的特點,假設網絡中的數據包的種類(一般由包識別字確定)為n種,它們的傳輸周期分別為T1,T2,T3,…,Tn。根據上文的論述,在發生失序的情況下,需要開辟緩存區來對失序的數據包進行重排,而對失序情況進行量化是確定緩存區大小的重要工作,其方法是在網絡數據包發送的目的端對接收的網絡數據包時間標簽做統計計算,假設在1 s內接收到的數據包的個數為N,它們的時間標簽分別為t1,t2,t3,…,tN,對相鄰的兩個包的時間標簽進行如下計算

Δti=ti+1-ti(i=1,2,3,…,N)

式中:Δti為逆序時間,在Δti<0情況下,對|Δti|求最大值Δtmax,Δtmax為最大逆序時間。

逆序時間是對機載網絡化測試系統中數據包逆序情況的量化描述,求出一個滿足如下條件的最小值T。①T為T1,T2,T3,…,Tn的最小公倍數;②T≥Δtmax。

需要說明的是,之所以采用2個大小為L的緩存區來對數據包進行排序,而不是采用更多個數的緩存區,是考慮到盡量減小因排序帶來的時間延時。

1.3 排序算法的分析與實現

以實際的飛行試驗數據為例,進行排序算法的分析?,F有某型號某架次飛行試驗數據的A,B,C三種網絡數據包,周期分別為1,2,4 ms,那么順序情況下,數據包的接收情況應如表1所示。

表1 順序情況下的數據包接收情況

緩沖區的數據包排列順序為A0B0C0A1A2B1A3A4B2C1A5A6B3A7,記為順序X。而真實的情況是該數據樣本有逆序情況發生,數據包的到達情況如表2所示。

表2 逆序情況下的數據包接收情況

緩沖區的數據包排列順序為A0A1A2B0A3A4B1A5A6B2A7C0A8B3A9A10A11C1A12A13A14A15C2,記為順序Y,經統計,最大逆序周期為7 ms。

當到達的數據包發生失序的情況時,需要在保證到達的數據包能夠全部緩存下來的前提下,對數據包進行重新排序,以達到時間對齊的目的。在發生丟包或者失序的情況下,重新排序的過程就是將緩存區數據包的排序情況由Y變成X的過程。

當數據包按照表1中的規律到達時,將數據包內的時間標簽在0~7 ms的數據包按照表1的數據包排列規律放入緩存區H1中,將數據包內的時間標簽在8~15 ms的數據包按照表1的數據包排列規律放入緩存區H2中,接下來,在16 ms時刻,A16包到達,根據最大逆序時間的概念,表明0~7 ms時間段的數據包已經全部接收完畢(如果緩存區H1仍未填滿,表明0~7 ms時間段的數據包有丟包發生),此時可以將之前其它任務(數據處理任務或數據存儲任務)中的數據存放緩存區清空,然后將A16按照表1中的數據包排放規律放入緩存區H1。需要強調的是,如果當前數據包較前一數據包的時間跨度大于7 ms,即大于T,表明已經開始接收到新的時間段的數據包,此時需要考察數據包的時間標簽tm與緩存區內數據包的時間跨度(tn,tn+7)的關系,判斷tm是否屬于(tn,tn+7)區間,如果當前數據包不屬于緩存區H1,H2中的任何一個,則需要將緩存區H1,H2中時間靠前的緩存區進行數據包的完整性檢查并對丟失的數據包按照相應的方法進行補齊,接下來將緩存區提交至其它任務后清空,然后將A16按照表1的數據包排放規律放入緩存區。具體的算法流程圖如圖1所示。

采用C++高級程序語言實現了上文所述算法[7]。

2 算法應用

在實現主要算法的基礎上,完成了網數據處理軟件的設計開發[8],為了驗證排序算法的正確性,使用本軟件對兩個不同型號飛機的多架次飛行數據進行處理。圖2是某型號飛機某架次飛行記錄的某時間段原始數據的相關信息。其中,鍵值表示包的識別字,序號表示該鍵值的包的當前個數。從圖2中排序前的信息可以看出,數據包發生了失序。圖2中的右圖是排序后的數據包信息,可見已實現時間對齊。

圖1 數據包排序算法流程圖

圖2 排序前后數據包順序對比圖

本文提出的關于數據包的丟失和失序處理算法可以在飛行時間內的網絡數據包實時接收時應用,以保證進入機載記錄設備的數據包已經按照時間順序進行存儲。如果在飛行時間內由于機載測試系統軟硬件資源的限制,不便對數據包進行實時排序,也可以在事后數據預處理環節中使用本算法。兩種使用場合算法完全一致,無需作任何更改。

3 結論

通過對UDP傳輸協議和機載網絡化測試系統數據包傳輸過程的分析,說明了數據包發生失序和丟失的原因。鑒于飛行試驗數據處理分析對數據的時間相關性的嚴格要求,提出了開辟適當的緩存區來對失序的數據包按照時間排序的詳細算法;之后,對緩存區大小的確定和排序算法進行了詳細的論述,并在數據處理軟件中實現了該算法的設計開發;最終的應用效果表明,該算法成功解決了飛行試驗網絡化測試系統中發生失序和丟包情況下的數據處理問題。

[1]iNET system Architecture Version 2007.1[EB/OL].http//www.irig106.org.

[2]楊廷梧.新型遙測系統中網絡化測試技術展望[J].測控技術,2010,29(Z):141-145.

[3]白效賢,楊廷梧,袁炳南.航空飛行試驗遙測技術發展趨勢與對策[J].測控技術,2010,29(11):6-9.

[4]楊廷梧,王云山,滕斌.飛行試驗遙測機載測試技術的發展與應用[J].測控技術,2013,32(4):5-8.

[5]Stevens W.R.TCP/IP詳解.卷1,協議[M].北京:機械工業出版社,2008.

[6]魯宏偉.基于UDP傳輸協議的包丟失和失序處理[J].計算機工程與應用,2001,37(2):48-49.

[7]張永強(譯).C++高級編程[M].北京:清華大學出版社,2015.

[8]陳堅.Visual C++網絡高級編程[M].北京:人民郵電出版社,2001.

猜你喜歡
失序數據包網絡化
二維隱蔽時間信道構建的研究*
民用飛機飛行模擬機數據包試飛任務優化結合方法研究
越控制,越失序
越控制越失序
越控制,越失序
C#串口高效可靠的接收方案設計
基于最優樹的網絡化作戰裝備體系結構優化
在失序中選擇
基于HDS和CANopen多品牌PLC網絡化控制實驗平臺搭建
網絡化時代社會認同的深刻變遷
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合