一種基于信標的地理信息位置路由協(xié)議的改進
摘要:空洞問題一直是無線傳感器網(wǎng)絡中基于地理信息位置路由協(xié)議研究的一個熱點。文章對ITGR算法提出了改進措施,通過逆路由路徑方向尋找新的信標節(jié)點更新ITGR算法中的信標節(jié)點,從而擴大ITGR算法的目標陰影區(qū)域范圍,減少算法繞空洞時迂回路徑的長度。OMNeT++4.0仿真表明,改進算法可以降低ITGR算法繞空洞的路由路徑的平均跳數(shù)和長度。
關鍵詞:無線傳感網(wǎng)絡;路由協(xié)議;地理信息位置路由;信標
0 引言
近年來,隨著低功耗、微型化GPS的發(fā)展,以及三邊測量等定位技術的日趨成熟,使得基于地理信息位置的路由算法日益成為研究的熱點。而且在無線傳感網(wǎng)絡中,很多應用都與節(jié)點的位置信息有關,甚至某些應用必須知道節(jié)點的位置信息后,傳感器節(jié)點采集的信息才有真正的價值和意義。例如,在環(huán)境監(jiān)測中,需要知道被監(jiān)測點的位置信息;在森林火災監(jiān)測和煤礦安全事故監(jiān)測中,需要知道發(fā)生險情的位置信息;在跨海大橋橋梁安全監(jiān)測中,橋梁擺動的幅度需要精確知道其位置偏移信息。以地理信息位置為導向的路由同時具有很強的路由導向性。以往傳統(tǒng)的路由需要存儲大量的路由表或者在整個網(wǎng)絡內泛洪路由請求數(shù)據(jù)包來尋找數(shù)據(jù)包發(fā)送的路徑,而基于地理信息的位置路由,可以縮減路由請求的泛洪區(qū)域,甚至取消泛洪,大大降低整個網(wǎng)絡的能耗、擁塞,使得網(wǎng)絡的生存時間得以提高、網(wǎng)絡的規(guī)模得以提升。
1 相關算法研究
在基于地理信息位置路由算法依靠單跳鄰居節(jié)點和目標節(jié)點的位置信息來確定路由,路由選擇比本節(jié)點更接近于目標節(jié)點的鄰居節(jié)點作為下一跳節(jié)點。但當網(wǎng)絡中存在空洞的時候,該種貪婪算法有可能失效。對此,很多文章提出繞過空洞的解決方法,這些算法大體可以分為三類:局部泛洪機制、消息回退機制和面路由機制。其中以GPSR算法應用最為基礎和廣泛。
GPSR算法結合了貪婪轉發(fā)路由和周邊路由,源節(jié)點先用貪婪轉發(fā)策略發(fā)送數(shù)據(jù)包,當數(shù)據(jù)包到達局部最小節(jié)點時,算法進入周邊模式,即節(jié)點采用右手法則選擇下一跳節(jié)點。在周邊模式中如果一個節(jié)點到目標節(jié)點的距離小于局部最小節(jié)點到目標節(jié)點的距離,則在此算法由周邊模式恢復到貪婪算法模式中,依次重復直到到達目標節(jié)點。
雖然當源節(jié)點和目標節(jié)點存在連接的時候,GPSR算法總能保證數(shù)據(jù)包的發(fā)送,但GPSR算法存在三角路由問題和盲目路由問題。對此GLR算法將算法由周邊模式恢復到貪婪轉發(fā)模式的節(jié)點稱為信標節(jié)點(landmark),源節(jié)點在知道到達目標節(jié)點的信標節(jié)點位置信息后,可以直接將數(shù)據(jù)發(fā)送到目標節(jié)點而不經(jīng)過局部最小節(jié)點,從而優(yōu)化三角路由問題。同時信標節(jié)點的發(fā)現(xiàn)過程采用前向發(fā)現(xiàn)與后向發(fā)現(xiàn)相結合的方式,避免盲目路由問題時數(shù)據(jù)包繞整個網(wǎng)絡轉發(fā)的情況。
相對于GLR一個目標節(jié)點對應一個信標緩存的情況,ITGR算法提出目標陰影區(qū)域的概念。通過一次信標發(fā)現(xiàn)過程,發(fā)現(xiàn)到目標節(jié)點路徑上的信標節(jié)點和局部最小節(jié)點后;通過源節(jié)點、局部最小節(jié)點、信標節(jié)點的平面直線方程不等式組劃定目標節(jié)點陰影區(qū)域的范圍,一個信標節(jié)點對應目標陰影區(qū)域范圍內的所有節(jié)點。ITGR算法大大降低信標緩存的大小,并且減少信標發(fā)現(xiàn)過程,降低了控制開銷。
2 基于信標的地理信息位置路由協(xié)議的改進
本文在ITGR算法基礎上提出信標后退算法,試圖擴大目標節(jié)點的陰影區(qū)域,讓一次信標發(fā)現(xiàn)過程發(fā)現(xiàn)更大的目標節(jié)點陰影區(qū)域,讓更多的節(jié)點使用信標節(jié)點作為間接目標節(jié)點轉發(fā)數(shù)據(jù),并減少算法進入周邊模式的次數(shù),縮短路由路徑。
下面我們通過舉例來說明如何擴大目標節(jié)點陰影區(qū)域范圍。在圖1中,S為源節(jié)點,D為目標節(jié)點,陰影區(qū)域為VOID區(qū)域(由于陰影區(qū)域中存在障礙物等原因,網(wǎng)絡無法通過此區(qū)域通信),P為局部最小節(jié)點,B1為ITGR算法的信標節(jié)點,實線為源節(jié)點S按照ITGR算法發(fā)送數(shù)據(jù)包到目標節(jié)點D的路徑,虛線為更新信標節(jié)點后的路徑。
ITGR和GLR算法中定義信標節(jié)點為路由算法由周邊模式恢復到貪婪轉發(fā)模式的節(jié)點。假設用DISTANCE(X,Y)來代表X與Y點之間的距離,B代表信標節(jié)點,則信標節(jié)點B滿足公式(1)。由圖1可以發(fā)現(xiàn),不僅僅在信標節(jié)點B滿足公式(1),按照數(shù)據(jù)包所走的路徑往后推,E、C、N、B2點都滿足公式(1),直到到達M點,M點并不滿足公式(1)。所以在B2同時滿足公式(2)與公式(3)
DISTANCE(B,D)<DISTANCE(P,D)……(1)
DISTANCE(N,D)<DISTANCE(B,D)……(2)
DISTANCE(B,D)<DISTANCE(M,D)……(3)
因此我們可以在ITGR發(fā)現(xiàn)信標節(jié)點的路徑上逆向尋找第一個DISTANCE(X,Y)的峰值,并將其稱為新信標節(jié)點。當知道更新過信標節(jié)點后,下次S點再發(fā)送數(shù)據(jù)包到D時,直接將數(shù)據(jù)包發(fā)送給B2,然后由B2轉發(fā)給D點。從圖1中可見,未更新信標節(jié)點前,數(shù)據(jù)包發(fā)送路徑為實線代表的路徑,共16跳;更新過信標節(jié)點后,數(shù)據(jù)包發(fā)送的路徑為虛線所代表的路徑,共12跳??梢姼逻^信標節(jié)點后,可以節(jié)省路由跳數(shù)。采用ITGR算法,S點第二次向D點發(fā)送數(shù)據(jù)時,先將數(shù)據(jù)發(fā)送給間接目標節(jié)點B1點,但在使用貪婪算法向B1點發(fā)送數(shù)據(jù)的時候,到達Z點遇到空洞問題,此時Z點使用周邊模式向B1轉發(fā)數(shù)據(jù)包。而如果采用了更新信標算法,S點第二次向D點發(fā)送數(shù)據(jù)的時候直接將數(shù)據(jù)包發(fā)送給B2,此時,路由路徑不需要進入周邊算法模式,從S到B2和B2到D點都可以直接使用貪婪算法轉發(fā)。
假設X為射線SB2上的一點,Y為射線SB1上的一點,Z為射線SP上的一點。則ITGR算法中目標節(jié)點陰影區(qū)域為YB2PZ,如圖2中的斜線區(qū)域;更新信標節(jié)點后,目標節(jié)點陰影區(qū)域為XB2PZ,如圖中的網(wǎng)狀區(qū)域。由圖2可見區(qū)域XB2PZ比區(qū)域YB2PZ更大,說明采用新信標節(jié)點可以擴大目標節(jié)點陰影區(qū)域范圍。
改進后的路由算法描述如下:源節(jié)點向目標節(jié)點發(fā)送數(shù)據(jù)時,按照ITGR算法將數(shù)據(jù)包轉發(fā)到B1點,在B1點按照ITGR算法數(shù)據(jù)發(fā)送模式由周邊算法模式恢復到貪婪算法模式中。我們在此加入LBD(landmark backward discovery)算法,即信標節(jié)點后向推移算法。根據(jù)ITGR算法,路由模式mode在B1點將變?yōu)镚REEDY,此時節(jié)點將采用LBD算法轉發(fā)數(shù)據(jù),算法偽代碼如表1所示。LBD首先判斷信標節(jié)點的上一跳節(jié)點是否比信標節(jié)點到目標節(jié)點的距離更遠。如果不是,則直接繼續(xù)按ITGR原來算法運行;如果是,則更改數(shù)據(jù)包模式并將數(shù)據(jù)包發(fā)送給上一跳節(jié)點,然后按照左手法則依次向回查找距離目標節(jié)點,直到查找到新的信標節(jié)點或者回傳數(shù)據(jù)包到局部最小節(jié)點。
3 仿真結果
本文使用離散仿真器OMNeT++4.0對ITGR算法和更新信標后的ITGR+LBD算法進行仿真對比。整個實驗網(wǎng)絡為1500m×2000m,網(wǎng)絡內隨機分布200到400個節(jié)點,每次仿真增加50個節(jié)點,節(jié)點保持靜止狀態(tài),網(wǎng)絡中間存在一個900m×200m的空洞,空洞上方的一個源節(jié)點向空洞下方的10個目標節(jié)點各發(fā)送10次數(shù)據(jù)。
仿真主要測量平均路由跳數(shù)和路由路徑平均長度,仿真結果如圖3和圖4所示。由圖3可見更新信標節(jié)點后,平均路由跳數(shù)最少減少9.4 6%,最多減少21.92%,平均減少15.18%。由圖4可見,更新信標節(jié)點后,路由路徑平均長度最少減少6.46%,路由路徑平均長度最多減少15.72%,平均減少11.03%。采用ITGR算法第二次向目標節(jié)點發(fā)送數(shù)據(jù)的時候首先使用貪婪算法轉發(fā)到信標節(jié)點。但當網(wǎng)絡中存在窄帶型空洞的時候,使用貪婪算法向信標節(jié)點轉發(fā)數(shù)據(jù)有可能重新遇見空洞,造成迂回路徑。而采用新的信標節(jié)點后,由于新的信標節(jié)點一般位于窄帶型空洞的兩端,所以有效地減少了向信標節(jié)點發(fā)送數(shù)據(jù)的時候重新遇見空洞的問題,縮短了路由路徑長度。另外當后移了信標節(jié)點后擴大了目標節(jié)點陰影區(qū)域,使得更多的目標節(jié)點可以使用已發(fā)現(xiàn)的信標節(jié)點,避免了二次重復信標發(fā)現(xiàn)。仿真實驗結果證明了采用新的信標節(jié)點后,可以降低路由路徑的平均跳數(shù)和路由路徑的長度。
4 結論
本文提出一種ITGR的改進算法,通過逆著到目標節(jié)點的路由路徑方向選擇新的中信標節(jié)點,可以擴大ITGR算法中目標節(jié)點陰影區(qū)域范圍,減少算法進入周邊模式的次數(shù),改進的算法既能有效地繞過空洞,又能有效地縮短繞空洞時路由路徑的迂回長度。仿真實驗表明,當網(wǎng)絡中存在窄帶型空洞時,更新信標節(jié)點可以有效降低ITGR算法的路由跳數(shù)并縮短路由路徑的長度。





