摘要:在研究無(wú)線傳感器網(wǎng)絡(luò)低能耗自適應(yīng)分簇路由算法LEACH等路由協(xié)議基礎(chǔ)上,提出了無(wú)線傳感器網(wǎng)絡(luò)的動(dòng)態(tài)拓?fù)淠芰坑行?a class="innerlink" href="http://ihrv.cn/tags/成簇" title="成簇" target="_blank">成簇算法:其主要內(nèi)容包括:1、采用引入能量因子的低復(fù)雜度簇頭選擇算法。2、支持部分節(jié)點(diǎn)移動(dòng)的拓?fù)鋭?dòng)態(tài)的網(wǎng)絡(luò)。3、在數(shù)據(jù)傳輸上通過(guò)多跳方式進(jìn)行信息路由。理論和仿真結(jié)果證明,本算法相對(duì)于LEACH算法,在網(wǎng)絡(luò)生命周期上得到了提高。
1 引言
無(wú)線傳感器網(wǎng)絡(luò)(Wireless Sensor Network,WSN)作為下一代的信息獲取技術(shù)引起了世界各國(guó)的重視,日漸成為國(guó)內(nèi)外學(xué)術(shù)機(jī)構(gòu)的研究熱點(diǎn)。無(wú)線傳感器網(wǎng)絡(luò)通常是由大量傳感器節(jié)點(diǎn)通過(guò)射頻通信形成的一個(gè)自組織網(wǎng)絡(luò)系統(tǒng)。它通過(guò)對(duì)被監(jiān)測(cè)對(duì)象目標(biāo)信息的感知,獲取和處理,提供給管理者以有用的信息,可以廣泛地應(yīng)用于智能家居、醫(yī)療衛(wèi)生、工業(yè)控制、農(nóng)業(yè)種植、軍事預(yù)警以及防洪救災(zāi)等特殊場(chǎng)合。但是,WSN與移動(dòng)Ad Hoc網(wǎng)絡(luò)(MANET)是有著很大區(qū)別的,它們的通信方式、通信目的和網(wǎng)絡(luò)拓?fù)浜懿幌嗤?,尤其在能量?lái)源方面,WSN是采用電池供電,路由算法對(duì)傳感器網(wǎng)絡(luò)的存活周期起著重要的影響,所以移動(dòng)Ad Hoc網(wǎng)絡(luò)的路由協(xié)議不能完全適應(yīng)于WSN,我們需要單獨(dú)研究適合于無(wú)線傳感器網(wǎng)絡(luò)的通信協(xié)議。
2動(dòng)態(tài)拓?fù)淠芰坑行С纱厮惴?/strong>
針對(duì)層次路由協(xié)議中存在的各種問(wèn)題,本文提出了適用于WSN的動(dòng)態(tài)拓?fù)淠芰坑行С纱厮惴?DTEE)。此算法引入基于能量因子的低復(fù)雜度的簇頭選擇機(jī)制,同時(shí)通過(guò)協(xié)議的設(shè)計(jì)使其支持節(jié)點(diǎn)部分離去或有新節(jié)點(diǎn)加入的拓?fù)鋭?dòng)態(tài)傳感器網(wǎng)絡(luò)。在簇間數(shù)據(jù)傳輸上通過(guò)多跳算法使數(shù)據(jù)以最優(yōu)路徑傳向匯聚節(jié)點(diǎn),系統(tǒng)能耗很小,網(wǎng)絡(luò)的生命周期最大化。
3.1網(wǎng)絡(luò)模型
本文中假設(shè)傳感器節(jié)點(diǎn)隨機(jī)分布在一個(gè)長(zhǎng)方形形監(jiān)測(cè)區(qū)域內(nèi),并且該傳感器網(wǎng)絡(luò)具有以下性質(zhì):
1) 網(wǎng)絡(luò)中所有傳感器節(jié)點(diǎn)都是同構(gòu)的,具有相同的初始能量,并且能量有限;
2) 傳感器節(jié)點(diǎn)的發(fā)送功率可以進(jìn)行離散調(diào)節(jié),可以根據(jù)傳輸距離的遠(yuǎn)近來(lái)調(diào)節(jié)其發(fā)射功率
3) 匯聚節(jié)點(diǎn)具有較強(qiáng)的計(jì)算能力和較大的存儲(chǔ)容量,且能量無(wú)限制,其無(wú)線信號(hào)可以覆蓋整個(gè)傳感器網(wǎng)絡(luò)。
4) 傳感器網(wǎng)絡(luò)部署以后,可以出現(xiàn)部分節(jié)點(diǎn)隨著時(shí)間的推移而移動(dòng);
5) 傳感器節(jié)點(diǎn)具有數(shù)據(jù)融合功能。
6) 位置上相鄰的節(jié)點(diǎn)采集到的數(shù)據(jù)具有很大的關(guān)聯(lián)性。
3.2能量模型
在無(wú)線傳輸中,信號(hào)強(qiáng)度隨著傳輸距離的增加而呈指數(shù)衰減。文獻(xiàn)[3]提出了兩種信道模型:自由空間(free space)模型和多路衰減(multi-path fading)模型。當(dāng)發(fā)射器與接收器的距離d小于閾值時(shí),采用自由空間模型,信號(hào)功率呈d²衰減;否則采用多路衰減模型,信號(hào)功率呈d4 衰減。
3.3成簇策略
在LEACH算法中執(zhí)行過(guò)程是周期性進(jìn)行的,每一輪包括簇的建立階段和穩(wěn)定的數(shù)據(jù)傳輸階段。在簇的建立階段,通過(guò)選舉使某個(gè)節(jié)點(diǎn)成為簇首節(jié)點(diǎn),成為簇首的節(jié)點(diǎn)向周圍節(jié)點(diǎn)廣播消息,其他節(jié)點(diǎn)根據(jù)接收到的廣播消息的強(qiáng)度來(lái)選擇它所要加入的簇,并告知相應(yīng)的簇首。在本文提出的DTEE算法中,也是以輪為形式周期進(jìn)行的,但在簇頭選舉引入了能量因子,同時(shí)第一輪和以后輪的算法過(guò)程是不同的,從第二輪開(kāi)始在成簇階段可以不用計(jì)算公式,相比LEACH及一些改進(jìn)算法需要計(jì)算復(fù)雜公式的開(kāi)銷,降低了復(fù)雜度,使簇頭選舉能量開(kāi)銷最低,成簇過(guò)程中采用的非均勻成簇方法更是使網(wǎng)絡(luò)能量分布更加均衡。
由于本文采用的是簇內(nèi)單跳,簇間多跳的數(shù)據(jù)傳輸,因此離Sink節(jié)點(diǎn)遠(yuǎn)的簇頭節(jié)點(diǎn),數(shù)據(jù)轉(zhuǎn)發(fā)量越少,能量消耗的慢;而離Sink節(jié)點(diǎn)越近的簇頭,其所承擔(dān)的數(shù)據(jù)轉(zhuǎn)發(fā)業(yè)務(wù)越多,消耗能量越大,所以更容易出現(xiàn)能量耗盡而死亡的情況。為此,本文拋棄了傳統(tǒng)算法中采用的均勻分簇的方法,而是采用非均勻成簇的策略。使離Sink節(jié)點(diǎn)越近的簇,其規(guī)模越小一些,從而這些簇其簇內(nèi)路由及數(shù)據(jù)融合開(kāi)銷小,又因?yàn)槠渌袚?dān)的簇頭間數(shù)據(jù)轉(zhuǎn)發(fā)開(kāi)銷多,綜合起來(lái)無(wú)論離Sink遠(yuǎn)還是近的簇頭都將能量相對(duì)均衡消耗,網(wǎng)絡(luò)生命周期得以最大化。
非均勻分簇的實(shí)現(xiàn)過(guò)程是這樣的:首先,Sink節(jié)點(diǎn)向網(wǎng)絡(luò)所在區(qū)域廣播一個(gè)NOTICE報(bào)文,網(wǎng)絡(luò)中所有節(jié)點(diǎn)根據(jù)接收到的此報(bào)文能量強(qiáng)度信息確定自己與Sink節(jié)點(diǎn)的距離d(i)。根據(jù)監(jiān)測(cè)區(qū)域范圍、傳感器節(jié)點(diǎn)個(gè)數(shù)以及能量自由空間模型確定網(wǎng)絡(luò)分層數(shù)n, 然后,本文采用文獻(xiàn)[14]中的均勻分層的方法,各節(jié)點(diǎn)所在的層號(hào)i=d(i)*n/R,R為監(jiān)測(cè)區(qū)域半徑。因?yàn)榭拷黃ink節(jié)點(diǎn)的簇規(guī)模小,簇內(nèi)節(jié)點(diǎn)少,也就是所在不同層次的節(jié)點(diǎn)成為簇頭的概率不一樣,各節(jié)點(diǎn)成為簇頭的最佳概率為pi=p/(i*i)。其中p為第一層節(jié)點(diǎn)成為簇頭的概率。將傳感區(qū)域進(jìn)行劃分這個(gè)動(dòng)作只出現(xiàn)在第一輪循環(huán)開(kāi)始的時(shí)候,以后的循環(huán)過(guò)程不用再進(jìn)行傳感區(qū)域劃分。
3.4簇頭選擇
之后開(kāi)始第一輪的選舉,各節(jié)點(diǎn)產(chǎn)生一個(gè)隨機(jī)數(shù) r(n) ,并與T(n)進(jìn)行比較,若r(n)小于T(n),則節(jié)點(diǎn)自選舉成為簇頭。
G為這一輪循環(huán)中未成為簇首的節(jié)點(diǎn)的集合。
當(dāng)節(jié)點(diǎn)成為簇頭后,以適當(dāng)?shù)陌霃絉C廣播簇頭加入消息,周圍的節(jié)點(diǎn)根據(jù)接收信號(hào)強(qiáng)度決定加入哪個(gè)簇并發(fā)送一個(gè)請(qǐng)求加入消息。之后簇頭在接收到相關(guān)節(jié)點(diǎn)的請(qǐng)求加入消息后,建立TDMA調(diào)度表并廣播出去。簇內(nèi)節(jié)點(diǎn)在收到此消息后,在屬于自己的時(shí)隙內(nèi)打開(kāi)無(wú)線電模塊開(kāi)始數(shù)據(jù)傳送,在其它不屬于自己的時(shí)隙內(nèi)關(guān)掉通信功能以最大限度節(jié)省能量。在簇內(nèi)節(jié)點(diǎn)向簇頭發(fā)送數(shù)據(jù)報(bào)文時(shí),在其中加入一個(gè)本節(jié)點(diǎn)此刻剩余能量的數(shù)據(jù)信息,供之后算法使用。
第二輪及以后輪的簇頭產(chǎn)生過(guò)程中,首先是上一輪的舊簇頭對(duì)收到各節(jié)點(diǎn)報(bào)文中含有的各節(jié)點(diǎn)能量信息及自己的剩余能量進(jìn)行比較,從中選出剩余能量最大的節(jié)點(diǎn)為新簇頭,之后舊簇頭以半徑RC發(fā)出new_CH報(bào)文,報(bào)文中包括報(bào)文類型及新簇頭的ID,當(dāng)指定的新簇頭收到此報(bào)文后發(fā)現(xiàn)ID與之相匹配,就廣播簇頭加入報(bào)文,其余節(jié)點(diǎn)再根據(jù)接收信號(hào)強(qiáng)度決定加入哪個(gè)簇頭,之后過(guò)程與第一輪相同。但在實(shí)際應(yīng)用中,網(wǎng)絡(luò)節(jié)點(diǎn)有可能意外被移動(dòng)了,或者出故障死亡了,這樣指定的新簇頭就可能不存在了,從而這一簇范圍內(nèi)節(jié)點(diǎn)由于沒(méi)收到簇頭加入報(bào)文就會(huì)整體停止工作,使網(wǎng)絡(luò)出現(xiàn)死區(qū)??紤]此方面,本文設(shè)定舊簇頭節(jié)點(diǎn)在一定的時(shí)間閾值內(nèi)若沒(méi)有指定的新節(jié)點(diǎn)發(fā)來(lái)的簇頭加入報(bào)文,它就確認(rèn)指定的新節(jié)點(diǎn)被意味移動(dòng)走了,從而它指定剩余能量第二多的節(jié)點(diǎn)為新節(jié)點(diǎn),并發(fā)送新的new_CH報(bào)文。這樣新算法就支持了部分節(jié)點(diǎn)移動(dòng)或者有新節(jié)點(diǎn)加入的動(dòng)態(tài)拓?fù)涞木W(wǎng)絡(luò)。
同時(shí)本文設(shè)計(jì)所有節(jié)點(diǎn)在任一輪循環(huán)中,從收到簇頭加入報(bào)文或new_CH報(bào)文開(kāi)始,啟動(dòng)一個(gè)計(jì)時(shí)器Timer,若在最大時(shí)限Tmax內(nèi)沒(méi)有收到新的簇頭加入報(bào)文或new_CH報(bào)文,則啟動(dòng)從第一輪開(kāi)始新的簇頭選擇過(guò)程,相對(duì)于大多數(shù)算法只支持靜態(tài)網(wǎng)絡(luò),本文的算法支持了小范圍地理位置變動(dòng)的傳感器網(wǎng)絡(luò)。
3.5數(shù)據(jù)傳輸
在傳感器網(wǎng)絡(luò)中,簇內(nèi)數(shù)據(jù)傳輸為單跳的,在簇首和各成員節(jié)點(diǎn)之間進(jìn)行,而對(duì)于簇頭到Sink節(jié)點(diǎn)的數(shù)據(jù)傳輸,LEACH算法及一部分改進(jìn)算法是采用簇頭到匯聚節(jié)點(diǎn)的單跳傳輸,這種方法使簇頭使用了多徑衰落的通信模型(文獻(xiàn)[3]),能量消耗很大,本文采用基于距離因子的多跳傳輸方式。由于采用多跳通信,能量消耗為自由空間模型,而且消息在傳送過(guò)程中進(jìn)行了多次數(shù)據(jù)融合,使各級(jí)數(shù)據(jù)轉(zhuǎn)發(fā)中的數(shù)據(jù)量都有所減少,也減少了通信能耗。網(wǎng)絡(luò)所有節(jié)點(diǎn)都存儲(chǔ)有根據(jù)接收到Sink節(jié)點(diǎn)的信號(hào)確定的自己到Sink的距離值,這一距離值在第一輪成簇前就已確定,我們稱之為距離因子。當(dāng)每個(gè)簇的簇內(nèi)數(shù)據(jù)融合進(jìn)行之后,就會(huì)開(kāi)始各簇到Sink的多跳數(shù)據(jù)傳輸。
首先,發(fā)送數(shù)據(jù)的簇頭以確定的半徑RD發(fā)送出消息,消息報(bào)文中還包含了此簇頭的距離因子,周圍的簇頭收到消息后,各簇頭將些距離因子與自己的進(jìn)行比較,若發(fā)現(xiàn)其距離因子小于報(bào)文中的距離因子,且自己的剩余能量值不低于簇間傳輸所需的最小能量閾值Emin后,確定自己將此數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā),將消息報(bào)文中的距離因子替換為其距離因子后以半徑RD繼續(xù)轉(zhuǎn)發(fā),之后傳輸過(guò)程相似。由于轉(zhuǎn)發(fā)消息的簇頭的距離因子小,從而其離Sink節(jié)點(diǎn)更近,這樣消息報(bào)文在簇間就以多跳的最優(yōu)路徑傳向了匯聚節(jié)點(diǎn)。傳輸能量開(kāi)銷得以最小化。
3 仿真研究
NS2(Network Simulator 2)是著名的用于網(wǎng)絡(luò)研究的離散事件仿真工具,里面包括了大量的用于有線和無(wú)線、本地連接或通過(guò)衛(wèi)星連接進(jìn)行TCP協(xié)議、路由算法、多播協(xié)議仿真的網(wǎng)絡(luò)協(xié)議、調(diào)度器和工具。NS的核心部分是一個(gè)離散事件模擬引擎。NS中有一個(gè)“調(diào)度器”(Scheduler)類,負(fù)責(zé)記錄當(dāng)前時(shí)間,調(diào)度網(wǎng)絡(luò)事件隊(duì)列中的事件,并提供函數(shù)產(chǎn)生新事件,指定事件發(fā)生的時(shí)間。在仿真過(guò)程中,將執(zhí)行相關(guān)算法,并且將網(wǎng)絡(luò)運(yùn)行的具體情況寫到文件當(dāng)中,包括數(shù)據(jù)分組的傳遞情況、節(jié)點(diǎn)的能量狀況等,這些文件對(duì)算法之間進(jìn)行比較有很大的作用。本文在仿真場(chǎng)景設(shè)置方面,使用了如下場(chǎng)景設(shè)置方案:
(1) 仿真區(qū)域大小為(100*100)。
(2) 所有節(jié)點(diǎn)的初始能量相同。
(3) 傳感器節(jié)點(diǎn)在區(qū)域(100*100)內(nèi)隨機(jī)分布。
仿真開(kāi)始時(shí),網(wǎng)絡(luò)內(nèi)傳感器節(jié)點(diǎn)的分布狀態(tài)如圖1所示。
仿真結(jié)束之后得到了LEACH和DTEE算法生成的相關(guān)文件,使用awk程序提取算法生成的相關(guān)文件中的關(guān)鍵數(shù)據(jù),然后利用gnuplot工具將這些數(shù)據(jù)顯示于圖表上,得到兩個(gè)算法相比較的曲線圖如圖2所示。
從圖可以看出在仿真過(guò)程中,節(jié)點(diǎn)的能量會(huì)隨著時(shí)間的推移逐漸減少,直至節(jié)點(diǎn)能量耗盡而死,所以在各個(gè)時(shí)段傳感區(qū)內(nèi)仍存有能量的節(jié)點(diǎn)數(shù)是不同的,圖對(duì)兩種算法在不同時(shí)段仍然存活的節(jié)點(diǎn)個(gè)數(shù)做出了比較。首先,LEACH算法在第120秒時(shí)第一個(gè)節(jié)點(diǎn)出現(xiàn)了死亡,而DTEE是在130多秒時(shí)第一個(gè)節(jié)點(diǎn)死亡。從節(jié)點(diǎn)存活數(shù)目圖可以看出,在300秒左右,LEACH算法的存活節(jié)點(diǎn)數(shù)已經(jīng)為0,而DTEE算法仍有8個(gè)節(jié)點(diǎn)能量并未耗盡,直到320秒左右,DTEE算法的節(jié)點(diǎn)才全部死亡,所以DTEE算法中節(jié)點(diǎn)的生命周期比LEACH提高了約6%,可以看出,DTEE算法由于采用多跳的路由方式,網(wǎng)絡(luò)生命周期得到了一定程度的延長(zhǎng)。
本文通過(guò)采用引入能量因子的低復(fù)雜度簇頭選擇算法降低了網(wǎng)絡(luò)通信能耗,在數(shù)據(jù)傳輸上通過(guò)多跳方式進(jìn)行信息路由。仿真結(jié)果顯示,改進(jìn)后的DTEE協(xié)議能更好地平衡網(wǎng)絡(luò)負(fù)載、節(jié)約能量消耗且具有更高的能量使用效率,對(duì)分簇算法的的路由協(xié)議實(shí)現(xiàn)了優(yōu)化。
仿真結(jié)束之后得到了LEACH和DTEE算法生成的相關(guān)文件,使用awk程序提取算法生成的相關(guān)文件中的關(guān)鍵數(shù)據(jù),然后利用gnuplot工具將這些數(shù)據(jù)顯示于圖表上,得到兩個(gè)算法相比較的曲線圖如圖2所示。
從圖可以看出在仿真過(guò)程中,節(jié)點(diǎn)的能量會(huì)隨著時(shí)間的推移逐漸減少,直至節(jié)點(diǎn)能量耗盡而死,所以在各個(gè)時(shí)段傳感區(qū)內(nèi)仍存有能量的節(jié)點(diǎn)數(shù)是不同的,圖對(duì)兩種算法在不同時(shí)段仍然存活的節(jié)點(diǎn)個(gè)數(shù)做出了比較。首先,LEACH算法在第120秒時(shí)第一個(gè)節(jié)點(diǎn)出現(xiàn)了死亡,而DTEE是在130多秒時(shí)第一個(gè)節(jié)點(diǎn)死亡。從節(jié)點(diǎn)存活數(shù)目圖可以看出,在300秒左右,LEACH算法的存活節(jié)點(diǎn)數(shù)已經(jīng)為0,而DTEE算法仍有8個(gè)節(jié)點(diǎn)能量并未耗盡,直到320秒左右,DTEE算法的節(jié)點(diǎn)才全部死亡,所以DTEE算法中節(jié)點(diǎn)的生命周期比LEACH提高了約6%,可以看出,DTEE算法由于采用多跳的路由方式,網(wǎng)絡(luò)生命周期得到了一定程度的延長(zhǎng)。
本文通過(guò)采用引入能量因子的低復(fù)雜度簇頭選擇算法降低了網(wǎng)絡(luò)通信能耗,在數(shù)據(jù)傳輸上通過(guò)多跳方式進(jìn)行信息路由。仿真結(jié)果顯示,改進(jìn)后的DTEE協(xié)議能更好地平衡網(wǎng)絡(luò)負(fù)載、節(jié)約能量消耗且具有更高的能量使用效率,對(duì)分簇算法的的路由協(xié)議實(shí)現(xiàn)了優(yōu)化。