彭漁露,馬莉,王百彥,強(qiáng)帆
(西昌衛(wèi)星發(fā)射中心,西昌 615000)
在一個典型的以太網(wǎng)絡(luò)中,采集設(shè)備使用UDP協(xié)議向數(shù)據(jù)處理計算機(jī)發(fā)送狀態(tài)采集數(shù)據(jù)。數(shù)據(jù)處理計算機(jī)通過計算和分析采集數(shù)據(jù),判斷設(shè)備或系統(tǒng)工作是否正常。在數(shù)據(jù)傳輸過程中,時常會出現(xiàn)網(wǎng)絡(luò)丟包現(xiàn)象,會漏掉一些重要的狀態(tài)數(shù)據(jù)。為了避免此類情況出現(xiàn),必須對丟包問題進(jìn)行分析定位。
通過總結(jié)分析,如果在網(wǎng)絡(luò)傳輸過程中出現(xiàn)偶發(fā)性丟包(如1~2個數(shù)據(jù)包丟失),可認(rèn)為是由于提供不可靠傳輸,產(chǎn)生的概率性丟包,屬于正常現(xiàn)象。而以下三種情況屬于常見的數(shù)據(jù)丟包問題需要排查解決。
(1)網(wǎng)絡(luò)設(shè)備引起的丟包。
(2)采集設(shè)備引起的丟包。
(3)數(shù)據(jù)處理方法引起的丟包[1-2]。
各采集設(shè)備將數(shù)據(jù)通過網(wǎng)絡(luò)發(fā)送到數(shù)據(jù)處理計算機(jī),由數(shù)據(jù)處理計算機(jī)處理完后,將結(jié)果再通過網(wǎng)絡(luò)發(fā)送到上位機(jī)顯示軟件。處理流程如圖1所示。
圖1 數(shù)據(jù)處理計算機(jī)處理流程
按照圖1的數(shù)據(jù)處理流程,出現(xiàn)丟包問題后通常采用以下的方法進(jìn)行發(fā)現(xiàn)和定位。
1.2.1 人工觀察法
對可以畫成曲線的數(shù)據(jù),由多人工對每一條曲線進(jìn)行放大后逐段觀察。當(dāng)曲線數(shù)量較多時,很有可能出現(xiàn)觀察遺漏,而且該方法對人員的工作壓力較大、效率較低。如圖2所示。
圖2 顯示軟件丟包觀察示意圖
2.2.2 計算機(jī)輔助判定法
一般情況下,計算機(jī)輔助判斷通常采用數(shù)據(jù)內(nèi)部的一些特征來判斷,例如北京時間或者包的序號等。通過判斷數(shù)據(jù)的連續(xù)性,得到丟包的時刻。但該方法通常只能判斷是否有網(wǎng)絡(luò)丟包,如果要定位問題位置則需要人工進(jìn)行分析定位。
定位丟包問題首先檢查數(shù)據(jù)處理計算機(jī)的接收日志是否有相關(guān)接收記錄,如果有則排查數(shù)據(jù)是否在處理環(huán)節(jié)丟棄;如果沒有則排查網(wǎng)絡(luò)設(shè)備。
數(shù)據(jù)處理計算機(jī)的日志文件采用北京時間記錄數(shù)據(jù)到來時刻。通過人工觀察法發(fā)現(xiàn)丟包后,到日志文件中查找對應(yīng)丟包位置一般比較繁瑣。在曲線橫坐標(biāo)上顯示的并不是北京時間,而是以某個時刻為基準(zhǔn)的相對時間。要找到日志文件記錄的丟包點,需要將相對時加上時間基準(zhǔn)后,才能得到丟包時刻的北京時間。
若檢查到數(shù)據(jù)處理計算機(jī)未收到該數(shù)據(jù),則需在交換機(jī)等網(wǎng)絡(luò)設(shè)備中抓包分析。由于交換機(jī)的記錄數(shù)據(jù)通常包含了其他類型的通信數(shù)據(jù)[3],查找分析效率低。若交換機(jī)日志中未發(fā)現(xiàn)該數(shù)據(jù),則需要再向前回溯網(wǎng)絡(luò)節(jié)點和采集設(shè)備。在實際丟包問題的排查過程中,需要占用較長時間。丟包問題分析流程如圖3所示。
圖3 丟包問題分析流程圖
采集設(shè)備以固定頻率發(fā)送采集數(shù)據(jù)[4],數(shù)據(jù)中包含了2種時間信息和1種包序列信息,在數(shù)據(jù)接收環(huán)節(jié)記錄數(shù)據(jù)到來的時間,共有4種與時間或時序有關(guān)的信息。將這4種信息分別定義為數(shù)據(jù)生成時間(Data Time,簡稱DT),數(shù)據(jù)包頭時間(Packet Time,簡稱PT),數(shù)據(jù)包序號(N umber,簡稱N),接收時間(Receive Time,簡稱RT)。其中DT、PT、RT時間格式為“時-分-秒-毫秒”的北京時間,N為自然數(shù)。這4種數(shù)據(jù)產(chǎn)生源如圖4所示。
圖4 4種時序相關(guān)數(shù)據(jù)產(chǎn)生部位示意圖
設(shè)ΔT為兩個相鄰數(shù)據(jù)時間相減的結(jié)果,ΔT=T n-T n-1。ΔT是DT、PT、RT中任意一種時間。如果數(shù)據(jù)未出現(xiàn)數(shù)據(jù)丟包,則ΔT為常數(shù),有ΔT1=ΔT2=…ΔT n。如 果 出 現(xiàn) 丟 包,ΔT發(fā) 生變化。
設(shè)ΔN為兩個相鄰數(shù)據(jù)包序號相減的結(jié)果,ΔN=N n-N n-1。如果數(shù)據(jù)未出現(xiàn)數(shù)據(jù)丟包,則ΔN為1。如果出現(xiàn)丟包,ΔN不為1。
將ΔT和ΔN數(shù)據(jù)畫到同一坐標(biāo)系中進(jìn)行分析對比。特征對比如圖5—圖12所示。
圖5 正常狀態(tài)
圖12 數(shù)據(jù)中斷
圖9 DT環(huán)節(jié)時間滯后 (大于固定頻率)
圖10 DT環(huán)節(jié)時間超前(小于固定頻率)
在出現(xiàn)的以上特征中,圖6需要結(jié)合其他記錄節(jié)點的數(shù)據(jù)進(jìn)一步定位問題。圖7為通信設(shè)備問題,圖8至圖11則為設(shè)備問題,圖12為采集設(shè)備或者網(wǎng)絡(luò)引起的數(shù)據(jù)中斷。
圖6 DT或PT或網(wǎng)絡(luò)傳輸環(huán)節(jié)丟包
圖7 網(wǎng)絡(luò)傳輸環(huán)節(jié)阻塞
圖8 PT環(huán)節(jié)網(wǎng)絡(luò)阻塞
圖11 PT環(huán)節(jié)時間不穩(wěn)
采用時序分析快速定位的方法,在出現(xiàn)丟包問題后能快速的定位故障點[7]。若要讓該方法達(dá)到較好的效果,必須選擇合理的記錄方式,規(guī)劃數(shù)據(jù)節(jié)點進(jìn)行監(jiān)控,解決存在的依賴問題。
為盡量減小對原有設(shè)備和網(wǎng)絡(luò)的改變,數(shù)據(jù)的記錄采用數(shù)據(jù)旁路方式。當(dāng)采集設(shè)備與數(shù)據(jù)處理計算機(jī)使用UDP點播協(xié)議時,在交換機(jī)上做鏡像端口,將流過指定端口的數(shù)據(jù)復(fù)制一份到鏡像端口,再從該鏡像端口上進(jìn)行采集記錄。當(dāng)采集設(shè)備與數(shù)據(jù)處理計算機(jī)使用組播協(xié)議傳輸,則讓同一網(wǎng)段的計算機(jī)加入組進(jìn)行采集記錄。
從理論的角度來說,數(shù)據(jù)記錄節(jié)點越多越好,但考慮到實際工程應(yīng)用,不建議在所有的網(wǎng)絡(luò)節(jié)點進(jìn)行部署。本方法在使用時,僅對通信節(jié)點和數(shù)據(jù)處理計算機(jī)的相關(guān)網(wǎng)絡(luò)部署數(shù)據(jù)記錄監(jiān)控軟件。
在時序分析法中,DT、PT、N的數(shù)據(jù)均由采集設(shè)備產(chǎn)生。采集設(shè)備和數(shù)據(jù)記錄計算機(jī)中有均有NTP時間服務(wù),可以較好的保證DT、PT和RT的時間精度。
為實現(xiàn)實時數(shù)據(jù)丟包的快速定位分析,將軟件分為兩個配置項實現(xiàn),其中一個配置項為數(shù)據(jù)記錄軟件,另一個配置項為數(shù)據(jù)分析軟件。該軟件采用C++語言開發(fā),采用Qt制作軟件界面,使其具備跨系統(tǒng)平臺的能力。
采集設(shè)備在進(jìn)行數(shù)據(jù)傳輸?shù)倪^程中,設(shè)備可能會有多種傳感器,會發(fā)送多種不同類型的數(shù)據(jù),且頻率不同。針對同一采集設(shè)備有多種采集信息,需要對每臺采集設(shè)備的不同類型的信息分別記錄,以便進(jìn)行丟包分析。軟件界面如圖13所示。
圖13 數(shù)據(jù)記錄軟件界面
在網(wǎng)絡(luò)數(shù)據(jù)接收時,每臺采集設(shè)備使用一個獨立socket接收數(shù)據(jù),該socket收到數(shù)據(jù)后,對數(shù)據(jù)類型進(jìn)行判斷并分類記錄,同時統(tǒng)計接收包數(shù)、數(shù)據(jù)包序號、長度和記錄包數(shù)。記錄數(shù)據(jù)采用二進(jìn)制原始數(shù)據(jù)形式記錄,不同類型的信息按照“日期-設(shè)備名-信息名”的命名規(guī)則單獨記錄成文件。流程如圖14所示。
圖14 數(shù)據(jù)記錄軟件數(shù)據(jù)流程
數(shù)據(jù)分析軟件通過打開記錄文件進(jìn)行分析,軟件運行界面如圖15所示。
圖15 數(shù)據(jù)查看界面
在軟件界面中顯示數(shù)據(jù)的二進(jìn)制信息,通過對信息的分析,得到正常無丟包的圖16和有丟包的圖17界面截圖。數(shù)據(jù)分析的具體流程如圖18所示,首先打開需要分析的數(shù)據(jù)文件并讀取數(shù)據(jù),按照每行顯示一個完整數(shù)據(jù)包的方式將需要分析的數(shù)據(jù)文件全部顯示出來。然后根據(jù)前文所述的算法,對數(shù)據(jù)文件進(jìn)行分析。通過分析上下兩包數(shù)據(jù)的時間差和包序號差,統(tǒng)計得到最終的特征圖。通過分析比對特征圖,能夠定位出數(shù)據(jù)丟包的具體原因。
圖16 無丟包的分析界面
圖17 有數(shù)據(jù)丟包的分析界面
圖18 數(shù)據(jù)分析流程
本文提出將存儲記錄的相鄰數(shù)據(jù)包各時間信息相減后進(jìn)行畫圖,通過圖形特征的對比分析,快速的定位丟包問題原因和故障點,減少了由人工發(fā)現(xiàn)問題、排查定位的工作量。目前該軟件已經(jīng)部署在各設(shè)備和用戶端。從實際應(yīng)用情況來看,該方法能夠節(jié)約故障定位和分析時間,提高了分析判斷效率。其他通信網(wǎng)絡(luò)協(xié)議數(shù)據(jù)如果有類似的時間戳信息,也可以采用類似的方法快速定位丟包問題。