欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

無線傳感器網(wǎng)絡數(shù)據(jù)收集路由方法及裝置的制作方法

文檔序號:7945706閱讀:154來源:國知局
專利名稱:無線傳感器網(wǎng)絡數(shù)據(jù)收集路由方法及裝置的制作方法
技術領域
本發(fā)明涉及無線傳感器網(wǎng)絡技術領域,尤其涉及一種無線傳感器網(wǎng)絡的數(shù)據(jù)收集路由方法及裝置。
背景技術
近年來,無線傳感器網(wǎng)絡發(fā)展迅速,無線傳感器網(wǎng)絡由部署在一定區(qū)域內的多個傳感器節(jié)點組成,通過無線通信方式組成一個多跳的網(wǎng)絡系統(tǒng),對網(wǎng)絡覆蓋區(qū)域內的數(shù)據(jù)進行搜集處理并將之發(fā)送給用戶或觀察者。它具有廣闊的應用前景環(huán)境監(jiān)測和預報、醫(yī)療護理、智能家居、監(jiān)控、交通、探索以及物流管理和安全檢測等。
路由協(xié)議是無線傳感器網(wǎng)絡中網(wǎng)絡層的核心技術,也是當今國內外研究的熱點之一,其主要目的是實現(xiàn)能量有效性路由的制定,即在把數(shù)據(jù)從源節(jié)點可靠地傳送到匯聚節(jié)點的基礎上,盡可能地使網(wǎng)絡生命周期最大化。目前的無線傳感器網(wǎng)絡的路由協(xié)議根據(jù)網(wǎng)絡結構主要分為三類平面路由協(xié)議(flat-based)、層次路由協(xié)議(hierarchical-based)禾口基于位置(location-based)的路由協(xié)議。
在平面路由協(xié)議中,所有網(wǎng)絡節(jié)點不存在等級和層次差異,它們的地位是平等的,節(jié)點通過相互之間的局部操作和信息反饋來生成路由。在這類協(xié)議中,匯聚節(jié)點向監(jiān)測區(qū)域的節(jié)點發(fā)出查詢命令,監(jiān)測區(qū)域內的節(jié)點收到査詢命令后,向目的節(jié)點發(fā)送監(jiān)測數(shù)據(jù)。
Flooding協(xié)議是一種經(jīng)典的平面路由協(xié)議,在該協(xié)議中,節(jié)點將采集或收到的數(shù)據(jù)向所有的鄰節(jié)點廣播,這些數(shù)據(jù)包只有在過期或到達目的地時才停止傳播。該協(xié)議的優(yōu)點是實現(xiàn)簡單,不需要為保持網(wǎng)絡拓撲信息和實現(xiàn)復雜的路由發(fā)現(xiàn)方法而消耗計算資源,方法具有很高的可靠性和健壯性。但是該協(xié)議同時具有嚴重的缺陷1、內爆,即節(jié)點幾乎同時從鄰節(jié)點收到多份相同數(shù)據(jù);2、交疊,節(jié)點先后收到監(jiān)控同一區(qū)域的多個節(jié)點發(fā)送的幾乎相同的數(shù)據(jù);3、資源利用盲目,節(jié)點不考慮自身資源限制,在任何情況下都轉發(fā)數(shù)據(jù)。這些缺陷會導致節(jié)點能耗消耗過快,網(wǎng)絡生存周期太短,不符合長時間工作的需求。
Gossiping協(xié)議是對Flooding協(xié)議的改進,在該協(xié)議中,節(jié)點將產(chǎn)生或收到的數(shù)據(jù)隨機轉發(fā),雖然避免了內爆的問題,但增加了時延。隨著網(wǎng)絡節(jié)點的增加,該協(xié)議的時延會越來越大,效率越來越低,不符合在至少具有幾十個節(jié)點的應用環(huán)境中高效和實時性的需求。
SPIN是一種以數(shù)據(jù)為中心的自適應通信路由協(xié)議,它引入了兩個新思路協(xié)商(negotiation)禾口資源自適應(resource-adaptation),以此來解決傳統(tǒng)路由協(xié)議在傳感器網(wǎng)絡中可能存在的問題。在該協(xié)議中,傳輸數(shù)據(jù)之前,節(jié)點之間要先進行協(xié)商,只有有用的數(shù)據(jù)才會傳輸;同時,每個節(jié)點都有一個資源管理器負責管理節(jié)點資源損耗,根據(jù)節(jié)點所擁有的資源狀況,資源管理器控制節(jié)點在處理和傳輸數(shù)據(jù)時采取不同的行為。但是,SPIN協(xié)議中,度數(shù)(即相鄰節(jié)點的個數(shù))較大的節(jié)點消耗能量較多,如果該節(jié)點處在關鍵位置上,它的"死亡"可能會對網(wǎng)絡造成較大影響;并且,在傳輸新數(shù)據(jù)的過程中,直接向鄰居節(jié)點廣播數(shù)據(jù)包,而沒有考慮其鄰居節(jié)點如果由于自身能量的原因不愿承擔起轉發(fā)新數(shù)據(jù)的功能時,則新數(shù)據(jù)將無法傳輸而出現(xiàn)"數(shù)據(jù)盲點",進而影響整個網(wǎng)絡信息的收集。SPIN協(xié)議的該缺點會導致網(wǎng)絡負載不均,部分節(jié)點過早死亡,影響數(shù)據(jù)的正常傳輸,不符合對網(wǎng)絡負載均衡和數(shù)據(jù)傳輸?shù)目煽啃砸蟆?br> 層次路由協(xié)議采用簇(cluste:r)的形式將網(wǎng)絡進行劃分,它與平面路由協(xié)議相對應。所謂簇就是具有某種關聯(lián)的網(wǎng)絡節(jié)點集合。每個簇由一個簇首(cluster head)和多個簇內成員(cluster member)組成。簇與簇之間可以通過簇首進行通信,簇首管理或控制整個簇內成員,協(xié)調成員節(jié)點之間的工作與通信,負責收集簇內節(jié)點的信息并對這些信息進行融合處理。簇首之間的連接構成上一級網(wǎng)絡的骨干節(jié)點。
低功耗自適應集簇分層型協(xié)議(Low Energy Adaptive ClusteringHierarchy,下稱LEACH協(xié)議)是MIT的Chandrakasan等人為無線傳感器網(wǎng)絡設計的低功耗自適應聚類路由方法,它是第一個在無線傳感器網(wǎng)絡中提出的層次式路由協(xié)議。該協(xié)議定義了 "輪"(round)的概念, 一輪由初始化和穩(wěn)定工作兩個階段組成。為了避免額外的處理開銷,穩(wěn)定態(tài)一般持續(xù)相對較長的時間。在初始化階段,簇首是通過下面的機制產(chǎn)生的節(jié)點生成(O, l)之間的隨機數(shù),如果大于閾值T,則選該節(jié)點為簇首。該協(xié)議在計算閾值T時未考慮節(jié)點的剩余能量,如果被選為簇首的節(jié)點剩余能量很低,即將死亡,整個簇的數(shù)據(jù)可能會無法傳送到匯聚節(jié)點,導致數(shù)據(jù)丟失。此外,該方法假設簇首均可直 接與匯聚點通信,在該假設不成立的監(jiān)測環(huán)境中則無法應用該方法。
HEED(hybrid energy-efficient distributed clustering)協(xié)議針對 LEACH協(xié)議簇首分布不均勻的問題進行了改進,其基本思路是將節(jié)點最大剩余 能量禾口平均最小可達會巨量(average minimum reach ability power,下禾爾AMRP) 作為選擇簇首的參數(shù),通過迭代的方式周期性地選取出較合理的簇首分布。平 均最小可達能量是指一個簇內所有其他節(jié)點與簇首通信所需的最小功率的平均 值。它以簇內平均可達能量AMRP作為衡量簇內通信成本的標準。HEED協(xié)議雖 然使網(wǎng)絡的能量均衡消耗,簇首的分布更合理,但由于簇首選舉采用迭代的方 式,簇首生成時間較長,通信開銷較大。
因此,人們需要一種能夠長時間監(jiān)測數(shù)據(jù)且數(shù)據(jù)傳輸可靠的路由技術,并 解決上述相關技術中的問題。

