張樂君,國(guó) 林,張健沛,楊 靜
(哈爾濱工程大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,黑龍江 哈爾濱 150001)
無線傳感器網(wǎng)絡(luò)(wireless sensor networks,WSNs)由大量具備數(shù)據(jù)處理和通信能力的傳感器節(jié)點(diǎn)組成,其目的是協(xié)作的感知、采集網(wǎng)絡(luò)覆蓋范圍內(nèi)監(jiān)測(cè)對(duì)象的相關(guān)信息,并通過短距離無線多跳的通信方式將監(jiān)測(cè)數(shù)據(jù)發(fā)送給網(wǎng)關(guān),提供給用戶進(jìn)行分析和處理[1].在傳感器節(jié)點(diǎn)能量?jī)?chǔ)備和計(jì)算能力等資源普遍受限的條件下,能否為網(wǎng)絡(luò)中的數(shù)據(jù)傳輸提供可靠的傳輸控制機(jī)制,以保證信息的有效獲取和網(wǎng)絡(luò)的優(yōu)化管理,就成為WSN中一個(gè)基本問題,也是衡量WSN網(wǎng)絡(luò)服務(wù)質(zhì)量的一個(gè)重要指標(biāo).
無線傳感器網(wǎng)絡(luò)的可靠傳輸是應(yīng)用層協(xié)議的主要功能之一,傳統(tǒng)的TCP和UDP雖然在互聯(lián)網(wǎng)上得到了很好的應(yīng)用,但并不適用于無線傳感器網(wǎng)絡(luò).在無線傳感器網(wǎng)絡(luò)中,節(jié)點(diǎn)間的無線通信質(zhì)量往往不穩(wěn)定,從而導(dǎo)致較高的分組丟失率,影響數(shù)據(jù)的可靠傳輸;節(jié)點(diǎn)的移動(dòng)性使通信鏈路和節(jié)點(diǎn)的路由信息發(fā)生改變,給數(shù)據(jù)的可靠傳輸帶來嚴(yán)重影響.典型的可靠傳輸協(xié)議包括以下幾種:PSFQ協(xié)議[2],RMST協(xié)議[3],RBC 協(xié)議[4],STCP 協(xié)議[5],其他見文獻(xiàn)[6-9].
現(xiàn)有的可靠傳輸協(xié)議主要研究全部節(jié)點(diǎn)都靜止的情況,傳感器節(jié)點(diǎn)的移動(dòng)給傳感器網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)帶來更高的動(dòng)態(tài)性,也增加了可靠傳輸協(xié)議的復(fù)雜性,但可以均衡整個(gè)網(wǎng)絡(luò)的能量消耗,從而延長(zhǎng)網(wǎng)絡(luò)生存周期,因此本文針對(duì)可移動(dòng)傳感器網(wǎng)絡(luò)的可靠持續(xù)傳輸問題進(jìn)行研究.
TCP連接遷移[10]的主要思想是將一條連接的一個(gè)端點(diǎn)遷移到另一個(gè)節(jié)點(diǎn),而這個(gè)遷移對(duì)于連接的另一端點(diǎn)來說是透明的,并且遷移以后的連接可完全正常運(yùn)行下去.這就是說,在適當(dāng)?shù)臅r(shí)機(jī),前端服務(wù)程序(前端)根據(jù)自身的服務(wù)狀態(tài),將與該客戶的連接遷移至另一個(gè)服務(wù)端程序上(后端).后端服務(wù)程序根據(jù)前端發(fā)送過來的數(shù)據(jù)進(jìn)行現(xiàn)場(chǎng)重構(gòu),并采用連接傳遞技術(shù)將構(gòu)造出的資源交給屬主進(jìn)程,屬主繼續(xù)完成服務(wù)并將處理結(jié)果傳遞給服務(wù)請(qǐng)求者.其涉及到的主要技術(shù)包括連接重構(gòu)技術(shù)和連接傳遞技術(shù).
連接現(xiàn)場(chǎng)重構(gòu)技術(shù)用得到的連接信息重構(gòu)連接現(xiàn)場(chǎng),即將連接的一切數(shù)據(jù)結(jié)構(gòu)在后端服務(wù)程序的操作系統(tǒng)內(nèi)核中重建.實(shí)際是“鏡像”了該連接在前端一方的現(xiàn)場(chǎng).該技術(shù)的主要步驟為:1)分配記錄連接信息的sock結(jié)構(gòu)并初始化;2)查找到服務(wù)請(qǐng)求方的路由,將路由信息填入sock結(jié)構(gòu);3)根據(jù)遷移協(xié)議從遷移請(qǐng)求報(bào)文提取連接信息;4)根據(jù)提取得到的連接信息修改sock結(jié)構(gòu)的一些域;5)將該sock結(jié)構(gòu)登記到系統(tǒng)的相關(guān)表格中.
連接是一個(gè)靜態(tài)的概念,可以看成是一種資源.連接現(xiàn)場(chǎng)重構(gòu)技術(shù)只是構(gòu)造出了資源,還必須把它交給屬主,才能為屬主所利用.這里的屬主,是提供服務(wù)的應(yīng)用層程序.連接傳遞技術(shù)就是要解決讓應(yīng)用層服務(wù)程序接受這個(gè)構(gòu)造出來的連接請(qǐng)求.連接傳遞技術(shù)將一個(gè)連接從一個(gè)進(jìn)程傳遞給另一個(gè)監(jiān)聽進(jìn)程.
連接傳遞技術(shù)的步驟:1)將連接的sock結(jié)構(gòu)與源進(jìn)程脫鏈;2)構(gòu)造出該連接在初始建立時(shí)的環(huán)境;3)建立sock結(jié)構(gòu)與初始環(huán)境(open-request結(jié)構(gòu))的聯(lián)系;4)將open-request結(jié)構(gòu)掛到目的監(jiān)聽進(jìn)程的接收隊(duì)列上;5)將目的監(jiān)聽進(jìn)程喚醒.
條件1:傳感器網(wǎng)絡(luò)中包括簇節(jié)點(diǎn)和傳感器節(jié)點(diǎn),簇節(jié)點(diǎn)負(fù)責(zé)向上層轉(zhuǎn)發(fā)本區(qū)域的數(shù)據(jù),簇節(jié)點(diǎn)的通信半徑為R,其臨界區(qū)半徑為,傳感器節(jié)點(diǎn)的通信半徑為R.
條件2:傳感器網(wǎng)絡(luò)中簇節(jié)點(diǎn)按照任意相鄰兩個(gè)節(jié)點(diǎn)的間隔距離為R進(jìn)行部署,部署結(jié)構(gòu)如圖1所示,其中每個(gè)正方形匯聚點(diǎn)上部署一個(gè)簇節(jié)點(diǎn),傳感器節(jié)點(diǎn)隨機(jī)布置.
條件3:傳感網(wǎng)絡(luò)中任何節(jié)點(diǎn)可以探測(cè)到其通信范圍內(nèi)的其他節(jié)點(diǎn)的精確位置信息.
條件4:傳感器網(wǎng)絡(luò)中簇節(jié)點(diǎn)位置固定,傳感器節(jié)點(diǎn)可以隨機(jī)移動(dòng),但其移動(dòng)速度小于R/T,其中T為探測(cè)節(jié)點(diǎn)位置時(shí)間周期.
圖1 移動(dòng)傳感器網(wǎng)絡(luò)示意圖Fig.1 Mobile wireless sensor network
根據(jù)前提條件的假設(shè),傳感器網(wǎng)絡(luò)中包括簇節(jié)點(diǎn)和傳感器節(jié)點(diǎn),簇節(jié)點(diǎn)在布網(wǎng)時(shí)進(jìn)行設(shè)置,傳感器節(jié)點(diǎn)隨機(jī)分布,并可以在一定條件下隨機(jī)移動(dòng).首先,傳感器節(jié)點(diǎn)加入傳感器網(wǎng)絡(luò)的時(shí)候要選擇一個(gè)簇節(jié)點(diǎn)作為它的上級(jí)節(jié)點(diǎn),并和這個(gè)節(jié)點(diǎn)建立TCP連接,以便上傳其所探測(cè)的數(shù)據(jù),簇節(jié)點(diǎn)選擇算法如下:
算法名稱:傳感器節(jié)點(diǎn)通信算法
輸入:傳感器節(jié)點(diǎn)n,與傳感器節(jié)點(diǎn)相鄰簇節(jié)點(diǎn){m0,m1,…,m4,}
輸出:與其建立連接簇節(jié)點(diǎn)m
算法描述:
簇節(jié)點(diǎn)選擇算法中,傳感器節(jié)點(diǎn)選取距離其最近的簇節(jié)點(diǎn)建立TCP連接.由于傳感器節(jié)點(diǎn)具有移動(dòng)性質(zhì),因此它可能會(huì)超出所連接簇節(jié)點(diǎn)的通信區(qū)域.為了保證連接的持續(xù)和透明,因此選擇連接遷移的目標(biāo)簇節(jié)點(diǎn)就變得十分關(guān)鍵,簇節(jié)點(diǎn)的選擇算法如下:
算法名稱:TCP連接遷移節(jié)點(diǎn)選擇算法
輸入:與傳感器簇節(jié)點(diǎn)m保持TCP連接的傳感器節(jié)點(diǎn)
輸出:連接遷移節(jié)點(diǎn)編號(hào)集合{m0,m1,…,mx,}算法描述:
在上述算法中,簇節(jié)點(diǎn)每隔固定時(shí)間周期T探測(cè)是否存在需要進(jìn)行連接遷移的傳感器節(jié)點(diǎn),對(duì)超出其臨界區(qū)的傳感器節(jié)點(diǎn)選擇需要連接遷移的簇節(jié)點(diǎn),由于在前提條件4中設(shè)定傳感器節(jié)點(diǎn)的移動(dòng)速度小于因此任何傳感器節(jié)點(diǎn)不會(huì)在一個(gè)時(shí)間周期內(nèi),跨越整個(gè)臨界區(qū),這就為連接遷移提供了必要的時(shí)間保證.
根據(jù)2.2節(jié)介紹的簇節(jié)點(diǎn)選擇算法和TCP連接遷移節(jié)點(diǎn)選擇算法并結(jié)合圖2對(duì)移動(dòng)傳感器網(wǎng)絡(luò)連接遷移方法進(jìn)行說明.首先,傳感器節(jié)點(diǎn)C使用簇節(jié)點(diǎn)選擇算法和節(jié)點(diǎn)A建立連接,并進(jìn)行數(shù)據(jù)傳輸,節(jié)點(diǎn)C以速度V移動(dòng),當(dāng)其移動(dòng)到節(jié)點(diǎn)A的通信臨界區(qū)時(shí)(還未移出A的通信覆蓋區(qū)),簇節(jié)點(diǎn)A利用TCP連接遷移節(jié)點(diǎn)選擇算法,發(fā)現(xiàn)需要將和C的連接信息在節(jié)點(diǎn)B上重構(gòu);當(dāng)重構(gòu)結(jié)束時(shí),節(jié)點(diǎn)C將直接和節(jié)點(diǎn)B進(jìn)行數(shù)據(jù)通信.
圖2 TCP連接遷移示意圖Fig.2 TCP connection handoff
整個(gè)連接遷移過程對(duì)傳感器節(jié)點(diǎn)透明,因此不需要在傳感器節(jié)點(diǎn)實(shí)現(xiàn)上不需要特殊的技術(shù),下面講述簇節(jié)點(diǎn)的連接遷移過程和相關(guān)技術(shù).
簇節(jié)點(diǎn)模塊結(jié)構(gòu)如圖3所示.
圖3 簇節(jié)點(diǎn)模塊結(jié)構(gòu)圖Fig.3 Modules structure of a cluster node
簇節(jié)點(diǎn)的TCP連接遷移技術(shù)在Linux平臺(tái)下用C語言實(shí)現(xiàn),連接遷移主要涉及2個(gè)模塊:連接信息發(fā)送模塊和連接重構(gòu)模塊.
3.1.1 連接信息發(fā)送模塊
連接信息發(fā)送模塊主要完成提取連接現(xiàn)場(chǎng)相關(guān)信息和請(qǐng)求數(shù)據(jù)的轉(zhuǎn)發(fā)功能.該模塊在虛擬IP地址上的特定端口監(jiān)聽,接收來自傳感器節(jié)點(diǎn)的請(qǐng)求數(shù)據(jù)包,通過TCP連接遷移節(jié)點(diǎn)選擇模塊提供的目標(biāo)簇節(jié)點(diǎn)發(fā)送遷移請(qǐng)求及連接信息.
ack數(shù)據(jù)包是TCP協(xié)議保障數(shù)據(jù)包正確順序傳輸?shù)幕貞?yīng)數(shù)據(jù)包,ack數(shù)據(jù)包在分發(fā)模塊的處理是通過Netfilter上的鉤子函數(shù)實(shí)現(xiàn)的,當(dāng)鉤子函數(shù)解析到一個(gè)ack數(shù)據(jù)包是屬于某個(gè)已經(jīng)遷移的連接時(shí),就要對(duì)其進(jìn)行轉(zhuǎn)發(fā),這里分為2種情況:1)連接被遷移到另一個(gè)簇節(jié)點(diǎn)上的連接重構(gòu)模塊,此時(shí)需要使用動(dòng)態(tài)生成ip隧道包方式轉(zhuǎn)發(fā),在鉤子的出口處刪除這個(gè)包的相關(guān)數(shù)據(jù);2)連接信息在本節(jié)點(diǎn)上重構(gòu),此時(shí),將ack數(shù)據(jù)包的過濾結(jié)果設(shè)為NF_ACCEPT,也就是直接送入簇節(jié)點(diǎn)的協(xié)議棧進(jìn)行處理,因?yàn)閼?yīng)用層協(xié)議的socket也在本機(jī)等待數(shù)據(jù),所以這個(gè)ack數(shù)據(jù)包就被直接送給了相應(yīng)的socket.
因?yàn)樾枰c運(yùn)行在用戶空間的TCP連接遷移節(jié)點(diǎn)選擇模塊進(jìn)行交換信息,所以必須進(jìn)行內(nèi)核與用戶空間的通信,本文選擇了proc文件系統(tǒng)機(jī)制,該方法是在內(nèi)核模塊裝載時(shí)要定義一系列靜態(tài)ctl_table結(jié)構(gòu)體數(shù)組,包括目錄項(xiàng)、目錄和宿主根項(xiàng),只要在定義結(jié)構(gòu)體時(shí)指定特定的參數(shù)和屬性以及名稱即可,模塊裝載時(shí)調(diào)用register_sysctl_table函數(shù)把根項(xiàng)注冊(cè)進(jìn)proc文件系統(tǒng),此時(shí)在用戶空間的proc文件系統(tǒng)里就注冊(cè)了一些變量,這些變量和內(nèi)核的指定變量掛鉤,同步更新,就完成了用戶空間和內(nèi)核空間的數(shù)據(jù)通信.
3.1.2 連接重構(gòu)模塊
連接重構(gòu)模塊主要完成連接現(xiàn)場(chǎng)重構(gòu)和請(qǐng)求數(shù)據(jù)的傳遞.
連接重構(gòu)模塊在監(jiān)聽地址收到數(shù)據(jù)時(shí),需要對(duì)緩沖區(qū)里的數(shù)據(jù)進(jìn)行解析.如果是遷移請(qǐng)求包則調(diào)用現(xiàn)場(chǎng)重構(gòu)取得連接信息數(shù)據(jù),在本地重新申請(qǐng)一個(gè)連接套接字,把連接信息發(fā)送模塊發(fā)來的連接信息填入這個(gè)套接字中,修改該套接字的路由信息使數(shù)據(jù)直接發(fā)往傳感器節(jié)點(diǎn),接著把用戶請(qǐng)求數(shù)據(jù)掛到該連接的數(shù)據(jù)隊(duì)列中并喚醒上層協(xié)議進(jìn)行處理,重構(gòu)現(xiàn)場(chǎng)成功后構(gòu)造HANDOFF_RET數(shù)據(jù)包發(fā)給連接信息發(fā)送模塊,重構(gòu)過程結(jié)束.
仿真實(shí)驗(yàn)參數(shù)設(shè)置如下:模擬了由25個(gè)簇節(jié)點(diǎn)構(gòu)成的覆蓋區(qū)域和若干個(gè)傳感器節(jié)點(diǎn),通過隨機(jī)數(shù)的方法確定傳感器節(jié)點(diǎn)的初始位置和移動(dòng)過程;傳感器節(jié)點(diǎn)每隔隨機(jī)時(shí)間發(fā)起數(shù)據(jù)通信請(qǐng)求;通過控制填充通信數(shù)據(jù)的內(nèi)容長(zhǎng)度來控制通信響應(yīng)時(shí)間.如果傳感器節(jié)點(diǎn)移動(dòng)到整個(gè)覆蓋區(qū)域邊界,采用向覆蓋區(qū)域內(nèi)部折射的方法,保證節(jié)點(diǎn)不超出覆蓋區(qū).
圖4和圖5分別統(tǒng)計(jì)了在500 s時(shí)間內(nèi),傳感器節(jié)點(diǎn)發(fā)生連接遷移次數(shù)和數(shù)據(jù)通信響應(yīng)時(shí)間以及傳感器節(jié)點(diǎn)數(shù)目的關(guān)系.隨著通信響應(yīng)時(shí)間的增加,傳感器節(jié)點(diǎn)在一次通信過程中發(fā)生遷移的次數(shù)呈指數(shù)遞增,但發(fā)生2次或3次遷移的次數(shù)較小,發(fā)生多次遷移的主要原因是傳感器節(jié)點(diǎn)在兩個(gè)簇節(jié)點(diǎn)間來回移動(dòng);連接遷移次數(shù)和傳感器節(jié)點(diǎn)數(shù)目呈線性遞增關(guān)系.
圖4 遷移次數(shù)與通信響應(yīng)時(shí)間關(guān)系示意圖Fig.4 The relationship of handoff times and respond time
圖6對(duì)使用TCP連接遷移和未采用連接遷移的傳感器網(wǎng)絡(luò)進(jìn)行了對(duì)比分析.從圖中可知,隨著通信數(shù)據(jù)量的增加,傳感器節(jié)點(diǎn)的移動(dòng)對(duì)數(shù)據(jù)的可靠傳輸帶來嚴(yán)重影響,當(dāng)通信響應(yīng)時(shí)間達(dá)到2 s時(shí),未采用連接遷移技術(shù)的傳感器網(wǎng)絡(luò)的完成率只有50%左右,因此基本不具有實(shí)際應(yīng)用的意義;但采用連接遷移技術(shù)的傳感器網(wǎng)絡(luò)完成率依然保持在90%左右,因此具有更好的可靠傳輸能力.
圖5 遷移次數(shù)與傳感器節(jié)點(diǎn)數(shù)目關(guān)系示意圖Fig.5 The relationship of handoff times and the number of sensor nodes
圖6 基于TCP連接遷移傳感器網(wǎng)絡(luò)性能分析圖Fig.6 Performance analysis of MWSN reliable transport technology based on TCP connection handoff
本文提出的基于TCP連接遷移的移動(dòng)傳感器網(wǎng)絡(luò)數(shù)據(jù)可靠傳輸技術(shù)和方法在前提條件限制上還比較嚴(yán)格,是對(duì)可移動(dòng)傳感器網(wǎng)絡(luò)數(shù)據(jù)可靠傳輸?shù)挠幸嫣接?未來還需要針對(duì)不同傳感器節(jié)點(diǎn)通信范圍不同,簇節(jié)點(diǎn)非均勻分布等條件下的可靠傳輸技術(shù)進(jìn)行研究,傳感器節(jié)點(diǎn)移動(dòng)對(duì)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)帶來的變化,可移動(dòng)傳感器網(wǎng)絡(luò)下的數(shù)據(jù)融合等方面展開深入研究.
[1]RAN F Y,HUANG H N,LIN C.Wireless sensor networks[J].Journal of Software,2003,14(7):1282-1291.
[2]WAN C Y,CAMPBELL A T.PSFQ:a reliable transport protocol for wireless sensor networks[C]//Proceedings of ACM WSNAO2.Atlanta,USA,2002.
[3]STANN F,HEIDEMANN J.RMSTL:reliable data transport in senor networks[C]//Proceedings of IEEE SNPA'03.Anchorage,USA,2003.
[4]ZHANG H,ARORA A,CHOI Y,et a1.Reliable bursty convergecastin wireless sensor networks[C]//Proceedings of ACM Mobihoc'05.Urbana-Champain,Illinois,USA,2005.
[5]IYER Y G,GANDHAM S,VENKATESAN S.STCP:a generic transport layer protocol for wireless sensor networks[C]//Proceedings of IEEE ICCCN 2005.San Diego,USA,2005.
[6]VOLGYESI P,NADAS A,LEDECZI A,et a1.Reliable multihop bulk transfer service for wireless sensor networks[C]//13th Annual IEEE International Conference and Workshop on the Engineering of Computer Based Systems(ECBS 2006),CD-ROM.Potsdam,Germany,2006.
[7]程大偉,趙海,孫佩剛,張希元,朱劍,丁玉官,陸育惠,王進(jìn)雷.能量高效的無線傳感器網(wǎng)絡(luò)傳輸可靠性研究[J].計(jì)算機(jī)應(yīng)用,2008,28(1):25-28.CHENG Dawei,ZHAO Hai,SUN Peigang,ZHANG Xiyuan,ZHU Jian,DING Yuguan,LU Yuhui,Wang Jinlei.Study on energy-efficient reliability transmission for WSN[J].Computer Applications.2008,28(1):25-28.
[8]方維維,錢德沛,劉軼.一種相鄰節(jié)點(diǎn)協(xié)作的無線傳感器網(wǎng)絡(luò)可靠傳輸方案[J].西安交通大學(xué)學(xué)報(bào),2009,43(2):33-37.FANG Weiwei,QIAN Depei,LIU Yi.Reliable delivery scheme for wireless sensor networks based on cooperation among neighboring nodes[J].Journal of Xi’an Jiaotong University,2009,43(2):33-37.
[9]張希元,趙海,孫佩剛,朱劍,羅玎玎.基于鏈路層重傳的傳感器網(wǎng)絡(luò)可靠傳輸模型[J].系統(tǒng)仿真學(xué)報(bào),2007,19(22):5325-5330,5335.ZHANG Xiyuan,ZHAO Hai,SUN Peigang,ZHU Jian,LUO Dingding.Reliable transfer model for wireless sensor networks based on data link layer retransmission[J].Journal of System Simulation,2007,19(22):5325-5330,5335.
[10]汪黎,王正華,章文嵩.TCPHA:一個(gè)新型的高性能基于內(nèi)容調(diào)度系統(tǒng)[J].計(jì)算機(jī)工程,2006,32(1):151-153.WANG Li, WANG Zhenghua, ZHANG Wensong.TCPHA:A new high efficient content-aware system[J].Computer Engineering,2006,32(1):151-153.