童孟軍,李光輝,徐小良
(1.浙江農(nóng)林大學(xué)信息工程學(xué)院,杭州臨安311300;2.杭州電子科技大學(xué)計算機學(xué)院,杭州310018)
無線傳感器網(wǎng)絡(luò)WSNs(Wireless Sensor Networks)[1]是繼Internet之后隨著無線通信技術(shù)、傳感器技術(shù)、微電子技術(shù)和分布信息處理技術(shù)發(fā)展起來的一種新興信息獲取技術(shù)。WSNs綜合了嵌入式技術(shù)、傳感器技術(shù)、通信技術(shù)和分布式信息處理技術(shù),能夠協(xié)作實時感知、監(jiān)測、采集網(wǎng)絡(luò)分布區(qū)域內(nèi)的各種環(huán)境的信息,并對數(shù)據(jù)進行適當(dāng)?shù)奶幚硪垣@得精簡準(zhǔn)確的信息,并傳送給最終的用戶。收集環(huán)境數(shù)據(jù)是無線傳感網(wǎng)的主要目的,無線傳感網(wǎng)中收集環(huán)境數(shù)據(jù)的方法有以下幾種方法[2]:
周期傳輸 匯聚節(jié)點定期收到傳感器節(jié)點發(fā)來的數(shù)據(jù)信息。
事件驅(qū)動型 匯聚節(jié)點平時收不到任何數(shù)據(jù),只有當(dāng)有事件發(fā)生時,傳感節(jié)點才會產(chǎn)生數(shù)據(jù)信息給匯聚節(jié)點。
查詢型 只有在收到匯聚節(jié)點發(fā)出的請求包后,傳感節(jié)點才會發(fā)送數(shù)據(jù)給匯聚節(jié)點。
混合型 采用的是以上三種方法中的的兩到三種方法的信息傳輸方法。
事件型驅(qū)動網(wǎng)絡(luò)中,一般在同一個事件區(qū)域布置大量的無線傳感網(wǎng)節(jié)點,當(dāng)有事件發(fā)生時,也就是傳感器節(jié)點檢測的事件信息超過某一個門限值,傳感節(jié)點會被動發(fā)送數(shù)據(jù)給匯聚節(jié)點。事件型網(wǎng)絡(luò)可應(yīng)用于森林檢測、水資源環(huán)境和火災(zāi)報警等,這樣的網(wǎng)絡(luò)有個特點,網(wǎng)絡(luò)規(guī)模大,節(jié)點多,事件附近的信息都比較類似,如果有大量的源節(jié)點要發(fā)送數(shù)據(jù),會產(chǎn)生大量的路由請求開銷、數(shù)據(jù)發(fā)送沖突和能量消耗。而分簇機制非常適合這種事件型驅(qū)動的網(wǎng)絡(luò)。
目前已經(jīng)開發(fā)出多種以節(jié)約能量為目的的路由協(xié)議,其中最流行和有效的方法是分簇機制。平面路由協(xié)議具有簡單、健壯性好等優(yōu)點,但數(shù)據(jù)傳輸?shù)奶鴶?shù)較多,適用于小規(guī)模網(wǎng)絡(luò)。對于大規(guī)模的無線傳感網(wǎng),層次型路由協(xié)議是一個很好的選擇。在層次型路由協(xié)議中使用分簇技術(shù)將達到很高的能量有效性。此外,分簇還可以提高網(wǎng)絡(luò)的可擴展性,以及降低由于數(shù)據(jù)分組轉(zhuǎn)發(fā)帶來的時延。
對于匯聚節(jié)點來說,有時候也可能需要查詢事件區(qū)域的信息,對于這樣網(wǎng)絡(luò)情況,從匯聚節(jié)點出發(fā)的搜索螞蟻機制非常合適。
本文提出一種基于分簇和蟻群算法[3]的能量有效的多路徑路由協(xié)議CAEMP(Cluster-Based and Ant-Based Energy-Efficient Multipath Protocol),主要適用于事件驅(qū)動和查詢的混合數(shù)據(jù)采集方法。對于事件區(qū)域附近的節(jié)點,由于感知信息的高度相似性,通過成簇的方法來減少發(fā)送的數(shù)據(jù)。對于匯聚節(jié)點,如果需要事件區(qū)域的數(shù)據(jù),可以采用發(fā)送搜索螞蟻到事件區(qū)域的方法來獲取所需要的數(shù)據(jù),同時在鏈路上釋放搜索信息素[4-5]。事件區(qū)域形成的簇,簇頭可以通過發(fā)送前向螞蟻的方法來尋找到匯聚節(jié)點的多路徑,搜索螞蟻留下的信息素可以加快前向螞蟻到達匯聚節(jié)點的速度。
在WSNs的研究技術(shù)領(lǐng)域,網(wǎng)絡(luò)的拓撲控制具有重要的研究意義。通過拓撲控制技術(shù)可以優(yōu)化網(wǎng)絡(luò)拓撲,節(jié)省不必要的節(jié)點能量損耗,有利于延長網(wǎng)絡(luò)的壽命。拓撲控制包括功率控制和層次型拓撲控制。功率控制是調(diào)節(jié)節(jié)點的發(fā)送功率,均衡每個節(jié)點的單跳鄰居節(jié)點數(shù)目,使得網(wǎng)絡(luò)的能量更加均衡,延長網(wǎng)路壽命。層次型拓撲控制采用分簇機制,即一個網(wǎng)絡(luò)分為幾個簇,每個簇選擇一個簇頭,同一個簇內(nèi)的節(jié)點均將數(shù)據(jù)發(fā)送給簇頭,由簇頭同簇外通信。
在無線傳感網(wǎng)中,有許多的分簇機制可以有效地提高網(wǎng)絡(luò)能量的利用效率。在許多的分簇算法中,簇頭CH(Cluster Head)節(jié)點的選擇是基于節(jié)點的ID號、節(jié)點的執(zhí)行能力和節(jié)點的度量[6]等。還有一些分簇算法試圖在同一個地方的網(wǎng)絡(luò)中耗盡所有傳感器節(jié)點的能量,為了實現(xiàn)這個目標(biāo),CH節(jié)點的選取就要依靠節(jié)點的剩余能量或者周期性地重新成簇[7]。然而像文獻[8]中提到的一樣,許多的分簇算法規(guī)定了簇的大小或者集中在減少簇內(nèi)節(jié)點的數(shù)量。另外許多分簇算法是基于傳感器節(jié)點的度、剩余能量和選擇CH節(jié)點的連接性提出的。然而,大多數(shù)的這些分簇算法沒有考慮WSNs中具體的數(shù)據(jù)采集問題。
分簇和多路徑路由協(xié)議結(jié)合,是近年來WSNs中數(shù)據(jù)采集問題研究的一個熱點問題。文獻[9]按照節(jié)點與匯聚節(jié)點之間的距離對網(wǎng)絡(luò)進行了分層,這里的距離用跳數(shù)來進行計量。在網(wǎng)絡(luò)分層的基礎(chǔ)上,研究人員提出了多路徑路由協(xié)議,從而可以達到網(wǎng)絡(luò)能量消耗的負載均衡。但這種網(wǎng)絡(luò)分層的方法只適合比較小的網(wǎng)絡(luò)系統(tǒng)。
針對現(xiàn)有多路徑路由算法中可擴展性差的問題,在文獻[10]中作者提出了一種基于簇的多路徑路由算法CBMRP,該算法使用分簇的方法來提高可擴展性。首先利用基于簇的層次結(jié)構(gòu)動態(tài)處理網(wǎng)絡(luò)拓撲變化,能夠減少路由管理和路由維護的開銷,另外利用建立多路徑來傳輸數(shù)據(jù),可以實現(xiàn)擁塞避免和負載均衡,實現(xiàn)網(wǎng)絡(luò)帶寬的優(yōu)化應(yīng)用。CBMRP協(xié)議是一個單層簇、分布式推進逐段查找路徑的多路徑路由協(xié)議,其缺點是:采用單層簇的簡單結(jié)構(gòu)可擴展性較差,適用范圍有限;采用分布式逐段查找路徑方法對于稍大一點網(wǎng)絡(luò),這種方法查找路徑太過繁雜,開銷迅速增加。
針對無線傳感網(wǎng)中節(jié)點數(shù)量多、節(jié)點分布不均勻、網(wǎng)絡(luò)拓撲動態(tài)變化等特點,在文獻[11]中作者提出一種基于簇頭指揮路徑的多路徑路由協(xié)議(CDPMR),運用該協(xié)議的無線傳感網(wǎng),簇頭負責(zé)簇的管理、簇指揮路徑生成、指揮簇成員生成多路徑路由。對于大規(guī)模的無線傳感網(wǎng)來說,CDPMR協(xié)議使得網(wǎng)絡(luò)可擴展性好、穩(wěn)定性高,能及時響應(yīng)網(wǎng)絡(luò)負載和網(wǎng)絡(luò)局部變化,有效減少網(wǎng)絡(luò)重構(gòu)代價,節(jié)省能量。在生成多路徑路由階段,簇頭考慮當(dāng)前節(jié)點的實時信息,生成多路徑路由速度快,健壯性好,負載均衡,網(wǎng)絡(luò)吞吐量高,從而有利于延長網(wǎng)絡(luò)生命周期。
針對事件驅(qū)動型的無線傳感網(wǎng),按需的事件驅(qū)動路由算法可以克服主動型協(xié)議的許多缺點,在文獻[12]中作者提出了一種被動分簇多路徑算法(PPCMP),PPCMP算法在邏輯上將網(wǎng)絡(luò)劃分為簇,并使用分層管理策略,以實現(xiàn)能量的有效利用、可擴展性和負載平衡。算法執(zhí)行分為許多輪次,在第一輪使用事件驅(qū)動的按需分簇,而在以后的輪次采用主動分簇。簇頭和各個簇內(nèi)節(jié)點的通信是在規(guī)定的不同的時隙內(nèi)完成的。在簇外使用不交叉的多路徑來實現(xiàn)簇頭和Sink節(jié)點之間的通信,以避免擁塞及擴大帶寬。最佳路徑搜索和多路徑擴展是建立多路徑路由的核心。同時該算法在數(shù)據(jù)傳輸階段使用網(wǎng)絡(luò)編碼技術(shù)實現(xiàn)數(shù)據(jù)的可靠傳輸。仿真結(jié)果表明,該路由協(xié)議適用于事件驅(qū)動型的大規(guī)模無線傳感網(wǎng)。
針對事件驅(qū)動型無線傳感網(wǎng)的應(yīng)用,在文獻[13]中作者提出一種基于簇的多路徑數(shù)據(jù)收集協(xié)議MRP,該算法結(jié)合了層次路由協(xié)議和多路徑路由協(xié)議的各自優(yōu)點。在該協(xié)議簇的形成階段中,由位于事件區(qū)域的節(jié)點動態(tài)成簇來提高數(shù)據(jù)融合的效率,因此降低了節(jié)點的能耗,在多路徑建立階段,通過蟻群算法實現(xiàn)從簇首節(jié)點到匯聚節(jié)點的多路徑路由,在數(shù)據(jù)傳輸階段通過人工螞蟻的返回信息動態(tài)地選擇一條路徑傳輸數(shù)據(jù),達到了負載平衡和節(jié)能要求。此外,MRP協(xié)議還可根據(jù)監(jiān)測精度要求進行簇內(nèi)調(diào)度,通過控制活動節(jié)點數(shù)進一步降低能耗。仿真結(jié)果表明,通過數(shù)據(jù)融合后,MRP協(xié)議能有效地降低節(jié)點的能耗,具有較長的網(wǎng)絡(luò)生存期,適用于大規(guī)模的事件驅(qū)動型無線傳感網(wǎng)。
上述介紹的一些分簇多路徑路由協(xié)議。有些協(xié)議分簇時候沒有考慮到事件區(qū)域,這樣會造成簇頭節(jié)點數(shù)據(jù)的不相關(guān)性增大,不能很好的進行數(shù)據(jù)融合,也不能有效減少到達目的節(jié)點的數(shù)據(jù)量。有些協(xié)議,多路徑上沒有考慮能量因素,不能做到整個網(wǎng)絡(luò)的能量負載均衡。有些協(xié)議,只是單個的數(shù)據(jù)采集方法,不能進行查詢?;谙伻核惴ǖ穆酚蓞f(xié)議適合設(shè)計能量負載均衡的多路徑路由協(xié)議[14-15]。在綜合考慮以上這些因素,結(jié)合分簇和蟻群算法,提出提出一種適用于事件驅(qū)動和查詢的混合數(shù)據(jù)采集方法的CAEMP協(xié)議
CAEMP協(xié)議對于事件區(qū)域附近的節(jié)點,由于感知信息的高度相似性,通過成簇的方法來減少發(fā)送的數(shù)據(jù)。對于匯聚節(jié)點,如果需要事件區(qū)域的數(shù)據(jù),可以采用發(fā)送搜索螞蟻到事件區(qū)域的方法來獲取所需要的數(shù)據(jù),同時在鏈路上釋放搜索信息素。事件區(qū)域形成的簇,簇頭可以通過發(fā)送前向螞蟻的方法來尋找到匯聚節(jié)點的多路徑,搜索螞蟻留下的信息素可以加快前向螞蟻到達匯聚節(jié)點的速度。
CAEM協(xié)議采用了動態(tài)分簇方式。對于事件區(qū)域的傳感器節(jié)點,為了更好的節(jié)省能量,假設(shè)事件區(qū)域的每個節(jié)點裝有低功率射頻喚醒設(shè)備[16]。射頻喚醒電路所消耗的能量如下所示:
式(1)中k是喚醒報文的大小,以比特為單位,Eradio代表射頻喚醒電路消耗的能量,Eamp表示在射頻喚醒設(shè)備上放大每比特所消耗的能量。
根據(jù)文獻[17],對于空閑偵聽時所消耗的能量也不能忽略,具體定義如下:
Eelec代表接收電路的能耗;α是調(diào)整因子,α值比1小,但比較接近于1。
無線傳感器節(jié)點能量的主要消耗在于通信模塊,并且節(jié)點空閑監(jiān)聽時所消耗的能量與接收信息時所消耗的能量差不多,比節(jié)點發(fā)送數(shù)據(jù)時所消耗的能量稍微少點。為了盡可能節(jié)約空閑監(jiān)聽時的能量消耗,CAEMP協(xié)議的基本能量管理機制采用的是射頻喚醒技術(shù)[17-18]。事件區(qū)域的傳感節(jié)點在沒有事件發(fā)生的時候處于睡眠狀態(tài),當(dāng)有事件發(fā)生的時候,節(jié)點就會轉(zhuǎn)到激活工作狀態(tài)。
CAEMP協(xié)議包括兩個階段:簇的形成和多路徑的建立。在簇的形成階段解決的最主要問題是簇頭的產(chǎn)生。如果事件區(qū)域有事件發(fā)生或者事件區(qū)域有搜索螞蟻到達,那感知到事件或收到搜索螞蟻的節(jié)點都會被激活,處于工作初始狀態(tài)。處于工作初始狀態(tài)的節(jié)點,首先會給鄰居節(jié)點發(fā)送HELLO報文,獲取鄰居節(jié)點也就是節(jié)點周圍的信息。當(dāng)過了一定的時間,事件區(qū)域感知到事件的節(jié)點都獲知了周圍的信息,這時候節(jié)點就要相互競爭成為簇頭。有資格競選簇頭的節(jié)點,在競爭開始階段,都處于候選簇頭狀態(tài)。在這個競爭簇頭的時間內(nèi),侯選簇頭們采用的是文獻[19]提出的“先發(fā)布者勝”的機制。每個節(jié)點都延遲等待一段時間,哪個節(jié)點的延遲等待時間短,就先發(fā)送簇頭廣播通告,成為簇頭。另外還處于候選監(jiān)聽狀態(tài)的節(jié)點,就取消延遲等待,并申請成為一個簇內(nèi)成員節(jié)點。在簇頭選擇階段,如何計算簇頭競選等待時間Twait就變得非常重要。為了優(yōu)化簇頭結(jié)構(gòu),減少能量消耗,所以計算等待時間Twait時需要考慮以下幾個因素[20]:
(1)由于簇頭節(jié)點不僅要接受簇內(nèi)節(jié)點的數(shù)據(jù),同時還需要轉(zhuǎn)發(fā)給Sink節(jié)點,簇頭節(jié)點的能量消耗是最大的。所以在計算等待時間Twait的時候,一定要考慮節(jié)點的剩余能量,節(jié)點的剩余能量越多,當(dāng)選簇頭的概率就越大,即Twait越小,節(jié)點也越早廣播簇頭通告。
(2)為了解決簇內(nèi)節(jié)點能量非均勻分布的問題,文獻[21]表明考慮鄰居節(jié)點的平均能量,能更好的平衡能量負載。在計算等待時間Twait的時候,優(yōu)先考慮鄰居節(jié)點平均能量小的那些節(jié)點成為簇頭。
(3)在選擇簇頭時,為了節(jié)省簇內(nèi)的通信代價,使得簇頭節(jié)點盡量處于相對中間的位置[2]。所以在計算等待時間Twait的時候,還需要考慮的兩個參數(shù)是節(jié)點的鄰居數(shù)量和通信代價,節(jié)點鄰居數(shù)量越多,通信開銷越少,節(jié)點就更有機會當(dāng)選為簇頭。
(4)當(dāng)簇頭節(jié)點會于事件區(qū)域中心的時候,采集數(shù)據(jù)所消耗的能量是最小的。所以,計算等待時間Twait的時候,也要考慮節(jié)點感知到的事件的信號強度,信號越強,當(dāng)選簇頭的機會就越大。
簡言之,要使鄉(xiāng)村從原來被動接受的從屬地位中擺脫出來,伴隨兩個平等主體在異質(zhì)中發(fā)揮各自優(yōu)勢,城鄉(xiāng)融合的體制機制加快形成,兩者的互補和互需將不斷增強,最終形成命運共同體。
綜合上述考慮,得出Twait的計算公式為:
其中α和β是時間系數(shù),其值在0到1之間,α+β=1,本文后面的實驗,這兩個系數(shù)的值都為0.5。T1的計算公式如下所示:
其中,Ei是當(dāng)前節(jié)點i的剩余能量,Ni是節(jié)點i的鄰居節(jié)點的數(shù)量,Si是節(jié)點i接受到的事件信號強度,k1、k2、k3分別是控制 Ei,Ni和 Si的權(quán)衡參數(shù),本文后面的實驗,這幾個系數(shù)的值都為1。Ei_avg是節(jié)點i的鄰居節(jié)點的平均剩余能量,計算公式如下所示:
其中,Ej是節(jié)點i的鄰居節(jié)點j的剩余能量。
選擇簇頭的時候,簇內(nèi)通信代價也是決定節(jié)點是否成為簇首的一個重要標(biāo)準(zhǔn),成簇后,簇內(nèi)通信開銷少,節(jié)點能量消耗少,網(wǎng)絡(luò)的壽命就更長。簇內(nèi)通信代價可以表示為一個節(jié)點與其鄰節(jié)點之間的平均距離的平方,這個距離平方實際上與鄰居節(jié)點通信時消耗的能量成正比[21]。作為一個候選簇頭,能耗是一個關(guān)鍵因素。如果與鄰節(jié)點的平均距離短,候選簇頭將花費較少能量與之通信,這樣就使候選簇頭擁有較大的概率成為簇頭。T2是簇內(nèi)通信開銷的參數(shù),它的計算公式如下所示:
其中,Dij是節(jié)點j與節(jié)點i的距離,從式(6)可以看出,Dij越大,T2的值就越大;相反,Dij越小,T2的值就越小,節(jié)點就越有機會成為簇頭。這樣就可以減少簇內(nèi)通信代價。通過上述計算得出的Twait值最小的節(jié)點當(dāng)選為簇頭。
成簇算法具體描述如下:
第1步 如果檢測到有事件發(fā)生,節(jié)點就要被激活,進入工作初始狀態(tài)。節(jié)點開始進入了簇頭選擇過程的準(zhǔn)備工作。節(jié)點在初始狀態(tài),主要是發(fā)送HELLO報文給鄰居,用以確認(rèn)感知事件的鄰居的數(shù)量和鄰居節(jié)點的能量,當(dāng)獲取到周圍節(jié)點的信息后,節(jié)點開始計算簇頭競爭等待時間。
第2步 節(jié)點在初始狀態(tài)后,如果節(jié)點剩余能量滿足要求,即節(jié)點的剩余能量大于鄰居節(jié)點的平均能量的一半,節(jié)點才有資格成為簇頭,節(jié)點就進入候選簇頭監(jiān)聽狀態(tài)。節(jié)點在候選簇頭監(jiān)聽狀態(tài)的時間最大值為簇頭競爭時間。在這個時間內(nèi),侯選簇頭們采用的是“先發(fā)布者勝”的機制,節(jié)點一直處于監(jiān)聽狀態(tài),看看有沒有收到別的節(jié)點發(fā)送過來的簇頭廣播通告,如果在等待時間內(nèi),節(jié)點收到簇頭廣播通告,節(jié)點就進入普通狀態(tài)。如果等待時間結(jié)束,節(jié)點還沒有收到任何簇頭廣播通告,節(jié)點就發(fā)送簇頭廣播通告,節(jié)點自己就進入簇頭狀態(tài)。
第3步 節(jié)點如果是處于普通狀態(tài),就要發(fā)送加入簇的請求報文給簇頭。簇頭收到全部加入請求報文后,根據(jù)簇的情況,部分或全部接受普通節(jié)點為簇內(nèi)成員節(jié)點,并分配相應(yīng)的時隙。
第4步 簇內(nèi)節(jié)點在自己分配的時隙發(fā)送信息給簇頭。如果普通節(jié)點沒有成為簇內(nèi)成員節(jié)點,節(jié)點不用發(fā)送數(shù)據(jù),節(jié)點就進入睡眠狀態(tài)。
第5步 簇頭根據(jù)加入請求報文里的簇頭競爭時間,選擇其中最大的作為備份簇頭。
第6步 為了均衡事件區(qū)域節(jié)點的剩余能量。簇頭在進行數(shù)據(jù)收發(fā)的時候,需要定期監(jiān)測自己的剩余能量,如果簇頭節(jié)點發(fā)現(xiàn)成簇后已經(jīng)消耗了一半的剩余能量,簇頭就要準(zhǔn)備進行切換,備份簇頭成為簇頭,同時減少重新成簇的開銷。
簇頭選舉完成后,事件區(qū)域內(nèi)收到簇頭廣播通告的節(jié)點就要發(fā)送加入請求報文。在簇內(nèi)部,由于節(jié)點距離都比較近,如果不采取一定的機制,簇內(nèi)成員節(jié)點同時給簇頭發(fā)送數(shù)據(jù),會容易造成沖突,所以簇內(nèi)通信采用TDMA[22]機制。簇頭給簇內(nèi)成員節(jié)點分配時隙,簇內(nèi)成員就可以開始在分配的時隙給簇頭發(fā)送數(shù)據(jù)。簇頭接收完簇內(nèi)成員節(jié)點的數(shù)據(jù)后,對數(shù)據(jù)進行融合,然后發(fā)送給SINK節(jié)點。本文不考慮簇頭具體的融合過程,由于事件區(qū)域的數(shù)據(jù)都比較接近,CAEMP協(xié)議認(rèn)為簇頭數(shù)據(jù)的融合是100%融合??紤]到上面這個數(shù)據(jù)發(fā)送和融合過程,如果簇內(nèi)節(jié)點比較多,簇內(nèi)的通信開銷和簇頭發(fā)送數(shù)據(jù)給SINK節(jié)點也會比較延后。如果是在應(yīng)用比較緊急的場合,需要事件區(qū)域及時把信息數(shù)據(jù)傳遞給SINK節(jié)點。事件區(qū)域的傳感器節(jié)點分布密集,事件信息又有高度的重合性,所以簇頭在選取簇內(nèi)節(jié)點的時候,可以不超過一定的數(shù)量,本文選擇的數(shù)量是事件區(qū)域中原始節(jié)點數(shù)的一半節(jié)點。簇頭節(jié)點在收到加入請求報文后,選取Twait最小的幾個節(jié)點作為簇內(nèi)成員節(jié)點,然后給它們分配時隙,沒有成為簇內(nèi)節(jié)點的普通節(jié)點,就可以進入睡眠狀態(tài),節(jié)省能量??刂剖录^(qū)域簇的規(guī)模,可以減少事件區(qū)域節(jié)點的能量開銷和數(shù)據(jù)發(fā)送的延遲。
簇頭的能量消耗比較大,如果事件區(qū)域的數(shù)據(jù)量比較大,為了避免簇頭的頻繁選舉,簇頭根據(jù)加入請求報文里的簇頭競選等待時間,選擇其中時間最小的作為備份簇頭。當(dāng)簇頭節(jié)點能量消耗到一定的程度,簇頭可以發(fā)消息給備份簇頭,備份簇頭成為簇頭,繼續(xù)按照簇頭分配的時隙進行數(shù)據(jù)的傳遞。同時,新當(dāng)選的簇頭,則可以根據(jù)Twait選取其中對應(yīng)的節(jié)點成為備份簇頭。
當(dāng)簇頭收集到簇內(nèi)的數(shù)據(jù),進行數(shù)據(jù)融合后,就需要給SINK節(jié)點發(fā)送數(shù)據(jù)。當(dāng)簇頭需要向目的節(jié)點發(fā)送數(shù)據(jù)時,需要查看路由信息,如果這個時候沒有到達目的節(jié)點的路由,就需要開始發(fā)送前向螞蟻,需要發(fā)送的數(shù)據(jù)進行緩存。如果有到達目的節(jié)點的路由,就可以直接進行數(shù)據(jù)發(fā)送。
CAEMP協(xié)議采集數(shù)據(jù)的方式是事件驅(qū)動和查詢的混合數(shù)據(jù)采集方法。所以,當(dāng)SINK節(jié)點需要數(shù)據(jù)的時候,也會對事件區(qū)域發(fā)送搜索螞蟻,同時在鏈路上釋放搜索信息素,搜索信息素可以加快前向螞蟻到達匯聚節(jié)點的速度。式(7)顯示了路由表中搜索螞蟻信息素更新的方式:
式中Ni是當(dāng)前節(jié)點i搜索信息素鏈路上的鄰居集合。
從簇頭出發(fā)的前向螞蟻,如果沒有發(fā)現(xiàn)搜索信息素,就要按照廣播的方法來搜索到目的節(jié)點的多路徑。
如果簇頭發(fā)現(xiàn)鏈路上有搜索信息素,就需要往搜索信息素的鏈路上分別發(fā)送同類的前向螞蟻。節(jié)點如果收到的是不同類的螞蟻,節(jié)點可以直接按照搜索信息素概率公式(8)把前向螞蟻轉(zhuǎn)發(fā)出去。對于源節(jié)點的鄰居節(jié)點,只接收從源節(jié)點直接發(fā)出的前向螞蟻。為了減少網(wǎng)絡(luò)中螞蟻傳播的開銷,節(jié)點如果收到的是相同類型的前向螞蟻,時延、跳數(shù)和能量可能比前面的螞蟻包都要差,如果都被丟棄,中間節(jié)點到目的節(jié)點就只能形成單路徑,不能發(fā)揮蟻群算法的優(yōu)勢。下面是同類的螞蟻的多路徑判斷規(guī)則,形成源節(jié)點到目的節(jié)點的多路徑:
第1步 如果新收到的前向螞蟻的入鏈路和節(jié)點中保存的不一樣,只要新收到的螞蟻的時延和跳數(shù)在可接受的范圍內(nèi),就接收新來的前向螞蟻,這個范圍可以是個參數(shù)λ,可以根據(jù)不同的網(wǎng)絡(luò)環(huán)境來進行調(diào)整,本文規(guī)定跳數(shù)的λ為1.5,時間的參數(shù)λ為2.5。
第2步 如果新收到的前向螞蟻的入鏈路一樣,就要判斷兩個螞蟻的第一跳是否一樣,這個第一跳也就是離開源節(jié)點后的第一節(jié)點。如果第一個節(jié)點不一樣,只要新收到的螞蟻的時延和跳數(shù)在可接受的范圍內(nèi),就接收新的前向螞蟻,這個范圍可以是個參數(shù)λ,可以根據(jù)不同的網(wǎng)絡(luò)環(huán)境來進行調(diào)整,本文規(guī)定跳數(shù)的λ為1.5,時間的參數(shù)λ為2.5。
第3步 如果新收到的前向螞蟻的入鏈路與第一跳和節(jié)點中保存的一樣,只有新來前向螞蟻的跳數(shù)小于等于原來前向螞蟻的跳數(shù),才接收新來的螞蟻。
前向螞蟻來到一個節(jié)點,如果有同類螞蟻已經(jīng)來過,就要根據(jù)上面的多路徑判斷原則進行判斷。如果符合要求,就可以轉(zhuǎn)發(fā)給下一跳,在選下一跳選擇的時候,為了搜索更多路徑,可以依次在余下還沒有轉(zhuǎn)發(fā)給前向螞蟻的鏈路上進行搜索信息素概率公式選擇發(fā)送。
通過上述方法,可以使得螞蟻探索路徑時獲得多條路徑,在數(shù)據(jù)發(fā)送的時候,如果一個鏈路出現(xiàn)故障,可以通過另外的鏈路發(fā)送出去,提高投遞率。同時,多路徑有助于網(wǎng)絡(luò)的能量和負載均衡。
符合時延要求的前向螞蟻到達目的SINK節(jié)點后,就轉(zhuǎn)變成對應(yīng)的后向螞蟻,從SINK節(jié)點原路返回。當(dāng)后向螞蟻從一個編號為j的節(jié)點移動到編號為i的節(jié)點時,需要對節(jié)點i進行路由信息素更新,節(jié)點i更新或建立目的節(jié)點為d的路由信息,這個路由信息的下一跳就是j,具體公式如下:
式中,H是當(dāng)前節(jié)點i到達目的節(jié)點d的跳數(shù)。Ts-i是源節(jié)點到當(dāng)前節(jié)點的時延,Eavg是從源節(jié)點s到目的節(jié)點已經(jīng)消耗的平均能量,由目的節(jié)點根據(jù)跳數(shù)和消耗的總能量進行計算,后向螞蟻在返回的路徑上攜帶這個值。Min值是后向螞蟻所經(jīng)過的所有節(jié)點中,剩余能量最小節(jié)點的能量值。k1,k2,k3和k4是以上4個參數(shù)的系數(shù),在各個不同的網(wǎng)絡(luò)環(huán)境,通過調(diào)節(jié)各個系數(shù),來適應(yīng)網(wǎng)絡(luò)的環(huán)境,本文后面的實驗,這幾個系數(shù)的值都為1。
通過螞蟻的發(fā)送,在各個節(jié)點建立了路由信息,一旦有后向螞蟻返回,簇頭中融合后保存在緩沖區(qū)里的數(shù)據(jù)就可以通過螞蟻建立起來的路由信息發(fā)送出去。數(shù)據(jù)發(fā)送是以概率發(fā)送的方法進行,所有的節(jié)點收到需要轉(zhuǎn)發(fā)的數(shù)據(jù)包后,按照式(10)進行選擇發(fā)送:
式中,β1是一個參數(shù)因子,可以調(diào)節(jié)鏈路信息素對數(shù)據(jù)轉(zhuǎn)發(fā)的影響,β1值越大,信息素值越大的鏈路,被選中轉(zhuǎn)發(fā)的數(shù)據(jù)的概率就越大,也就是“好的鏈路“使用頻率會更高,可以根據(jù)具體的使用環(huán)境進行調(diào)整。本文中β1是一個大于等于1的值。發(fā)送數(shù)據(jù)多的鏈路,可能會比較擁擠,發(fā)送時間變長,能量消耗也會比較多,鏈路上節(jié)點的剩余能量減少,通過信息素的自動更新,數(shù)據(jù)會自動往剩余能量多和數(shù)據(jù)少的路徑上發(fā)送,最后做到整個網(wǎng)絡(luò)的負載均衡。
信息素的揮發(fā)是周期性進行的。對于給定的τ的時間周期,節(jié)點將進行一次信息素的揮發(fā),信息素揮發(fā)包括路由信息素和搜索信息素,具體如下:
式(11)和式(12)中,ρ的范圍是0到0.05之間,本文后面仿真設(shè)置為0.05。
簇頭在數(shù)據(jù)發(fā)送的時候,需要進行路由維護,一般發(fā)送N個數(shù)據(jù)報后或者定時發(fā)送一個前向螞蟻。協(xié)議采用定時發(fā)送前向螞蟻的方式,當(dāng)節(jié)點開始發(fā)送數(shù)據(jù)后,定時產(chǎn)生一個前向螞蟻。但是否發(fā)送這個前向螞蟻,可以根據(jù)路由表中各個鏈路上的剩余的路由信息素大小和螞蟻訪問列表的長度來決定,如果各個鏈路上最大的剩余路由信息素已經(jīng)小于某個門限值,且螞蟻訪問列表的長度小于一個上限值,就可以發(fā)送前向螞蟻。同樣的,源節(jié)點收到一個后向螞蟻,也可以根據(jù)上述的方法來決定是否發(fā)送前向螞蟻。
路由維護時候,前向螞蟻的發(fā)送有單播和廣播兩種方式,發(fā)送單個前向螞蟻的時候,這時候鏈路上已經(jīng)有了搜索信息素和路由信息素,前向螞蟻就通過概率選擇的方法進行發(fā)送,概率選擇公式需要同時考慮搜索信息素和路由信息素,具體公式如下:
式中的α2和β2是兩個參數(shù),主要調(diào)節(jié)搜索信息素和路由信息素對前向螞蟻的引導(dǎo)作用,這兒設(shè)置α2為2,β2為1,主要是讓搜索信息在引導(dǎo)前向螞蟻的時候起更多的作用。如果鏈路上只有搜索信息素或者路由信息素,另外的信息素值就作1處理。
協(xié)議算法描述具體如下:
第1步 如果事件區(qū)域感知到事件或者有搜索螞蟻到達,事件區(qū)域的節(jié)點就要按照相應(yīng)的算法,選擇簇頭,形成一個事件區(qū)域的分簇;
第2步 SINK節(jié)點如果需要查詢數(shù)據(jù),就往事件區(qū)域發(fā)送搜索螞蟻,同時在鏈路上釋放搜索信息素。
第3步 事件區(qū)域的簇頭,收到簇內(nèi)成員節(jié)點的數(shù)據(jù),經(jīng)過數(shù)據(jù)融合,需要給源節(jié)點發(fā)送數(shù)據(jù)。如果沒有路由信息素,需要發(fā)送前向螞蟻,建立到目的SINK節(jié)點的多路徑路由;
第4步 前向螞蟻根據(jù)多路徑判斷規(guī)則來到目的節(jié)點,目的節(jié)點把符合時延的前向螞蟻轉(zhuǎn)變成對應(yīng)的后向螞蟻,按路徑返回。
第5步 后向螞蟻在鏈路上釋放路由信息素,刪除對應(yīng)螞蟻訪問列表中保存的螞蟻。
第6步 當(dāng)事件區(qū)域的簇頭節(jié)點收到第一個后向螞蟻,建立到目的節(jié)點的路由信息表,刪除螞蟻訪問列表中保存的螞蟻,同時把緩存中的數(shù)據(jù)發(fā)送出去。
第7步 如果簇頭的能量小于某個閥值,就通知備份簇頭,進行簇頭的切換。
本文實驗仿真環(huán)境是 CentOS+NS2.34,由于NS2.34里面沒有CAEMP協(xié)議,需要把我們編寫好的CAEMP協(xié)議源代碼添加到NS-2中,添加成功后就可以和另外協(xié)議進行仿真對比分析。
在NS-2中,每個新添加的路由協(xié)議要有自己的報文格式,新的路由協(xié)議要有自己的路由代理,這樣才能把新協(xié)議的代碼添加到NS-2里,添加的過程就是把源代碼放入NS-2,然后進行重新編譯,編譯成功后協(xié)議就算添加好了,就可以在OTCL中使用這個協(xié)議進行仿真比較了。
在 NS-2 仿真環(huán)境中對 CAEMP、CBMRP[9]和AOMDV做仿真比較,本文使用First-order Model能量傳輸模型,設(shè)置 Eelec為 50 nJ/bit,Eamp為 10 pJ/(bit·m2),數(shù)據(jù)融合參數(shù) EDA 為5 nJ/bit。節(jié)點初始能量為10 J,節(jié)點通信半徑為90 m,基站的能量單獨設(shè)為100 J,仿真的時間為120 s。數(shù)據(jù)流使用CBR流,數(shù)據(jù)包大小為512 byte,每個節(jié)點發(fā)送數(shù)據(jù)包的速度是4 packet/s,使用cbrgen工具生成數(shù)據(jù)流文件,控制消息的大小是20 byte。仿真場景大小是400 m×500 m,總共節(jié)點數(shù)量是72個,節(jié)點基本靜止不動,Sink節(jié)點位于網(wǎng)絡(luò)的右邊位置。場景中有4個事件區(qū)域,每個事件區(qū)域周圍的節(jié)點數(shù)量大致是9個左右,簇頭給每個簇內(nèi)節(jié)點分配的時隙是1 s,假設(shè)事件區(qū)域每隔12 s有事件發(fā)生,也就是說,對于CAEMP協(xié)議,事件區(qū)域每隔12 s就要形成一次簇,傳感器節(jié)點的參數(shù)設(shè)置如表1所示。
表1 傳感器無線節(jié)點的參數(shù)
本文提出了基于分簇的能量有效的多路徑路由協(xié)議,所以仿真實驗著重從能量有效性和網(wǎng)絡(luò)生存時間這兩個方面來對幾種協(xié)議進行性能分析比較。如果分簇設(shè)計合理,多路徑網(wǎng)絡(luò)流量負載均衡,則網(wǎng)絡(luò)具有更好的能量有效性,網(wǎng)絡(luò)生存時間就長。
本文中,能量有效性定義為從開始到模擬完成之后這段時間里Sink節(jié)點接收到的數(shù)據(jù)包總數(shù)與能量消耗總量的比值。能量有效性是評價協(xié)議能量性能的重要指標(biāo)之一,網(wǎng)絡(luò)在消耗相同能量的情況下,如果Sink節(jié)點收到的有效數(shù)據(jù)越多,說明在傳送一定數(shù)據(jù)量的情況下,網(wǎng)絡(luò)的生存時間越長。圖1是3種協(xié)議的能量有效性對比圖,從圖中我們可以發(fā)現(xiàn)AOMDV協(xié)議的能量有效性最差,主要由于AOMDV協(xié)議數(shù)據(jù)采集的時候沒有進行分簇處理,事件區(qū)域的每個節(jié)點感知到事件后,都會把收集到的數(shù)據(jù)直接發(fā)送給Sink節(jié)點,這樣會導(dǎo)致以下兩種情況的發(fā)生,一方面網(wǎng)絡(luò)中同時需要傳送大量的數(shù)據(jù),會導(dǎo)致數(shù)據(jù)發(fā)送沖突或擁塞;另一方面,事件區(qū)域和Sink節(jié)點之間的節(jié)點的傳送任務(wù)會很大,會導(dǎo)致這部分節(jié)點消耗過多的能量,減少存活時間。分簇多路徑協(xié)議CAEMP和CBMRP的能量有效性都比AOMDV要高,主要是這個兩個協(xié)議采用了分簇的方法,可以把事件區(qū)域的數(shù)據(jù)先發(fā)送到簇頭,簇頭經(jīng)過數(shù)據(jù)融合,再把數(shù)據(jù)發(fā)送給Sink節(jié)點,這樣大大減少了事件區(qū)域和Sink節(jié)點之間傳送的數(shù)據(jù)量,節(jié)省了這部分節(jié)點的能量,也就提高了能量有效性。
圖1 3種協(xié)議的能量有效性對比圖
從圖1中也可以發(fā)現(xiàn),CAEMP的能量有效比CBMRP提高了將近20%,這主要是CAEMP對分簇進行了優(yōu)化,整個簇以事件信息為中心,同時考慮到感知信息的高度相似性,控制了事件區(qū)域簇的規(guī)模和制定了備份簇頭的機制,這樣可以減少事件區(qū)域節(jié)點的通信能量開銷,節(jié)省能量;另外CAEMP協(xié)議從簇頭到Sink節(jié)點之間采用了蟻群多路徑路由協(xié)議,可以形成可以形成更多有效的多路徑,簇頭可以把數(shù)據(jù)流量注入更多的路徑,使得數(shù)據(jù)均衡發(fā)布,最后導(dǎo)致自動的網(wǎng)絡(luò)能量負載均衡,提高了網(wǎng)絡(luò)的能量有效性。隨著時間的推移,3種協(xié)議的能量有效性都有下降的趨勢,其中兩種分簇協(xié)議表現(xiàn)得比較明顯,這是因為隨著時間的推移,網(wǎng)絡(luò)中節(jié)點的能量也慢慢減少,部分節(jié)點可能提前死亡,也會導(dǎo)致能量有效性降低。
網(wǎng)絡(luò)生存時間可以有多個標(biāo)準(zhǔn)來定義,它可以定義為網(wǎng)絡(luò)中第一個節(jié)點死亡的時間,第一節(jié)點死亡時間越早,代表網(wǎng)絡(luò)壽命越短;也可以定義為網(wǎng)絡(luò)中生存節(jié)點個數(shù),生存節(jié)點個數(shù)越多,網(wǎng)絡(luò)壽命越長。圖2表示了網(wǎng)絡(luò)中第一個節(jié)點的死亡時間和隨著時間的變化網(wǎng)絡(luò)中節(jié)點的存活數(shù),從圖中可以看到,對于AOMDV協(xié)議,大約在不到100 s的時候,就有節(jié)點開始死亡,到120 s的時候,網(wǎng)絡(luò)中絕大部分節(jié)點都已經(jīng)死亡,這個主要和AOMDV協(xié)議不分簇,傳送的數(shù)據(jù)量大,導(dǎo)致網(wǎng)絡(luò)中的節(jié)點提早開始死亡。運行CBMRP協(xié)議的網(wǎng)絡(luò)節(jié)點開始死亡的時間大約比AOMDV協(xié)議推遲了大約10多秒,這主要由于CBMRP協(xié)議的分簇機制,但CBMRP協(xié)議的分簇機制對于事件區(qū)域效率不高,所以大約在130多秒的時候,網(wǎng)絡(luò)中只留下了為數(shù)不多的節(jié)點。3個協(xié)議中,運行CAEMP協(xié)議的網(wǎng)絡(luò)節(jié)點開始死亡的時間最遲,大約在140多秒的時候,網(wǎng)絡(luò)中才有節(jié)點開始死亡,這和CAEMP協(xié)議基于事件區(qū)域的優(yōu)化分簇和基于蟻群算法的多路徑協(xié)議有關(guān),一方面減少了網(wǎng)絡(luò)的負擔(dān),另一方面達到了網(wǎng)絡(luò)能量負載均衡。和AOMDV協(xié)議相比較,CAEMP協(xié)議的網(wǎng)絡(luò)壽命延長了將近50%。從圖2中也可以發(fā)現(xiàn),當(dāng)開始有節(jié)點死亡后,3種協(xié)議網(wǎng)絡(luò)中節(jié)點死亡的速度都比較快,這可能由于余下的節(jié)點需要承擔(dān)更多的數(shù)據(jù)發(fā)送和轉(zhuǎn)發(fā)任務(wù),加劇了它們的死亡速度。
圖2 網(wǎng)絡(luò)中節(jié)點存活數(shù)與時間的關(guān)系
本文基于事件驅(qū)動和查詢的混合數(shù)據(jù)采集方法,提出了一種基于分簇和蟻群算法的能量有效的多路徑路由協(xié)議CAEMP??紤]到事件區(qū)域附近高度分布的節(jié)點,由于感知信息的高度相似性,通過把它們成簇的方法來減少發(fā)送的數(shù)據(jù)量。事件區(qū)域的傳感器節(jié)點分布密集,事件信息又有高度的重合性,所以簇頭在選取簇內(nèi)節(jié)點的時候,可以不用超過一定的數(shù)量??刂剖录^(qū)域簇的規(guī)模,可以減少事件區(qū)域節(jié)點的通信能量開銷和簇頭數(shù)據(jù)發(fā)送的延遲。事件區(qū)域的簇頭的能量消耗比較大,為了避免簇頭的頻繁選舉,簇頭根據(jù)加入請求報文里的簇頭競爭時間,制定了備份簇頭的機制。
對于匯聚節(jié)點,如果需要事件區(qū)域的數(shù)據(jù),可以采用發(fā)送搜索螞蟻到事件區(qū)域的方法來獲取所需要的數(shù)據(jù),同時在鏈路上釋放搜索信息素。事件區(qū)域形成的簇,簇頭可以通過發(fā)送前向螞蟻的方法來尋找到匯聚節(jié)點的多路徑,搜索螞蟻留下的信息素可以加快前向螞蟻到達匯聚節(jié)點的速度。最后,簇頭融合后的事件區(qū)域的數(shù)據(jù)就可以在螞蟻包形成的多路徑上進行數(shù)據(jù)包的發(fā)送。仿真結(jié)果表明,和傳統(tǒng)的多路徑協(xié)議和分簇多路徑協(xié)議比較,協(xié)議在延長網(wǎng)絡(luò)壽命方面和能量有效性方面,都有了一定幅度的提高。
[1] Rahman K C.A Survey on Sensor Network[J].Journal of Computer and Information,2010,1(1):76-87.
[2] 楊婧.無線傳感器網(wǎng)絡(luò)中高能效數(shù)據(jù)收集協(xié)議的研究[D].江南大學(xué),2010.
[3] Dorigo M,Birattari M,Stutzle T.Ant Colony Optimization:Artificial Ants as a Computational Intelligence Technique[J].IEEE Computational Intelligence Magazine,2006,1(40):28-39.
[4] Chen Ge,Guo Tiande,Yang Wenguo,et al.An Improved Ant-Based Routing Protocol in Wireless Sensor Networks[C]//2006 International Conference on Collaborative Computing:Networking,Applications and Worksharing,Atlanta,USA:IEEE,2006,1-7.
[5] 鮑榮,潘浩,董齊芬,等.基于信息素擴散模型蟻群算法的無線傳感網(wǎng)路由研究[J].傳感技術(shù)學(xué)報,2011,24(11):1644-1648.
[6] Amis A D,Prakash R,Vuong T H P,et al.Max-Min D-Cluster Formation in Wireless Ad Hoc Networks[C]//Proceedings of Infocom,2000.
[7] Heinzelman W B,ChandrakasanA P,BalakrishnanH.An Application-Specific Protocol Architecture for Wireless Microsensor Networks[J].IEEE Transactions on Wireless Communications,2002,1(4):660-670.
[8] Bandyopadhyay S,Coyle E J.An Energy Efficient Hierarchical ClusteringAlgorithm forWirelessSensorNetworks[C]//Proceedings of IEEE Infocom,2003.
[9] Wang Y,Tsai C,Mao H.HMRP:Hierarchy-Based Multipath Routing Protocol for Wirelesss Sensor Networks[J].Tamkang Jounal of Science Engineering,2006,9(3):255-264.
[10]安輝耀,盧錫城,彭偉.移動自組網(wǎng)中一種基于簇的多路徑路由算法[J].軟件學(xué)報,2007,18(4):987-995.
[11]于繼明,盧先領(lǐng),楊余旺,等.能量優(yōu)先分級變化的多路徑路由選擇算法[J].計算機科學(xué),2007,34(8):45-48.
[12]高騰.能量高效的無線傳感器網(wǎng)絡(luò)分簇路由協(xié)議研究[D].大連理工大學(xué),2011.
[13] Yang Jing,Xu Mai,Zhao Wei,et al.A Multipath Routing Protocol Based on Clustering and Ant Colony Optimization for Wireless Sensor Networks[J].Sensors,2010(10):4521-4540.
[14]童孟軍,俞立,鄭立靜.基于蟻群算法的無線傳感器網(wǎng)絡(luò)能量有效路由算法研究[J].傳感技術(shù)學(xué)報,2011,24(11):1632-1638.
[15] Sudip Misra,Sanjay K Dhurandher,Mohammad S Obaidat,et al.An AntSwarm-Inspired Energy-Aware RoutingProtocolfor Wireless Ad-Hoc Networks[J].The Journal of Systems and Software,2010,83(11):2188-2199.
[16] Le-Huy P,Roy S.Low-Power 2.4 GHz Wake-Up Radio for Wireless SensorNetworks[C]//Proceedings—4th IEEE International Conference on Wireless and Mobile Computing,Networking and Communication,WiMob 2008,Avignon,F(xiàn)rance,2008:13-18.
[17] Schurgers C,Tasiatsis V,Ganeriwal S,et al.Optimizing Sensor Networks in the Energy-Latency-Densitydesign Space[J].IEEE Transactions on Mobile Computing,2002,1(1):70-80.
[18] Gu L,Stankovic J A.Radio-Triggered Wake-Up for Wireless Sensor Networks[J].Real-Time Systems,2005,29(2-3):157-182.
[19] Kwon T J,Gerla M.Efficient Flooding with Passive Clustering(PC)in Ad Hoc Networks[J].ACM Sigcomm Computer Communication Review,2002,32(1):44-56.
[20]鄭立靜.基于非均勻分簇路由算法的研究[D].杭州電子科技大學(xué),2013.
[21] Liu Ming,Cao Jiannong,Chen Guihai,et al.An Energy-Aware Routing Protocol in Wireless Sensor Networks[J].Sensors,2009,9:445-462.
[22] Al-Karaki J N,Kamal A E.Routing Techniques in Wireless Sensor Networks:A Survey[J].IEEE Wireless Communications,2004,11(6):6-28.