發(fā)明內容
本發(fā)明的目的是提供一種基于異步休眠調度的無線傳感器網(wǎng)絡數(shù)據(jù)收集路 由方法及裝置。
根據(jù)本發(fā)明的一方面,提供了一種無線傳感器網(wǎng)絡數(shù)據(jù)收集路由方法,其 技術方案是
一種無線傳感器網(wǎng)絡數(shù)據(jù)收集路由方法,包括以下步驟 路由建立階段S101,其包括以下步驟
步驟S101-1:基站發(fā)出hello包,所述hello包的內容包括節(jié)點的節(jié)點 號、自己到基站的跳步數(shù)、剩余能量及LEAF標識;其中,基站到自己跳步數(shù) 為0,其它節(jié)點到基站的跳步數(shù)初始化為無窮大,如果節(jié)點為LEAF節(jié)點,則 LEAF標示為真,否則為假;
步驟S101-2:節(jié)點判斷是否收到hello包,如果是則執(zhí)行步驟S101-3;
步驟S101-3:確定本節(jié)點到基站的跳步數(shù),建立鄰居表,所述鄰居表的內 容包括鄰居節(jié)點的節(jié)點號、鄰居節(jié)點到基站的跳步數(shù)、鄰居節(jié)點剩余能量、到
鄰居節(jié)點的鏈路質量指示,執(zhí)行步驟S101-4;
步驟S101-4:判斷自己到基站的跳步數(shù)是否比之前未更新的跳步數(shù)小,如 果是則廣播自身的hello包;步驟S101-5:如果節(jié)點在路由建立階段S101都沒有收到hello包,則判 定自己為新加入的節(jié)點,執(zhí)行生成休眠調度階段S102中的步驟S102-lb;
生成休眠調度階段S102,其包括以下步驟
所述生成休眠調度階段S102中包括隨機時間和第一周期,所述第一周期 包括監(jiān)聽時間和休眠時間,其中,隨機時間<休眠時間
步驟S102-1:節(jié)點等待隨機時間,開始自身的監(jiān)聽時間并廣播hello包, 如果節(jié)點收到hello包,執(zhí)行步驟S102-2;
步驟S102-lb:節(jié)點等待隨機時間,開始自身的監(jiān)聽時間并按第二周期為 周期廣播路由修復包,到數(shù)據(jù)收集階段S103開始時則停止發(fā)送路由修復包, 其中,第二周期〈監(jiān)聽時間,執(zhí)行數(shù)據(jù)收集階段S103中的步驟S103-7;所述路 由修復包的內容包括本節(jié)點當前時間距最近一次開始時間的時間差、自己到基 站的跳步數(shù)、剩余能量及節(jié)點的節(jié)點號;
步驟S102-2:在鄰居表中記錄鄰居節(jié)點監(jiān)聽時間和自身節(jié)點監(jiān)聽時間的啟 動時間差;
數(shù)據(jù)收集階段S103,其包括以下步驟 節(jié)點周期性進入監(jiān)聽時間和休眠時間
步驟S103-l:判斷節(jié)點是否處于監(jiān)聽時間,如果是則執(zhí)行步驟S103-2a; 如果不是則執(zhí)行步驟S103-2b;
步驟S103-2a:節(jié)點監(jiān)聽無線信道,判斷收到的數(shù)據(jù)包類型;如果收到環(huán) 境數(shù)據(jù)包,執(zhí)行步驟S103-3;如果收到路由修復包,執(zhí)行步驟S103-6;如果 收到hello包,執(zhí)行步驟S103-7;
步驟S103-2b:節(jié)點關閉監(jiān)聽,進入休眠狀態(tài);
步驟S103-2c:節(jié)點判斷是否有自身產(chǎn)生的環(huán)境數(shù)據(jù)包需要發(fā)送,如果是 則執(zhí)行步驟S103-3;
步驟S103-3:節(jié)點從鄰居表選擇下一跳節(jié)點,選擇策略為節(jié)點遍歷鄰居
表一次計算所有鄰居節(jié)點的轉發(fā)代價q,選出q最小的節(jié)點作為下一跳將消息
發(fā)出去,執(zhí)行步驟S103-4;步驟S103-4:等待鄰居表中記錄的與該節(jié)點的時間差的時間,即等待下一 條節(jié)點進入監(jiān)聽狀態(tài)發(fā)送環(huán)境數(shù)據(jù)包,執(zhí)行步驟S103-5;
步驟S103-5:節(jié)點在Tw時期向下一跳節(jié)點轉發(fā)環(huán)境數(shù)據(jù)包;
步驟S103-6:更新鄰居表信息,其中鄰居節(jié)點與本節(jié)點的時間差(t)的計 算公式為Atl-At2,其中Atl為發(fā)送節(jié)點發(fā)送的路由修復包中包含的時間 差,At2為本節(jié)點當前時間距最近一次監(jiān)聽時間(Tw)開始時間的時間差;如果 收到的路由修復包中的跳步數(shù)為無窮大,回復一個路由修復包;
步驟S103-7:更新節(jié)點本身到基站的跳步數(shù),該跳步數(shù)為鄰居表中最小的 跳步數(shù)加l;如果跳步數(shù)比之前未更新的跳步數(shù)小的話,則等待鄰居節(jié)點各自 進入監(jiān)聽狀態(tài)時依次發(fā)送hello包。
優(yōu)選的,所述步驟S103-2a中節(jié)點如果收到環(huán)境數(shù)據(jù)包,執(zhí)行步驟S103-
3a;
步驟S103-3a:判斷是否Trcv〉P*Tw,其中,P=l/2, Trcv是收到的環(huán)境 數(shù)據(jù)包時間,Tw是監(jiān)聽時間,如果是則執(zhí)行步驟S103-3b;如果否則執(zhí)行步驟 S103-3c;
步驟S103-3b:回復ACK,在ACK包中加入收到包的當前時間和最近一次 Tw的啟動時間的時間差Trcv-Tw,執(zhí)行步驟S103-3;
步驟S103-3c:回復ACK,在ACK包中不含時間差Trcv-Tw,執(zhí)行步驟 S103-3;
所述步驟S103-5中,節(jié)點向下一跳節(jié)點轉發(fā)環(huán)境數(shù)據(jù)包后,等待確認 ACK;如果接收到下一跳節(jié)點返回的ACK,執(zhí)行步驟S103-5a;如果沒有收到 ACK,執(zhí)行步驟S103-5b;
步驟S103-5a:記錄收到ACK的時間為鄰居節(jié)點監(jiān)聽時間的開始時間,重 新計算鄰居節(jié)點和本節(jié)點的啟動時間差,更新鄰居表,路由轉發(fā)結束;
步驟S103-5b:隔tl后重發(fā)數(shù)據(jù)包,發(fā)N次,其中,tl〈CTw,如果在此期 間收到ACK,執(zhí)行步驟S103-5a,如果仍然沒有收到ACK,判斷該鄰居節(jié)點已經(jīng) 失效,從鄰居表中刪除該鄰居節(jié)點信息,執(zhí)行步驟S103-3。
優(yōu)選的,所述步驟S102-2中啟動時間差t的計算公式為如果t3》t2, 則t=(t3-t2)%(Tw+Ts);否則t=(t3+nT-t2)%(Tw+Ts);其中,t2為本節(jié)點記錄的本節(jié)點Tw啟動時間,t3為本節(jié)點收到鄰居節(jié)點hello包的當前時間,n是 使得(t3+nT)》t2的最小自然數(shù)。
優(yōu)選的,所述步驟S103-3中轉發(fā)代價q的計算公式為
'五,"x
其中,A為鄰居節(jié)點到Sink節(jié)點的跳步數(shù),《為鄰居節(jié)點剩余能量, £2/'為到該鄰居節(jié)點的鏈路質量,","分別為剩余能量和鏈路質量權重指數(shù)。
優(yōu)選的,所述步驟S103-5a中的啟動時間差t的計算公式為如果ACK中 包含發(fā)送ACK節(jié)點收到包的當前時間和最近一次Tw的啟動時間的時間差Trcv-Tw,則t=t-(Trcv-Tw);否則t=t-(t4-15);其中,t4為本節(jié)點收到鄰居節(jié)點 ACK的當前時間,t5為本第一周期T內第一次向鄰居節(jié)點發(fā)送環(huán)境數(shù)據(jù)包的時 間。
根據(jù)本發(fā)明的另一方面,提供了一種由無線傳感器網(wǎng)絡數(shù)據(jù)收集路由方法 得到的路由裝置,該路由裝置映射到每一個節(jié)點,至少由路由建立模塊、生成 休眠調度模塊及數(shù)據(jù)收集模塊依次連接組成,各模塊分別實現(xiàn)如下功能
路由建立模塊
基站發(fā)出hello包,所述hello包的內容包括節(jié)點的節(jié)點號、自己到基站 的跳步數(shù)、剩余能量及LEAF標識;其中,基站到自己跳步數(shù)為0,其它節(jié)點到 基站的跳步數(shù)初始化為無窮大,如果節(jié)點為LEAF節(jié)點,則LEAF標示為真,否 則為假;節(jié)點判斷是否收到hello包,如果是則確定本節(jié)點到基站的跳步數(shù), 建立鄰居表,所述鄰居表的內容包括鄰居節(jié)點的節(jié)點號、鄰居節(jié)點到基站的跳 步數(shù)、鄰居節(jié)點剩余能量、到鄰居節(jié)點的鏈路質量指示;判斷自己到基站的跳 步數(shù)是否比之前未更新的跳步數(shù)小,如果是則廣播自身的hello包;如果路由 建立模塊中節(jié)點都沒有收到hello包,則判定自己為新加入的節(jié)點;
生成休眠調度模塊
所述生成休眠調度模塊中包括隨機時間和第一周期,所述第一周期包括監(jiān) 聽時間和休眠時間,其中,隨機時間<休眠時間;節(jié)點等待隨機時間,開始自身的監(jiān)聽時間并廣播hello包,如果節(jié)點收到 hello包,在鄰居表中記錄鄰居節(jié)點監(jiān)聽時間和自身節(jié)點監(jiān)聽時間的啟動時間 差;
判定自己為新加入的節(jié)點等待隨機時間,開始自身的監(jiān)聽時間并按第二周 期為周期廣播路由修復包,到數(shù)據(jù)收集階段開始時則停止發(fā)送路由修復包,其 中,第二周期〈監(jiān)聽時間;所述路由修復包的內容包括本節(jié)點當前時間距最近 一次開始時間的時間差、自己到基站的跳步數(shù)、剩余能量及節(jié)點的節(jié)點號;
數(shù)據(jù)收集模塊
節(jié)點周期性進入監(jiān)聽時間和休眠時間判斷節(jié)點是否處于監(jiān)聽時間,如果 是則監(jiān)聽無線信道;如果不是節(jié)點關閉監(jiān)聽,進入休眠狀態(tài);或者節(jié)點判斷是 否有自身產(chǎn)生的環(huán)境數(shù)據(jù)包需要發(fā)送,如果有,則節(jié)點從鄰居表選擇下一跳節(jié)
點,選擇策略為節(jié)點遍歷鄰居表一次計算所有鄰居節(jié)點的轉發(fā)代價G,選出 c'最小的節(jié)點作為下一跳將消息發(fā)出去,等待鄰居表中記錄的與該節(jié)點的時間 差的時間,在監(jiān)聽時間向下一跳節(jié)點轉發(fā)環(huán)境數(shù)據(jù)包;
節(jié)點監(jiān)聽無線信道時,判斷收到的數(shù)據(jù)包類型;如果收到環(huán)境數(shù)據(jù)包,節(jié) 點從鄰居表選擇下一跳節(jié)點,選擇策略為節(jié)點遍歷鄰居表一次計算所有鄰居
節(jié)點的轉發(fā)代價q,選出G最小的節(jié)點作為下一跳將消息發(fā)出去,等待鄰居表
中記錄的與該節(jié)點的時間差的時間,即等待下一條節(jié)點進入監(jiān)聽狀態(tài)發(fā)送環(huán)境 數(shù)據(jù)包,節(jié)點在Tw時期向下一跳節(jié)點轉發(fā)環(huán)境數(shù)據(jù)包;
如果收到路由修復包,更新鄰居表信息,其中鄰居節(jié)點與本節(jié)點的時間差 (t)的計算公式為A tl- A t2,其中A tl為發(fā)送節(jié)點發(fā)送的路由修復包中包含的 時間差,A t2為本節(jié)點當前時間距最近一次監(jiān)聽時間Tw開始時間的時間差; 如果收到的路由修復包中的跳步數(shù)為無窮大,回復一個路由修復包;
如果收到hello包,更新節(jié)點本身到基站的跳步數(shù),該跳步數(shù)為鄰居表中 最小的跳步數(shù)加1;如果跳步數(shù)比之前未更新的跳步數(shù)小的話,則等待鄰居節(jié) 點各自進入監(jiān)聽狀態(tài)時依次發(fā)送hello包。
優(yōu)選的,數(shù)據(jù)收集模塊中節(jié)點監(jiān)聽無線信道時,如果收到環(huán)境數(shù)據(jù)包,判 斷是否TrCV〉P*Tw,其中,P=l/2, Trcv是收到的環(huán)境數(shù)據(jù)包時間,Tw是監(jiān)聽 時間,如果是則回復ACK,在ACK包中加入收到包的當前時間和最近一次Tw的啟動時間的時間差Trcv-Tw,然后再從鄰居表選擇下一跳節(jié)點;如果否則回復 ACK,在ACK包中不含時間差Trcv-Tw,然后再從鄰居表選擇下一跳節(jié)點;
當節(jié)點向下一跳節(jié)點轉發(fā)環(huán)境數(shù)據(jù)包后,等待確認ACK;如果接收到下一 跳節(jié)點返回的ACK,記錄收到ACK的時間為鄰居節(jié)點監(jiān)聽時間的開始時間,重 新計算鄰居節(jié)點和本節(jié)點的啟動時間差,更新鄰居表,路由轉發(fā)結束;如果沒 有收到ACK,則隔tl后重發(fā)數(shù)據(jù)包,發(fā)N次,其中,tl《Tw,如果在此期間收 到ACK,記錄收到ACK的時間為鄰居節(jié)點監(jiān)聽時間的開始時間,重新計算鄰居 節(jié)點和本節(jié)點的啟動時間差,更新鄰居表,路由轉發(fā)結束;如果仍然沒有收到 ACK,判斷該鄰居節(jié)點已經(jīng)失效,從鄰居表中刪除該鄰居節(jié)點信息,從鄰居表 選擇下一跳節(jié)點。
優(yōu)選的,所述生成休眠調度模塊鄰居表中的啟動時間差t的計算公式為 如果t3》t2,則t=(t3-t2)%(Tw+Ts);否則t=(t3+nT-t2)%(Tw+Ts);其中,t2 為本節(jié)點記錄的本節(jié)點Tw啟動時間,t3為本節(jié)點收到鄰居節(jié)點hello包的當 前時間,n是使得(t3+nT)》t2的最小自然數(shù)。
優(yōu)選的,所述轉發(fā)代價^的計算公式為
,五,"x
其中,A為鄰居節(jié)點到Sink節(jié)點的跳步數(shù),《為鄰居節(jié)點剩余能量, Z2/'為到該鄰居節(jié)點的鏈路質量,","分別為剩余能量和鏈路質量權重指數(shù)。
優(yōu)選的,如果接收到下一跳節(jié)點返回的ACK,記錄收到ACK的時間為鄰居 節(jié)點監(jiān)聽時間Tw的開始時間,重新計算鄰居節(jié)點和本節(jié)點的啟動時間差t, 所述啟動時間差t的計算公式為如果ACK中包含發(fā)送ACK節(jié)點收到包的當前 時間和最近一次Tw的啟動時間的時間差Trcv-Tw,則t=t-(Trcv-Tw);否則 t=t-(t4-15);其中,t4為本節(jié)點收到鄰居節(jié)點ACK的當前時間,t5為本第一 周期T內第一次向鄰居節(jié)點發(fā)送環(huán)境數(shù)據(jù)包的時間。
根據(jù)上述技術方案,本發(fā)明實現(xiàn)如下技術效果
在路由建立階段,節(jié)點在切換到工作節(jié)點廣播hello包,同時記錄接收到 的其它節(jié)點hello包時間,通過接收hello包的時間和節(jié)點廣播hello包的時 間差維護鄰居節(jié)點的休眠調度,解決時間同步引起的額外開銷;節(jié)點新加入或者更換電池后,局部路由信息丟失,為了使新加入節(jié)點能快
速融入網(wǎng)絡,通過判斷在路由建立階段是否接收到hello包來判斷本身是否為 新加入節(jié)點,并在生成休眠調度階段中節(jié)點按周期Tl廣播路由修復包,收到 路由修復包的節(jié)點會在下一節(jié)點切換到工作狀態(tài)時廣播hello包,從而對局部 路由進行修復;
節(jié)點向鄰居節(jié)點轉發(fā)環(huán)境數(shù)據(jù)包后等待ACK,如果未收到ACK,則隔tl后 重發(fā),持續(xù)n次重發(fā),如果重發(fā)n次后仍未收到ACK那么重新選擇下一個鄰居 為下一跳,當收到ACK后,記錄收到ACK的時間為鄰居節(jié)點更新后的開始工作 時間;如果節(jié)點接收到鄰居發(fā)來的環(huán)境數(shù)據(jù)包時間Trcv〉P*TW,那么回復ACK 時,在ACK包中加入時間差Trcv-Tw,解決節(jié)點硬件的石英晶體振蕩器隨著時 間產(chǎn)生偏移累計,會造成節(jié)點維護的鄰居休眠調度時間產(chǎn)生誤差,導致路由失 效的問題。
由以上方案可見,與現(xiàn)有的路由方法相比,本發(fā)明路由方法的優(yōu)點有
1、 不需要時間同步而達到休眠調度,利用接收到的hello數(shù)據(jù)包與自身 Tw時間差確定鄰居節(jié)點的休眠周期,避免了時間同步引起的額外開銷;
2、 標識為LEAF節(jié)點是人員不方便到達的節(jié)點,盡可能不轉發(fā)數(shù)據(jù),把網(wǎng) 絡的能耗負載加到容易更換電池的節(jié)點上;
3、 更換電池或者新加入的節(jié)點能在小于Ttopo+2T+Trandom時間內修復局 部路由,有很好的可擴展性和收斂性;
4、 能對定時器偏移累計引起的發(fā)送失敗問題進行自適應修復,具有很好 的魯棒性;
5、 控制信息種類少,只有hello包和路由修復包兩種,而且不要求節(jié)點 之間頻繁交換控制信息,只在建立路由階段、生成休眠調度階段、定時器偏移 累計引起的發(fā)送失敗和新節(jié)點加入時交換控制信息,提高了能量利用率;
6、 在低于1%的占空比(監(jiān)聽時間/(監(jiān)聽時間+休眠時間))時也能良好工 作,很好地保存節(jié)點能量;
7、 對應用層隱藏了路由方法的具體實現(xiàn),通過接口為應用層提供透明的 服務。


