本發(fā)明涉及網(wǎng)絡(luò)通信領(lǐng)域,特別涉及一種分布式節(jié)點地震儀網(wǎng)絡(luò)通信方法。
背景技術(shù):
有線地震勘探儀器帶道能力強、數(shù)據(jù)質(zhì)量保障性高,占據(jù)地震勘探儀器市場的絕大份額。但有線地震設(shè)備施工作業(yè)成本高,且不能應(yīng)用于山區(qū)、溝壑、河流、鐵路等復(fù)雜地形。節(jié)點地震儀摒棄了沉重的線纜,不受地形和道距的限制,是地震勘探裝備長期發(fā)展的趨勢。
通信技術(shù)是地震勘探工作中的關(guān)鍵技術(shù)之一,直接影響采集系統(tǒng)的規(guī)模與施工效率。在有線地震儀器中,電纜系統(tǒng)與外界隔離,因此有線地震儀器通信系統(tǒng)具有排列穩(wěn)定、抗干擾等優(yōu)越性。節(jié)點儀器與此不同,其核心是無線通信技術(shù)。質(zhì)量監(jiān)控系統(tǒng)的設(shè)計實現(xiàn)了采集系統(tǒng)的可控可測,完成了節(jié)點式儀器從“盲采”到“半盲采”的過渡。按照所使用的通信技術(shù),可將其分為無線局域網(wǎng)監(jiān)控系統(tǒng)和無線廣域網(wǎng)監(jiān)控系統(tǒng)。局域網(wǎng)監(jiān)控系統(tǒng)(Wi-Fi/Bluetooth)實現(xiàn)了終端設(shè)備對采集站的近程控制,廣域網(wǎng)監(jiān)控系統(tǒng)(3G/4G/北斗短報文技術(shù))實現(xiàn)了監(jiān)控中心與采集站的遠程通信。
地震勘探儀器通常以測線的方式分布在勘探區(qū)域,且每條測線長度通常為幾千米甚至上萬米。IEEE 802.15信號的最大覆蓋范圍為100米;狹義的Wi-Fi協(xié)議指的是IEEE 802.11b協(xié)議,其信號最大覆蓋范圍為300米。從信號覆蓋范圍來看,常用的無線局域網(wǎng)技術(shù)在地震勘探設(shè)備上的應(yīng)用存在距離短的缺陷,施工人員需要徒步行走較遠路程通過手持終端設(shè)備來依次監(jiān)測勘探區(qū)域中采集站的工作狀態(tài)。為增強信號的覆蓋范圍以同時監(jiān)測多個采集站,通常的做法是架設(shè)AP設(shè)備。但AP設(shè)備功率大,在野外架設(shè)比較困難,且AP設(shè)備尚不能實現(xiàn)勘探區(qū)域信號的全覆蓋。無線廣域網(wǎng)技術(shù)的引用實現(xiàn)了主控中心與采集站的遠程通信,然而衛(wèi)星網(wǎng)絡(luò)的通信速率有限,且廣域網(wǎng)技術(shù)在復(fù)雜地形環(huán)境下存在障礙盲區(qū)。微地震監(jiān)測和水力壓裂監(jiān)測等高實時性應(yīng)用對采集系統(tǒng)提出了數(shù)據(jù)現(xiàn)場回收的要求,而無線通信技術(shù)在通信距離和鏈路帶寬上相互制約使得單一的通信模式難以解決大范圍海量數(shù)據(jù)回收問題。
節(jié)點地震儀器無法在大規(guī)模、高密度的深部地震探測中實現(xiàn)數(shù)據(jù)的現(xiàn)場回收是制約其發(fā)展的主要原因。因此,無線通信技術(shù)的網(wǎng)絡(luò)化在節(jié)點式地震儀上的運用與改善迫在眉睫。為實現(xiàn)海量數(shù)據(jù)的實時回傳,必須將采集工區(qū)中的儀器全互聯(lián),并設(shè)計專用的通信方法。
技術(shù)實現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題在于提供一種分布式節(jié)點地震儀網(wǎng)絡(luò)通信方法,解決無線局域網(wǎng)技術(shù)通信距離短與無線廣域網(wǎng)技術(shù)在復(fù)雜地形下信號覆蓋率低的矛盾,為節(jié)點地震儀器提供靈活、可靠的遠程質(zhì)量監(jiān)控服務(wù),同時為大規(guī)模地震數(shù)據(jù)的實時回傳建立網(wǎng)絡(luò)模型。
本發(fā)明是這樣實現(xiàn)的,
一種分布式節(jié)點地震儀網(wǎng)絡(luò)通信方法,該方法包括如下的步驟:
步驟101:節(jié)點地震儀以靜態(tài)矩陣拓撲的方式分布在采集工區(qū),節(jié)點地震儀作為匯聚節(jié)點和傳感節(jié)點以全無線的方式覆蓋整個勘探區(qū)域,設(shè)置一服務(wù)器作為監(jiān)控中心,監(jiān)控中心與匯聚節(jié)點間通過廣域網(wǎng)通信,傳感節(jié)點與匯聚節(jié)點建立多跳網(wǎng)通信;
步驟102:在網(wǎng)絡(luò)初始狀態(tài),監(jiān)控中心架設(shè)服務(wù)器并等待匯聚節(jié)點和傳感節(jié)點的入網(wǎng)申請,匯聚節(jié)點上電后通過LTE鏈路使用TCP/IP協(xié)議族向服務(wù)器發(fā)出入網(wǎng)申請,并完成客戶與服務(wù)器的連接;
步驟103:匯聚節(jié)點作為銜接服務(wù)器和傳感節(jié)點的網(wǎng)關(guān),通過Wi-Fi鏈路使用私有網(wǎng)絡(luò)協(xié)議棧與傳感節(jié)點進行通信;
所述私有網(wǎng)絡(luò)協(xié)議棧從上至下分為應(yīng)用層、運輸層、內(nèi)容層、鏈路層和物理層,應(yīng)用層直接為用戶提供服務(wù),處理應(yīng)用數(shù)據(jù)并提供人機接口;運輸層和內(nèi)容層由數(shù)據(jù)傳輸協(xié)議和組網(wǎng)路由協(xié)議構(gòu)成;作為協(xié)議棧底層的鏈路層和物理層由網(wǎng)絡(luò)適配器填充,匯聚節(jié)點連入服務(wù)器后加載私有網(wǎng)絡(luò)協(xié)議棧,廣播Hello包并偵聽未入網(wǎng)傳感節(jié)點的入網(wǎng)請求消息;傳感節(jié)點上電后運行私有網(wǎng)絡(luò)協(xié)議棧,并通過無線適配器定時廣播入網(wǎng)請求消息;匯聚節(jié)點通過識別請求入網(wǎng)節(jié)點網(wǎng)絡(luò)適配器的SSID以判定其是否屬于該測線,若判定傳感節(jié)點屬本測線節(jié)點,則匯聚節(jié)點和傳感節(jié)點按照內(nèi)容層組網(wǎng)路由協(xié)議中的四次握手機制完成入網(wǎng)認證,在第二次握手中,匯聚節(jié)點將向傳感節(jié)點分配ID。
進一步地,四次握手機制的步驟為:將節(jié)點分為子節(jié)點與父節(jié)點,子節(jié)點加載網(wǎng)絡(luò)協(xié)議棧后廣播入網(wǎng)請求MAC幀;
當(dāng)父節(jié)點收到入網(wǎng)請求包后,先判斷是否可容納后裔節(jié)點,若不可容納后裔,則在內(nèi)容層直接丟棄此數(shù)據(jù)報;
若可容納后裔的父節(jié)點收到此MAC幀后,立即在內(nèi)容層計算子節(jié)點的ID并創(chuàng)建入網(wǎng)應(yīng)答消息,鏈路層回復(fù)的地址為子節(jié)點的MAC地址;
子節(jié)點收到入網(wǎng)應(yīng)答包后,保存父節(jié)點分配的ID信息,并將父節(jié)點加入路由表中,隨后向父節(jié)點發(fā)送入網(wǎng)確認包;
父節(jié)點收到子節(jié)點發(fā)送的入網(wǎng)應(yīng)確認后,判定子節(jié)點已成功加入網(wǎng)絡(luò),并向子節(jié)點發(fā)送入網(wǎng)完成包;
子節(jié)點收到入網(wǎng)完成消息后將判定四次握手完成,并正式加入網(wǎng)絡(luò)。
進一步地,還包括:匯聚節(jié)點與傳感節(jié)點建立父子節(jié)點關(guān)系,匯聚節(jié)點作為父節(jié)點,傳感節(jié)點作為子節(jié)點,匯聚節(jié)點向服務(wù)器發(fā)送新入網(wǎng)節(jié)點的信息;傳感節(jié)點加入網(wǎng)絡(luò)后定時廣播Hello包以維持與匯聚節(jié)點的鏈路連通,其他未入網(wǎng)傳感節(jié)點均按照四次握手機制完成入網(wǎng)認證,入網(wǎng)后的節(jié)點均定時廣播Hello包,每個新節(jié)點的加入,其ID信息將被多跳轉(zhuǎn)發(fā)至服務(wù)器,待勘探區(qū)域中的傳感節(jié)點全部入網(wǎng)后,儀器實現(xiàn)全互聯(lián),多跳網(wǎng)搭建完成。
進一步地,加入網(wǎng)絡(luò)的傳感節(jié)點與為未加入的傳感節(jié)點將建立接力式的父子節(jié)點關(guān)系,按照四次握手機制,未加入的傳感節(jié)點入網(wǎng)。
進一步地,所有節(jié)點入網(wǎng)后均定時廣播Hello包,若5次均未收到鄰居節(jié)點的Hello包,則判定對方斷網(wǎng);斷網(wǎng)節(jié)點的后裔節(jié)點將跨越故障節(jié)點連入殘余網(wǎng)絡(luò)。
進一步地,還包括:
步驟104:勘探作業(yè)之前,監(jiān)控中心向全網(wǎng)節(jié)點發(fā)出下行命令以查詢所有儀器的工作狀態(tài)并對儀器參數(shù)進行統(tǒng)一配置,數(shù)據(jù)發(fā)生交換時,接收節(jié)點首先檢測網(wǎng)絡(luò)是否擁塞,若判定擁塞,收發(fā)節(jié)點將啟動運輸層跳間擁塞控制機制,待擁塞緩解后數(shù)據(jù)開始傳遞,數(shù)據(jù)包將遍歷源節(jié)點、目的節(jié)點和所有中間節(jié)點的運輸層,并在運輸層完成數(shù)據(jù)可靠保障傳輸交付,以此實現(xiàn)數(shù)據(jù)傳輸?shù)奶g保障;應(yīng)用數(shù)據(jù)在節(jié)點內(nèi)部傳遞時,運輸層將應(yīng)用層數(shù)據(jù)分組后封裝成報文并向下交付至內(nèi)容層;內(nèi)容層對應(yīng)用層首部索引后將數(shù)據(jù)傳遞至下一跳,以此實現(xiàn)路由。
進一步地,所述步驟104還包括:在跳間擁塞控制中,控制過程分為擁塞檢測、擁塞通知和擁塞解除三階段。數(shù)據(jù)交換之前,接收節(jié)點通過設(shè)定緩沖區(qū)占有率的閾值并檢測接收隊列緩存量以判斷是否產(chǎn)生了擁塞;若節(jié)點發(fā)生擁塞,接收節(jié)點向發(fā)送節(jié)點發(fā)送擁塞通知以控制收發(fā)速率;待擁塞解除后,收發(fā)節(jié)點協(xié)調(diào)數(shù)據(jù)正常傳輸。
進一步地,所述步驟104還包括:在數(shù)據(jù)可靠保障傳輸中,若發(fā)送的數(shù)據(jù)為單包或最后一包,則接收節(jié)點在緩存發(fā)送節(jié)點的數(shù)據(jù)包后立即向發(fā)送節(jié)點回復(fù)ACK消息;若發(fā)送節(jié)點在定時時間內(nèi)未收到接收節(jié)點回復(fù)的ACK消息,則判斷數(shù)據(jù)包丟失并發(fā)起重傳;若發(fā)送的數(shù)據(jù)為多個包,接收節(jié)點在定時時間內(nèi)未完整收到數(shù)據(jù),則向發(fā)送節(jié)點發(fā)送NACK消息,請求數(shù)據(jù)包的重傳。
進一步地,監(jiān)控中心對地震儀發(fā)出的監(jiān)控命令為下行數(shù)據(jù):子節(jié)點在收到父節(jié)點轉(zhuǎn)發(fā)的數(shù)據(jù)時,判斷自身是否為目的節(jié)點,若自身為目的節(jié)點,則拆開報文并向應(yīng)用層交付;若自身非目的節(jié)點,則重新封裝首部并向子節(jié)點轉(zhuǎn)發(fā);
地震儀向監(jiān)控中心傳輸?shù)臓顟B(tài)數(shù)據(jù)為上行數(shù)據(jù):父節(jié)點在收到子節(jié)點轉(zhuǎn)發(fā)的數(shù)據(jù)時,判斷自身是否為匯聚節(jié)點,若自身為匯聚節(jié)點,則進一步將數(shù)據(jù)轉(zhuǎn)發(fā)至服務(wù)器;若自身非匯聚節(jié)點,則重新封裝首部并向父節(jié)點轉(zhuǎn)發(fā)。
進一步地,父節(jié)點收與子節(jié)點之間數(shù)據(jù)傳輸方式包括:發(fā)送節(jié)點啟動數(shù)據(jù)發(fā)送時,接收節(jié)點開始檢測自身緩沖區(qū)占有率,若判斷出自身擁塞,則立即向發(fā)送節(jié)點回復(fù)擁塞消息,并直接丟棄先前收到的數(shù)據(jù)包;發(fā)送節(jié)點收到擁塞消息后,暫停數(shù)據(jù)的發(fā)送并等待接收節(jié)點擁塞解除消息;若節(jié)點未發(fā)生擁塞或擁塞解除,則發(fā)送節(jié)點與接收節(jié)點啟動數(shù)據(jù)的交接;接收節(jié)點收到數(shù)據(jù)流完成包后,開始掃描所有報文首部以判斷數(shù)據(jù)是否完整;若數(shù)據(jù)發(fā)生丟失則向發(fā)送節(jié)點發(fā)送NACK消息;發(fā)送節(jié)點收到NACK后將重傳丟失的分組,以此類推,直至所有分組完整傳遞;若數(shù)據(jù)完整傳遞,發(fā)送節(jié)點與接收節(jié)點將收發(fā)ACK消息,數(shù)據(jù)完整交付后,接收節(jié)點內(nèi)容層判斷此時數(shù)據(jù)是否到達目的節(jié)點,若已到達目的節(jié)點,運輸層將拆掉報文的首部并拼接所有分組,最終向上交付至應(yīng)用層;若未到達目的節(jié)點,運輸層將報文拷貝至發(fā)送隊列,并進一步將數(shù)據(jù)轉(zhuǎn)發(fā)至下一跳。
本發(fā)明與現(xiàn)有技術(shù)相比,有益效果在于:
(1)構(gòu)建了廣域網(wǎng)和多跳網(wǎng)的分層架構(gòu)通信網(wǎng)絡(luò)方式。多跳的數(shù)據(jù)轉(zhuǎn)發(fā)方式解決了無線局域網(wǎng)技術(shù)通信距離短與無線廣域網(wǎng)技術(shù)在復(fù)雜地形下信號覆蓋率低的矛盾。
(2)數(shù)據(jù)多跳的地震儀網(wǎng)絡(luò)實現(xiàn)了“遠程訪問,無盲覆蓋”的通信模式,完成了對儀器運行狀態(tài)的監(jiān)控,同時為大規(guī)模地震數(shù)據(jù)的實時回傳建立了網(wǎng)絡(luò)模型。
(3)多跳網(wǎng)是以數(shù)據(jù)為中心的網(wǎng)絡(luò),依據(jù)應(yīng)用消息完成數(shù)據(jù)的轉(zhuǎn)發(fā)。
(4)運輸層跳間保障的數(shù)據(jù)傳輸協(xié)議實現(xiàn)了丟包快速恢復(fù)和擁塞的閉環(huán)控制。
(5)內(nèi)容層組網(wǎng)協(xié)議的四次握手,保障了入網(wǎng)的準(zhǔn)確與可靠。
(6)所有節(jié)點在勘探作業(yè)時無需人為控制,自組織成網(wǎng)和路由。
(7)多匯聚節(jié)點協(xié)調(diào)全網(wǎng)具有良好的擴充性,支持大規(guī)模節(jié)點互聯(lián),且網(wǎng)絡(luò)具有較好的魯棒性。
附圖說明
圖1為本發(fā)明的分布式節(jié)點地震儀通信網(wǎng)絡(luò)結(jié)構(gòu)圖;
圖2為本發(fā)明的私有網(wǎng)絡(luò)協(xié)議棧結(jié)構(gòu)圖;
圖3為本發(fā)明的運輸層報文結(jié)構(gòu)圖;
圖4為本發(fā)明的內(nèi)容層數(shù)據(jù)報結(jié)構(gòu)圖;
圖5為本發(fā)明的入網(wǎng)認證示意圖;
圖6為本發(fā)明的數(shù)據(jù)傳輸跳間可靠保障的流程圖;
圖7為本發(fā)明的數(shù)據(jù)傳輸擁塞控制過程示意圖;
圖8為本發(fā)明的父子節(jié)點間數(shù)據(jù)流傳輸流程圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明分布式節(jié)點地震儀通信方法是基于三維地震勘探拓撲結(jié)構(gòu):在二維地震勘探中,節(jié)點地震儀以測線的方式分布在勘探區(qū)域;三維地震勘探則是在二維施工排列的基礎(chǔ)上平行部署多條測線進行采集,具有靜態(tài)矩陣拓撲結(jié)構(gòu)的特點。匯聚節(jié)點和傳感節(jié)點均為節(jié)點地震儀,每個測線的數(shù)據(jù)均匯聚至匯聚節(jié)點,匯聚節(jié)點最后將數(shù)據(jù)發(fā)送至監(jiān)控中心,具有4G模塊和Wi-Fi模塊的節(jié)點地震儀為匯聚節(jié)點,只有Wi-Fi模塊的節(jié)點地震儀為傳感節(jié)點。這里的測線指的為一條從監(jiān)控中心至橢圓邊緣的水平線,每條地震測線有且只有一個匯聚節(jié)點。
如圖1所示,圖1為本發(fā)明的分布式節(jié)點地震儀通信網(wǎng)絡(luò)結(jié)構(gòu)圖。使用一臺微機(PC)作為網(wǎng)絡(luò)監(jiān)控中心的服務(wù)器,匯聚節(jié)點配備4G和Wi-Fi通信模塊,傳感節(jié)點配備Wi-Fi通信模塊;地震道間距(在一條測線中,任意兩個節(jié)點地震儀之間的歐幾里德距離為地震道間距)通常在25~75米,因此節(jié)點初始化后,相鄰節(jié)點間保持鏈路連通,且無線信號覆蓋所有采集工區(qū)。較遠的區(qū)域設(shè)置LTE基站,與監(jiān)控中心通過廣域網(wǎng)通信,一個LTE基站設(shè)置多個匯聚節(jié)點與傳感節(jié)點。
在網(wǎng)絡(luò)初始狀態(tài),運行服務(wù)器監(jiān)控軟件以偵聽匯聚節(jié)點入網(wǎng)請求消息和其余各傳感節(jié)點入網(wǎng)消息;匯聚節(jié)點初始化所有外設(shè)后,創(chuàng)建流式套接字并綁定4G網(wǎng)卡,隨后通過LTE鏈路使用TCP/IP協(xié)議族向服務(wù)器發(fā)出入網(wǎng)申請,并完成客戶與服務(wù)器的連接。其他匯聚節(jié)點以相同的方式與服務(wù)器進行連接,匯聚節(jié)點全部如網(wǎng)后,廣域網(wǎng)搭建完成。入網(wǎng)后的匯聚節(jié)點運行私有網(wǎng)絡(luò)協(xié)議棧,通過Wi-Fi鏈路廣播Hello包并偵聽傳感節(jié)點的入網(wǎng)申請消息。
本發(fā)明分布式節(jié)點地震儀通信方法的私有網(wǎng)絡(luò)協(xié)議棧針對以下特征需求進行了設(shè)計:地震儀節(jié)點排布規(guī)則且?guī)缀醪恍枰苿?、所有儀器同步采集且數(shù)據(jù)回傳具有多對一的業(yè)務(wù)模式;無線鏈路穩(wěn)定性差,數(shù)據(jù)成功到達目的節(jié)點的成功率低;地震數(shù)據(jù)必須保質(zhì)保量地傳輸至監(jiān)控中心。
如圖2所示,圖2為本發(fā)明的私有網(wǎng)絡(luò)協(xié)議棧結(jié)構(gòu)圖。協(xié)議棧從上至下分為應(yīng)用層、運輸層、內(nèi)容層、鏈路層和物理層五層。應(yīng)用層完成節(jié)點間的邏輯通信;運輸層和內(nèi)容層分別由組網(wǎng)數(shù)據(jù)傳輸協(xié)議和組網(wǎng)路由協(xié)議組成;協(xié)議棧底層(協(xié)議棧底層指的是鏈路層和物理層,Wi-Fi模塊填充了鏈路層和物理層)由無線網(wǎng)絡(luò)適配器填充。在嵌入式實現(xiàn)時,協(xié)議棧應(yīng)用層、運輸層與內(nèi)容層均在操作系統(tǒng)用戶空間中構(gòu)建,原始套接字(Raw Socket)作為內(nèi)容層與鏈路層的橋梁,可跨越操作系統(tǒng)內(nèi)核空間,實現(xiàn)數(shù)據(jù)的交接。協(xié)議棧每一層詳述如下:
(1)應(yīng)用層:應(yīng)用層處于協(xié)議棧頂層,直接為應(yīng)用進程提供服務(wù)。監(jiān)控中心向節(jié)點地震儀發(fā)出的狀態(tài)查詢、狀態(tài)設(shè)置、開始與停止采集命令等應(yīng)用層命令。應(yīng)用進程產(chǎn)生數(shù)據(jù)后,應(yīng)用層封裝應(yīng)用層首部H1后向下傳遞至運輸層;應(yīng)用層以應(yīng)用層首部H1來區(qū)分不同的消息類型。
(2)運輸層:運輸層為各節(jié)點間數(shù)據(jù)傳遞提供服務(wù),運輸層收到應(yīng)用層交付的數(shù)據(jù)后加上運輸層首部H2并向下傳遞至內(nèi)容層,運輸層首部H2用于區(qū)分不同傳輸數(shù)據(jù)類型以及檢測數(shù)據(jù)是否丟包。
如圖3所示,圖3為本發(fā)明的運輸層報文結(jié)構(gòu)圖。運輸層報文由首部和數(shù)據(jù)兩部分構(gòu)成。其中,運輸層數(shù)據(jù)為被分組后的應(yīng)用層數(shù)據(jù);運輸層首部分為五部分:報文類型、報文序號、數(shù)據(jù)總長度、運輸層數(shù)據(jù)長度和循環(huán)冗余校驗碼(Cyclic Redundancy Check,CRC)。
報文類型用于區(qū)分不同的數(shù)據(jù)流;應(yīng)用層數(shù)據(jù)交付至運輸層后是否被分組由Wi-Fi模塊的緩存而定,若數(shù)據(jù)總長度超過緩存的最大傳輸單元則需在傳輸層進行分組,報文序號則表示應(yīng)用層數(shù)據(jù)分組后的序號;數(shù)據(jù)總長度代表未分組應(yīng)用數(shù)據(jù)總長度;運輸層數(shù)據(jù)長度為本報文數(shù)據(jù)部分的長度;CRC校驗碼是整個運輸層報文的32位循環(huán)校驗值,用于檢測運輸層數(shù)據(jù)是否完整傳遞。
(3)內(nèi)容層:內(nèi)容層負責(zé)整個網(wǎng)絡(luò)的維持并在源節(jié)點和目的節(jié)點間創(chuàng)建一個連接。內(nèi)容層收到運輸層交付的數(shù)據(jù)后加上內(nèi)容層首部H3并向下傳遞至鏈路層,內(nèi)容層首部H3用于區(qū)分不同網(wǎng)絡(luò)消息、識別上行或下行數(shù)據(jù)并判斷下一跳節(jié)點地址。內(nèi)容層以數(shù)據(jù)信息為中心,對于不同類型的數(shù)據(jù)采用不同的傳輸策略。內(nèi)容層數(shù)據(jù)的傳輸單元為數(shù)據(jù)報。一個內(nèi)容層數(shù)據(jù)報由首部和數(shù)據(jù)兩部分構(gòu)成。內(nèi)容層首部由數(shù)據(jù)報類型、ID_S、ID_D和數(shù)據(jù)長度四部分組成;內(nèi)容層數(shù)據(jù)是運輸層傳遞下來的報文。
如圖4所示,圖4為本發(fā)明的內(nèi)容層數(shù)據(jù)報結(jié)構(gòu)圖。一個內(nèi)容層數(shù)據(jù)報由首部和數(shù)據(jù)兩部分構(gòu)成。內(nèi)容層首部由數(shù)據(jù)報類型、ID_S、ID_D和數(shù)據(jù)長度四部分組成;內(nèi)容層數(shù)據(jù)是運輸層傳遞下來的報文。
數(shù)據(jù)報類型分為8種:Hello、入網(wǎng)請求、入網(wǎng)應(yīng)答、入網(wǎng)確認、入網(wǎng)完成、節(jié)點斷網(wǎng)、數(shù)據(jù)上行數(shù)據(jù)和數(shù)據(jù)下行。其中,Hello、入網(wǎng)請求、入網(wǎng)應(yīng)答、入網(wǎng)確認、入網(wǎng)完成和節(jié)點斷網(wǎng)消息用于網(wǎng)絡(luò)的組建與維持,由內(nèi)容層直接發(fā)起。
數(shù)據(jù)報的邏輯通信需要源節(jié)點和目的節(jié)點的網(wǎng)絡(luò)標(biāo)識,定義ID_S與ID_D分別代表數(shù)據(jù)傳遞的源地址和目的地址(除下行數(shù)據(jù)包外)。ID_S和ID_D的值由數(shù)據(jù)報類型決定,詳情見表1。
表1 ID_S和ID_D定義表
Hello的ID_D項為空,用于鏈路維持;入網(wǎng)請求、入網(wǎng)應(yīng)答、入網(wǎng)確認和入網(wǎng)完成消息為網(wǎng)絡(luò)認證時的握手消息,因此ID_S與ID_D為對應(yīng)數(shù)據(jù)類型的ID值;節(jié)點斷網(wǎng)消息定義為廣播,因此ID_D為空。
數(shù)據(jù)上行包具有多對一的特點:數(shù)據(jù)消息均由各采集節(jié)點發(fā)送至監(jiān)控中心,因此數(shù)據(jù)上行包中首部ID_S為各源節(jié)點ID,ID_D為0。路由節(jié)點收到數(shù)據(jù)包后,若檢查到此內(nèi)容層數(shù)據(jù)報為上行數(shù)據(jù),則直接向上交付至運輸層判斷數(shù)據(jù)的完整性,待數(shù)據(jù)完整傳遞后重新封裝各層首部并轉(zhuǎn)發(fā)至下一節(jié)點。此后上行包被接力傳遞,最終到達監(jiān)控中心。
數(shù)據(jù)下行包具有一對多的特點:數(shù)據(jù)消息均由監(jiān)控中心發(fā)送至采集節(jié)點,因此下行數(shù)據(jù)首部中ID_S定義為被監(jiān)控中心選中的節(jié)點中ID最小值,ID_D定義為被選中節(jié)點中ID最大值。當(dāng)采集設(shè)備收到數(shù)據(jù)下行包時首先判斷ID_D是否大于本機ID,若大于則立即向子節(jié)點轉(zhuǎn)發(fā)。然后再判斷ID_S是否等于本機ID,若相等則判定自身被監(jiān)控中心選中。
(4)鏈路層:鏈路層收到運輸層交付的數(shù)據(jù)后加上鏈路層首部H4和鏈路層尾部T并向下傳遞至物理層,鏈路層首部H4和鏈路層尾部T用于識別下一跳節(jié)點的MAC地址、檢測MAC幀是否發(fā)生誤碼等等。
(5)物理層:物理層的任務(wù)是將鏈路層交付下來的數(shù)據(jù)轉(zhuǎn)化為物理信號。在無線網(wǎng)絡(luò)中,物理層將MAC幀轉(zhuǎn)化為相應(yīng)的比特流,完成不同網(wǎng)絡(luò)接口卡間的電磁波傳遞。
應(yīng)用數(shù)據(jù)在網(wǎng)絡(luò)協(xié)議棧中的流動過程如下:應(yīng)用進程產(chǎn)生數(shù)據(jù)后,應(yīng)用層為應(yīng)用數(shù)據(jù)封裝首部并向下傳遞;每一協(xié)議層在收到數(shù)據(jù)后,封裝該層首部并向下層傳遞;數(shù)據(jù)到達物理層后以電磁波的形式發(fā)送至接收節(jié)點。接收節(jié)點收到比特流數(shù)據(jù)后從協(xié)議棧底部向上傳遞;每一協(xié)議層接收到數(shù)據(jù)后,解析數(shù)據(jù)包并向上層遞交;應(yīng)用層收到數(shù)據(jù)后,拆開應(yīng)用層首部并執(zhí)行相應(yīng)程序段。
本發(fā)明所述通信網(wǎng)絡(luò)中,多跳網(wǎng)的組建包括傳感節(jié)點入網(wǎng)認證和鏈路維持兩部分,均由內(nèi)容層完成,詳細組網(wǎng)過程如下:
傳感節(jié)點初始化所有外設(shè)并運行私有網(wǎng)絡(luò)協(xié)議棧,隨后在操作系統(tǒng)用戶空間調(diào)用Raw Socket直接操作網(wǎng)絡(luò)適配器,并通過無線適配器定時廣播入網(wǎng)請求消息。匯聚節(jié)點通過識別請求入網(wǎng)節(jié)點網(wǎng)絡(luò)適配器的服務(wù)集標(biāo)識SSID以判定其是否屬于該測線。為了區(qū)別不同的測線,每個子網(wǎng)擁有自組網(wǎng)中唯一的SSID。若匯聚節(jié)點判定申請入網(wǎng)的傳感節(jié)點屬本測線節(jié)點,則匯聚節(jié)點和傳感節(jié)點按照內(nèi)容層路由協(xié)議中的四次握手完成入網(wǎng)認證。
如圖5所示,圖5為本發(fā)明的入網(wǎng)認證示意圖。匯聚節(jié)點與傳感節(jié)點建立父子節(jié)點關(guān)系,匯聚節(jié)點作為父節(jié)點,傳感節(jié)點作為子節(jié)點,入網(wǎng)認證全程將經(jīng)歷四次握手:子節(jié)點加載網(wǎng)絡(luò)協(xié)議棧后廣播入網(wǎng)請求MAC幀;當(dāng)父節(jié)點收到入網(wǎng)請求包后,先判斷是否可容納后裔節(jié)點。若不可容納后裔,則在內(nèi)容層直接丟棄此數(shù)據(jù)報;若可容納后裔的父節(jié)點收到此MAC幀后,立即在內(nèi)容層計算子節(jié)點的ID并創(chuàng)建入網(wǎng)應(yīng)答消息,鏈路層回復(fù)的地址為子節(jié)點的MAC地址;子節(jié)點收到入網(wǎng)應(yīng)答包后,保存父節(jié)點分配的ID信息,并將父節(jié)點加入路由表中,隨后向父節(jié)點發(fā)送入網(wǎng)確認包;父節(jié)點收到子節(jié)點發(fā)送的入網(wǎng)應(yīng)確認后,判定子節(jié)點已成功加入網(wǎng)絡(luò),并向子節(jié)點發(fā)送入網(wǎng)完成包。子節(jié)點收到入網(wǎng)完成消息后將判定四次握手完成,并正式加入網(wǎng)絡(luò)。加入網(wǎng)絡(luò)后的子節(jié)點定時廣播Hello包,并等待下一節(jié)點的入網(wǎng)申請;父節(jié)點則創(chuàng)建一個新站入網(wǎng)上行數(shù)據(jù)包,并轉(zhuǎn)發(fā)到該條測線的匯聚節(jié)點,匯聚節(jié)點進一步將數(shù)據(jù)轉(zhuǎn)發(fā)到服務(wù)器,為人機接口提供最新的網(wǎng)絡(luò)拓撲結(jié)構(gòu)。
其他未入網(wǎng)的傳感節(jié)點均按照四次握手機制完成入網(wǎng)認證,加入網(wǎng)絡(luò)的節(jié)點將建立接力式的父子節(jié)點關(guān)系,例如:在單條測線中,若是匯聚節(jié)點在測線的最左端,傳感節(jié)點由左至右分布。匯聚節(jié)點加入網(wǎng)絡(luò)后作為父節(jié)點,離匯聚節(jié)點最近的傳感節(jié)點加入網(wǎng)絡(luò)后作為子節(jié)點,入網(wǎng)的傳感節(jié)點最近的入網(wǎng)未傳感節(jié)點申請入網(wǎng)后,入網(wǎng)的傳感節(jié)點為父節(jié)點,入網(wǎng)未傳感節(jié)點為子節(jié)點。因此相鄰的節(jié)點間構(gòu)成父子關(guān)系,依次類推。在ID的分配機制中,已入網(wǎng)的節(jié)點依次遞增地為請求入網(wǎng)的子節(jié)點分配網(wǎng)絡(luò)地址,即子節(jié)點的ID為父節(jié)點ID加1。每個節(jié)點只能與自身的父子節(jié)點完成直接的信息傳遞,與鄰居節(jié)點的通信需經(jīng)過父子節(jié)點的轉(zhuǎn)發(fā)。每一個新節(jié)點加入網(wǎng)絡(luò)后,其節(jié)點信息將被多跳轉(zhuǎn)發(fā)至監(jiān)控中心。采集工區(qū)所有傳感節(jié)點全部入網(wǎng)后,多跳網(wǎng)搭建完成。多跳網(wǎng)搭建完成后,所有節(jié)點均定時廣播Hello消息;Hello確認了父子節(jié)點間的連通性,間接保證局域網(wǎng)的連通。
本發(fā)明所述私有網(wǎng)絡(luò)協(xié)議棧的運輸層針對以下特征需求進行了設(shè)計:為了實現(xiàn)數(shù)據(jù)可靠、及時的回收,數(shù)據(jù)傳輸協(xié)議必須為所有的數(shù)據(jù)提供保障,且丟失的數(shù)據(jù)能夠被快速的恢復(fù);所有采集站的狀態(tài)數(shù)據(jù)均多跳傳輸至子網(wǎng)的匯聚節(jié)點,且越靠近匯聚節(jié)點傳輸負荷越大,而網(wǎng)絡(luò)一旦超負荷運作就會發(fā)生擁塞。擁塞將產(chǎn)生大量的丟包,加劇了傳播時延,同時增加了節(jié)點的能量消耗。為了提高網(wǎng)絡(luò)整體的傳輸性能,數(shù)據(jù)傳輸協(xié)議需具備擁塞控制機制,避免并緩解網(wǎng)絡(luò)擁塞。
如圖6所示,圖6為本發(fā)明的數(shù)據(jù)傳輸跳間可靠保障的流程圖。其中NS表示發(fā)送節(jié)點、NR表示接收節(jié)點,下同。發(fā)送節(jié)點NS將報文依次發(fā)送至接收節(jié)點NR后,立即發(fā)送數(shù)據(jù)完成包并等待接收節(jié)點NR的ACK/NACK消息。接收節(jié)點NR每接收到一個報文,就將分組放入緩沖區(qū),并等待數(shù)據(jù)完成包。當(dāng)接收節(jié)點NR收到數(shù)據(jù)完成包后,立即判斷本段數(shù)據(jù)是否接收完整。
數(shù)據(jù)完整性檢查的過程如下所示:若接收節(jié)點NR判斷本段數(shù)據(jù)接收完整,則向發(fā)送節(jié)點NS發(fā)送ACK消息,并進一步將數(shù)據(jù)轉(zhuǎn)發(fā)至下一跳;若接收節(jié)點NR檢查到該段數(shù)據(jù)有丟失,則將缺失報文的序號添加至NACK的數(shù)據(jù)部分,并向發(fā)送節(jié)點NS發(fā)送NACK消息。發(fā)送節(jié)點NS收到NACK后,判斷出丟失的報文并再次向接收節(jié)點NR發(fā)送,最后發(fā)送數(shù)據(jù)流完成包。以此類推,直到發(fā)送節(jié)點NS收到接收節(jié)點NR的ACK消息。
如圖7所示,圖7為本發(fā)明的數(shù)據(jù)傳輸擁塞控制過程示意圖。在擁塞控制過程中,接收節(jié)點NR收到發(fā)送節(jié)點NS數(shù)據(jù)后,掃描運輸層報文首部中的數(shù)據(jù)總長度項,若關(guān)系式:
報文長度+隊列已緩存數(shù)據(jù)長度>緩沖隊列容量
成立,則判定網(wǎng)絡(luò)擁塞。
接收節(jié)點NR判定網(wǎng)絡(luò)擁塞后,將接收的報文加入擁塞隊列并向發(fā)送節(jié)點NS發(fā)出擁塞通知。若因不可預(yù)料因素,發(fā)送節(jié)點NS未收到擁塞通知繼續(xù)發(fā)送數(shù)據(jù)時,接收節(jié)點NR將接收數(shù)據(jù)直接丟棄并再次發(fā)送擁塞通知。發(fā)送節(jié)點NS收到擁塞通知后,暫停數(shù)據(jù)的發(fā)送。當(dāng)接收節(jié)點NR發(fā)送隊列的數(shù)據(jù)轉(zhuǎn)發(fā)完畢后,判定擁塞解除。擁塞解除后,接收節(jié)點NR將擁塞隊列中的數(shù)據(jù)拷貝至發(fā)送隊列并將擁塞隊列清空,隨后向發(fā)送節(jié)點NS發(fā)送空閑消息。發(fā)送節(jié)點NS收到空閑通知后,繼續(xù)發(fā)送先前暫停的數(shù)據(jù)。
如圖8所示,圖8為本發(fā)明的父子節(jié)點間數(shù)據(jù)流傳輸流程圖。跳間數(shù)據(jù)傳輸包括數(shù)據(jù)流隊列、擁塞控制和可靠保障三部分,且數(shù)據(jù)流傳輸僅發(fā)生在相鄰的父子節(jié)點間,其詳細流程下:發(fā)送節(jié)點NS啟動數(shù)據(jù)發(fā)送時,接收節(jié)點NR開始檢測自身緩沖區(qū)占有率,若判斷出自身擁塞,則立即向NS回復(fù)擁塞消息,并直接丟棄先前收到的數(shù)據(jù)包。發(fā)送節(jié)點Ns收到擁塞消息后,暫停數(shù)據(jù)的發(fā)送并等待接收節(jié)點NR擁塞解除消息;若節(jié)點未發(fā)生擁塞或擁塞解除,則NRNS啟動數(shù)據(jù)的交接。接收節(jié)點NR收到數(shù)據(jù)流完成包后,開始掃描所有報文首部以判斷數(shù)據(jù)是否完整。若數(shù)據(jù)發(fā)生丟失則向發(fā)送節(jié)點NS發(fā)送NACK消息。發(fā)送節(jié)點NS收到NACK后將重傳丟失的分組,以此類推,直至所有分組完整傳遞;若數(shù)據(jù)完整傳遞,NRNS將收發(fā)ACK消息。數(shù)據(jù)完整交付后,接收節(jié)點NR內(nèi)容層判斷此時數(shù)據(jù)是否到達目的節(jié)點。若已到達目的節(jié)點,運輸層將拆掉報文的首部并拼接所有分組,最終向上交付至應(yīng)用層;若未到達目的節(jié)點,運輸層將報文拷貝至發(fā)送隊列,并進一步將數(shù)據(jù)轉(zhuǎn)發(fā)至下一跳。
本發(fā)明所述私有網(wǎng)絡(luò)協(xié)議棧中,路由和數(shù)據(jù)傳輸?shù)膶崿F(xiàn)需要使用大量的定時器。若為每一個和時間相關(guān)的事件都開辟一個定時器會影響進程切換的粒度。為實現(xiàn)同一節(jié)點內(nèi)部進程間與不同節(jié)點間的高效通信,本發(fā)明配合定時器鏈表與非阻塞函數(shù)以實現(xiàn)時間管理和多個外部事件的偵聽。
網(wǎng)絡(luò)組建之前,監(jiān)控中心架設(shè)網(wǎng)絡(luò)服務(wù)器并等待匯聚節(jié)點入網(wǎng)。匯聚節(jié)點連接服務(wù)器后,創(chuàng)建Hello定時器。若定時時間到,則廣播Hello包。Hello包用于父子節(jié)點間的鏈路維持,若5次定時時間內(nèi)均未收到Hello包,則判定鏈路失效。
出于無線鏈路不穩(wěn)定的考慮,組網(wǎng)認證采用時間短和能耗小的折中方案:為保障數(shù)據(jù)包的可靠傳達,父子節(jié)點發(fā)出某一入網(wǎng)認證消息(入網(wǎng)請求/入網(wǎng)應(yīng)答/入網(wǎng)確認)后創(chuàng)建相應(yīng)定時器并等待應(yīng)答。若在定時時間內(nèi)收到對方的回應(yīng),則立即將該定時器刪除;若定時時間內(nèi)未收到應(yīng)答,則在超時時啟動重發(fā)。對申請定時器的入網(wǎng)認證消息而言,若連續(xù)3次定時時間內(nèi)均未收到對方的應(yīng)答,則判定入網(wǎng)失敗,待滿足通信條件后重新認證。
子節(jié)點加載私有協(xié)議棧后廣播入網(wǎng)請求消息并創(chuàng)建入網(wǎng)請求定時器。父節(jié)點收到入網(wǎng)請求包延時一段時間后(選擇最佳子節(jié)點)回復(fù)入網(wǎng)應(yīng)答包,并創(chuàng)建入網(wǎng)回復(fù)定時器。子節(jié)點收到入網(wǎng)應(yīng)答后刪除入網(wǎng)請求定時器,發(fā)送入網(wǎng)確認消息并創(chuàng)建入網(wǎng)確認定時器。父節(jié)點收到入網(wǎng)確認消息后刪除入網(wǎng)應(yīng)答定時器并回復(fù)入網(wǎng)完成消息。子節(jié)點收到入網(wǎng)完成消息后刪除入網(wǎng)確認定時器,四次握手完成,廣播Hello包并開啟Hello定時器。
數(shù)據(jù)可靠性傳輸過程中,收發(fā)節(jié)點申請定時器過程如下:發(fā)送節(jié)點數(shù)據(jù)流發(fā)送完畢后隨即發(fā)送數(shù)據(jù)流完成包,并創(chuàng)建數(shù)據(jù)流完成定時器。數(shù)據(jù)流完成定時器時間到時,判斷自身是否收到接收節(jié)點回應(yīng)的ACK消息或NACK消息。若收到消息ACK消息,則刪除數(shù)據(jù)流完成定時器;若收到NACK消息則重發(fā)丟失分組,再次發(fā)送數(shù)據(jù)流完成包并重置數(shù)據(jù)流完成定時器。以此類推,直至收到ACK消息;若ACK消息和NACK消息均未收到,則再次發(fā)送數(shù)據(jù)流完成包并重置數(shù)據(jù)流完成定時器,直至收到ACK消息。
擁塞控制過程中,若擁塞隊列不為空,則向發(fā)送節(jié)點發(fā)送空閑消息并創(chuàng)建空閑定時器。若定時時間內(nèi)接收節(jié)點未收到發(fā)送節(jié)點暫停發(fā)送的數(shù)據(jù),則在超時時啟動空閑通知的重發(fā),以此類推,直至收到發(fā)送節(jié)點先前暫停的數(shù)據(jù)流。接收節(jié)點收到數(shù)據(jù)后,移除該定時器。
本發(fā)明所述通信網(wǎng)絡(luò)針對節(jié)點儀器和無線網(wǎng)絡(luò)的特點進行了魯棒性設(shè)計:地震勘探規(guī)模越來越大,節(jié)點數(shù)量的急劇上升給網(wǎng)絡(luò)組建帶來了極大的考驗。同時,無線鏈路的穩(wěn)定性遠低于有線鏈路,節(jié)點存在離開網(wǎng)絡(luò)的很大可能。為適應(yīng)拓撲結(jié)構(gòu)的動態(tài)變化,網(wǎng)絡(luò)必須具有較強的魯棒性。
拓撲結(jié)構(gòu)的動態(tài)變分為兩種情況:子節(jié)點斷網(wǎng)和父節(jié)點斷網(wǎng)。入網(wǎng)后的節(jié)點每隔固定時間廣播一次Hello包。父子節(jié)點間均維持一個斷網(wǎng)超時定時器,如果父節(jié)點連續(xù)5次沒有接收到來自其子節(jié)點的Hello包,那么父節(jié)點則認為子節(jié)點失去連接,并創(chuàng)建一個類型為節(jié)點斷網(wǎng)的上行應(yīng)用數(shù)據(jù);該上行數(shù)據(jù)被發(fā)送到測線的匯聚節(jié)點并由匯聚節(jié)點轉(zhuǎn)發(fā)至監(jiān)控中心,監(jiān)控中心將默認該節(jié)點及其后裔節(jié)點均離開網(wǎng)絡(luò);同時,該父節(jié)點將路由表中子節(jié)點的信息清空,并成為該測線最末端的采集站(ID數(shù)值最大);如果作為子節(jié)點的采集站連續(xù)5次沒有接收到其父節(jié)點的Hello包,那么子節(jié)點則認為其父節(jié)點已經(jīng)離開網(wǎng)絡(luò)。
發(fā)生斷網(wǎng)后,斷網(wǎng)節(jié)點的子節(jié)點廣播掉線包以申請重連入網(wǎng)。如果廣播掉線包的后裔節(jié)點(ID>發(fā)送掉線包節(jié)點ID)收到掉線包時,直接將包丟棄;如果斷網(wǎng)節(jié)點的祖父節(jié)點(ID≤斷網(wǎng)節(jié)點ID-2)收到掉線包時,直接將包丟棄;如果斷網(wǎng)節(jié)點的父節(jié)點(此時可容納子節(jié)點)收到掉線包時,則向廣播掉線包的節(jié)點發(fā)送入網(wǎng)應(yīng)答包。此后,斷網(wǎng)節(jié)點的原父節(jié)點及其子節(jié)點按照正常入網(wǎng)的過程進行認證并重連入網(wǎng)。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。