劉斌 郭西洋 金少澄
(第七一五研究所,杭州,310023)
水下多通道信號(hào)采集傳輸陣列是將水聽器鑲嵌在電纜上形成線列陣,主要用于水下目標(biāo)探測(cè)、遠(yuǎn)程監(jiān)視、測(cè)向和識(shí)別[1]。以太網(wǎng)是20世紀(jì)80年代開始普遍采用的網(wǎng)絡(luò)技術(shù)[2],也是水下多通道信號(hào)采集傳輸陣列應(yīng)用最為常見的網(wǎng)絡(luò)技術(shù)。水下多通道信號(hào)采集傳輸陣列多采用環(huán)路網(wǎng)絡(luò)結(jié)構(gòu),結(jié)構(gòu)中包含許多個(gè)網(wǎng)絡(luò)模塊,每個(gè)模塊通過以太網(wǎng)網(wǎng)絡(luò)芯片和前后兩個(gè)網(wǎng)絡(luò)模塊連接,將鏈路兩端連接至處理模塊,從而形成一個(gè)環(huán)路。由于水下多通道信號(hào)采集傳輸陣列工作環(huán)境復(fù)雜,工作時(shí)發(fā)生以太網(wǎng)傳輸鏈丟包檢測(cè)與定位難度大,針對(duì)此問題,本文提出多種故障定位技術(shù)方案,能夠幫助故障檢修人員快速故障定位。
水下多通道信號(hào)采集傳輸陣列是由一系列的采集傳輸模塊組成,每個(gè)模塊同步采集多個(gè)水聽器的水聲信號(hào)。大規(guī)模的采集傳輸陣列已成為一個(gè)發(fā)展趨勢(shì),以太網(wǎng)數(shù)據(jù)傳輸壓力變大,傳輸鏈路丟包故障已成為陣列調(diào)試和運(yùn)行過程中發(fā)生頻率較高的故障之一,因此研究丟包故障定位技術(shù)具有重要的工程價(jià)值。常見的采集傳輸陣列由一段段子陣組成,圖1為常見的子陣拓?fù)洌欢巫雨噧?nèi)可以包含多個(gè)采集傳輸模塊,通過以太網(wǎng)鏈路連接。本文提出的丟包故障定位技術(shù)方案僅考慮因采集傳輸模塊之間的以太網(wǎng)數(shù)據(jù)傳輸鏈路導(dǎo)致的,不考慮系統(tǒng)中其他因素。為了保證數(shù)據(jù)傳輸?shù)陌踩壳岸际遣捎铆h(huán)路連接方式,設(shè)計(jì)了冗余備份,因此每條子陣內(nèi)包含兩組以太網(wǎng)數(shù)據(jù)傳輸鏈路。
子陣間數(shù)據(jù)傳輸鏈路依然通過以太網(wǎng)鏈路連接,形成整個(gè)采集傳輸陣列以太網(wǎng)數(shù)據(jù)傳輸鏈路。尾段子陣的以太網(wǎng)傳輸鏈路通過尾段連接器進(jìn)行連接(如圖 1所示),首段子陣通過以太網(wǎng)連接到處理模塊或者測(cè)試模塊,用于進(jìn)行數(shù)據(jù)采集或以太網(wǎng)傳輸鏈路丟包故障測(cè)試與定位。
圖1 采集傳輸陣列子陣拓?fù)?/p>
系統(tǒng)由帶寬及穩(wěn)定性測(cè)試模塊和丟包定位模塊組成:前者用于測(cè)試以太網(wǎng)傳輸鏈路的數(shù)據(jù)帶寬、延遲抖動(dòng)和數(shù)據(jù)包丟失,粗略判斷系統(tǒng)以太網(wǎng)丟包問題;丟包定位模塊中包含多種丟包檢測(cè)方法,用于精確定位丟包位置,以實(shí)現(xiàn)對(duì)以太網(wǎng)傳輸鏈路的丟包故障全面分析。
丟包故障定位系統(tǒng)所包含的兩個(gè)模塊可以從整個(gè)采集傳輸陣列進(jìn)行整體帶寬測(cè)試和丟包判斷,也可以針對(duì)采集傳輸陣列中某一段或者某幾段子陣進(jìn)行丟包故障分析。
2.2.1 帶寬及穩(wěn)定性測(cè)試模塊
該模塊用于測(cè)試以太網(wǎng)傳輸鏈路的數(shù)據(jù)帶寬和數(shù)據(jù)包丟失,有兩個(gè)以太網(wǎng)物理接口,其中一個(gè)發(fā)送以太網(wǎng)廣播數(shù)據(jù)包給子陣內(nèi)每一個(gè)采集傳輸模塊,測(cè)試數(shù)據(jù)再經(jīng)轉(zhuǎn)發(fā),經(jīng)過整條以太網(wǎng)數(shù)據(jù)傳輸鏈路到達(dá)另一接口。對(duì)數(shù)據(jù)包進(jìn)行解析并判斷數(shù)據(jù)包中的具有順序標(biāo)識(shí)的字段進(jìn)行丟包判斷。該模塊測(cè)試數(shù)據(jù)流如圖 2。模塊具備單向發(fā)送測(cè)試功能(從其中一個(gè)接口發(fā)送測(cè)試數(shù)據(jù)到另一個(gè)接口)和雙向發(fā)送測(cè)試功能(兩個(gè)接口同時(shí)發(fā)送數(shù)據(jù)至另外一個(gè)接口)。同時(shí)該測(cè)試模塊可以手動(dòng)調(diào)整測(cè)試帶寬,如果以太網(wǎng)傳輸鏈路出現(xiàn)丟包,可以測(cè)試出以太網(wǎng)傳輸鏈路丟包的臨界帶寬值,作為后續(xù)測(cè)試方案的一個(gè)參考值。
圖2 帶寬及穩(wěn)定性測(cè)試模塊測(cè)試數(shù)據(jù)流
2.2.2 丟包定位模塊
該模塊中包含端口校驗(yàn)、數(shù)據(jù)回環(huán)、錯(cuò)誤信息查詢等在內(nèi)的多種丟包檢測(cè)方法,用于精確定位以太網(wǎng)傳輸鏈路的丟包位置,以實(shí)現(xiàn)對(duì)以太網(wǎng)傳輸鏈路的丟包故障全面分析。
端口校驗(yàn)方法使用傳統(tǒng)的數(shù)據(jù)丟包檢測(cè)。首先接收每一個(gè)采集傳輸模塊的采樣數(shù)據(jù)包,對(duì)數(shù)據(jù)包進(jìn)行解析并依據(jù)數(shù)據(jù)包中的具有順序標(biāo)識(shí)的字段進(jìn)行丟包判斷。該方法可以通過采集數(shù)據(jù)中的奇偶標(biāo)識(shí)判斷出具體某一個(gè)采集傳輸模塊的丟包情況和丟包位置。測(cè)試方法架構(gòu)如圖3所示。
圖3 端口校驗(yàn)方法測(cè)試架構(gòu)
使用數(shù)據(jù)回環(huán)方法測(cè)試時(shí),模塊可單獨(dú)連接首段子陣,通過發(fā)送指定網(wǎng)絡(luò)數(shù)據(jù)包到子陣內(nèi)任意一個(gè)指定采集傳輸模塊,再通過回環(huán)進(jìn)行數(shù)據(jù)包返回。該方法通過校驗(yàn)返回?cái)?shù)據(jù)包進(jìn)行以太網(wǎng)傳輸鏈路丟包故障分析。測(cè)試方法架構(gòu)如圖4所示。
圖4 數(shù)據(jù)回環(huán)方法測(cè)試架構(gòu)
錯(cuò)誤信息查詢方法用于查詢整條傳輸鏈路上采集傳輸模塊內(nèi)網(wǎng)絡(luò)芯片的信息,對(duì)讀取到的信息進(jìn)行接收發(fā)送數(shù)據(jù)包情況統(tǒng)計(jì),可以通過該方法進(jìn)一步確認(rèn)是哪一個(gè)采集傳輸模塊發(fā)生的丟包故障。
當(dāng)基于以太網(wǎng)傳輸鏈路的丟包故障定位系統(tǒng)接入到到采集傳輸陣列中,各個(gè)測(cè)試模塊和測(cè)試方法依次進(jìn)行測(cè)試,每項(xiàng)測(cè)試結(jié)果作為后續(xù)測(cè)試結(jié)果的參考,同時(shí)后續(xù)測(cè)試結(jié)果作為前面測(cè)試項(xiàng)的驗(yàn)證,實(shí)現(xiàn)對(duì)基于以太網(wǎng)傳輸鏈路的丟包故障定位。
丟包故障定位工作流程如圖5所示。首先通過帶寬及穩(wěn)定性測(cè)試模塊進(jìn)行以太網(wǎng)傳輸鏈路的數(shù)據(jù)帶寬和數(shù)據(jù)包丟失測(cè)試,如果出現(xiàn)丟包,可以測(cè)試出丟包的臨界帶寬值,作為后續(xù)丟包故障定位的一個(gè)參考值。其次通過丟包定位模塊進(jìn)一步精確故障位置,使用端口校驗(yàn)方法進(jìn)行以太網(wǎng)數(shù)據(jù)傳輸丟包定位。
圖5 丟包故障定位流程
如果丟包將會(huì)有如下四種情況:固定采集傳輸模塊頻發(fā)丟包、固定采集傳輸模塊偶發(fā)丟包、無規(guī)律單個(gè)或多個(gè)采集傳輸模塊頻發(fā)丟包、無規(guī)律單個(gè)或多個(gè)采集傳輸模塊偶發(fā)丟包,根據(jù)測(cè)試結(jié)果進(jìn)行后續(xù)丟包故障定位。再次通過數(shù)據(jù)回環(huán)方法進(jìn)行以太網(wǎng)回環(huán)丟包定位,如果以太網(wǎng)傳輸鏈路出現(xiàn)丟包將會(huì)通過雙邊回環(huán)測(cè)試交叉驗(yàn)證定位到具體的采集傳輸模塊。最后通過錯(cuò)誤信息查詢方法查詢整條以太網(wǎng)數(shù)據(jù)傳輸鏈路的網(wǎng)卡(或者網(wǎng)絡(luò)芯片)的信息。該測(cè)試方法進(jìn)一步確認(rèn)是哪一個(gè)以太網(wǎng)傳輸網(wǎng)卡(或者網(wǎng)絡(luò)芯片)發(fā)生的丟包故障。
該模塊用于測(cè)試以太網(wǎng)傳輸鏈路的數(shù)據(jù)帶寬和數(shù)據(jù)包丟失。其中一個(gè)測(cè)試模塊連接首段子陣中的一個(gè)采集傳輸模塊1,其中另一個(gè)測(cè)試模塊連接首段子陣中的采集傳輸模塊N,形成以太網(wǎng)數(shù)據(jù)傳輸通路。測(cè)試數(shù)據(jù)包通過UDP(User Datagram Protocol)廣播技術(shù)向其所在局域網(wǎng)的指定端口廣播[3],數(shù)據(jù)包采用軟件定時(shí)發(fā)送,長(zhǎng)度和定時(shí)可以手動(dòng)設(shè)置。設(shè)數(shù)據(jù)包長(zhǎng)度為L(zhǎng)x,數(shù)據(jù)包軟件定時(shí)為Tx,則數(shù)據(jù)鏈路檢測(cè)帶寬為(Lx+42)×1000/Tx×8/1 000 000 Mbps,其中42為以太網(wǎng)UDP數(shù)據(jù)包頭部字節(jié),Lx可以根據(jù)采集傳輸模塊的特性進(jìn)行手動(dòng)設(shè)置,Lx和Tx共同設(shè)置數(shù)據(jù)測(cè)試帶寬。通過其中的一個(gè)以太網(wǎng)接口發(fā)送的測(cè)試數(shù)據(jù)傳輸?shù)搅硗庖粋€(gè)接口,對(duì)數(shù)據(jù)包進(jìn)行解析并依據(jù)順序標(biāo)識(shí)判斷是否丟包。當(dāng)采集傳輸鏈路發(fā)生數(shù)據(jù)丟包時(shí),測(cè)試數(shù)據(jù)在終端進(jìn)行解析順序標(biāo)識(shí)時(shí)不連續(xù)。該測(cè)試模塊主要特點(diǎn)是數(shù)據(jù)帶寬是可以手動(dòng)調(diào)整的,測(cè)試數(shù)據(jù)帶寬設(shè)置較大,定位能力更強(qiáng)。
如前所述每條子陣內(nèi)包含兩組以太網(wǎng)數(shù)據(jù)傳輸鏈路,采集傳輸陣列子陣中的采集傳輸模塊有兩個(gè)以太網(wǎng)數(shù)據(jù)傳輸接口:端口 1、端口 2(測(cè)試方法架構(gòu)如圖3)。端口校驗(yàn)方法丟包定位模塊具備兩個(gè)以太網(wǎng)物理接口:端口A、端口B。采集傳輸模塊之間互相接形成一條雙向鏈路:鏈路端口1連接至以太網(wǎng)接口A、鏈路端口2連接至以太網(wǎng)接口B,形成雙向環(huán)路。采集傳輸模塊發(fā)送數(shù)據(jù)時(shí),在數(shù)據(jù)幀中某特定字段標(biāo)識(shí)數(shù)據(jù)包計(jì)數(shù)值,數(shù)據(jù)包計(jì)數(shù)值是一個(gè)從1~65 536循環(huán)遞增的數(shù),步進(jìn)為1。將奇數(shù)的包從1號(hào)端口發(fā)往接口A,將偶數(shù)的包從2號(hào)端口發(fā)往接口B。該方法用傳統(tǒng)的數(shù)據(jù)丟包檢測(cè)接收每一個(gè)采集傳輸模塊的采樣數(shù)據(jù)包,對(duì)數(shù)據(jù)包進(jìn)行解析并判斷數(shù)據(jù)包中的具有順序標(biāo)識(shí)的字段進(jìn)行丟包判斷。若奇數(shù)的包丟失,判斷端口1所在鏈路發(fā)生故障;若偶數(shù)的包丟失,則判斷端口2所在鏈路可能發(fā)生故障。該測(cè)試模塊可以通過標(biāo)識(shí)的奇偶判斷出具體某一個(gè)采集傳輸模塊的丟包情況和丟包鏈路方向。
該測(cè)試方法能夠指定特定模塊進(jìn)行回環(huán)測(cè)試,用于精確定位以太網(wǎng)傳輸鏈路的丟包位置。目前支持的工具有Ping命令[4]和軟件命令查詢包,該測(cè)試模塊可單獨(dú)連接首段子陣,同時(shí)也可以連接尾段子陣進(jìn)行交叉驗(yàn)證。該測(cè)試方法通過Ping命令指向某一個(gè)具體的采集傳輸模塊,發(fā)送Ping命令數(shù)據(jù)包,采集傳輸模塊通過回環(huán)進(jìn)行數(shù)據(jù)包響應(yīng)返回到丟包定位模塊的以太網(wǎng)接口,通過校驗(yàn)返回?cái)?shù)據(jù)包進(jìn)行以太網(wǎng)傳輸鏈路丟包故障分析。
該方法的丟包故障判定過程如圖6所示。丟包定位模塊具備兩個(gè)以太網(wǎng)物理接口連接:端口A、端口B,數(shù)據(jù)回環(huán)測(cè)試方法通過以太網(wǎng)A向采集傳輸模塊依次發(fā)送Ping測(cè)試包時(shí),前X-1個(gè)采集傳輸模塊沒有發(fā)生丟包故障,第X個(gè)采集傳輸模塊發(fā)生Ping丟包故障;數(shù)據(jù)回環(huán)測(cè)試方法通過以太網(wǎng)B向采集傳輸模塊依次發(fā)送Ping測(cè)試包時(shí),前N-X+1個(gè)采集傳輸模塊沒有發(fā)生丟包故障,第N-X+2個(gè)采集傳輸模塊發(fā)生Ping丟包故障;通過雙向的交叉驗(yàn)證,定位丟包故障位置在第X-1個(gè)采集傳輸模塊和X個(gè)采集傳輸模塊之間所在鏈路可能發(fā)生故障。軟件命令查詢包同Ping包檢測(cè)機(jī)制一致,通過自定義軟件協(xié)議和采集傳輸模塊通訊,依次檢測(cè)鏈路丟包情況。Ping命令回環(huán)測(cè)試在Windows上使用時(shí)僅可以改變數(shù)據(jù)包大小,在Linux上使用時(shí)可以自定義數(shù)據(jù)包大小和檢測(cè)時(shí)間間隔以加大檢測(cè)數(shù)據(jù)帶寬,提高故障定位的能力,所以通常使用Linux系統(tǒng)作為丟包定位模塊數(shù)據(jù)回環(huán)測(cè)試方法的運(yùn)行環(huán)境,Linux使用測(cè)試樣例如下:
通過“-i”參數(shù)設(shè)置發(fā)包延時(shí)時(shí)間,通過“-s”參數(shù)設(shè)置數(shù)據(jù)包大小,降低延時(shí)時(shí)間和增大數(shù)據(jù)包大小均能夠提高測(cè)試帶寬。該測(cè)試方法的優(yōu)勢(shì)在于可以指定某一個(gè)可能存在鏈路丟包問題的模塊進(jìn)行測(cè)試,可以大大縮小檢測(cè)對(duì)象的范圍,方便調(diào)試人員進(jìn)行丟包故障分析。
圖6 數(shù)據(jù)回環(huán)測(cè)試方法測(cè)試過程
該測(cè)試方法用于查詢整條以太網(wǎng)數(shù)據(jù)傳輸鏈路的網(wǎng)卡(或者網(wǎng)絡(luò)芯片)的信息,當(dāng)經(jīng)過前述測(cè)試模塊和測(cè)試方法檢測(cè)后,傳輸鏈路仍有故障,可以使用該方法查詢整條以太網(wǎng)鏈路上的網(wǎng)絡(luò)芯片的接收、發(fā)送數(shù)據(jù)包情況,主要關(guān)注統(tǒng)計(jì)信息中的錯(cuò)誤信息[5],如果查詢到某網(wǎng)卡(或者網(wǎng)絡(luò)芯片)的某一個(gè)端口存在錯(cuò)誤信息,結(jié)合前述測(cè)試模塊及測(cè)試方法判斷可能存在故障的傳輸鏈路,可以定位丟包故障在該采集傳輸模塊所查詢網(wǎng)卡的鏈路上。該方法的特點(diǎn)是查詢到的錯(cuò)誤信息可以準(zhǔn)確定位丟包故障位置。
由于水下多通道信號(hào)采集傳輸陣列工作環(huán)境復(fù)雜,工作發(fā)生傳輸鏈丟包故障時(shí)故障檢測(cè)與定位難度大,這對(duì)測(cè)試人員提出了極高的挑戰(zhàn)。為了幫助測(cè)試人員更快地發(fā)現(xiàn)和定位以太網(wǎng)傳輸鏈路丟包問題,本文基于以太網(wǎng)傳輸鏈路的特性,提出多種故障定位技術(shù)方案,能夠幫助故障檢修人員進(jìn)行快速故障定位。通過對(duì)各個(gè)模塊檢測(cè)信息的整合處理,為測(cè)試人員提供更加準(zhǔn)確的信息,便于采集傳輸陣列的維護(hù),能夠節(jié)省較多的調(diào)試時(shí)間和檢修成本。