圖1是根據(jù)本發(fā)明的拓撲生成示意圖2是根據(jù)本發(fā)明的無線傳感器網(wǎng)絡數(shù)據(jù)收集路由方法的流程圖3是根據(jù)本發(fā)明的無線傳感器網(wǎng)絡數(shù)據(jù)收集路由裝置的方框圖4是根據(jù)本發(fā)明的無線傳感器網(wǎng)絡數(shù)據(jù)收集路由方法中路由建立階段的 流程圖5是根據(jù)本發(fā)明的無線傳感器網(wǎng)絡數(shù)據(jù)收集路由方法中生成休眠調度階 段的流程圖6是根據(jù)本發(fā)明的無線傳感器網(wǎng)絡數(shù)據(jù)收集路由方法中數(shù)據(jù)收集階段的 基本流程圖7為根據(jù)本發(fā)明的無線傳感器網(wǎng)絡數(shù)據(jù)收集路由方法中數(shù)據(jù)收集階段帶 ACK確認機制的流程圖8為定時器前向偏移修復示意圖9為定時器后向偏移修復示意圖IO是本發(fā)明方法三個階段示意圖。
以下結合附圖對本發(fā)明的具體實施方式
作進一步詳細地說明。
具體實施例方式
本發(fā)明是一種基于異步休眠調度的無線傳感器網(wǎng)絡數(shù)據(jù)收集路由方法(a Data collection Routing algorithm based on Asynchronous Duty—cycle in Wireless Sensor Networks,以下簡稱DRAD)及裝置,在本發(fā)明的方法中共 有3種數(shù)據(jù)包hello包、環(huán)境數(shù)據(jù)包以及路由修復包(RouteR印aire)。在以 下的實施例說明中,將本發(fā)明的方法及裝置應用于如下網(wǎng)絡模型
1. 所有節(jié)點隨機分布于一個三維空間中,匯聚節(jié)點(基站)在區(qū)域外側, 匯聚節(jié)點只有一個;
2. 所有節(jié)點與匯聚節(jié)點均保持靜止,局部節(jié)點能補充能量;
3. 所有節(jié)點均同構,具有唯一ID,并具有數(shù)據(jù)融合的功能;
4. 長期監(jiān)測環(huán)境數(shù)據(jù),對數(shù)據(jù)的實時性沒有特別要求,可以容忍一定的 數(shù)據(jù)延遲;5.網(wǎng)內的數(shù)據(jù)傳輸表現(xiàn)為普通節(jié)點發(fā)送到基站的數(shù)據(jù)收集。
圖2示出了根據(jù)本發(fā)明的無線傳感器網(wǎng)絡數(shù)據(jù)收集路由方法的流程圖,圖 3示出了根據(jù)本發(fā)明的無線傳感器網(wǎng)絡數(shù)據(jù)收集路由裝置的方框圖。
參照圖2及圖10,本發(fā)明的方法包括以下階段及步驟
路由建立階段S101的時間為Ttopo,參照圖4,路由建立階段S101包括 以下步驟-
步驟S101-1:基站發(fā)出hello包,該hello包的內容包括節(jié)點的節(jié)點號、 自己到基站的跳步數(shù)、剩余能量及LEAF標識;其中,基站到自己跳步數(shù)為0, 其它節(jié)點到基站的跳步數(shù)初始化為無窮大;如果節(jié)點為LEAF節(jié)點,則LEAF標 示為真,否則為假;
步驟S101-2:節(jié)點判斷是否收到hello包,如果是則執(zhí)行步驟S101-3;
步驟S101-3:確定本節(jié)點到基站的跳步數(shù)(myhop),建立鄰居表,鄰居表 的內容包括鄰居節(jié)點的節(jié)點號、鄰居節(jié)點到基站的跳步數(shù)、鄰居節(jié)點剩余能 量、到鄰居節(jié)點的鏈路質量指示;執(zhí)行步驟S101-4;
步驟S101-4:判斷自己到基站的跳步數(shù)是否比之前未更新的跳步數(shù)小,如 果是則廣播自身的hello包;
步驟S101-5:如果節(jié)點在Ttopo期間都沒有收到hello包,則判定自己為 新加入的節(jié)點,執(zhí)行生成休眠調度階段S102中的步驟S102-lb;
參照圖5,生成休眠調度階段S102中包括隨機時間Trandom和第一周期 T,該第一周期T包括監(jiān)聽時間Tw和休眠時間Ts,即T=Tw + Ts,且Trandom <Ts。生成休眠調度階段S102包括以下步驟
步驟S102-l:節(jié)點等待隨機時間,開始自身的Tw,廣播hello包,如果 節(jié)點收到hello包,執(zhí)行步驟S102-2;
步驟S102-lb:節(jié)點等待隨機時間Trandom后,開始監(jiān)聽時間Tw,按第二 周期Tl為周期廣播路由修復包,到數(shù)據(jù)收集階段S103開始時停止發(fā)送路由修 復包,其中TKTw,然后執(zhí)行數(shù)據(jù)收集階段中的步驟S103-7;該路由修復包的 內容包括本節(jié)點當前時間距最近一次Tw開始時間的時間差At、自己到基站的 跳步數(shù)、剩余能量及節(jié)點的節(jié)點號;步驟S102-2:在鄰居表中記錄鄰居節(jié)點監(jiān)聽時間Tw和自身節(jié)點監(jiān)聽時間
Tw的啟動時間差t;在該步驟中,啟動時間差t的計算公式為如果t3》t2,
則t=(t3-t2)%(Tw+Ts);否則t=(t3+nT-t2)%(Tw+Ts);其中,t2為本節(jié)點記錄 的本節(jié)點Tw啟動時間,t3為本節(jié)點收到鄰居節(jié)點hello包的當前時間,n是 使得(t3+nT)》t2的最小自然數(shù)。
參照圖6,在數(shù)據(jù)收集階段S103中,節(jié)點周期性地進入Tw和Ts時期,其 中,Tw期間節(jié)點打開監(jiān)聽,可接收信息;Ts期間節(jié)點關閉監(jiān)聽,無法接收信 息;
數(shù)據(jù)收集階段S103包括以下步驟
步驟S103-l:判斷節(jié)點是否處于Tw期間,如果是則執(zhí)行步驟S103-2a; 如果不是則執(zhí)行步驟S103-2b;
步驟S103-2a:節(jié)點監(jiān)聽無線信道,判斷收到的數(shù)據(jù)包類型;如果收到環(huán) 境數(shù)據(jù)包,執(zhí)行步驟S103-3;如果收到路由修復包,執(zhí)行步驟S103-6;如果 收到hello包,執(zhí)行步驟S103-7;
步驟S103-2b:節(jié)點關閉監(jiān)聽,進入休眠狀態(tài);
步驟S103-2c:節(jié)點判斷是否有自身產(chǎn)生的環(huán)境數(shù)據(jù)包需要發(fā)送,如果是 則執(zhí)行步驟S103-3;
步驟S103-3:節(jié)點從鄰居表選擇下一跳節(jié)點,選擇策略為節(jié)點遍歷鄰居
表一次計算所有鄰居節(jié)點的轉發(fā)代價q,選出q最小的節(jié)點作為下一跳將消息
發(fā)出去,執(zhí)行步驟S103-4;
可選的,q的計算公式為 '
其中,巧為鄰居節(jié)點到Sink節(jié)點的跳步數(shù),^為鄰居節(jié)點剩余能量, £^'為到該鄰居節(jié)點的鏈路質量,","分別為剩余能量和鏈路質量權重指數(shù)。 標識有LEAF的節(jié)點,只有當鄰居表中沒有其他非LEAF節(jié)點時,才能選為下一 跳;
步驟S103-4:等待鄰居表中記錄的與該節(jié)點的時間差的時間,即等待下一 條節(jié)點進入監(jiān)聽狀態(tài)發(fā)送環(huán)境數(shù)據(jù)包,執(zhí)行步驟S103-5;步驟S103-5: Tw時期向下一跳節(jié)點轉發(fā)環(huán)境數(shù)據(jù)包;
步驟S103-6:如果收到的路由修復包中的跳步數(shù)為無窮大,回復一個路由 修復包,并更新鄰居表信息;
步驟S103-7:更新節(jié)點本身到基站的跳步數(shù),該跳步數(shù)為鄰居表中最小的 跳步數(shù)(hop—min)加1;如果跳步數(shù)比之前未更新的跳步數(shù)小的話,則等待鄰居 節(jié)點各自進入監(jiān)聽狀態(tài)時依次發(fā)送hello包。
以上為對流程中不帶ACK (Acknowledge Character,確認字符)確認機制的 本發(fā)明方法的說明,參照圖7,圖7為是根據(jù)本發(fā)明的無線傳感器網(wǎng)絡數(shù)據(jù)收 集路由方法中數(shù)據(jù)收集階段帶ACK確認機制的流程圖,其與上述不帶ACK確認 機制的方法不同之處在于
在數(shù)據(jù)收集階段S103的步驟S103-2a中節(jié)點監(jiān)聽無線信道,判斷收到 的數(shù)據(jù)包類型;如果收到環(huán)境數(shù)據(jù)包,執(zhí)行步驟S103-3a;
步驟S103-3a:判斷收到的環(huán)境數(shù)據(jù)包時間Trcv是否大于P*Tw,其中, P=l/2,如果是執(zhí)行步驟S103-3b ;如果否,執(zhí)行步驟S103-3c;
步驟S103-3b:回復ACK,在ACK包中加入收到包的當前時間和最近一次 Tw的啟動時間的時間差Trcv-Tw,執(zhí)行步驟S103-3;
步驟S103-3c:回復ACK,在ACK包中不含時間差Trcv-Tw,執(zhí)行步驟 S103-3;
步驟S103-4:等待鄰居表中記錄的與該節(jié)點的啟動時間差t的時間,即等 待下一條節(jié)點進入監(jiān)聽狀態(tài)發(fā)送環(huán)境數(shù)據(jù)包,執(zhí)行步驟S103-5;
步驟S103-5:節(jié)點在Tw時期向下一跳節(jié)點轉發(fā)環(huán)境數(shù)據(jù)包;等待確認 ACK;如果接收到下一跳節(jié)點返回的ACK,執(zhí)行步驟S103-5a;如果沒有收到 ACK,執(zhí)行步驟S103-5b;
步驟S103-5a:記錄收到ACK的時間為鄰居節(jié)點Tw的開始時間,重新計算 鄰居節(jié)點和本節(jié)點的啟動時間差t,更新鄰居表,路由轉發(fā)結束;在該步驟 中,啟動時間差t的計算公式為如果ACK中包含發(fā)送ACK節(jié)點收到包的當前 時間和最近一次Tw的啟動時間的時間差Trcv-Tw,則t=t-(Trcv-Tw);否則 t=t-(t4-t5);其中,t4為本節(jié)點收到鄰居節(jié)點ACK的當前時間,t5為本第一 周期T內第一次向鄰居節(jié)點發(fā)送環(huán)境數(shù)據(jù)包的時間;步驟S103-5b:隔tl后重發(fā)數(shù)據(jù)包,其中,tK〈Tw,重發(fā)N次,優(yōu)選的, N=5;如果在此期間收到ACK,執(zhí)行步驟S103-5a;如果仍然沒有收到ACK,判 斷該鄰居節(jié)點已經(jīng)失效,從鄰居表中刪除該鄰居節(jié)點信息,執(zhí)行步驟S103-3。
如圖3所示,根據(jù)本發(fā)明的無線傳感器網(wǎng)絡數(shù)據(jù)收集路由方法的裝置,該 裝置映射到每一個節(jié)點上,至少由路由建立模塊201、生成休眠調度模塊202 及數(shù)據(jù)收集模塊203依次連接組成,各模塊分別實現(xiàn)如下功能
路由建立模塊201:
基站發(fā)出hello包,所述hello包的內容包括節(jié)點的節(jié)點號、自己到基站 的跳步數(shù)、剩余能量及LEAF標識;其中,基站到自己跳步數(shù)為0,其它節(jié)點到 基站的跳步數(shù)初始化為無窮大,如果節(jié)點為LEAF節(jié)點,則LEAF標示為真,否 則為假;節(jié)點判斷是否收到hello包,如果是則確定本節(jié)點到基站的跳步數(shù), 建立鄰居表,所述鄰居表的內容包括鄰居節(jié)點的節(jié)點號、鄰居節(jié)點到基站的跳 步數(shù)、鄰居節(jié)點剩余能量、到鄰居節(jié)點的鏈路質量指示;判斷自己到基站的跳 步數(shù)是否比之前未更新的跳步數(shù)小,如果是則廣播自身的hello包;如果路由 建立模塊201中節(jié)點都沒有收到hello包,則判定自己為新加入的節(jié)點;
生成休眠調度模塊202:
所述生成休眠調度模塊包括隨機時間Trandom和第一周期T,第一周期T 包括監(jiān)聽時間Tw和休眠時間Ts,其中,隨機時間Trandom〈休眠時間Ts;
節(jié)點等待隨機時間,開始自身的監(jiān)聽時間Tw并廣播hello包,如果節(jié)點 收到hello包,在鄰居表中記錄鄰居節(jié)點監(jiān)聽時間Tw和自身節(jié)點監(jiān)聽時間Tw 的啟動時間差t,該啟動時間差t的計算公式可為如果t3》t2,則t=(t3-t2)%(Tw+Ts);否則t=(t3+nT—t2)%(Tw+Ts);其中,t2為本節(jié)點記錄的本節(jié)點 Tw啟動時間,t3為本節(jié)點收到鄰居節(jié)點hello包的當前時間,n是使得(t3+nT) 》t2的最小自然數(shù);
判定自己為新加入的節(jié)點等待隨機時間,開始自身的監(jiān)聽時間Tw并按第 二周期Tl為周期廣播路由修復包,到數(shù)據(jù)收集階段S103開始時則停止發(fā)送路 由修復包,其中,第二周期TK監(jiān)聽時間Tw;所述路由修復包的內容包括本節(jié) 點當前時間距最近一次Tw開始時間的時間差At、自己到基站的跳步數(shù)、剩余 能量及節(jié)點的節(jié)點號;數(shù)據(jù)收集模塊203:
所述數(shù)據(jù)收集模塊203節(jié)點周期性進入監(jiān)聽時間Tw和休眠時間Ts:判斷 節(jié)點是否處于監(jiān)聽時間Tw,如果是則監(jiān)聽無線信道;如果不是節(jié)點關閉監(jiān)聽, 進入休眠狀態(tài);或者節(jié)點判斷是否有自身產(chǎn)生的環(huán)境數(shù)據(jù)包需要發(fā)送,如果 有,則節(jié)點從鄰居表選擇下一跳節(jié)點,選擇策略為節(jié)點遍歷鄰居表一次計算
所有鄰居節(jié)點的轉發(fā)代價G,選出G最小的節(jié)點作為下一跳將消息發(fā)出去,等
待鄰居表中記錄的與該節(jié)點的時間差的時間,在Tw時期向下一跳節(jié)點轉發(fā)環(huán) 境數(shù)據(jù)包;
節(jié)點監(jiān)聽無線信道時,判斷收到的數(shù)據(jù)包類型;如果收到環(huán)境數(shù)據(jù)包,節(jié) 點從鄰居表選擇下一跳節(jié)點,選擇策略為節(jié)點遍歷鄰居表一次計算所有鄰居 節(jié)點的轉發(fā)代價q,選出q最小的節(jié)點作為下一跳將消息發(fā)出去,等待鄰居表 中記錄的與該節(jié)點的時間差的時間,即等待下一條節(jié)點進入監(jiān)聽狀態(tài)發(fā)送環(huán)境 數(shù)據(jù)包,節(jié)點在TW時期向下一跳節(jié)點轉發(fā)環(huán)境數(shù)據(jù)包;
如果收到路由修復包,更新鄰居表信息,其中鄰居節(jié)點與本節(jié)點的時間差
(t)的計算公式為Atl-At2,其中Atl為發(fā)送節(jié)點發(fā)送的路由修復包中包含的 時間差,At2為本節(jié)點當前時間距最近一次監(jiān)聽時間Tw開始時間的時間差; 如果收到的路由修復包中的跳步數(shù)為無窮大,回復一個路由修復包;
如果收到hello包,更新節(jié)點本身到基站的跳步數(shù),該^l〖步數(shù)為鄰居表中 最小的跳步數(shù)加1;如果跳步數(shù)比之前未更新的跳步數(shù)小的話,則等待鄰居節(jié) 點各自進入監(jiān)聽狀態(tài)時依次發(fā)送hello包。
更進一步的方案為,數(shù)據(jù)收集模塊中節(jié)點監(jiān)聽無線信道時,如果收到環(huán)境 數(shù)據(jù)包,判斷是否TrCV>P*Tw,其中,P=l/2, Trcv是收到的環(huán)境數(shù)據(jù)包時 間,Tw是監(jiān)聽時間,如果是則回復ACK,在ACK包中加入收到包的當前時間和 最近一次Tw的啟動時間的時間差Trcv-Tw,然后再從鄰居表選擇下一跳節(jié)點; 如果否則回復ACK,在ACK包中不含時間差Trcv-Tw,然后再從鄰居表選擇下 一跳節(jié)點;
當節(jié)點向下一跳節(jié)點轉發(fā)環(huán)境數(shù)據(jù)包后,等待確認ACK;如果接收到下一 跳節(jié)點返回的ACK,記錄收到ACK的時間為鄰居節(jié)點監(jiān)聽時間的開始時間,重 新計算鄰居節(jié)點和本節(jié)點的啟動時間差,更新鄰居表,路由轉發(fā)結束,該步驟 中啟動時間差t的計算公式為如果ACK中包含發(fā)送ACK節(jié)點收到包的當前時間和最近一次Tw的啟動時間的時間差Trcv-Tw,則t=t-(Trcv-Tw);否則t=t_ (t4-t5);其中,t4為本節(jié)點收到鄰居節(jié)點ACK的當前時間,t5為本第一周期 T內第一次向鄰居節(jié)點發(fā)送環(huán)境數(shù)據(jù)包的時間;如果沒有收到ACK,則隔tl后 重發(fā)數(shù)據(jù)包,發(fā)N次,N=5,其中,tl〈〈Tw,如果在此期間收到ACK,記錄收到 ACK的時間為鄰居節(jié)點監(jiān)聽時間的開始時間,重新計算鄰居節(jié)點和本節(jié)點的啟 動時間差,更新鄰居表,路由轉發(fā)結束;如果仍然沒有收到ACK,判斷該鄰居 節(jié)點已經(jīng)失效,從鄰居表中刪除該鄰居節(jié)點信息,則從鄰居表選擇下一跳節(jié) 點。更進一步的方案為,轉發(fā)代價e'的計算公式為其中,^為鄰居節(jié)點到Sink節(jié)點的跳步數(shù),^為鄰居節(jié)點剩余能量, Z^'為到該鄰居節(jié)點的鏈路質量,","分別為剩余能量和鏈路質量權重指數(shù)。以下結合附圖以具體的例子對本發(fā)明作進一步的說明實施方式一路由建立階段步驟1:基站發(fā)出hello包,包的內容為節(jié)點的節(jié)點號、自己到基站的跳 步數(shù)、剩余能量及LEAF標識;其中,基站到自己跳步數(shù)為0,其它節(jié)點到基站 的跳步數(shù)初始化為無窮大;步驟2:節(jié)點接收hello包,建立鄰居表,鄰居表的內容包括鄰居節(jié)點的 節(jié)點號、鄰居節(jié)點到基站的跳步數(shù)、鄰居節(jié)點剩余能量、到鄰居節(jié)點的鏈路質 量指示;步驟3:如果自己到基站的跳步數(shù)減小,則廣播自身的hello包; 生成休眠調度階段步驟4-l:節(jié)點等待隨機時間后開始自身的Tw,廣播hello包,如果節(jié)點 收到hello包,執(zhí)行步驟5;步驟5:在鄰居表記錄鄰居節(jié)點監(jiān)聽時間Tw和自身節(jié)點監(jiān)聽時間Tw的啟 動時間差t; t的計算公式為如果t3》t2,則t=(t3_t2)%(Tw+Ts);否則t=(t3+nT-12) %(Tw+Ts);其中,t2為本節(jié)點記錄的本節(jié)點Tw啟動時間,t3 為本節(jié)點收到鄰居節(jié)點hello包的當前時間,n是使得(t3+nT)》t2的最小自 然數(shù);數(shù)據(jù)收集階段節(jié)點周期性進入Tw和Ts時期,其中,Tw期間節(jié)點打開監(jiān) 聽可接收信息,Ts期間節(jié)點關閉監(jiān)聽無法接收信息;步驟6-1:進入Tw期間,如果節(jié)點在此階段收到環(huán)境數(shù)據(jù)包,執(zhí)行步驟7;步驟7:如果收到的環(huán)境數(shù)據(jù)包時間TrCV<P*Tw,直接回復一個ACK,執(zhí)行 步驟8;步驟8:節(jié)點收到環(huán)境數(shù)據(jù)后從鄰居表選擇下一跳節(jié)點,選擇策略為節(jié) 點遍歷鄰居表一次計算所有鄰居節(jié)點的轉發(fā)代價q,選出q最小的節(jié)點作為下 一跳將消息發(fā)出去。可選的,該q的計算公式為其中,^為鄰居節(jié)點到Sink節(jié)點的跳步數(shù),《為鄰居節(jié)點剩余能量, ^"'為到該鄰居節(jié)點的鏈路質量,","分別為剩余能量和鏈路質量權重指數(shù), 標識有LEAF的節(jié)點,只有當鄰居表中沒有其他非LEAF節(jié)點時,才能選為下一跳;步驟9:等待下一跳節(jié)點進入Tw,向下一跳節(jié)點轉發(fā)環(huán)境數(shù)據(jù)包,發(fā)送后 如果接收到下一跳節(jié)點返回的ACK,執(zhí)行步驟10-1;步驟10-1:記錄收到ACK的時間為鄰居節(jié)點監(jiān)聽時間Tw的開始時間,重 新計算鄰居節(jié)點和本節(jié)點監(jiān)聽時間Tw的啟動時間差t,更新鄰居表,路由轉發(fā) 結束;t的計算公式為如果ACK中包含發(fā)送ACK節(jié)點收到包的當前時間和最近 一次Tw的啟動時間的時間差Trcv-Tw,則t二t-(Trcv-Tw);否則t=t-(t4-t5);其中,t4為本節(jié)點收到鄰居節(jié)點ACK的當前時間,t5為本第一周期T 內第一次向鄰居節(jié)點發(fā)送環(huán)境數(shù)據(jù)包的時間。實施方式一中,對時間差的計算均是通過相對時間而進行計算的,能夠有 效避免節(jié)點時間不同步所產(chǎn)生的問題。實施方式二本實施方式與實施方式一所述的路由方法區(qū)別在于,如果節(jié) 點在Ttopo期間都沒有收到hello包時,執(zhí)行步驟4-2;步驟4-2:節(jié)點等待隨機時間Trandom,開始監(jiān)聽時間Tw,并以Tl為周期 廣播路由修復包,路由修復包內容包括本節(jié)點當前時間距最近一次Tw開始時 間的時間差At、自己到基站的跳步數(shù)、剩余能量及節(jié)點的節(jié)點號,其中 TKTw;到數(shù)據(jù)收集階段開始則停止發(fā)送,執(zhí)行步驟ll;步驟11:更新節(jié)點本身到基站的跳步數(shù),跳步數(shù)為鄰居表中最小的跳步數(shù) 加1;如果跳步數(shù)比之前未更新的跳步數(shù)小的話,等待鄰居節(jié)點各自進入監(jiān)聽 狀態(tài)時依次發(fā)送hello包;實施方式二中,對新加入節(jié)點和更換電池節(jié)點進行判斷,如果在路由建立 階段接都沒有收到Hello包,則判斷節(jié)點本身為新加入或者更換電池節(jié)點,并 在生成休眠調度階段中廣播路由修復包,在進入數(shù)據(jù)收集階段的第一個Tw時 給鄰居節(jié)點分別發(fā)送hello包,使得新加入節(jié)點的鄰居能夠得到新加入節(jié)點的信息。實施方式三本實施方式與實施方式一所述的路由方法區(qū)別在于,當步驟 6-1中,收到的是路由修復包時,執(zhí)行步驟12;步驟12:更新鄰居表信息,其中鄰居節(jié)點與本節(jié)點的時間差t的計算公式 為Atl-At2,其中Atl為發(fā)送節(jié)點發(fā)送的路由修復包中包含的時間差,厶t2 為本節(jié)點當前時間距最近一次Tw開始時間的時間差;如果收到的路由修復包 中的跳步數(shù)為無窮大,回復一個路由修復包;實施方式三中,節(jié)點在數(shù)據(jù)收集階段收到路由修復包,則判斷有新節(jié)點加 入,回復一個路由修復包,其中包含包括本節(jié)點當前時間距最近一次Tw開始 時間的時間差At、自己到基站的跳步數(shù)、剩余能量及節(jié)點的節(jié)點號,便于新 加入節(jié)點更新鄰居表,并且計算時間差的公式能避免節(jié)點時間不同步造成的問 題。實施方式四本實施方式與實施方式一所述的路由方法區(qū)別在于,當所述 步驟6-l中,收到的是Hello包時,執(zhí)行步驟ll;實施方式四中,在路由建立階段接收到Hello包導致自己到基站跳步數(shù)變 小的情況下,則在下一個周期T時以Hello包的形式在鄰居節(jié)點進入Tw時分 別告知各鄰居節(jié)點。
實施方式五參見圖8,本實施方式與實施方式一所述的路由方法區(qū)別在 于,當步驟7收到數(shù)據(jù)包時間Trcv>P*Tw,執(zhí)行步驟7-l;
步驟7-1:在ACK包中加入收到包的當前時間和最近一次Tw的啟動時間的 時間差Trcv-Tw,返回ACK,執(zhí)行步驟8;
實施方式五中,對節(jié)點硬件定時器向后偏移累計誤差引起的路由中斷問題 進行修復,當節(jié)點接收到數(shù)據(jù)包超過l/2*Tw時間,則對源節(jié)點進行通知,進 行時間校正。
實施方式六參見圖9,本實施方式與實施方式一所述的路由方法區(qū)別在 于,當步驟9未收到ACK,執(zhí)行步驟10-2;
步驟10-2:隔tl后重發(fā)數(shù)據(jù)包,其中,tK〈Tw,重發(fā)N次,N可等于5 或10,如果在此期間收到ACK,執(zhí)行步驟13;如果仍然沒有收到ACK,則判斷 該鄰居已失效,從鄰居表中刪除該鄰居信息,執(zhí)行步驟8;
步驟13:收到ACK,記錄收到ACK的時間為鄰居節(jié)點Tw的開始時間,重 新計算鄰居節(jié)點和本節(jié)點的啟動時間差t,更新鄰居表。
實施方式六中,對節(jié)點硬件定時器向前偏移累計誤差引起的路由中斷問題 進行修復,多次重傳成功后,由于tK〈Tw,使用重傳成功后受到的ACK時間為 修正的鄰居節(jié)點Tw開始時間,并且判斷了節(jié)點是否失效,更新了鄰居表信 息。
根據(jù)本發(fā)明的方法,解決了無線傳感器網(wǎng)絡數(shù)據(jù)收集中的如下問題 1、異步的休眠調度
技術問題
時間同步往往會引起額外開銷,而之前的路由方法都是在時間同步的基礎 上進行休眠調度。
本方法的解決方案
在生成休眠調度階段,節(jié)點在Trandom結束時廣播hello包,而記錄接收到的其他節(jié)點hello包的時間,通過接收hello包時間和節(jié)點廣播hello包的 時間差維護鄰居節(jié)點的休眠調度。
2、 新節(jié)點加入或者更換電池后路由修復 技術問題
節(jié)點新加入或者更換電池后,局部路由信息丟失,因此要求新加入節(jié)點能 快速融入網(wǎng)絡。
本方法的解決方案
節(jié)點新加入網(wǎng)絡,通過判斷在路由建立階段接收的數(shù)據(jù)包是hello包還是 普通環(huán)境數(shù)據(jù)包判斷本身是否為新加入節(jié)點,節(jié)點按周期Tl(Tl〈Tw)廣播路由 修復包,收到路由修復包的節(jié)點會在下一周期切換到工作狀態(tài)時廣播hello 包,從而對局部路由進行修復。
3、 定時器偏移累計引起路由失效 技術問題
節(jié)點硬件的石英晶體振蕩器隨著時間會產(chǎn)生偏移累計,因此會造成節(jié)點維 護的鄰居休眠調度時間產(chǎn)生誤差,導致路由失效。
本方法的解決方案
節(jié)點向鄰居節(jié)點轉發(fā)數(shù)據(jù)包后增加等待ACK的步驟,如果未收到ACK,則 隔tl后重發(fā),持續(xù)n次重發(fā),如果重發(fā)n次后仍未收到ACK那么重新選擇下 一個鄰居節(jié)點為下一跳,當收到ACK后,記錄收到ACK的時間為鄰居節(jié)點更新 后的開始工作時間;如果節(jié)點接收到鄰居發(fā)來的環(huán)境數(shù)據(jù)包時間Trcv〉P*TW, 那么回復ACK時,在ACK包中加入時間差Trcv-Tw。
顯然,本領域的技術人員應該明白,上述的本發(fā)明的各模塊或各步驟可以 用通用的計算裝置來實現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多 個計算裝置所組成的網(wǎng)絡上,可選的,它們可以用計算裝置可執(zhí)行的程序代碼 來實現(xiàn),從而,可以將它們存儲在存儲裝置中由計算裝置來執(zhí)行,或者以其它 集成方式實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結合。應該明 白,這些具體實施中的變化對于本領域人員來說是顯而易見的,不脫離本發(fā)明 的精神保護范圍。以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領 域的技術人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則 之內,所做的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之 內。
權利要求
1、一種無線傳感器網(wǎng)絡數(shù)據(jù)收集路由方法,其特征在于,包括以下步驟路由建立階段S101,其包括以下步驟步驟S101-1基站發(fā)出hello包,所述hello包的內容包括節(jié)點的節(jié)點號、自己到基站的跳步數(shù)、剩余能量及LEAF標識;其中,基站到自己跳步數(shù)為0,其它節(jié)點到基站的跳步數(shù)初始化為無窮大,如果節(jié)點為LEAF節(jié)點,則LEAF標示為真,否則為假;步驟S101-2節(jié)點判斷是否收到hello包,如果是則執(zhí)行步驟S101-3;步驟S101-3確定本節(jié)點到基站的跳步數(shù),建立鄰居表,所述鄰居表的內容包括鄰居節(jié)點的節(jié)點號、鄰居節(jié)點到基站的跳步數(shù)、鄰居節(jié)點剩余能量、到鄰居節(jié)點的鏈路質量指示,執(zhí)行步驟S101-4;步驟S101-4判斷自己到基站的跳步數(shù)是否比之前未更新的跳步數(shù)小,如果是則廣播自身的hello包;步驟S101-5如果節(jié)點在路由建立階段S101都沒有收到hello包,則判定自己為新加入的節(jié)點,執(zhí)行生成休眠調度階段S102中的步驟S102-1b;生成休眠調度階段S102,其包括以下步驟所述生成休眠調度階段S102中包括隨機時間(Trandom)和第一周期(T),所述第一周期(T)包括監(jiān)聽時間(Tw)和休眠時間(Ts),其中,隨機時間(Trandom)<休眠時間(Ts);步驟S102-1節(jié)點等待隨機時間(Trandom),開始自身的監(jiān)聽時間(Tw)并廣播hello包,如果節(jié)點收到hello包,執(zhí)行步驟S102-2;步驟S102-1b節(jié)點等待隨機時間(Trandom),開始自身的監(jiān)聽時間(Tw)并按第二周期(T1)為周期廣播路由修復包,到數(shù)據(jù)收集階段S103開始時停止發(fā)送路由修復包,其中,第二周期(T1)<監(jiān)聽時間(Tw),執(zhí)行數(shù)據(jù)收集階段S103中的步驟S103-7;所述路由修復包的內容包括本節(jié)點當前時間距最近一次(Tw)開始時間的時間差(Δt)、自己到基站的跳步數(shù)、剩余能量及節(jié)點的節(jié)點號;步驟S102-2在鄰居表中記錄鄰居節(jié)點監(jiān)聽時間(Tw)和自身節(jié)點監(jiān)聽時間(Tw)的啟動時間差(t);數(shù)據(jù)收集階段S103,其包括以下步驟節(jié)點周期性進入監(jiān)聽時間(Tw)和休眠時間(Ts)步驟S103-1判斷節(jié)點是否處于監(jiān)聽時間(Tw),如果是則執(zhí)行步驟S103-2a;如果不是則執(zhí)行步驟S103-2b;步驟S103-2a節(jié)點監(jiān)聽無線信道,判斷收到的數(shù)據(jù)包類型;如果收到環(huán)境數(shù)據(jù)包,執(zhí)行步驟S103-3;如果收到路由修復包,執(zhí)行步驟S103-6;如果收到hello包,執(zhí)行步驟S103-7;步驟S103-2b節(jié)點關閉監(jiān)聽,進入休眠狀態(tài);步驟S103-2c節(jié)點判斷是否有自身產(chǎn)生的環(huán)境數(shù)據(jù)包需要發(fā)送,如果是則執(zhí)行步驟S103-3;步驟S103-3節(jié)點從鄰居表選擇下一跳節(jié)點,選擇策略為節(jié)點遍歷鄰居表一次計算所有鄰居節(jié)點的轉發(fā)代價Ci,選出Ci最小的節(jié)點作為下一跳將消息發(fā)出去,執(zhí)行步驟S103-4;步驟S103-4等待鄰居表中記錄的與該節(jié)點的啟動時間差(t)的時間,即等待下一條節(jié)點進入監(jiān)聽時間(Tw)發(fā)送環(huán)境數(shù)據(jù)包,執(zhí)行步驟S103-5;步驟S103-5節(jié)點在監(jiān)聽時間(Tw)向下一跳節(jié)點轉發(fā)環(huán)境數(shù)據(jù)包;步驟S103-6更新鄰居表信息,其中鄰居節(jié)點與本節(jié)點的時間差(t)的計算公式為Δt1-Δt2,其中,Δt1為發(fā)送節(jié)點發(fā)送的路由修復包中包含的時間差,Δt2為本節(jié)點當前時間距最近一次監(jiān)聽時間(Tw)開始時間的時間差;如果收到的路由修復包中的跳步數(shù)為無窮大,回復一個路由修復包;步驟S103-7更新節(jié)點本身到基站的跳步數(shù),該跳步數(shù)為鄰居表中最小的跳步數(shù)加1;如果跳步數(shù)比之前未更新的跳步數(shù)小的話,則等待鄰居節(jié)點各自進入監(jiān)聽時間(Tw)時依次發(fā)送hello包。
2、根據(jù)權利要求1所述的無線傳感器網(wǎng)絡數(shù)據(jù)收集路由方法,其特征在于所述步驟S103-2a中,節(jié)點如果收到環(huán)境數(shù)據(jù)包,執(zhí)行步驟S103-3a;步驟S103-3a:判斷是否Trcv>P*Tw,其中,P=l/2, Trcv是收到的環(huán)境數(shù)據(jù)包時間,Tw是監(jiān)聽時間,如果是則執(zhí)行步驟S103-3b;如果否則執(zhí)行步驟S103-3c;步驟S103-3b:回復ACK,在ACK包中加入收到包的當前時間和最近一次Tw的啟動時間的時間差Trcv-Tw,執(zhí)行步驟S103-3;步驟S103-3c:回復ACK,在ACK包中不含時間差Trcv-Tw,執(zhí)行步驟S103-3;所述步驟S103-5中,節(jié)點向下一跳節(jié)點轉發(fā)環(huán)境數(shù)據(jù)包后,等待確認ACK;如果接收到下一跳節(jié)點返回的ACK,執(zhí)行步驟S103-5a;如果沒有收到ACK,執(zhí)行步驟S103-5b;步驟S103-5a:記錄收到ACK的時間為鄰居節(jié)點監(jiān)聽時間(Tw)的開始時間,重新計算鄰居節(jié)點和本節(jié)點的啟動時間差(t),更新鄰居表,路由轉發(fā)結束;步驟S103-5b:隔tl后重發(fā)數(shù)據(jù)包,發(fā)N次,其中,tl《Tw,如果在此期間收到ACK,執(zhí)行步驟S103-5a,如果仍然沒有收到ACK,判斷該鄰居節(jié)點已經(jīng)失效,從鄰居表中刪除該鄰居節(jié)點信息,執(zhí)行步驟S103-3。
3、 根據(jù)權利要求1所述的無線傳感器網(wǎng)絡數(shù)據(jù)收集路由方法,其特征在于所述步驟S102-2中啟動時間差(t)的計算公式為如果t3》t2,則t=(t3-t2)%(Tw+Ts);否則t=(t3+nT-t2)%(Tw+Ts);其中,t2為本節(jié)點記錄的本節(jié)點Tw啟動時間,t3為本節(jié)點收到鄰居節(jié)點hello包的當前時間,n是使得(t3+nT)》t2的最小自然數(shù)。
4、 根據(jù)權利要求1所述的無線傳感器網(wǎng)絡數(shù)據(jù)收集路由方法,其特征在于所述步驟S103-3中轉發(fā)代價^的計算公式為其中,A為鄰居節(jié)點到Sink節(jié)點的跳步數(shù),《為鄰居節(jié)點剩余能量,Z^'為到該鄰居節(jié)點的鏈路質量,","分別為剩余能量和鏈路質量權重指數(shù)。
5、 根據(jù)權利要求2所述的無線傳感器網(wǎng)絡數(shù)據(jù)收集路由方法,其特征在于所述步驟S103-5a中的啟動時間差(t)的計算公式為如果ACK中包含發(fā)送ACK節(jié)點收到包的當前時間和最近一次監(jiān)聽時間(Tw)的啟動時間的時間差Trcv-Tw,則t=t-(Trcv-Tw);否則t=t-(t.4-t5);其中,t4為本節(jié)點收到鄰居節(jié)點ACK的當前時間,t5為本第一周期(T)內第一次向鄰居節(jié)點發(fā)送環(huán)境數(shù)據(jù)包的時間。
6、 實現(xiàn)權利要求1所述的無線傳感器網(wǎng)絡數(shù)據(jù)收集路由方法的裝置,其特征在于該裝置映射到每一個節(jié)點,至少包括依次連接的路由建立模塊(201)、生成休眠調度模塊(202)及數(shù)據(jù)收集模塊(203),所述模塊分別實現(xiàn)如下功能路由建立模塊(201):基站發(fā)出hello包,所述hello包的內容包括節(jié)點的節(jié)點號、自己到基站的跳步數(shù)、剩余能量及LEAF標識;其中,基站到自己跳步數(shù)為O,其它節(jié)點到基站的跳步數(shù)初始化為無窮大,如果節(jié)點為LEAF節(jié)點,則LEAF標示為真,否則為假;節(jié)點判斷是否收到hello包,如果是則確定本節(jié)點到基站的跳步數(shù),建立鄰居表,所述鄰居表的內容包括鄰居節(jié)點的節(jié)點號、鄰居節(jié)點到基站的跳步數(shù)、鄰居節(jié)點剩余能量、到鄰居節(jié)點的鏈路質量指示;判斷自己到基站的跳步數(shù)是否比之前未更新的跳步數(shù)小,如果是則廣播自身的hello包;如果路由建立模塊(201)中節(jié)點都沒有收到hello包,則判定自己為新加入的節(jié)點;生成休眠調度模塊(202):所述生成休眠調度模塊(202)中包括隨機時間(Trandom)和第一周期(T),所述第一周期(T)包括監(jiān)聽時間(Tw)和休眠時間(Ts),其中,隨機時間(Trandom) <休眠時間(Ts);節(jié)點等待隨機時間(Trandom),開始自身的監(jiān)聽時間(Tw)并廣播hello包,如果節(jié)點收到hello包,在鄰居表中記錄鄰居節(jié)點監(jiān)聽時間(Tw)和自身節(jié)點監(jiān)聽時間(Tw)的啟動時間差(t);判定自己為新加入的節(jié)點等待隨機時間(Trandom),開始自身的監(jiān)聽時間(Tw)并按第二周期(Tl)為周期廣播路由修復包,到數(shù)據(jù)收集階段S103開始時則停止發(fā)送路由修復包,其中,第二周期(Tl)〈監(jiān)聽時間(Tw);所述路由修復包的內容包括本節(jié)點當前時間距最近一次(Tw)開始時間的時間差(At)、自己到基站的跳步數(shù)、剩余能量及節(jié)點的節(jié)點號;數(shù)據(jù)收集模塊(203):節(jié)點周期性進入監(jiān)聽時間(Tw)和休眠時間(Ts):判斷節(jié)點是否處于監(jiān)聽時間(Tw),如果是則監(jiān)聽無線信道;如果不是節(jié)點關閉監(jiān)聽,進入休眠狀態(tài),或者節(jié)點判斷是否有自身產(chǎn)生的環(huán)境數(shù)據(jù)包需要發(fā)送,如果有,則節(jié)點從鄰居表選擇下一跳節(jié)點,選擇策略為節(jié)點遍歷鄰居表一次計算所有鄰居節(jié)點的轉發(fā)代價q,選出G最小的節(jié)點作為下一跳將消息發(fā)出去,等待鄰居表中記錄的與該節(jié)點的時間差的時間,在監(jiān)聽時間(Tw)向下一跳節(jié)點轉發(fā)環(huán)境數(shù)據(jù)包;節(jié)點監(jiān)聽無線信道時,判斷收到的數(shù)據(jù)包類型;如果收到環(huán)境數(shù)據(jù)包,節(jié)點從鄰居表選擇下一跳節(jié)點,選擇策略為節(jié)點遍歷鄰居表一次計算所有鄰居節(jié)點的轉發(fā)代價q,選出q最小的節(jié)點作為下一跳將消息發(fā)出去,等待鄰居表中記錄的與該節(jié)點的時間差的時間,即等待下一條節(jié)點進入監(jiān)聽時間(Tw)發(fā)送環(huán)境數(shù)據(jù)包,節(jié)點在監(jiān)聽時間(Tw)向下一跳節(jié)點轉發(fā)環(huán)境數(shù)據(jù)包;如果收到路由修復包,更新鄰居表信息,其中,鄰居節(jié)點與本節(jié)點的時間差t的計算公式為A tl- A t2,其中A tl為發(fā)送節(jié)點發(fā)送的路由修復包中包含的時間差,At2為本節(jié)點當前時間距最近一次監(jiān)聽時間(Tw)開始時間的時間差;如果收到的路由修復包中的跳步數(shù)為無窮大,回復一個路由修復包;如果收到hello包,更新節(jié)點本身到基站的跳步數(shù),該跳步數(shù)為鄰居表中最小的跳步數(shù)加l;如果跳步數(shù)比之前未更新的跳步數(shù)小的話,則等待鄰居節(jié)點各自進入監(jiān)聽時間(Tw)時依次發(fā)送hello包。
7、根據(jù)權利要求6所述的無線傳感器網(wǎng)絡數(shù)據(jù)收集路由方法的裝置,其特征在于所述數(shù)據(jù)收集模塊(203)中節(jié)點監(jiān)聽無線信道時,如果收到環(huán)境數(shù)據(jù)包,判斷是否Trcv〉P*Tw,其中,P=l/2, Trcv是收到的環(huán)境數(shù)據(jù)包時間,Tw是監(jiān)聽時間,如果是則回復ACK,在ACK包中加入收到包的當前時間和最近一次Tw的啟動時間的時間差Trcv-Tw,然后再從鄰居表選擇下一跳節(jié)點;如果否則回復ACK, ACK包中不含時間差Trcv-Tw,然后再從鄰居表選擇下一跳節(jié)點;當節(jié)點向下一跳節(jié)點轉發(fā)環(huán)境數(shù)據(jù)包后,等待確認ACK;如果接收到下一跳節(jié)點返回的ACK,記錄收到ACK的時間為鄰居節(jié)點監(jiān)聽時間(Tw)的開始時間,重新計算鄰居節(jié)點和本節(jié)點的啟動時間差(t),更新鄰居表,路由轉發(fā)結束;如果沒有收到ACK,則隔tl后重發(fā)數(shù)據(jù)包,發(fā)N次,其中,tl《Tw,如果在此期間收到ACK,記錄收到ACK的時間為鄰居節(jié)點監(jiān)聽時間(Tw)的開始時間,重新計算鄰居節(jié)點和本節(jié)點的啟動時間差(t),更新鄰居表,路由轉發(fā)結束;如果仍然沒有收到ACK,判斷該鄰居節(jié)點已經(jīng)失效,從鄰居表中刪除該鄰居節(jié)點信息,則從鄰居表選擇下一跳節(jié)點。
8、 根據(jù)權利要求6所述的無線傳感器網(wǎng)絡數(shù)據(jù)收集路由方法的裝置,其特征在于-所述生成休眠調度模塊(202)鄰居表中的啟動時間差(t)的計算公式為如果t3》t2,則t=(t3-t2)%(Tw+Ts);否則t=(t3+nT-t2)%(Tw+Ts);其中,t2為本節(jié)點記錄的本節(jié)點監(jiān)聽時間(Tw)啟動時間,t3為本節(jié)點收到鄰居節(jié)點hello包的當前時間,n是使得(t3+nT)》t2的最小自然數(shù)。
9、 根據(jù)權利要求6所述的無線傳感器網(wǎng)絡數(shù)據(jù)收集路由方法的裝置,其特征在于所述轉發(fā)代價e'的計算公式為其中,A為鄰居節(jié)點到Sink節(jié)點的跳步數(shù),《為鄰居節(jié)點剩余能量,為到該鄰居節(jié)點的鏈路質量,","分別為剩余能量和鏈路質量權重指數(shù)。
10、 根據(jù)權利要求7所述的無線傳感器網(wǎng)絡數(shù)據(jù)收集路由方法的裝置,其特征在于如果接收到下一跳節(jié)點返回的ACK,記錄收到ACK的時間為鄰居節(jié)點監(jiān)聽時間(Tw)的開始時間,重新計算鄰居節(jié)點和本節(jié)點的啟動時間差(t),所述啟動時間差(t)的計算公式為如果ACK中包含發(fā)送ACK節(jié)點收到包的當前時間和最近一次Tw的啟動時間的時間差Trcv-Tw,則t=t-(Trcv-Tw);否則t=t-(t4-15);其中,t4為本節(jié)點收到鄰居節(jié)點ACK的當前時間,t5為本第一周期T內第一次向鄰居節(jié)點發(fā)送環(huán)境數(shù)據(jù)包的時間。
全文摘要
一種無線傳感器網(wǎng)絡數(shù)據(jù)收集路由方法及裝置,包括路由建立階段、生成休眠調度階段和數(shù)據(jù)收集階段,有以下步驟基站發(fā)出hello包,節(jié)點收到hello包,建立鄰居表,廣播hello包;節(jié)點等待隨機時間,廣播hello包或廣播路由修復包;更新鄰居表;節(jié)點監(jiān)聽無線信道,按照收到的數(shù)據(jù)包的類型等待鄰居節(jié)點醒來后執(zhí)行轉發(fā)環(huán)境數(shù)據(jù)包或更新鄰居表信息或發(fā)送hello包的動作。本發(fā)明的方法及裝置基于異步休眠調度的機制,利用接收到的hello包與自身監(jiān)聽時間的差確定鄰居節(jié)點的休眠周期,避免了時間同步引起的額外開銷;且能在短時間內修復局部路由,并對定時器偏移累計引起的發(fā)送失敗問題進行自適應修復。
文檔編號H04W40/24GK101635975SQ200910023498
公開日2010年1月27日 申請日期2009年8月4日 優(yōu)先權日2009年8月4日
發(fā)明者路 何, 劉寶英, 劉微姍, 孫鐫宸, 娜 安, 謙 張, 房鼎益, 湯戰(zhàn)勇, 陳曉江, 媛 魏, 黃學青 申請人:西北大學
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
耒阳市| 通许县| 淳化县| 威宁| 丁青县| 磐石市| 延边| 北辰区| 晋江市| 汕头市| 三台县| SHOW| 嘉善县| 天台县| 灵石县| 稷山县| 大邑县| 壤塘县| 萨嘎县| 凭祥市| 昌邑市| 盐山县| 东源县| 牙克石市| 霸州市| 开原市| 万源市| 阳西县| 武城县| 邹平县| 凤阳县| 靖宇县| 平安县| 渝中区| 新竹市| 荥经县| 潼关县| 田林县| 安岳县| 新野县| 防城港市|