本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種無線傳感器網(wǎng)絡(luò)中基于優(yōu)先級的大塊數(shù)據(jù)分發(fā)方法。
背景技術(shù):
無線傳感器網(wǎng)絡(luò)是由部署在監(jiān)測區(qū)域內(nèi)的大量微型傳感器,通過無線通信方式形成的一種多跳的、自組織的網(wǎng)絡(luò)。傳感器節(jié)點一旦部署完畢將會長期工作于無人看守的或者惡劣的工作環(huán)境中,故通過人工的方式手動地對所有節(jié)點進行再編程將是一項非常耗時、耗力甚至是不可能完成的工作。大塊數(shù)據(jù)分發(fā)技術(shù)是無線傳感器網(wǎng)絡(luò)的一項重要研究內(nèi)容,數(shù)據(jù)從源節(jié)點通過無線通信傳輸?shù)骄W(wǎng)絡(luò)中的所有節(jié)點。數(shù)據(jù)可能是一個新的代碼,系統(tǒng)命令或者更新的系統(tǒng)指標(biāo)等。使用大塊數(shù)據(jù)分發(fā)技術(shù)可以一次性傳輸大量數(shù)據(jù)給網(wǎng)絡(luò)中的所有節(jié)點,傳輸?shù)臄?shù)據(jù)量一般超過10k字節(jié)。
大塊數(shù)據(jù)分發(fā)技術(shù)要求百分之百的可靠性,即網(wǎng)絡(luò)中的所有節(jié)點都要收到完整的數(shù)據(jù),所以最后一個節(jié)點收到完整數(shù)據(jù)的時間就是大塊數(shù)據(jù)分發(fā)的完成時間?,F(xiàn)有的大塊數(shù)據(jù)分發(fā)技術(shù)都以tinyos系統(tǒng)下的deluge協(xié)議為基準(zhǔn),deluge協(xié)議采用三次握手機制進行協(xié)商,協(xié)商成功就可以將數(shù)據(jù)發(fā)送給鄰節(jié)點,鄰節(jié)點再作為發(fā)送節(jié)點將數(shù)據(jù)轉(zhuǎn)發(fā)給下一跳節(jié)點。deluge協(xié)議的優(yōu)點是過程簡單易于實施,缺點是沒有考慮網(wǎng)絡(luò)中的特殊節(jié)點,只要節(jié)點協(xié)商成功就直接發(fā)送數(shù)據(jù),以及沒有采用占空比模式來節(jié)約能耗。
pw-mac協(xié)議是一種占空比模式下的mac層協(xié)議,該協(xié)議中節(jié)點采用異步休眠調(diào)度機制與鄰節(jié)點進行通信。為了能夠預(yù)測鄰節(jié)點的醒來時間,pw_mac協(xié)議使每個節(jié)點使用一個唯一的偽隨機序列喚醒調(diào)度表來計算節(jié)點自身的醒來時間,以減少節(jié)點的碰撞概率。節(jié)點可以在獲得任一節(jié)點的喚醒時刻調(diào)度表之后,隨時計算出這一節(jié)點的醒來時刻。
技術(shù)實現(xiàn)要素:
有鑒于現(xiàn)有技術(shù)的上述缺陷,本發(fā)明所要解決的技術(shù)問題是提供一種無線傳感器網(wǎng)絡(luò)中基于優(yōu)先級的大塊數(shù)據(jù)分發(fā)方法,占空比表示是節(jié)點交替工作在休眠狀態(tài)與活動狀態(tài)之間,該方法采用pw_mac協(xié)議實現(xiàn)占空比,采用優(yōu)先級優(yōu)先向難以獲得數(shù)據(jù)的節(jié)點發(fā)送數(shù)據(jù),目標(biāo)是使網(wǎng)絡(luò)中拖慢整體分發(fā)進程的節(jié)點有更多機會獲得數(shù)據(jù)從而減少分發(fā)完成時間以及節(jié)約節(jié)點能耗。
為實現(xiàn)上述目的,本發(fā)明提供了一種無線傳感器網(wǎng)絡(luò)中基于優(yōu)先級的大塊數(shù)據(jù)分發(fā)方法,節(jié)點根據(jù)pw_mac協(xié)議采用偽隨機序列喚醒調(diào)度表,其中偽隨機序列喚醒時刻調(diào)度表為節(jié)點的休眠時間由偽隨機序列xn+1=(axn+c)%m產(chǎn)生,其中m是模數(shù),a是乘數(shù),c是增量,xn為本次休眠時間,xn+1為下次休眠時間,設(shè)節(jié)點集為v,源節(jié)點為sn,包括如下的步驟:
(1)、節(jié)點s計算下一個最早醒來的節(jié)點r1的醒來時間,并在節(jié)點r1醒來時與節(jié)點r1進行協(xié)商,轉(zhuǎn)向步驟(2);
(2)、如果節(jié)點s與節(jié)點r1協(xié)商成功,則節(jié)點s向節(jié)點r1發(fā)送數(shù)據(jù),轉(zhuǎn)向步驟(3),否則休眠;
(3)、節(jié)點s給節(jié)點r1發(fā)送數(shù)據(jù)的過程中節(jié)點r2醒來,轉(zhuǎn)向步驟(4);
(4)、節(jié)點s計算節(jié)點r1、節(jié)點r2的優(yōu)先級并比較,如果節(jié)點r2的優(yōu)先級低于節(jié)點r1,轉(zhuǎn)向步驟(7),否則轉(zhuǎn)向步驟(5);
(5)、節(jié)點s向節(jié)點r1發(fā)送中止信息暫停數(shù)據(jù)發(fā)送,與節(jié)點r2協(xié)商,轉(zhuǎn)向步驟(6);
(6)、如果節(jié)點s與節(jié)點r2協(xié)商成功,則向節(jié)點r2發(fā)送數(shù)據(jù),否則轉(zhuǎn)向步驟(7);
(7)、節(jié)點s繼續(xù)給節(jié)點r1發(fā)送數(shù)據(jù)。
上述的一種無線傳感器網(wǎng)絡(luò)中基于優(yōu)先級的大塊數(shù)據(jù)分發(fā)方法,其特征在于,所述的步驟(4)中計算節(jié)點r1、節(jié)點r2的優(yōu)先級并比較,按如下步驟進行:
(4.1)、節(jié)點s計算節(jié)點r1、節(jié)點r2的發(fā)送效益eef,轉(zhuǎn)向步驟(4.2);
(4.2)、節(jié)點s獲取節(jié)點r1、節(jié)點r2的深度值level,轉(zhuǎn)向步驟(4.3);
(4.3)、節(jié)點s獲取節(jié)點r1、節(jié)點r2的高度值heght,轉(zhuǎn)向步驟(4.4);
(4.4)、節(jié)點s計算節(jié)點r1、節(jié)點r2接收數(shù)據(jù)的速率sp,轉(zhuǎn)向步驟(4.5);
(4.5)、節(jié)點s采用層次分析法計算出發(fā)送效益eef、深度值level、高度值heght、接收數(shù)據(jù)速率sp的權(quán)重w1,w2,w3,w4,并采用公式
w1·eff+w2·level+w3·heght+w4·sp
將發(fā)送效益、深度值、高度值、接收數(shù)據(jù)的速率加權(quán)計算,得到節(jié)點r1、節(jié)點r2的優(yōu)先級,轉(zhuǎn)向步驟(4.6);
(4.6)如果節(jié)點r2的優(yōu)先級低于節(jié)點r1,轉(zhuǎn)向步驟(7),否則轉(zhuǎn)向步驟(5)。
上述的一種無線傳感器網(wǎng)絡(luò)中基于優(yōu)先級的大塊數(shù)據(jù)分發(fā)方法,其特征在于,所述步驟(4.2)中獲取節(jié)點r1、節(jié)點r2的深度值,節(jié)點的深度值按如下步驟計算:
(4.2.a)初始化節(jié)點深度值,節(jié)點i的深度值用level(i)表示,其中源節(jié)點sn的深度值初始化為0,其余節(jié)點的深度值初始化為∞;
(4.2.b)所有節(jié)點按照偽隨機序列調(diào)度表定期廣播一個包含節(jié)點自身的深度值的信標(biāo)幀,信標(biāo)幀用beacon表示,轉(zhuǎn)到步驟(4.2.c);
(4.2.c)如果節(jié)點收到鄰節(jié)點的beacon,查看beacon中攜帶的鄰節(jié)點的深度值,如果鄰節(jié)點的深度值為無窮大或者鄰節(jié)點的深度值加1大于本節(jié)點的深度值,則重復(fù)步驟(4.2.b),否則轉(zhuǎn)向步驟(4.2.d);
(4.2.d)將本節(jié)點的深度值更新為鄰節(jié)點beacon中攜帶的深度值加1,轉(zhuǎn)向步驟(4.2.b)。
上述的一種無線傳感器網(wǎng)絡(luò)中基于優(yōu)先級的大塊數(shù)據(jù)分發(fā)方法,其特征在于,所述步驟(4.3)中獲取節(jié)點r1、節(jié)點r2的高度值,節(jié)點的高度值按如下步驟計算:
(4.3.a)初始化節(jié)點高度值,節(jié)點i的高度值用height(i)表示,其中所有節(jié)點的深度值都初始化為0;
(4.3.b)所有節(jié)點按占空比模式定期廣播一個包含節(jié)點自身的深度值和高度值的信標(biāo)幀,信標(biāo)幀用beacon表示,轉(zhuǎn)到步驟(4.3.c);
(4.3.c)如果節(jié)點收到鄰節(jié)點的beacon,查看beacon中攜帶的鄰節(jié)點的深度值和高度值,如果鄰節(jié)點的深度值小于或者等于本節(jié)點的深度值,則重復(fù)步驟(4.3.b),否則轉(zhuǎn)向步驟(4.3.d);
(4.3.d)如果鄰節(jié)點的高度值加1大于或者等于本節(jié)點的高度值,則重復(fù)步驟(4.3.b),否則轉(zhuǎn)向步驟(4.3.e);
(4.3.e)將本節(jié)點的高度值更新為鄰節(jié)點beacon中攜帶的高度值加1,重復(fù)步驟(4.3.b)。
本發(fā)明的有益效果是:
1、本發(fā)明采用pw_mac協(xié)議實現(xiàn)了占空比模式下的大塊數(shù)據(jù)分發(fā),節(jié)點大部分時間處于休眠狀態(tài),節(jié)約能耗。
2、本發(fā)明采用優(yōu)先級機制使難以獲得數(shù)據(jù)的節(jié)點有更多機會獲得數(shù)據(jù),加快了分發(fā)進程,減少了整體分發(fā)完成時間。
以下將結(jié)合附圖對本發(fā)明的構(gòu)思、具體結(jié)構(gòu)及產(chǎn)生的技術(shù)效果作進一步說明,以充分地了解本發(fā)明的目的、特征和效果。
附圖說明
圖1為初始化流程圖
圖2為本發(fā)明的實現(xiàn)流程圖
圖3為占空比無線傳感器網(wǎng)絡(luò)拓撲圖。
具體實施方式
下面結(jié)合附圖和實施例對本發(fā)明詳細說明。
以下實施實例用于說明本發(fā)明,但不用來限制本發(fā)明的適用范圍。
實施例1
本發(fā)明適用于低占空比無線傳感器網(wǎng)絡(luò)。每個傳感器節(jié)點根據(jù)pw_mac協(xié)議均有一個唯一的偽隨機序列喚醒時刻調(diào)度表,并可以根據(jù)其他節(jié)點的偽隨機序列喚醒時刻調(diào)度表計算出其他節(jié)點的醒來時間。其中偽隨機序列喚醒時刻調(diào)度表為節(jié)點的休眠時間由偽隨機序列xn+1=(axn+c)%m產(chǎn)生,其中m是模數(shù),a是乘數(shù),c是增量,a,m,c稱之為節(jié)點的預(yù)測參數(shù),xn為本次休眠時間,xn+1為下次休眠時間。一個節(jié)點只要知道另一個節(jié)點的預(yù)測參數(shù)就可以計算出其休眠時間間隔,繼而計算出其醒來的時間。
pw-mac協(xié)議是一種占空比模式下的mac層協(xié)議,該協(xié)議中節(jié)點采用異步休眠調(diào)度機制與鄰節(jié)點進行通信。為了能夠預(yù)測鄰節(jié)點的醒來時間,pw_mac協(xié)議使每個節(jié)點使用一個唯一的偽隨機序列喚醒調(diào)度表來計算節(jié)點自身的醒來時間,以減少節(jié)點的碰撞概率。節(jié)點可以在獲得任一節(jié)點的喚醒時刻調(diào)度表之后,隨時計算出這一節(jié)點的醒來時刻。
當(dāng)傳感器節(jié)點需要向鄰節(jié)點發(fā)送數(shù)據(jù)時,首先需要與鄰節(jié)點進行協(xié)商,協(xié)商成功之后向鄰節(jié)點發(fā)送數(shù)據(jù),鄰節(jié)點再作為發(fā)送節(jié)點向下一跳節(jié)點發(fā)送數(shù)據(jù)。本發(fā)明包含兩個階段,一是初始化階段,更新鄰節(jié)點信息以及深度值和高度值;二是分發(fā)階段,將數(shù)據(jù)從源節(jié)點分發(fā)到網(wǎng)絡(luò)中的所有節(jié)點。
第1部分,初始化過程:
初始化部分,所有節(jié)點保持喚醒狀態(tài),如圖1所示,本發(fā)明的初始化階段實現(xiàn)步驟如下:
步驟1、節(jié)點i初始化深度值和高度值,其中l(wèi)evel(sn)=0,level(i)=∞,i∈v且i≠sn,height(i)=0,i∈v;
步驟2、每個節(jié)點按照自己的偽隨機序列喚醒時刻調(diào)度表發(fā)送beacon,beacon中攜帶了節(jié)點自身的高度值和深度值;
步驟3、節(jié)點i收到節(jié)點j的beacon數(shù)據(jù)包,如果此時網(wǎng)絡(luò)中所有節(jié)點的深度值更新完成,轉(zhuǎn)向步驟5,否則轉(zhuǎn)向步驟4;
步驟4、如果level(i)>level(j)+1,level(i)=level(j)+1,轉(zhuǎn)向步驟2;
步驟5、如果height(i)>height(j)+1,height(i)=height(j)+1,轉(zhuǎn)向步驟2。
第2部分,分發(fā)過程:
如圖2所示,一種占空比無線傳感器網(wǎng)絡(luò)中基于優(yōu)先級的大塊數(shù)據(jù)分發(fā)方法,設(shè)節(jié)點集為v,源節(jié)點為sn,包括如下的步驟:
(1)、節(jié)點s計算下一個最早醒來的節(jié)點r1的醒來時間,并在節(jié)點r1醒來時與節(jié)點r1進行協(xié)商,轉(zhuǎn)向步驟(2);
(2)、如果節(jié)點s與節(jié)點r1協(xié)商成功,則節(jié)點s向節(jié)點r1發(fā)送數(shù)據(jù),轉(zhuǎn)向步驟(3),否則休眠;
(3)、節(jié)點s給節(jié)點r1發(fā)送數(shù)據(jù)的過程中節(jié)點r2醒來,轉(zhuǎn)向步驟(4);
(4)、節(jié)點s計算節(jié)點r1、節(jié)點r2的優(yōu)先級并比較,如果節(jié)點r2的優(yōu)先級低于節(jié)點r1,轉(zhuǎn)向步驟(7),否則轉(zhuǎn)向步驟(5);
(5)、節(jié)點s向節(jié)點r1發(fā)送中止信息暫停數(shù)據(jù)發(fā)送,與節(jié)點r2協(xié)商,轉(zhuǎn)向步驟(6);
(6)、如果節(jié)點s與節(jié)點r2協(xié)商成功,則向節(jié)點r2發(fā)送數(shù)據(jù),否則轉(zhuǎn)向步驟(7);
(7)、節(jié)點s繼續(xù)給節(jié)點r1發(fā)送數(shù)據(jù)。
本實施例中,所述的步驟(4)中計算節(jié)點r1、節(jié)點r2的優(yōu)先級并比較,按如下步驟進行:
(4.1)、節(jié)點s計算節(jié)點r1、節(jié)點r2的發(fā)送效益eef,轉(zhuǎn)向步驟(4.2);
(4.2)、節(jié)點s獲取節(jié)點r1、節(jié)點r2的深度值level,轉(zhuǎn)向步驟(4.3);
(4.3)、節(jié)點s獲取節(jié)點r1、節(jié)點r2的高度值heght,轉(zhuǎn)向步驟(4.4);
(4.4)、節(jié)點s計算節(jié)點r1、節(jié)點r2接收數(shù)據(jù)的速率sp,轉(zhuǎn)向步驟(4.5);
(4.5)、節(jié)點s采用層次分析法計算出發(fā)送效益eef、深度值level、高度值heght、接收數(shù)據(jù)速率sp的權(quán)重w1,w2,w3,w4,并采用公式
w1·eff+w2·level+w3·heght+w4·sp
將發(fā)送效益、深度值、高度值、接收數(shù)據(jù)的速率加權(quán)計算,得到節(jié)點r1、節(jié)點r2的優(yōu)先級,轉(zhuǎn)向步驟(4.6);
(4.6)如果節(jié)點r2的優(yōu)先級低于節(jié)點r1,轉(zhuǎn)向步驟(7),否則轉(zhuǎn)向步驟(5)。
層次分析法(analytichierarchyprocess,簡稱ahp),是將與決策有關(guān)的元素分解成目標(biāo)、準(zhǔn)則、方案等層次,在此基礎(chǔ)之上進行定性和定量分析的決策方法。具體步驟為:
建立層次結(jié)構(gòu)模型。在深入分析實際問題的基礎(chǔ)上,將有關(guān)的各個因素按照不同屬性自上而下地分解成若干層次,同一層的諸因素從屬于上一層的因素或?qū)ι蠈右蛩赜杏绊?,同時又支配下一層的因素或受到下層因素的作用。最上層為目標(biāo)層,通常只有1個因素,最下層通常為方案或?qū)ο髮?,中間可以有一個或幾個層次,通常為準(zhǔn)則或指標(biāo)層。當(dāng)準(zhǔn)則過多時(譬如多于9個)應(yīng)進一步分解出子準(zhǔn)則層。
構(gòu)造判斷矩陣。從層次結(jié)構(gòu)模型的第2層開始,對于從屬于上一層每個因素的同一層諸因素,構(gòu)造判斷矩陣直到最下層。
計算權(quán)向量并做一致性檢驗。對于每一個判斷矩陣計算最大特征根及對應(yīng)特征向量,進行一致性檢驗分析。若檢驗通過,特征向量歸一化后即為權(quán)向量;若不通過,需重新構(gòu)造判斷矩陣。
本實施例中,所述步驟(4.2)中獲取節(jié)點r1、節(jié)點r2的深度值,節(jié)點的深度值按如下步驟計算:
(4.2.a)初始化節(jié)點深度值,節(jié)點i的深度值用level(i)表示,其中源節(jié)點sn的深度值初始化為0,其余節(jié)點的深度值初始化為∞;
(4.2.b)所有節(jié)點按照偽隨機序列調(diào)度表定期廣播一個包含節(jié)點自身的深度值的信標(biāo)幀,信標(biāo)幀用beacon表示,轉(zhuǎn)到步驟(4.2.c);
(4.2.c)如果節(jié)點收到鄰節(jié)點的beacon,查看beacon中攜帶的鄰節(jié)點的深度值,如果鄰節(jié)點的深度值為無窮大或者鄰節(jié)點的深度值加1大于本節(jié)點的深度值,則重復(fù)步驟(4.2.b),否則轉(zhuǎn)向步驟(4.2.d);
(4.2.d)將本節(jié)點的深度值更新為鄰節(jié)點beacon中攜帶的深度值加1,轉(zhuǎn)向步驟(4.2.b)。
本實施例中,所述步驟(4.3)中獲取節(jié)點r1、節(jié)點r2的高度值,節(jié)點的高度值按如下步驟計算:
(4.3.a)初始化節(jié)點高度值,節(jié)點i的高度值用height(i)表示,其中所有節(jié)點的深度值都初始化為0;
(4.3.b)所有節(jié)點按占空比模式定期廣播一個包含節(jié)點自身的深度值和高度值的信標(biāo)幀,信標(biāo)幀用beacon表示,轉(zhuǎn)到步驟(4.3.c);
(4.3.c)如果節(jié)點收到鄰節(jié)點的beacon,查看beacon中攜帶的鄰節(jié)點的深度值和高度值,如果鄰節(jié)點的深度值小于或者等于本節(jié)點的深度值,則重復(fù)步驟(4.3.b),否則轉(zhuǎn)向步驟(4.3.d);
(4.3.d)如果鄰節(jié)點的高度值加1大于或者等于本節(jié)點的高度值,則重復(fù)步驟(4.3.b),否則轉(zhuǎn)向步驟(4.3.e);
(4.3.e)將本節(jié)點的高度值更新為鄰節(jié)點beacon中攜帶的高度值加1,重復(fù)步驟(4.3.b)。
實施例2
占空比無線傳感器網(wǎng)絡(luò)基于優(yōu)先級的大塊數(shù)據(jù)分發(fā)方法同實施例1,本例以圖3所示的簡單網(wǎng)絡(luò),對本發(fā)明的占空比無線傳感器網(wǎng)絡(luò)中初始化部分節(jié)點的高度值和深度值更新過程進行描述。
圖3所示為一個占空比無線傳感器網(wǎng)絡(luò),節(jié)點0為源節(jié)點,節(jié)點間的連線表示節(jié)點互相連通,為方便描述,用(d,h)表示節(jié)點的深度值和高度值,d表示深度值,h表示高度值。節(jié)點0的高度值和深度值初始化為(0,0),其他節(jié)點的高度值和深度值初始化為(∞,0)。
每個節(jié)點都按照自己的偽隨機序列喚醒時刻表喚醒,并廣播信標(biāo)幀beacon,beacon中攜帶了自己的深度值和高度值。網(wǎng)絡(luò)中節(jié)點先更新深度值,全部節(jié)點深度值更新完之后更新高度值。
第1部分,更新深度值:
深度值更新從節(jié)點0開始逐層進行,節(jié)點0廣播自己的深度值和高度值。節(jié)點1和節(jié)點2接收到來自節(jié)點0的信標(biāo)幀,更新自己的深度值,網(wǎng)絡(luò)中所有節(jié)點的深度值和高度值如表1所示。
表1節(jié)點1、2更新深度值
節(jié)點1和節(jié)點2根據(jù)自己的偽隨機序列喚醒時刻表廣播自己的深度值和高度值,節(jié)點3、4、5、6接收到來自節(jié)點1和節(jié)點2的信標(biāo)幀,更新的深度值如表2所示。
表2節(jié)點3、4、5、6更新深度值
節(jié)點3、4、5、6根據(jù)自己的偽隨機序列喚醒時刻表廣播自己的深度值和高度值,節(jié)點7、8、9接收到來自節(jié)點4、5的信標(biāo)幀,更新的深度值如表3所示,至此,網(wǎng)絡(luò)中所有節(jié)點深度值更新完畢。
表3節(jié)點7、8、9更新深度值
第2部分,更新高度值:
高度值是從下往上更新的過程,節(jié)點7、8、9根據(jù)自己的偽隨機序列喚醒時刻表廣播自己的深度值和高度值,節(jié)點4、5接收到來自節(jié)點7、8、9的信標(biāo)幀,更新的高度值如表4所示。
表4節(jié)點4、5更新高度值
節(jié)點3、4、5、6根據(jù)自己的偽隨機序列喚醒時刻表廣播自己的深度值和高度值,節(jié)點1、2接收到來自節(jié)點3、4、5、6的信標(biāo)幀,更新的高度值如表5所示。
表5節(jié)點1、2更新高度值
節(jié)點1、2根據(jù)自己的偽隨機序列喚醒時刻表廣播自己的深度值和高度值,節(jié)點0接收到來自節(jié)點1、2的信標(biāo)幀,更新的高度值如表6所示。至此,網(wǎng)絡(luò)中所有節(jié)點的深度值和高度值都更新完畢。
表6節(jié)點0更新高度值
以上詳細描述了本發(fā)明的較佳具體實施例。應(yīng)當(dāng)理解,本領(lǐng)域的普通技術(shù)人員無需創(chuàng)造性勞動就可以根據(jù)本發(fā)明的構(gòu)思做出諸多修改和變化。因此,凡本技術(shù)領(lǐng)域中技術(shù)人員依本發(fā)明的構(gòu)思在現(xiàn)有技術(shù)的基礎(chǔ)上通過邏輯分析、推理或者有限的實驗可以得到的技術(shù)方案,皆應(yīng)在由權(quán)利要求書所確定的保護范圍內(nèi)。