基於自適應按需喚醒技術的無線傳感器網絡數據傳輸方法
2023-12-06 16:20:06 2
基於自適應按需喚醒技術的無線傳感器網絡數據傳輸方法
【專利摘要】本發明公開一種基於自適應按需喚醒技術的無線傳感器網絡數據傳輸方法,包括以下:(1)將加入網絡的節點進行初始化,並建立鄰居列表用於存儲鄰居節點的ID和調度信息;(2)發送端S有數據要傳輸時,查看自身的鄰居列表是否有目標接收端R的調度信息;(3)根據步驟(2)中所獲得調度信息,發送端S自適應按需喚醒,然後與接收端R進行數據傳輸;(4)根據發送端S的執行周期,自動更新鄰居列表中每個鄰居節點的調度信息。本發明較大程度的降低佔空比和丟包率,從而減少收發節點的能耗並減少空閒偵聽,保證傳輸率和吞吐量。
【專利說明】基於自適應按需喚醒技術的無線傳感器網絡數據傳輸方法
【技術領域】
[0001]本發明涉及一種數據傳輸方法,具體涉及一種基於自適應按需喚醒技術的無限傳感器網絡數據傳輸方法。
【背景技術】
[0002]近年來,短距離無線通信傳感器節點的功能不斷發展變化中,同時具備感知、數據處理和通信功能是對這種微小傳感器的基本要求、正是因為傳感器技術日新月異的高速發展,大大的促進了基於大量傳感器節點相互協作相互通信的無線傳感器網絡的實現。
[0003]對無線傳感器網絡影響非常重大的眾多協議裡面,數據鏈路級聯層中的媒體訪問控制協議佔有極其重要的地位。在無線傳感器網絡節點中,能量主要消耗在通信模塊,數據傳輸通信是最主要的耗能者,而媒體訪問控制協議直接決定了如何使用無線網絡信道,MAC協議是傳感器網絡性能的主要影響者,因此是保證無線傳感器網絡通信高校的關鍵協議之
O
[0004]發送端盲等現象是一直存在於接收端發起的異步MAC協議數據傳輸當中,其中發送端在發送數據前,可能要等待一段時間,甚至一直沒機會得到傳輸,接收端的數據請求幀也可能因為衝突以及信道被佔用,而一直無法被正確接收,這些,都會引起能耗和延時的增加。 [0005]現有技術中的短前導序列報文機制就是在低功耗偵聽機制的基礎上改進的,但在重負載下因為前導的傳輸過程需要很長時間的佔用信道,導致網絡性能大幅的降低。
[0006]現有技術中的接收端發起的異步MAC協議——R1-MAC協議是一個從接收端發起的數據傳輸協議,與B-MAC協議的顯著不同之處是發送端和接收端之間如何協調數據傳輸時間。採用這樣的協議也存在一定的問題,如:在網絡數據負載流量大的網絡中,發送端雖然要在接收端喚醒之前醒來,但接收端發送Beacon幀前,發送端未處於監聽狀態,則數據傳輸將推遲至接收端的下一次喚醒時刻。若接收端醒來時,其它節點正佔用信道,接收端也同樣要進入休眠。多個接收端同時發送Beacon幀,而產生衝突碰撞,這時接收端將利用退避等待算法去競爭無線信道,這將導致發送端的盲等現象,大大的增加了發送端的能耗,最終導致網絡能量不均衡;優先級較高或者等待時間較長的數據無法優先傳輸,這樣就無法保證優先級較高或者等待時間較長的數據先發送出去,造成了能量消耗增大。
[0007]現有技術中的採用的機制是發送端預測接收端喚醒機制。該機制在突發數據流量的情況下,每個節點的緩存隊列中存儲的數據包會很大,每個接收端醒來後都會有很多數據要接收,導致數據包的衝突會很大,也使該接收端長時間的佔用信道,延時將大大的增加,傳輸成功率大幅度下降,增大了發送端的重傳率;在數據流量小的情況下,節點按照預定的隨機數序列在目標接收端喚醒前一刻喚醒,然後空閒偵聽一個短暫時間,發現接收端並沒有數據包要發送,接著發送端再次進入睡眠狀態。因此數據流過大或過小的情況該機制的能耗均不理想。
[0008]現有技術中的提出了 PA-MAC協議是在R1-MAC協議的基礎上提出來的,在信標幀中加入了節點的下一次喚醒時間,這個時間是從Beacon發送第一個bite位開始到下一次喚醒的時間間隔,這樣能夠有效的避免發送端在數據傳輸前的長時間盲等問題。但是PA-MAC協議的不足也是十分明顯的,比如調度信息的有效時間太短,最多只有2個執行周期,這樣就導致了每個數據傳輸前的Beacon幀均要攜帶接收端的調度信息,這樣也會消耗不必要的能量,同時調度信息並不夠實時。這種協議雖然對R1-MAC協議的性能進行了改進,但改進並不算大,甚至不能跟PW-MAC協議相媲美。鄰居列表中的調度信息的有效時間太短,最多只有2個執行周期,這樣就導致了每個數據傳輸前的Beacon幀均要攜帶接收端的調度信息,這樣也會消耗不必要的能量,同時調度信息並不夠實時。這種協議雖然對R1-MAC協議的性能進行了改進,但改進並不算大。
【發明內容】
[0009]發明目的:本發明的目的在於解決現有技術中存在的不足,提供一種基於自適應按需喚醒技術的無線傳感器網絡數據傳輸方法。
[0010]技術方案:本發明的一種基於自適應按需喚醒技術的無線傳感器網絡數據傳輸方法,其具體傳輸步驟如下:
[0011]( 1 )將加入網絡的節點進行初始化,並建立鄰居列表用於存儲鄰居節點的ID和調度?目息;
[0012]( 2)發送端S有數據要傳輸時,查看自身的鄰居列表是否有目標接收端R的調度信息;
[0013](3)根據步驟(2)中所獲得調度信息,發送端S自適應按需喚醒,然後與接收端R進行數據傳輸;
[0014](4)根據發送端S的執行周期,自動更新鄰居列表中每個鄰居節點的調度信息。
[0015]進一步的,所述步驟(3)中按需喚醒機制的具體步驟如下:
[0016]Α、發送端S上層有數據包需要發送時,發送端S先查詢鄰居列表中是否有接收端R的下一次喚醒調度信息,如果發送端S沒有建立對應於接收端R的調度時間信息,則發送端S立即喚醒,啟動短前導喚醒機制;如果發送端S建立對應於接收端R的調度時間信息,但是該時間小於當前時間,即該調度時間信息已經過期,則發送端S也要立即喚醒,啟動短前導喚醒機;如果發送端S已有對應於接收端R的調度時間信息,且該時間沒有過期,在未來的某個確切時間點,接收端R會喚醒,偵聽無線信道,等待數據包的到來,當接收端R成功接收該數據包後,查看內部參數ShortFlag是否為I ;
[0017]B、發送端S喚醒後開始偵聽無線信道,若無線信道被佔用,則等待一段時間後在偵聽,直到信道空閒,當無線信道空閒後,發送端S啟動短前導喚醒機制,發送帶有目標節點地址的start幀給接收端R,若非目標節點收到Start幀,則非目標節點直接切換至睡眠狀態,而接收端R是目標節點則在被喚醒後可以偵聽到Start幀,然後將節點內部參數Flag設置為1,並回復發送端S —個Hello幀;發送端S在每個Start幀發送後均要有一段固定時間t的空閒偵聽,在這空閒偵聽間隔內接收Hello幀,若發送端S沒有接收到接收端R發出的Hello幀,則發送端S繼續周期性的發送Start幀,若發送端S接收到接收端R發出的Hello幀,則發送端S繼續偵聽無線信道,等待數據包的到來,接收到R成功接收數據包後,查看其內部參數ShortFlag是否為I ;[0018]C、因發送端S有接收端R的下一次喚醒調度信息且該信息未過期,則發送端S利用這個信息計算出接收端R的下一次喚醒時間,得到這個時間點後,發送端S只需要靜靜的保持休眠狀態;發送端S在接收端R喚醒前醒來,等待接收端R廣播的Hello幀,接收端R根據自己的調度表,按照周期調度中要求的時間點喚醒,偵聽無線信道,檢測信道是否被其它節點佔用著,如果已經有其它節點正在佔用信道進行數據傳輸,則接收端R退避等待一個Hello幀發送的時間,之後再偵聽無線信道;如果信道空閒,則立即發送廣播Hello幀給發送端S,發送端S成功接收接收端R發出的Hello幀後,繼續偵聽無線信道等待數據包的到來,當接收端R成功接收數據包後,查看其內部參數ShortFlag是否為I ;
[0019]D、當ShortFlag=I時,數據包成功接收後,接收端R回復給發送端S —個Beacon幀,該幀用於通知發送端S數據包已經成功接收同時詢問發送端S是否還有後續數據包需要傳輸;因ShortFlag=I,則接收端R在數據傳輸結束時發送的Beacon巾貞要攜帶接收端R節點最近一次喚醒的時間和接收端R節點發送Beacon的硬體前導第一比特所處的當前時間點,只有當這次數據傳輸是本次通信中最後一次,發送端S才存儲最後一次Beacon中的調度信息,不然丟棄該Beacon巾貞中的調度信息;當ShortFlag=O時,接收端R發送不帶自身調度信息的Beacon巾貞給發送端S ;
[0020]E、發送端S成功接收Beacon幀後,查詢緩存隊列長度,看看是否還有數據包要發送給接收端R,如果有數據包,當接收端R成功接收數據包後,查看其內部參數ShortFlag是否為I ;如果節點緩存隊列中沒有數據包需要發送,則接收端R保持喚醒一段時間後進入睡眠狀態,而發送端S利用Beacon幀中的發送Beacon幀的硬體前導第一比特所處的當前時間點、該Beacon巾貞的傳輸時間和發送端S自身當前時間,計算得到發送端S和接收端R的時間差,然後再利用時間差和接收端R近一次喚醒時間,得到接收端R的下一次喚醒時間點,並保存到發送端S的鄰居列表中,同時發送端S進入休眠狀態。
[0021]本發明中的Hello幀,有以下兩個作用,一、充當數據包請求幀,即廣播幀,用以表示該節點已經喚醒並準備好進行數據傳輸,二、當收到Start短前導幀後,回復給發送端用以確認準備接收數據包。
[0022]本發明中的Beacon幀,也同樣發揮三個作用:一、數據包接收成功確認幀;二、連續接收下一個數據包的請求幀;三、給發送端發送本節點下一次喚醒調度信息,以便通信節點能夠很好的預測對方的工作狀態,減少不必要的空閒偵聽。
[0023]有益效果:本發明的一種基於自適應按需喚醒技術的無線傳感器網絡數據傳輸方法,與現有技術相比具有以下優點:
[0024](I)本發明充分利用短前導包的優勢,即只有當發送節點未知接收節點的調度信息,且接收節點還處於睡眠狀態這種情況下,才採用短前導技術,這樣就並不是每次數據傳輸都會使用短前導包,很好減少短前導技術的使用次數,因此減少發送節點在每次數據發送中的能量消耗和對信道的佔用,與傳統的短前導技術相比,較大程度的調高了吞吐量和包傳輸比例。
[0025](2)本發明通過預測接收端喚醒調度信息,但如果鄰居列表中任意一個接收端喚醒調度信息到期後,節點自動添加一個執行周期,獲得該節點的下下次喚醒調度時間,同時節點鄰居列表中的調度信息都是相對調度信息,是在該節點的時間和鄰居節點的喚醒調度時間基礎上計算取得的,而且還添加一定的隨機時間,這樣即使多個發送端同時有數據發送給同一個接收端時,因為隨機取值的存在,是的每個發送端預測該節點下一次喚醒的時間存在略微的差別,大大避免衝突,從而減少使用複雜的退避算法的概率,也會減少因退避值超出閾值而引發的數據重傳。
[0026](3)本發明較大程度的降低佔空比和丟包率,從而減少收發節點的能耗。
[0027](4)本發明大大的減少空閒偵聽,保證傳輸率和吞吐量。
[0028](5)本發明採用接收端發起的數據傳輸模式,同時引入類似短前導的Start包,作為Start信息的應答Hello幀,攜帶節點的工作狀態,這樣節點就能獲知其他鄰近節點的調度信息,數據傳輸方便靈活。
[0029](6)本發明中方的Start包充短前導幀,發送端都可主動發送此幀喚醒接收端,以開啟數據包的傳輸;當接收端接收Start幀後,發送Hello數據請求幀以作應答,並且在Hello幀中會攜帶本節點的下一次喚醒調度信息,以便對方節點能夠獲知該節點的調度信
肩、O
【專利附圖】
【附圖說明】
[0030]圖1為本發明方案的整體流程圖;
[0031]圖2為本發明偵聽狀態下的流程圖;
[0032]圖3為本發明發送狀態下的流程圖;
[0033]圖4為本發明接收狀態下的流程圖;
[0034]圖5為本發明中的仿真場景示意圖;
[0035]圖6為本發明中仿真場景下的能耗示意圖;
[0036]圖7為本發明中仿真場景下的延時示意圖;
[0037]圖8為本發明中仿真場景下的吞吐量示意圖。
【具體實施方式】
[0038]下面對本發明技術方案結合附圖進行詳細說明。
[0039]如圖1所示,節點加入網絡中後首先要初始化,需要建立鄰居列表並在之後的數據傳輸中記錄對方節點的調度信息;當發送端的鄰居列表中已經有目標接收端的下一次喚醒時間並且這個時間並沒有過時,則發送端只需在接收端喚醒前一刻醒來等待接收端的廣播Hello幀即可;當發送端的鄰居列表中沒有目標接收端的下一次喚醒時間或者這個喚醒時間已經過時,則啟動短前導Start幀主動喚醒接收端;在所有的此次數據傳輸結束的時候,接收端傳輸信標(Beacon)巾貞,該巾貞包含接收端上一次喚醒時間和傳輸Beacon巾貞硬體前導第一比特的時間點。
[0040]每個節點有四個狀態,分別為偵聽狀態、休眠狀態、發送狀態和接收狀態,而當節點從休眠狀態喚醒來後,首先要判斷進入圖2的偵聽流程還是進入圖3的發送數據流程。圖2至圖4為節點各個工作狀態的流程示意圖。
[0041]如圖2所示,節點偵聽無線信道:偵聽到以自身為接收端的Start幀,轉到接收數據接收狀態,如圖4所示;如果偵聽到目標接收端的Hello幀,則轉到發送數據發送狀態,如圖3所示。檢測信道是否空閒,若忙碌,則退避一個Hello幀發送時間後繼續檢測信道是否空閒,若空閒,則接著查看緩存隊列是否空閒。如果緩存隊列空閒,則直接進入休眠狀態,不然查看緩存隊列中是否為數據包。如果不是數據包,則表示該節點無數據要發送,發送廣播Hello幀後,轉入接收數據流程4-4,查看網絡中是否有數據要接收;如果是數據包,則表示該節點有數據要發送,此時並不直接等待接收端的Hello幀,而是要進行是否有接收端調度信息的判斷。如果節點有目標接收端的下一次喚醒的調度信息,則將節點下次喚醒時間定時在接收端喚醒前一刻,然後直接進入休眠狀態;如果節點沒有目標接收端的下一次喚醒調度信息,則轉到發送數據狀態,如圖3所示,發送短前導Start幀。
[0042]如圖3所示,在發送狀態時,節點首先查看自己的相關參數,確定是否直接發送數據包。在直接發送數據包時,節點在發送數據後偵聽無線信道,等待接收端的Beacon幀,如果信道中有衝突,則不會接收到Beacon幀,而是接收到帶BW的Hello幀,之後根據BW的值,根據隨機函數選擇退避時間後再次發送數據;如果信道無衝突,且有後續的數據包,立即發送,待所有數據包均發送完後,最後一次接收到的Beacon幀中有接收端的調度信息,則將調度信息存入鄰居列表,之後進入休眠狀態;如果超時後還沒有收到Beacon確認幀,甚至是帶BW的Hello幀也沒有,則說明接收端可能損壞,節點轉入休眠狀態。在非直接發送數據包時,節點等待無線信道空閒下來發送短前導Start幀,在發送短前導幀間隔內偵聽無線信道,等待接收端回復的Hello幀,如果Hello幀到來,則立即發送數據包,發送完數據包後,繼續偵聽信道等待接收端的Beacon確認幀,若還有連續的數據包,收到Beacon幀後立即發送後續數據,若所有的數據包均接收完全,則發送端存儲最後一次接收的Beacon中調度信息,之後進入休眠狀態;若如果遲遲等不來Hello幀,節點繼續發送短前導幀直到發送時間超時,超時後進入休眠狀態。
[0043]如圖4所示,在接收狀態時,節點首先查看是否已經接收了數據包。當接收了數據包時,查看ShortFlag的值,如果ShortFlag=I,則Beacon巾貞中要攜帶節點的調度信息,如果ShortFlag=O,則Beacon巾貞不帶調度信息,將配置好的Beacon發送給發送端,詢問是否有後續數據,偵聽信道,若無數據,則根據緩存隊列長度選擇轉入偵聽狀態或者轉入休眠狀態,若有數據,則接收數據,成功接收完數據後,查看ShortFlag的值,配置Beacon幀並發送,偵聽信道。當未接收到數據包時,節點偵聽無線信道,查詢是否有數據包的到來,此時若無數據包到來,則根據緩存隊列的長度選擇轉入偵聽狀態或者轉入休眠狀態;若有數據包到來,並且還發生了衝突,此時就要進行二進位退避算法,節點發送帶BW值的Hello幀給發送端,之後偵聽信道查詢有無退避後的數據包到來;若有數據包到來且未發生衝突,則正常接收數據包,數據傳輸結束後,又要查看ShortFlag的值,配置Beacon幀並發送,詢問是否有後續的數據包要接收,之後偵聽無線信道,等待數據包到來。
[0044]實施例1:
[0045]以下進行實驗測試驗證:
[0046]實驗平臺:NS2網絡仿真模擬器;
[0047]實驗場景:如圖5所示,為實驗仿真場景,11個節點分布在半徑為250米的圓形ηtol拓撲場景,節點均勻分布在圓周,但場景中只有一個匯聚節點,位於圓點位置並且保持位置不變,而其他所有節點均向該匯聚節點發送數據包。
[0048]網絡負載:而發送節點的CBR業務每秒產生10個數據包,即CBR業務發包時間間隔為0.1秒。
[0049]從圖6至8,可以看出本發明與現有技術相比,性能較大很大的提高。從能耗的角度來看,隨著數據流的增加,本發明方案的能耗和佔空比均下降到傳統方案的95%以下,吞吐量則是較傳統方案上升10%左右。
【權利要求】
1.一種基於自適應按需喚醒技術的無線傳感器網絡數據傳輸方法,其特徵在於:其具體傳輸步驟如下: (1)將加入網絡的節點進行初始化,並建立鄰居列表用於存儲鄰居節點的ID和調度信息; (2)發送端S有數據要傳輸時,查看自身的鄰居列表是否有目標接收端R的調度信息; (3)根據步驟(2)中所獲得調度信息,發送端S自適應按需喚醒,然後與接收端R進行數據傳輸; (4)根據發送端S的執行周期,自動更新鄰居列表中每個鄰居節點的調度信息。
2.根據權利要求1所述的基於自適應按需喚醒技術的無線傳感器網絡數據傳輸方法,其特徵在於:所述步驟(3)中按需喚醒機制的具體步驟如下:」: A、發送端S上層有數據包需要發送時,發送端S先查詢鄰居列表中是否有接收端R的下一次喚醒調度信息,如果發送端S沒有建立對應於接收端R的調度時間信息,則發送端S立即喚醒,啟動短前導喚醒機制;如果發送端S建立對應於接收端R的調度時間信息,但是該時間小於當前時間,即該調度時間信息已經過期,則發送端S也要立即喚醒,啟動短前導喚醒機;如果發送端S已有對應於接收端R的調度時間信息,且該時間沒有過期,在未來的某個確切時間點,接收端R會喚醒,偵聽無線信道,等待數據包的到來,當接收端R成功接收該數據包後,查看內部參數ShortFlag是否為1 ; B、發送端S喚醒後開始偵聽無線信道,若無線信道被佔用,則等待一段時間後在偵聽,直到信道空閒,當無線信道空閒後,發送端S啟動短前導喚醒機制,發送帶有目標節點地址的Start幀給接收端R,若非目標節點收到Start幀,則非目標節點直接切換至睡眠狀態,而接收端R是目標節點則在被喚醒後可以偵聽到Start幀,然後將節點內部參數Flag設置為I,並回復發送端S —個Hello幀;發送端S在每個Start幀發送後均要有一段固定時間t的空閒偵聽,在這空閒偵聽間隔內接收Hello幀,若發送端S沒有接收到接收端R發出的Hello幀,則發送端S繼續周期性的發送Start幀,若發送端S接收到接收端R發出的Hello幀,則發送端S繼續偵聽無線信道,等待數據包的到來,接收到R成功接收數據包後,查看其內部參數ShortFlag是否為1 ; C、因發送端S有接收端R的下一次喚醒調度信息且該信息未過期,則發送端S利用這個信息計算出接收端R的下一次喚醒時間,得到這個時間點後,發送端S只需要靜靜的保持休眠狀態;發送端S在接收端R喚醒前醒來,等待接收端R廣播的Hello幀,接收端R根據自己的調度表,按照周期調度中要求的時間點喚醒,偵聽無線信道,檢測信道是否被其它節點佔用著,如果已經有其它節點正在佔用信道進行數據傳輸,則接收端R退避等待一個Hello幀發送的時間,之後再偵聽無線信道;如果信道空閒,則立即發送廣播Hello幀給發送端S,發送端S成功接收接收端R發出的Hello幀後,繼續偵聽無線信道等待數據包的到來,當接收端R成功接收數據包後,查看其內部參數ShortFlag是否為I ; D、當ShortFlag=I時,數據包成功接收後,接收端R回復給發送端S—個Beacon中貞,該幀用於通知發送端S數據包已經成功接收同時詢問發送端S是否還有後續數據包需要傳輸;因ShortFlag=I,則接收端R在數據傳輸結束時發送的Beacon幀要攜帶接收端R節點最近一次喚醒的時間和接收端R節點發送Beacon的硬體前導第一比特所處的當前時間點,只有當這次數據傳輸是本次通信中最後一次,發送端S才存儲最後一次Beacon中的調度信息,不然丟棄該Beacon幀中的調度信息;當ShortFlag=O時,接收端R發送不帶自身調度信息的Beacon幀給發送端S ; E、發送端S成功接收Beacon幀後,查詢緩存隊列長度,看看是否還有數據包要發送給接收端R,如果有數據包,當接收端R成功接收數據包後,查看其內部參數ShortFlag是否為I ;如果節點緩存隊列中沒有數據包需要發送,則接收端R保持喚醒一段時間後進入睡眠狀態,而發送端S利用Beacon幀中的發送Beacon幀的硬體前導第一比特所處的當前時間點、該Beacon幀的傳輸時間和發送端S自身當前時間,計算得到發送端S和接收端R的時間差,然後再利用時間差和接收端R近一次喚醒時間,得到接收端R的下一次喚醒時間點,並保存到發送端S的鄰 居列表中,同時發送端S進入休眠狀態。
【文檔編號】H04W52/02GK103906207SQ201410073919
【公開日】2014年7月2日 申請日期:2014年3月3日 優先權日:2014年3月3日
【發明者】徐平平, 李小娟, 秦漢 申請人:東南大學