一種基于雙路徑并行傳輸?shù)臒o線傳感網(wǎng)絡(luò)代碼分發(fā)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及到無線傳感網(wǎng)絡(luò)重編程技術(shù)領(lǐng)域,尤其涉及到一種基于雙路徑并行傳輸?shù)臒o線傳感網(wǎng)絡(luò)代碼分發(fā)方法。
【背景技術(shù)】
[0002]為了適應(yīng)環(huán)境或者需求的變化,在無線網(wǎng)絡(luò)傳感網(wǎng)絡(luò)節(jié)點(diǎn)部署應(yīng)用后,節(jié)點(diǎn)不可避免地需要進(jìn)行代碼的更新。在現(xiàn)有應(yīng)用的更新中,一般都是人工回收節(jié)點(diǎn),再通過燒寫工具來完成。但是當(dāng)實(shí)際網(wǎng)絡(luò)環(huán)境惡劣、網(wǎng)絡(luò)規(guī)模大、節(jié)點(diǎn)分散時(shí),采用人工有線燒錄的方式就會(huì)變得十分繁瑣與困難。在這種背景下,無線傳感網(wǎng)絡(luò)重編程技術(shù)應(yīng)運(yùn)而生,使用代發(fā)分發(fā)協(xié)議通過無線方式進(jìn)行代碼更新是上述問題的有效解決途徑。
[0003]目前國內(nèi)外的經(jīng)典代碼分發(fā)方式有Deluge,MNP等,它們致力于對(duì)網(wǎng)絡(luò)中所有節(jié)點(diǎn)進(jìn)行代碼更新。然而在無線傳感網(wǎng)絡(luò)中,不同節(jié)點(diǎn)通常會(huì)扮演不同的角色,使用經(jīng)典代碼分發(fā)方式對(duì)特定角色的節(jié)點(diǎn)進(jìn)行代碼更新將會(huì)引起大量的能量消耗。所以,近年來出現(xiàn)了對(duì)特定節(jié)點(diǎn)進(jìn)行代碼更新的研究,其中以MDeluge為代表。
[0004]MDeluge在源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)間建立了一條傳輸路徑,只有路徑上的節(jié)點(diǎn)參與數(shù)據(jù)包的轉(zhuǎn)發(fā),節(jié)省了其他無關(guān)節(jié)點(diǎn)的能量。然而,正是由于路徑選取的單一性,數(shù)據(jù)包在源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)之間的傳遞也被牢牢綁死在當(dāng)前路徑上,無法對(duì)空間進(jìn)行復(fù)用,造成了較大時(shí)間延遲;另一方面,路徑上的節(jié)點(diǎn)能量消耗要比其他節(jié)點(diǎn)格外的大,導(dǎo)致網(wǎng)絡(luò)節(jié)點(diǎn)能量不均勻消耗,嚴(yán)重的會(huì)引起網(wǎng)絡(luò)分割,極大地縮短了網(wǎng)絡(luò)壽命。
【發(fā)明內(nèi)容】
[0005]為了解決現(xiàn)有技術(shù)存在的上述問題,本發(fā)明提供了一種基于雙路徑并行傳輸?shù)臒o線傳感網(wǎng)絡(luò)代碼分發(fā)方法。該方法在源節(jié)點(diǎn)和目的節(jié)點(diǎn)之間建立起兩條傳輸路徑,且兩條路徑能夠并行傳輸,降低了節(jié)點(diǎn)承擔(dān)的平均消息量。同時(shí)本方法中的源節(jié)點(diǎn)將根據(jù)兩條路徑的跳數(shù)差動(dòng)態(tài)選擇傳輸時(shí)機(jī),能夠避免目的節(jié)點(diǎn)在同時(shí)接收兩條路徑的數(shù)據(jù)包時(shí)所產(chǎn)生的碰撞問題。
[0006]為了實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案如下:
一種基于雙路徑并行傳輸?shù)臒o線傳感網(wǎng)絡(luò)代碼分發(fā)方法,包含三個(gè)階段策略,分別是路徑建立階段策略,數(shù)據(jù)傳輸階段策略,以及丟包重傳階段策略。
[0007]路徑建立階段策略包含如下步驟:源節(jié)點(diǎn)查詢自身路徑表判斷是否有到達(dá)目的節(jié)點(diǎn)的路徑信息,若有則執(zhí)行數(shù)據(jù)傳輸階段策略,否則廣播RREQ消息發(fā)起路徑尋找;目的節(jié)點(diǎn)收到此RREQ消息后,將會(huì)沿著反向路徑逐跳回復(fù)RREP消息,以建立起從源節(jié)點(diǎn)到達(dá)目的節(jié)點(diǎn)的第一條正向路徑;路徑之外的中間節(jié)點(diǎn)維護(hù)一個(gè)“首路徑影響度”(該節(jié)點(diǎn)通信范圍內(nèi)的鄰居節(jié)點(diǎn)中屬于第一條路徑上節(jié)點(diǎn)的個(gè)數(shù)),在沿著反向路徑回復(fù)RREP消息以形成第一條路徑時(shí),中間節(jié)點(diǎn)每監(jiān)聽到一次第一條路徑的RREP消息,就更新“首路徑影響度”的值將其增加1 ;第一條路徑形成之后,源節(jié)點(diǎn)再次廣播RREQ消息發(fā)起對(duì)第二條路徑尋找,與建立第一條路徑不同的是,我們?cè)赗REP消息中添加一個(gè)字段C表示從目的節(jié)點(diǎn)到當(dāng)前節(jié)點(diǎn)的這段反向路徑上“首路徑影響度”超過設(shè)定閾值的節(jié)點(diǎn)個(gè)數(shù),當(dāng)RREP消息沿反向路徑傳遞到源節(jié)點(diǎn)時(shí),將得到這條路徑上“首路徑影響度”超過閾值collideValue的節(jié)點(diǎn)個(gè)數(shù)(即字段C大小)以及使字段C首次變?yōu)榉橇愕墓?jié)點(diǎn)地址,這樣源節(jié)點(diǎn)就能得知這條路徑反方向(反方向即從目的節(jié)點(diǎn)到源節(jié)點(diǎn)方向)上“首路徑影響度”超過閾值的第一個(gè)節(jié)點(diǎn)的上一跳節(jié)點(diǎn)(稱之為“非碰撞節(jié)點(diǎn)”)地址,以便源節(jié)點(diǎn)對(duì)該“非碰撞節(jié)點(diǎn)”發(fā)起“二次路由”;當(dāng)源節(jié)點(diǎn)收到的RREP消息中字段C的值大于設(shè)定閾值collideNum時(shí),源節(jié)點(diǎn)將廣播“特殊RREQ”消息,對(duì)該“非碰撞節(jié)點(diǎn)”發(fā)起“二次路由”,收到“特殊RREQ”消息的中間節(jié)點(diǎn)將根據(jù)自身“首路徑影響度”的大小決定轉(zhuǎn)發(fā)“特殊RREQ”消息的延遲時(shí)間,“首路徑影響度”越大,延時(shí)將越長(zhǎng);“非碰撞節(jié)點(diǎn)”收到“特殊RREQ”消息后,將沿新的反向路徑回復(fù)特殊RREP消息,以完成第二條傳輸路徑的建立。
[0008]數(shù)據(jù)傳輸階段策略包含如下步驟:源節(jié)點(diǎn)根據(jù)目的節(jié)點(diǎn)發(fā)送來的鏡像頁請(qǐng)求消息,將對(duì)應(yīng)的鏡像頁準(zhǔn)備就緒,做好發(fā)送準(zhǔn)備;定義鏡像塊在每一跳的傳輸時(shí)間為定值,源節(jié)點(diǎn)對(duì)長(zhǎng)路徑與短路徑跳數(shù)之差進(jìn)行計(jì)算,若該跳數(shù)之差較大,則源節(jié)點(diǎn)在兩條路徑同時(shí)各發(fā)送一個(gè)鏡像塊,并設(shè)定發(fā)送間隔為鏡像塊在較長(zhǎng)路徑的傳輸時(shí)間,持續(xù)發(fā)送直至該鏡像頁中所有鏡像塊傳輸完畢,若該跳數(shù)差不大,則源節(jié)點(diǎn)在較短路徑上先發(fā)送一個(gè)鏡像塊,設(shè)定該鏡像塊在較短路徑走了 1/3路程之后,從較長(zhǎng)路徑發(fā)送下一鏡像塊,兩條路徑的發(fā)送間隔都設(shè)置為鏡像塊在較長(zhǎng)路徑的傳輸時(shí)間,較長(zhǎng)路徑的起始發(fā)送時(shí)間比較短路徑要延遲一個(gè)鏡像塊在較短路徑進(jìn)行傳輸所用時(shí)間的1/3左右。
[0009]丟包重傳階段策略包含如下步驟:目的節(jié)點(diǎn)向源節(jié)點(diǎn)發(fā)送鏡像頁請(qǐng)求消息后,就開啟定時(shí)任務(wù),定時(shí)期滿后請(qǐng)求的鏡像頁還沒有完全接收,就通過最近一次收到鏡像塊的反向路徑向源節(jié)點(diǎn)發(fā)送當(dāng)前鏡像頁的重傳請(qǐng)求,并再次開啟定時(shí)任務(wù),若傳輸依然失敗,則使用另一條路徑申請(qǐng)重傳,若再次失敗,再切換回第一條路徑申請(qǐng)重傳;若源節(jié)點(diǎn)收到的重傳次數(shù)大于設(shè)定值,并且重傳次數(shù)與當(dāng)前已經(jīng)完成傳輸?shù)溺R像頁數(shù)比值大于設(shè)定值時(shí),將當(dāng)前的并行傳輸切換成分時(shí)單路徑傳輸;當(dāng)源節(jié)點(diǎn)收到重傳請(qǐng)求消息時(shí),源節(jié)點(diǎn)會(huì)檢測(cè)重傳請(qǐng)求消息的請(qǐng)求位圖,判斷是否有節(jié)點(diǎn)掉網(wǎng),若有節(jié)點(diǎn)掉網(wǎng),源節(jié)點(diǎn)會(huì)暫停當(dāng)前鏡像頁的傳輸,并立即發(fā)起“重建RREQ”消息,當(dāng)接收到“重建RREQ”消息后,節(jié)點(diǎn)的行為將根據(jù)節(jié)點(diǎn)類型分為以下3種,完好路徑上的節(jié)點(diǎn)丟棄該消息,待重建路徑上的節(jié)點(diǎn)優(yōu)先轉(zhuǎn)發(fā)“重建RREQ”消息,一般節(jié)點(diǎn)會(huì)隨機(jī)轉(zhuǎn)發(fā)“重建RREQ”消息。
[0010]該方法借鑒了網(wǎng)絡(luò)層A0MDV路由協(xié)議建立路由路徑的做法,在源節(jié)點(diǎn)和目的節(jié)點(diǎn)之間建立起兩條傳輸路徑。與A0MDV路由協(xié)議做法不同的是,A0MDV協(xié)議令一條路徑作為傳輸主路徑,另一條路徑用作備用路徑,當(dāng)傳輸主路徑出現(xiàn)斷裂時(shí)才啟用備用路徑,當(dāng)備用路徑斷裂時(shí)停止傳輸。而該方法提出了一種數(shù)據(jù)傳輸策略,使得兩條路徑能夠并行傳輸,節(jié)點(diǎn)承擔(dān)的平均消息量降到了 MDeluge協(xié)議做法的一半左右,同時(shí)為了避免目的節(jié)點(diǎn)在同時(shí)接收兩條路徑的數(shù)據(jù)包時(shí)所產(chǎn)生的碰撞問題,源節(jié)點(diǎn)將根據(jù)兩條路徑的跳數(shù)差動(dòng)態(tài)選擇傳輸時(shí)機(jī)。
[0011]此外,為了減少兩條路徑在并行傳輸過程中由于隱藏終端造成的丟包問題,該方法又提出了一種新的路徑建立策略以降低兩條路徑間的耦合度,在形成第二條路徑時(shí),受第一條路徑影響較大的節(jié)點(diǎn)將延遲路徑尋找的發(fā)起時(shí)間,使那些受第一條路徑影響較小的節(jié)點(diǎn)更具有參與路徑建立的可能性。最后,該方法實(shí)現(xiàn)了 AOMDV協(xié)議不具備的“路徑修復(fù)與重建功能”,其丟包重傳策略也充分利用了兩條并行傳輸路徑的優(yōu)勢(shì),源節(jié)點(diǎn)能夠根據(jù)某條路徑傳遞過來的數(shù)據(jù)請(qǐng)求消息,判斷另外一條路徑是否有節(jié)點(diǎn)掉網(wǎng),以便及時(shí)進(jìn)行路徑修復(fù);同時(shí)也可判斷當(dāng)前并行傳輸是否存在較大的丟包率,必要時(shí)將轉(zhuǎn)變?yōu)殡p路徑分時(shí)傳輸。
[0012]與現(xiàn)有技術(shù)相比,本發(fā)明技術(shù)方案的有益效果是:
本方法采用雙路徑并行傳輸?shù)牟呗?,縮短了特定節(jié)點(diǎn)進(jìn)行代碼更新的時(shí)間,大大降低了節(jié)點(diǎn)平均消息量,延長(zhǎng)了網(wǎng)絡(luò)壽命。本方法通過引入“二次路由”,建立起兩條相互影響最小的傳輸路徑,大大緩解了隱藏終端造成的丟包問題。此外,為保證并行傳輸可靠性而提出的丟包重傳策略,一方面保