張樂君,國 林,張健沛,楊 靜
(哈爾濱工程大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院,黑龍江 哈爾濱 150001)
無線傳感器網(wǎng)絡(luò)(wireless sensor networks,WSNs)由大量具備數(shù)據(jù)處理和通信能力的傳感器節(jié)點組成,其目的是協(xié)作的感知、采集網(wǎng)絡(luò)覆蓋范圍內(nèi)監(jiān)測對象的相關(guān)信息,并通過短距離無線多跳的通信方式將監(jiān)測數(shù)據(jù)發(fā)送給網(wǎng)關(guān),提供給用戶進(jìn)行分析和處理[1].在傳感器節(jié)點能量儲備和計算能力等資源普遍受限的條件下,能否為網(wǎng)絡(luò)中的數(shù)據(jù)傳輸提供可靠的傳輸控制機(jī)制,以保證信息的有效獲取和網(wǎng)絡(luò)的優(yōu)化管理,就成為WSN中一個基本問題,也是衡量WSN網(wǎng)絡(luò)服務(wù)質(zhì)量的一個重要指標(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é)點間的無線通信質(zhì)量往往不穩(wěn)定,從而導(dǎo)致較高的分組丟失率,影響數(shù)據(jù)的可靠傳輸;節(jié)點的移動性使通信鏈路和節(jié)點的路由信息發(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é)點都靜止的情況,傳感器節(jié)點的移動給傳感器網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)帶來更高的動態(tài)性,也增加了可靠傳輸協(xié)議的復(fù)雜性,但可以均衡整個網(wǎng)絡(luò)的能量消耗,從而延長網(wǎng)絡(luò)生存周期,因此本文針對可移動傳感器網(wǎng)絡(luò)的可靠持續(xù)傳輸問題進(jìn)行研究.
TCP連接遷移[10]的主要思想是將一條連接的一個端點遷移到另一個節(jié)點,而這個遷移對于連接的另一端點來說是透明的,并且遷移以后的連接可完全正常運行下去.這就是說,在適當(dāng)?shù)臅r機(jī),前端服務(wù)程序(前端)根據(jù)自身的服務(wù)狀態(tài),將與該客戶的連接遷移至另一個服務(wù)端程序上(后端).后端服務(wù)程序根據(jù)前端發(fā)送過來的數(shù)據(jù)進(jìn)行現(xiàn)場重構(gòu),并采用連接傳遞技術(shù)將構(gòu)造出的資源交給屬主進(jìn)程,屬主繼續(xù)完成服務(wù)并將處理結(jié)果傳遞給服務(wù)請求者.其涉及到的主要技術(shù)包括連接重構(gòu)技術(shù)和連接傳遞技術(shù).
連接現(xiàn)場重構(gòu)技術(shù)用得到的連接信息重構(gòu)連接現(xiàn)場,即將連接的一切數(shù)據(jù)結(jié)構(gòu)在后端服務(wù)程序的操作系統(tǒng)內(nèi)核中重建.實際是“鏡像”了該連接在前端一方的現(xiàn)場.該技術(shù)的主要步驟為:1)分配記錄連接信息的sock結(jié)構(gòu)并初始化;2)查找到服務(wù)請求方的路由,將路由信息填入sock結(jié)構(gòu);3)根據(jù)遷移協(xié)議從遷移請求報文提取連接信息;4)根據(jù)提取得到的連接信息修改sock結(jié)構(gòu)的一些域;5)將該sock結(jié)構(gòu)登記到系統(tǒng)的相關(guān)表格中.
連接是一個靜態(tài)的概念,可以看成是一種資源.連接現(xiàn)場重構(gòu)技術(shù)只是構(gòu)造出了資源,還必須把它交給屬主,才能為屬主所利用.這里的屬主,是提供服務(wù)的應(yīng)用層程序.連接傳遞技術(shù)就是要解決讓應(yīng)用層服務(wù)程序接受這個構(gòu)造出來的連接請求.連接傳遞技術(shù)將一個連接從一個進(jìn)程傳遞給另一個監(jiān)聽進(jìn)程.
連接傳遞技術(shù)的步驟:1)將連接的sock結(jié)構(gòu)與源進(jìn)程脫鏈;2)構(gòu)造出該連接在初始建立時的環(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)程的接收隊列上;5)將目的監(jiān)聽進(jìn)程喚醒.
條件1:傳感器網(wǎng)絡(luò)中包括簇節(jié)點和傳感器節(jié)點,簇節(jié)點負(fù)責(zé)向上層轉(zhuǎn)發(fā)本區(qū)域的數(shù)據(jù),簇節(jié)點的通信半徑為R,其臨界區(qū)半徑為,傳感器節(jié)點的通信半徑為R.
條件2:傳感器網(wǎng)絡(luò)中簇節(jié)點按照任意相鄰兩個節(jié)點的間隔距離為R進(jìn)行部署,部署結(jié)構(gòu)如圖1所示,其中每個正方形匯聚點上部署一個簇節(jié)點,傳感器節(jié)點隨機(jī)布置.
條件3:傳感網(wǎng)絡(luò)中任何節(jié)點可以探測到其通信范圍內(nèi)的其他節(jié)點的精確位置信息.
條件4:傳感器網(wǎng)絡(luò)中簇節(jié)點位置固定,傳感器節(jié)點可以隨機(jī)移動,但其移動速度小于R/T,其中T為探測節(jié)點位置時間周期.
圖1 移動傳感器網(wǎng)絡(luò)示意圖Fig.1 Mobile wireless sensor network
根據(jù)前提條件的假設(shè),傳感器網(wǎng)絡(luò)中包括簇節(jié)點和傳感器節(jié)點,簇節(jié)點在布網(wǎng)時進(jìn)行設(shè)置,傳感器節(jié)點隨機(jī)分布,并可以在一定條件下隨機(jī)移動.首先,傳感器節(jié)點加入傳感器網(wǎng)絡(luò)的時候要選擇一個簇節(jié)點作為它的上級節(jié)點,并和這個節(jié)點建立TCP連接,以便上傳其所探測的數(shù)據(jù),簇節(jié)點選擇算法如下:
算法名稱:傳感器節(jié)點通信算法
輸入:傳感器節(jié)點n,與傳感器節(jié)點相鄰簇節(jié)點{m0,m1,…,m4,}
輸出:與其建立連接簇節(jié)點m
算法描述:
簇節(jié)點選擇算法中,傳感器節(jié)點選取距離其最近的簇節(jié)點建立TCP連接.由于傳感器節(jié)點具有移動性質(zhì),因此它可能會超出所連接簇節(jié)點的通信區(qū)域.為了保證連接的持續(xù)和透明,因此選擇連接遷移的目標(biāo)簇節(jié)點就變得十分關(guān)鍵,簇節(jié)點的選擇算法如下:
算法名稱:TCP連接遷移節(jié)點選擇算法
輸入:與傳感器簇節(jié)點m保持TCP連接的傳感器節(jié)點
輸出:連接遷移節(jié)點編號集合{m0,m1,…,mx,}算法描述:
在上述算法中,簇節(jié)點每隔固定時間周期T探測是否存在需要進(jìn)行連接遷移的傳感器節(jié)點,對超出其臨界區(qū)的傳感器節(jié)點選擇需要連接遷移的簇節(jié)點,由于在前提條件4中設(shè)定傳感器節(jié)點的移動速度小于因此任何傳感器節(jié)點不會在一個時間周期內(nèi),跨越整個臨界區(qū),這就為連接遷移提供了必要的時間保證.
根據(jù)2.2節(jié)介紹的簇節(jié)點選擇算法和TCP連接遷移節(jié)點選擇算法并結(jié)合圖2對移動傳感器網(wǎng)絡(luò)連接遷移方法進(jìn)行說明.首先,傳感器節(jié)點C使用簇節(jié)點選擇算法和節(jié)點A建立連接,并進(jìn)行數(shù)據(jù)傳輸,節(jié)點C以速度V移動,當(dāng)其移動到節(jié)點A的通信臨界區(qū)時(還未移出A的通信覆蓋區(qū)),簇節(jié)點A利用TCP連接遷移節(jié)點選擇算法,發(fā)現(xiàn)需要將和C的連接信息在節(jié)點B上重構(gòu);當(dāng)重構(gòu)結(jié)束時,節(jié)點C將直接和節(jié)點B進(jìn)行數(shù)據(jù)通信.
圖2 TCP連接遷移示意圖Fig.2 TCP connection handoff
整個連接遷移過程對傳感器節(jié)點透明,因此不需要在傳感器節(jié)點實現(xiàn)上不需要特殊的技術(shù),下面講述簇節(jié)點的連接遷移過程和相關(guān)技術(shù).
簇節(jié)點模塊結(jié)構(gòu)如圖3所示.
圖3 簇節(jié)點模塊結(jié)構(gòu)圖Fig.3 Modules structure of a cluster node
簇節(jié)點的TCP連接遷移技術(shù)在Linux平臺下用C語言實現(xiàn),連接遷移主要涉及2個模塊:連接信息發(fā)送模塊和連接重構(gòu)模塊.
3.1.1 連接信息發(fā)送模塊
連接信息發(fā)送模塊主要完成提取連接現(xiàn)場相關(guān)信息和請求數(shù)據(jù)的轉(zhuǎn)發(fā)功能.該模塊在虛擬IP地址上的特定端口監(jiān)聽,接收來自傳感器節(jié)點的請求數(shù)據(jù)包,通過TCP連接遷移節(jié)點選擇模塊提供的目標(biāo)簇節(jié)點發(fā)送遷移請求及連接信息.
ack數(shù)據(jù)包是TCP協(xié)議保障數(shù)據(jù)包正確順序傳輸?shù)幕貞?yīng)數(shù)據(jù)包,ack數(shù)據(jù)包在分發(fā)模塊的處理是通過Netfilter上的鉤子函數(shù)實現(xiàn)的,當(dāng)鉤子函數(shù)解析到一個ack數(shù)據(jù)包是屬于某個已經(jīng)遷移的連接時,就要對其進(jìn)行轉(zhuǎn)發(fā),這里分為2種情況:1)連接被遷移到另一個簇節(jié)點上的連接重構(gòu)模塊,此時需要使用動態(tài)生成ip隧道包方式轉(zhuǎn)發(fā),在鉤子的出口處刪除這個包的相關(guān)數(shù)據(jù);2)連接信息在本節(jié)點上重構(gòu),此時,將ack數(shù)據(jù)包的過濾結(jié)果設(shè)為NF_ACCEPT,也就是直接送入簇節(jié)點的協(xié)議棧進(jìn)行處理,因為應(yīng)用層協(xié)議的socket也在本機(jī)等待數(shù)據(jù),所以這個ack數(shù)據(jù)包就被直接送給了相應(yīng)的socket.
因為需要與運行在用戶空間的TCP連接遷移節(jié)點選擇模塊進(jìn)行交換信息,所以必須進(jìn)行內(nèi)核與用戶空間的通信,本文選擇了proc文件系統(tǒng)機(jī)制,該方法是在內(nèi)核模塊裝載時要定義一系列靜態(tài)ctl_table結(jié)構(gòu)體數(shù)組,包括目錄項、目錄和宿主根項,只要在定義結(jié)構(gòu)體時指定特定的參數(shù)和屬性以及名稱即可,模塊裝載時調(diào)用register_sysctl_table函數(shù)把根項注冊進(jìn)proc文件系統(tǒng),此時在用戶空間的proc文件系統(tǒng)里就注冊了一些變量,這些變量和內(nèi)核的指定變量掛鉤,同步更新,就完成了用戶空間和內(nèi)核空間的數(shù)據(jù)通信.
3.1.2 連接重構(gòu)模塊
連接重構(gòu)模塊主要完成連接現(xiàn)場重構(gòu)和請求數(shù)據(jù)的傳遞.
連接重構(gòu)模塊在監(jiān)聽地址收到數(shù)據(jù)時,需要對緩沖區(qū)里的數(shù)據(jù)進(jìn)行解析.如果是遷移請求包則調(diào)用現(xiàn)場重構(gòu)取得連接信息數(shù)據(jù),在本地重新申請一個連接套接字,把連接信息發(fā)送模塊發(fā)來的連接信息填入這個套接字中,修改該套接字的路由信息使數(shù)據(jù)直接發(fā)往傳感器節(jié)點,接著把用戶請求數(shù)據(jù)掛到該連接的數(shù)據(jù)隊列中并喚醒上層協(xié)議進(jìn)行處理,重構(gòu)現(xiàn)場成功后構(gòu)造HANDOFF_RET數(shù)據(jù)包發(fā)給連接信息發(fā)送模塊,重構(gòu)過程結(jié)束.
仿真實驗參數(shù)設(shè)置如下:模擬了由25個簇節(jié)點構(gòu)成的覆蓋區(qū)域和若干個傳感器節(jié)點,通過隨機(jī)數(shù)的方法確定傳感器節(jié)點的初始位置和移動過程;傳感器節(jié)點每隔隨機(jī)時間發(fā)起數(shù)據(jù)通信請求;通過控制填充通信數(shù)據(jù)的內(nèi)容長度來控制通信響應(yīng)時間.如果傳感器節(jié)點移動到整個覆蓋區(qū)域邊界,采用向覆蓋區(qū)域內(nèi)部折射的方法,保證節(jié)點不超出覆蓋區(qū).
圖4和圖5分別統(tǒng)計了在500 s時間內(nèi),傳感器節(jié)點發(fā)生連接遷移次數(shù)和數(shù)據(jù)通信響應(yīng)時間以及傳感器節(jié)點數(shù)目的關(guān)系.隨著通信響應(yīng)時間的增加,傳感器節(jié)點在一次通信過程中發(fā)生遷移的次數(shù)呈指數(shù)遞增,但發(fā)生2次或3次遷移的次數(shù)較小,發(fā)生多次遷移的主要原因是傳感器節(jié)點在兩個簇節(jié)點間來回移動;連接遷移次數(shù)和傳感器節(jié)點數(shù)目呈線性遞增關(guān)系.
圖4 遷移次數(shù)與通信響應(yīng)時間關(guān)系示意圖Fig.4 The relationship of handoff times and respond time
圖6對使用TCP連接遷移和未采用連接遷移的傳感器網(wǎng)絡(luò)進(jìn)行了對比分析.從圖中可知,隨著通信數(shù)據(jù)量的增加,傳感器節(jié)點的移動對數(shù)據(jù)的可靠傳輸帶來嚴(yán)重影響,當(dāng)通信響應(yīng)時間達(dá)到2 s時,未采用連接遷移技術(shù)的傳感器網(wǎng)絡(luò)的完成率只有50%左右,因此基本不具有實際應(yīng)用的意義;但采用連接遷移技術(shù)的傳感器網(wǎng)絡(luò)完成率依然保持在90%左右,因此具有更好的可靠傳輸能力.
圖5 遷移次數(shù)與傳感器節(jié)點數(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連接遷移的移動傳感器網(wǎng)絡(luò)數(shù)據(jù)可靠傳輸技術(shù)和方法在前提條件限制上還比較嚴(yán)格,是對可移動傳感器網(wǎng)絡(luò)數(shù)據(jù)可靠傳輸?shù)挠幸嫣接?未來還需要針對不同傳感器節(jié)點通信范圍不同,簇節(jié)點非均勻分布等條件下的可靠傳輸技術(shù)進(jìn)行研究,傳感器節(jié)點移動對網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)帶來的變化,可移動傳感器網(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ī)應(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é)點協(xié)作的無線傳感器網(wǎng)絡(luò)可靠傳輸方案[J].西安交通大學(xué)學(xué)報,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é)報,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:一個新型的高性能基于內(nèi)容調(diào)度系統(tǒng)[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.