一種無(wú)線傳感器網(wǎng)絡(luò)的分簇路由方法
【專利摘要】本發(fā)明公開(kāi)了一種無(wú)線傳感器網(wǎng)絡(luò)的分簇路由方法,該方法包括:從所述無(wú)線傳感器網(wǎng)絡(luò)中隨機(jī)選取若干節(jié)點(diǎn)作為簇首節(jié)點(diǎn),各個(gè)簇首之間的通信采用低功耗有損網(wǎng)絡(luò)路由協(xié)議RPL方式;當(dāng)所述簇首節(jié)點(diǎn)向外發(fā)送OFFER消息邀請(qǐng)其他節(jié)點(diǎn)成為其簇成員節(jié)點(diǎn)時(shí),根據(jù)當(dāng)前簇首節(jié)點(diǎn)在RPL路由樹(shù)中的位置控制該簇首節(jié)點(diǎn)所攜帶的簇成員節(jié)點(diǎn)數(shù)量,完成分簇組網(wǎng)過(guò)程;在進(jìn)行數(shù)據(jù)路由時(shí),所述簇成員節(jié)點(diǎn)將采集到的數(shù)據(jù)通過(guò)單跳路由的方式發(fā)送至對(duì)應(yīng)的簇首節(jié)點(diǎn);簇首節(jié)點(diǎn)采用RPL路由方式將數(shù)據(jù)傳遞至根節(jié)點(diǎn)。通過(guò)采用本發(fā)明公開(kāi)的方法,降低了拓?fù)錁?shù)的深度、均衡了各節(jié)點(diǎn)的能耗、保持了網(wǎng)絡(luò)的連通性、提高了網(wǎng)絡(luò)穩(wěn)定性的。
【專利說(shuō)明】一種無(wú)線傳感器網(wǎng)絡(luò)的分簇路由方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信【技術(shù)領(lǐng)域】,尤其涉及一種無(wú)線傳感器網(wǎng)絡(luò)的分簇路由方法。
【背景技術(shù)】
[0002]作為一種新的信息獲取方式和處理模式,無(wú)線傳感器網(wǎng)絡(luò)(Wireless SensorNetworks,簡(jiǎn)稱WSN)目前已成為國(guó)內(nèi)外備受關(guān)注的研究熱點(diǎn)。無(wú)線傳感器網(wǎng)絡(luò)是由大量功耗低、傳輸速率低、處理能力低、能量?jī)?chǔ)備低的傳感器節(jié)點(diǎn)通過(guò)自組織和自我修復(fù)的方式組成的網(wǎng)絡(luò)。無(wú)線傳感器網(wǎng)絡(luò)典型的應(yīng)用場(chǎng)景是:通過(guò)大量部署在監(jiān)測(cè)區(qū)域內(nèi)的傳感器節(jié)點(diǎn),采集網(wǎng)絡(luò)覆蓋區(qū)域內(nèi)感知對(duì)象的信息(如溫濕度、光強(qiáng)等),并通過(guò)多跳的無(wú)線通信方式,將收集、處理后的信息提供給終端用戶,可廣泛應(yīng)用于軍事偵察、環(huán)境監(jiān)測(cè)、醫(yī)療監(jiān)護(hù)、農(nóng)業(yè)養(yǎng)殖和其他商業(yè)領(lǐng)域,以及空間探索和災(zāi)難搶險(xiǎn)等特殊領(lǐng)域。
[0003]無(wú)線傳感器網(wǎng)絡(luò)是一種低功耗有損網(wǎng)絡(luò)(Low-power and Lossy Networks,簡(jiǎn)稱LLN)。鑒于低功耗有損網(wǎng)絡(luò)的特殊性質(zhì),目前存在的Internet路由協(xié)議(如RIP、0SPF、A0DV等)并不適用,因此IETF ROLL工作組研究制定了低功耗有損網(wǎng)絡(luò)路由協(xié)議(RoutingProtocol for LLN,簡(jiǎn)稱RPL)。RPL協(xié)議是一個(gè)距離矢量路由協(xié)議,節(jié)點(diǎn)通過(guò)交換距離矢量構(gòu)造一個(gè)有向無(wú)環(huán)圖(Directed Acyclic Graph,簡(jiǎn)稱DAG)。DAG可以有效防止路由環(huán)路問(wèn)題,其根節(jié)點(diǎn)通過(guò)廣播方式與其余節(jié)點(diǎn)交互信息,然后節(jié)點(diǎn)通過(guò)路由度量來(lái)選擇最優(yōu)的路徑。
[0004]使用RPL路由協(xié)議所生成的有向無(wú)環(huán)圖是一種樹(shù)狀的拓?fù)?,葉子節(jié)點(diǎn)發(fā)出的數(shù)據(jù)包經(jīng)過(guò)父節(jié)點(diǎn)的層層轉(zhuǎn)發(fā),傳遞給根節(jié)點(diǎn)。當(dāng)無(wú)線傳感器網(wǎng)絡(luò)的規(guī)模較大,節(jié)點(diǎn)數(shù)較多時(shí),該路由樹(shù)的深度也會(huì)較深,對(duì)于靠近根節(jié)點(diǎn)的上層節(jié)點(diǎn)來(lái)說(shuō),需要轉(zhuǎn)發(fā)的數(shù)據(jù)包數(shù)量非常大,能耗也會(huì)相應(yīng)的增加。因此,在大規(guī)模的無(wú)線傳感器網(wǎng)絡(luò)中,上層節(jié)點(diǎn)容易因能量耗盡而死亡,影響網(wǎng)絡(luò)的連通性,與此同時(shí),下層的子節(jié)點(diǎn)需要重新選擇父節(jié)點(diǎn),會(huì)帶來(lái)網(wǎng)絡(luò)拓?fù)涞膭×易儎?dòng)。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的是提供一種無(wú)線傳感器網(wǎng)絡(luò)的分簇路由方法,達(dá)到降低拓?fù)錁?shù)的深度、均衡各節(jié)點(diǎn)的能耗、保持網(wǎng)絡(luò)的連通性、提高網(wǎng)絡(luò)穩(wěn)定性的目的。
[0006]本發(fā)明的目的是通過(guò)以下技術(shù)方案實(shí)現(xiàn)的:
[0007]—種無(wú)線傳感器網(wǎng)絡(luò)的分簇路由方法,該方法包括:
[0008]從所述無(wú)線傳感器網(wǎng)絡(luò)中隨機(jī)選取若干節(jié)點(diǎn)作為簇首節(jié)點(diǎn),各個(gè)簇首之間的通信采用低功耗有損網(wǎng)絡(luò)路由協(xié)議RPL方式;當(dāng)所述簇首節(jié)點(diǎn)向外發(fā)送OFFER消息邀請(qǐng)其他節(jié)點(diǎn)成為其簇成員節(jié)點(diǎn)時(shí),根據(jù)當(dāng)前簇首節(jié)點(diǎn)在RPL路由樹(shù)中的位置控制該簇首節(jié)點(diǎn)所攜帶的簇成員節(jié)點(diǎn)數(shù)量,完成分簇組網(wǎng)過(guò)程;
[0009]在進(jìn)行數(shù)據(jù)路由時(shí),所述簇成員節(jié)點(diǎn)將采集到的數(shù)據(jù)通過(guò)單跳路由的方式發(fā)送至對(duì)應(yīng)的簇首節(jié)點(diǎn);簇首節(jié)點(diǎn)采用RPL路由方式將數(shù)據(jù)傳遞至根節(jié)點(diǎn)。[0010]由上述本發(fā)明提供的技術(shù)方案可以看出,基于分簇和RPL路由協(xié)議,選取無(wú)線傳感器網(wǎng)絡(luò)中的部分節(jié)點(diǎn)作為簇首節(jié)點(diǎn),其余節(jié)點(diǎn)為簇成員節(jié)點(diǎn),簇首節(jié)點(diǎn)之間的通信采用RPL路由協(xié)議,簇內(nèi)即簇首節(jié)點(diǎn)和簇成員節(jié)點(diǎn)之間的通信采用單跳路由;通過(guò)分簇,可以達(dá)到降低拓?fù)錁?shù)深度的目的;另外,每一簇首所能攜帶的成員節(jié)點(diǎn)數(shù)目由其在RPL路由樹(shù)中的位置決定,由于處在RPL上層的簇首節(jié)點(diǎn)已經(jīng)攜帶了很多子節(jié)點(diǎn),能耗比下層的簇首大,因此越靠近根節(jié)點(diǎn)的簇首節(jié)點(diǎn)攜帶的成員節(jié)點(diǎn)越少,以達(dá)到均衡各節(jié)點(diǎn)能耗的目的。
【專利附圖】
【附圖說(shuō)明】
[0011]為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域的普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他附圖。
[0012]圖1為本發(fā)明實(shí)施例一提供的一種無(wú)線傳感器網(wǎng)絡(luò)中分簇路由網(wǎng)絡(luò)拓?fù)鋱D的示意圖;
[0013]圖2為本發(fā)明實(shí)施例二提供的一種無(wú)線傳感器網(wǎng)絡(luò)的分簇路由初次組網(wǎng)的流程圖;
[0014]圖3為本發(fā)明實(shí)施例三提供的一種簇首節(jié)點(diǎn)輪換的流程圖。
【具體實(shí)施方式】
[0015]下面結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明的保護(hù)范圍。
[0016]本發(fā)明實(shí)施例中,基于分簇和RPL路由協(xié)議,選取無(wú)線傳感器網(wǎng)絡(luò)中的部分節(jié)點(diǎn)作為簇首節(jié)點(diǎn),其余節(jié)點(diǎn)為簇成員節(jié)點(diǎn),簇首節(jié)點(diǎn)之間的通信采用RPL路由協(xié)議,簇內(nèi)即簇首節(jié)點(diǎn)和簇成員節(jié)點(diǎn)之間的通信采用單跳路由。通過(guò)分簇,可以達(dá)到降低拓?fù)錁?shù)深度的目的。每個(gè)簇首所能攜帶的成員節(jié)點(diǎn)數(shù)目由其在RPL路由樹(shù)中的位置決定,由于處在RPL上層的簇首節(jié)點(diǎn)已經(jīng)攜帶了很多子節(jié)點(diǎn),能耗比下層的簇首大,因此越靠近根節(jié)點(diǎn)的簇首攜帶的成員節(jié)點(diǎn)越少,以達(dá)到均衡各節(jié)點(diǎn)能耗的目的。
[0017]另外,對(duì)簇首節(jié)點(diǎn)進(jìn)行基于能量的周期性輪換,新任簇首在本簇的成員節(jié)點(diǎn)內(nèi)部進(jìn)行選舉,一般來(lái)說(shuō)選取剩余能量最大的節(jié)點(diǎn)作為新任簇首。除了周期性輪換外,當(dāng)現(xiàn)任簇首節(jié)點(diǎn)的剩余能量小于一定閾值時(shí),也可觸發(fā)簇首輪換過(guò)程。新任簇首節(jié)點(diǎn)繼承原簇首節(jié)點(diǎn)在RPL路由樹(shù)中的位置信息,以達(dá)到保持網(wǎng)絡(luò)連通性和穩(wěn)定性的目的。
[0018]另一方面,本發(fā)明中定義了兩種控制消息,均適用于節(jié)點(diǎn)的分簇過(guò)程。
[0019]控制消息一:OFFER消息。
[0020]OFFER消息由簇首節(jié)點(diǎn)發(fā)送,包含以下信息:
[0021]Type-code:表示消息的應(yīng)用場(chǎng)景。如組網(wǎng)時(shí)簇首向周圍所有節(jié)點(diǎn)發(fā)送廣播消息(0FFER_BR0ADCAST),或向某個(gè)普通節(jié)點(diǎn)發(fā)送消息(OFFER),簇首輪換時(shí)向選中的下一輪簇首發(fā)送消息(NEXT_HEAD)。[0022]Round-num:表示簇首當(dāng)前的輪數(shù)。由于網(wǎng)絡(luò)堵塞等原因,可能造成簇首發(fā)送的OFFER消息產(chǎn)生一定時(shí)間的延遲,當(dāng)普通節(jié)點(diǎn)收到該消息時(shí),發(fā)送該消息的簇首可能已經(jīng)發(fā)生輪換并且不再擔(dān)任簇首,如果OFFER消息中不攜帶簇首的輪數(shù)信息,普通節(jié)點(diǎn)就會(huì)認(rèn)為其仍是簇首并有可能選擇加入該簇。因此,當(dāng)普通節(jié)點(diǎn)本身的輪數(shù)大于或等于收到OFFER的輪數(shù)時(shí),應(yīng)忽略此消息。
[0023]Rank:表示簇首在D0DAG中的位置、與根節(jié)點(diǎn)之間的距離。每個(gè)簇首所能攜帶的成員節(jié)點(diǎn)數(shù)目由其在RPL路由樹(shù)中的位置決定,越靠近根節(jié)點(diǎn)的簇首,其攜帶的成員節(jié)點(diǎn)越少,根節(jié)點(diǎn)不攜帶任何簇成員。這是因?yàn)?,越靠近根?jié)點(diǎn),其RPL子節(jié)點(diǎn)越多,在數(shù)據(jù)傳輸中消耗的能量也越大,為了防止其能量過(guò)早的耗盡,就需要減少其簇內(nèi)成員的個(gè)數(shù)。
[0024]控制消息二:N0DEINF0消息
[0025]N0DEINF0消息由簇成員節(jié)點(diǎn)發(fā)送,包含以下信息:
[0026]Type-code:表示消息的應(yīng)用場(chǎng)景。如組網(wǎng)時(shí)普通節(jié)點(diǎn)向簇首發(fā)送消息確認(rèn)(ACK)加入該簇,或當(dāng)一定時(shí)間內(nèi)未加入任何簇時(shí),主動(dòng)向周圍簇首發(fā)送廣播(0FFER_REQUEST),請(qǐng)求加入。
[0027]Round-num:表示普通節(jié)點(diǎn)當(dāng)前的輪數(shù)。與OFFER中Round_num的功能一樣,是為了保證全網(wǎng)消息的一致性。
[0028]Res-energy:表示普通節(jié)點(diǎn)當(dāng)前的剩余能量。簇內(nèi)節(jié)點(diǎn)的剩余能量是選擇下一輪簇首的標(biāo)準(zhǔn)。簇首的能量耗盡會(huì)使輪換過(guò)程提早發(fā)生,直接影響到網(wǎng)絡(luò)的穩(wěn)定性,因此應(yīng)盡量選擇剩余能量比較大的節(jié)點(diǎn)作為簇首。
[0029]本發(fā)明中定義了兩種定時(shí)器,適用于分簇和簇首輪換過(guò)程。
[0030]定時(shí)器一:OFFER定時(shí)器
[0031]簇首用來(lái)確認(rèn)廣播發(fā)送時(shí)間的定時(shí)器,RPL路由協(xié)議在組網(wǎng)過(guò)程中使用定時(shí)器來(lái)控制D10控制消息的發(fā)送間隔,隨著RPL路由樹(shù)的逐步建立,D10消息的發(fā)送間隔是逐步增大的。本發(fā)明中設(shè)置OFFER定時(shí)器的目的是保證在RPL路由樹(shù)基本建立時(shí)再發(fā)送分簇消息,避免由于網(wǎng)絡(luò)中大量數(shù)據(jù)包的碰撞造成消息的丟失,而且在RPL路由建立初期,拓?fù)渖胁环€(wěn)定,無(wú)法確定簇首在路由樹(shù)中的位置,也就無(wú)法確定可以攜帶的簇成員的個(gè)數(shù)。定時(shí)器的時(shí)間長(zhǎng)度與無(wú)線傳感器網(wǎng)絡(luò)的簇首節(jié)點(diǎn)數(shù)目有關(guān),簇首節(jié)點(diǎn)越多,RPL組網(wǎng)所需的時(shí)間越長(zhǎng),OFFER定時(shí)器所定的時(shí)間也越長(zhǎng)。具體的實(shí)施過(guò)程為:當(dāng)簇首節(jié)點(diǎn)收到D10時(shí),啟動(dòng)OFFER定時(shí)器,定時(shí)器到期后則發(fā)送OFFER廣播,如果在定時(shí)器到期前收到新的D10消息,則重新開(kāi)始計(jì)時(shí)。
[0032]定時(shí)器二: ROUND定時(shí)器
[0033]簇首用來(lái)確認(rèn)簇首輪換時(shí)間的定時(shí)器。定時(shí)器時(shí)間長(zhǎng)度的設(shè)置與簇首輪換的次數(shù)有關(guān),輪換的次數(shù)越多,定時(shí)器時(shí)長(zhǎng)越短,最后趨于穩(wěn)定。定時(shí)器的初始時(shí)長(zhǎng)與節(jié)點(diǎn)發(fā)送數(shù)據(jù)包(非控制信息)的頻率有關(guān),數(shù)據(jù)包的發(fā)送頻率越高,簇首輪換也越頻繁。具體的實(shí)施過(guò)程為:當(dāng)節(jié)點(diǎn)確認(rèn)成為簇首時(shí),啟動(dòng)此定時(shí)器,到期時(shí)間即為每一輪的時(shí)長(zhǎng),到期后則啟動(dòng)簇首輪換過(guò)程。
[0034]實(shí)施例一
[0035]本發(fā)明實(shí)施例提供一種無(wú)線傳感器網(wǎng)絡(luò)中分簇路由方法,該方法主要包括:
[0036]從所述無(wú)線傳感器網(wǎng)絡(luò)中隨機(jī)選取若干節(jié)點(diǎn)作為簇首節(jié)點(diǎn),各個(gè)簇首之間的通信采用低功耗有損網(wǎng)絡(luò)路由協(xié)議RPL方式;當(dāng)所述簇首節(jié)點(diǎn)向外發(fā)送OFFER消息邀請(qǐng)其他節(jié)點(diǎn)成為其簇成員節(jié)點(diǎn)時(shí),根據(jù)當(dāng)前簇首節(jié)點(diǎn)在RPL路由樹(shù)中的位置控制該簇首節(jié)點(diǎn)所攜帶的簇成員節(jié)點(diǎn)數(shù)量,完成分簇組網(wǎng)過(guò)程;
[0037]在進(jìn)行數(shù)據(jù)路由時(shí),所述簇成員節(jié)點(diǎn)將采集到的數(shù)據(jù)通過(guò)單跳路由的方式發(fā)送至對(duì)應(yīng)的簇首節(jié)點(diǎn);簇首節(jié)點(diǎn)采用RPL路由方式將數(shù)據(jù)傳遞至根節(jié)點(diǎn)。
[0038]進(jìn)一步的,所述簇首節(jié)點(diǎn)向外發(fā)送OFFER廣播邀請(qǐng)其他節(jié)點(diǎn)成為其簇成員節(jié)點(diǎn)包括:
[0039]所述簇首節(jié)點(diǎn)向外發(fā)送OFFER消息,公告自身的簇首地位;
[0040]其他節(jié)點(diǎn)收到該OFFER消息后,判斷自身是否已經(jīng)加入簇;若已加入簇,且收到的OFFER廣播為該節(jié)點(diǎn)所在簇的簇首節(jié)點(diǎn)發(fā)送,則回復(fù)確認(rèn)消息ACK ;若已加入簇,且收到的OFFER廣播為其他簇首節(jié)點(diǎn)發(fā)送,則丟棄次消息;若未加入簇,則回復(fù)ACK消息;
[0041]若同時(shí)收到兩個(gè)簇首節(jié)點(diǎn)發(fā)送的OFFER消息,則向所述兩個(gè)簇首節(jié)點(diǎn)中離根節(jié)點(diǎn)較遠(yuǎn)的簇首節(jié)點(diǎn)回復(fù)ACK消息;
[0042]簇首節(jié)點(diǎn)收到其他節(jié)點(diǎn)回復(fù)的ACK消息后,判斷該節(jié)點(diǎn)是否在本簇的成員列表內(nèi);如果不存在,則判斷其自身可攜帶的成員數(shù)是否已達(dá)上限,若未達(dá)到上限則添加該節(jié)點(diǎn)為簇成員節(jié)點(diǎn),若已達(dá)上限,則丟棄該消息;如果存在,則更新該節(jié)點(diǎn)的剩余能量信息;
[0043]當(dāng)節(jié)點(diǎn)收到簇首節(jié)點(diǎn)發(fā)送的允許加入簇的OFFER單播消息后,記錄表示該簇首節(jié)點(diǎn)在RPL路由樹(shù)中位置的Rank值。
[0044]進(jìn)一步的,該方法還包括:
[0045]周期性進(jìn)行簇首節(jié)點(diǎn)的輪換,從簇成員節(jié)點(diǎn)中選擇剩余能量最大的節(jié)點(diǎn)作為新任簇首節(jié)點(diǎn);以及,在當(dāng)前簇首節(jié)點(diǎn)的剩余能量小于設(shè)定的閾值時(shí),從簇成員節(jié)點(diǎn)中選擇剩余能量最大的節(jié)點(diǎn)作為新任簇首節(jié)點(diǎn);
[0046]所述新任簇首節(jié)點(diǎn)繼承現(xiàn)任簇首節(jié)點(diǎn)在RPL路由樹(shù)中的位置信息。
[0047]進(jìn)一步的,所述從簇成員節(jié)點(diǎn)中選擇剩余能量最大的節(jié)點(diǎn)作為新任簇首節(jié)點(diǎn)之后還包括:
[0048]所述現(xiàn)任簇首節(jié)點(diǎn)向新任簇首節(jié)點(diǎn)發(fā)送ROUND消息,通告其新任簇首的地位;
[0049]所述新任簇首節(jié)點(diǎn)收到高消息后向所述現(xiàn)任簇首節(jié)點(diǎn)返回確認(rèn)消息R0UND_ACK,并更新本地的分簇狀態(tài)表,記錄所述現(xiàn)任簇首在RPL路由樹(shù)中的位置信息;
[0050]所述現(xiàn)任簇首節(jié)點(diǎn)向其簇成員節(jié)點(diǎn)發(fā)送簇首更換消息HEAD_REM0VE ;
[0051]所述簇成員節(jié)點(diǎn)更新其分簇狀態(tài)表及路由表信息,并將實(shí)時(shí)采集到的數(shù)據(jù)發(fā)送至所述新任簇首節(jié)點(diǎn)。
[0052]進(jìn)一步的,簇首節(jié)點(diǎn)向簇成員節(jié)點(diǎn)或其他節(jié)點(diǎn)發(fā)送消息時(shí),簇成員節(jié)點(diǎn)或其他節(jié)點(diǎn)在收到該消息后,比較該消息中攜帶的輪數(shù)值與其自身輪數(shù)值的大??;若該節(jié)點(diǎn)自身輪數(shù)值大于或等于該消息中攜帶的輪數(shù)值,則忽略該消息。
[0053]進(jìn)一步的,所述簇首節(jié)點(diǎn)向外發(fā)送OFFER廣播邀請(qǐng)其他節(jié)點(diǎn)成為其簇成員節(jié)點(diǎn)包括:
[0054]設(shè)置一定時(shí)器來(lái)確保所述RPL路由樹(shù)完成度達(dá)到閾值時(shí),該RPL路由樹(shù)中的簇首節(jié)點(diǎn)向外發(fā)送OFFER廣播邀請(qǐng)其他節(jié)點(diǎn)成為其簇成員節(jié)點(diǎn)。該閾值,可根據(jù)實(shí)際需求或經(jīng)驗(yàn)來(lái)進(jìn)行設(shè)定。[0055]進(jìn)一步的,所有節(jié)點(diǎn)均需維護(hù)一個(gè)分簇狀態(tài)表,記錄其自身節(jié)點(diǎn)是否為簇首、所在簇的簇首地址、簇首在RPL路由樹(shù)中的Rank值、當(dāng)前輪數(shù)信息;
[0056]簇首節(jié)點(diǎn)還需要維護(hù)其簇內(nèi)成員列表,記錄簇成員節(jié)點(diǎn)的地址與剩余能量。
[0057]示例性的,圖1為本發(fā)明實(shí)施例提供的一種無(wú)線傳感器網(wǎng)絡(luò)中分簇路由網(wǎng)絡(luò)拓?fù)鋱D的示意圖。該圖中的A節(jié)點(diǎn)為根節(jié)點(diǎn),負(fù)責(zé)匯聚信息并管理網(wǎng)絡(luò);節(jié)點(diǎn)B、Bl、B2、C、C1、D、Dl、D2、D3、E、El、E2、F、F1、F2和F3均為傳感器節(jié)點(diǎn)。傳感器節(jié)點(diǎn)用于將采集到的數(shù)據(jù)匯集到根節(jié)點(diǎn)處,且初始能源值相同,具有相同的通信半徑。其中,節(jié)點(diǎn)B、C、D、E、F為簇首節(jié)點(diǎn),節(jié)點(diǎn)B是節(jié)點(diǎn)D、E的父節(jié)點(diǎn),即節(jié)點(diǎn)D、E是節(jié)點(diǎn)B的子節(jié)點(diǎn),同樣的,節(jié)點(diǎn)C是節(jié)點(diǎn)F的父節(jié)點(diǎn),即節(jié)點(diǎn)F是節(jié)點(diǎn)C的子節(jié)點(diǎn)。另外,圖中虛線圈出的部分節(jié)點(diǎn)構(gòu)成一個(gè)簇,以節(jié)點(diǎn)B、B1、B2構(gòu)成的簇為例,節(jié)點(diǎn)B為簇首節(jié)點(diǎn),節(jié)點(diǎn)B1、B2為簇成員節(jié)點(diǎn),其他簇的構(gòu)成以此類推。在通信時(shí),按照?qǐng)D中箭頭的方向,由簇首節(jié)點(diǎn)D、E、F將接收到的其各自簇成員節(jié)點(diǎn)發(fā)送的數(shù)據(jù)傳輸至簇首節(jié)點(diǎn)B、C,再由簇首節(jié)點(diǎn)B、C將其簇成員節(jié)點(diǎn)及簇首節(jié)點(diǎn)D、E、F發(fā)送的數(shù)據(jù)傳輸至根節(jié)點(diǎn)A。
[0058]實(shí)施例二
[0059]本發(fā)明實(shí)施例結(jié)合附圖2對(duì)分簇路由協(xié)議中初次組網(wǎng)的過(guò)程進(jìn)行詳細(xì)的介紹,其主要基于RPL協(xié)議和分簇進(jìn)行組網(wǎng),達(dá)到降低了 RPL路由樹(shù)深度的目的。在本實(shí)施例中,所有節(jié)點(diǎn)都需要維護(hù)一個(gè)分簇狀態(tài)表,記錄節(jié)點(diǎn)是否為簇首、所在簇的簇首地址、簇首在RPL路由樹(shù)中的Rank值、當(dāng)前輪數(shù)等信息。另外,成為簇首的節(jié)點(diǎn)需要維護(hù)其簇內(nèi)成員列表,記錄簇成員節(jié)點(diǎn)的地址、剩余能量。
[0060]初次組網(wǎng)的過(guò)程可參見(jiàn)圖2,主要包括如下步驟:
[0061]步驟201:簇首節(jié)點(diǎn)向周圍發(fā)送OFFER廣播,公告自己的簇首地位。
[0062]簇首節(jié)點(diǎn)首先進(jìn)行RPL組網(wǎng),路由樹(shù)初步建立后,開(kāi)始發(fā)送分簇控制信息OFFER廣播。具體的0FEER廣播消息發(fā)送時(shí)間以O(shè)FFER定時(shí)器的設(shè)置為準(zhǔn)。
[0063]步驟202:普通節(jié)點(diǎn)收到OFFER廣播后,決定是否加入該簇。
[0064]普通節(jié)點(diǎn)判斷自己是否已經(jīng)加入簇。如果還沒(méi)有加入任何簇,則直接回復(fù)ACK消息;如果已經(jīng)加入簇,且收到的OFFER廣播是由本簇的簇首發(fā)送,也回復(fù)ACK ;如果已經(jīng)節(jié)點(diǎn)加入別的簇,則丟棄此消息。如果同時(shí)收到兩條來(lái)自不同簇首節(jié)點(diǎn)的OFFER廣播,則選擇Rank值較小(離根節(jié)點(diǎn)較遠(yuǎn))的簇加入。
[0065]步驟203:簇首收到ACK消息后,決定是否接受該節(jié)點(diǎn)加入。
[0066]簇首節(jié)點(diǎn)首先判斷該節(jié)點(diǎn)是否在本簇的成員列表內(nèi),如果不存在,則判斷簇首節(jié)點(diǎn)攜帶的成員數(shù)是否已達(dá)上限,如果沒(méi)有達(dá)到上限則添加該節(jié)點(diǎn)為成員節(jié)點(diǎn),并回復(fù)OFFER單播消息;如果該成員已存在,則更新其剩余能量信息,不作回復(fù);如果成員數(shù)已經(jīng)達(dá)到上限,則丟棄此消息。
[0067]步驟204:普通節(jié)點(diǎn)加入簇。
[0068]普通節(jié)點(diǎn)收到簇首節(jié)點(diǎn)發(fā)送的OFFER單播消息,記錄簇首在RPL中的Rank值。至此,普通節(jié)點(diǎn)成功加入簇,成為簇成員節(jié)點(diǎn)。
[0069]實(shí)施例三
[0070]本發(fā)明實(shí)施例結(jié)合附圖3對(duì)分簇路由協(xié)議中簇首輪換的過(guò)程做詳細(xì)的介紹。如圖3所示,其主要包括如下步驟:[0071]步驟301:現(xiàn)任簇首節(jié)點(diǎn)向新任簇首節(jié)點(diǎn)發(fā)送ROUND消息。
[0072]ROUND定時(shí)器到期后,現(xiàn)任簇首根據(jù)簇成員列表中的記錄(或者,當(dāng)前簇首節(jié)點(diǎn)的剩余能量小于設(shè)定的閾值時(shí)),選擇剩余能量最大的節(jié)點(diǎn)作為新任簇首并向其發(fā)送ROUND消息,通告其新任簇首的地位。
[0073]步驟302:新任簇首向現(xiàn)任簇首節(jié)點(diǎn)發(fā)送R0UND_ACK消息。
[0074]新任簇首收到ROUND消息后,如果決定接受擔(dān)任下任簇首的邀請(qǐng),則向現(xiàn)任簇首回復(fù)R0UND_ACK消息,確認(rèn)簇首輪換過(guò)程的開(kāi)始,同時(shí)更新自己的分簇狀態(tài)表,記錄現(xiàn)任簇首在RPL路由樹(shù)中的信息,并開(kāi)始進(jìn)行RPL入網(wǎng)過(guò)程。
[0075]步驟303:現(xiàn)任簇首向簇成員發(fā)送HEAD_REM0VE消息。
[0076]現(xiàn)任簇首向其簇成員節(jié)點(diǎn)發(fā)送HEAD_REM0VE消息,通告其已卸任簇首這一清況,簇成員節(jié)點(diǎn)收到該消息后,不需要回復(fù),但需要更新其分簇狀態(tài)表及路由表信息。
[0077]步驟304:新任簇首與簇成員之間的控制信息交互。
[0078]新任簇首與簇成員之間的控制信息交互過(guò)程在前述實(shí)施例中已進(jìn)行消息描述,故不再贅述。至此,簇首輪換過(guò)程結(jié)束。
[0079]本發(fā)明的上述實(shí)施例中,基于分簇和RPL路由協(xié)議,選取無(wú)線傳感器網(wǎng)絡(luò)中的部分節(jié)點(diǎn)作為簇首節(jié)點(diǎn),其余節(jié)點(diǎn)為簇成員節(jié)點(diǎn),簇首節(jié)點(diǎn)之間的通信采用RPL路由協(xié)議,簇內(nèi)即簇首節(jié)點(diǎn)和簇成員節(jié)點(diǎn)之間的通信采用單跳路由;通過(guò)分簇,可以達(dá)到降低拓?fù)錁?shù)深度的目的;另外,每一簇首所能攜帶的成員節(jié)點(diǎn)數(shù)目由其在RPL路由樹(shù)中的位置決定,由于處在RPL上層的簇首節(jié)點(diǎn)已經(jīng)攜帶了很多子節(jié)點(diǎn),能耗比下層的簇首大,因此越靠近根節(jié)點(diǎn)的簇首節(jié)點(diǎn)攜帶的成員節(jié)點(diǎn)越少,以達(dá)到均衡各節(jié)點(diǎn)能耗的目的。
[0080]通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施例可以通過(guò)軟件實(shí)現(xiàn),也可以借助軟件加必要的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn)。基于這樣的理解,上述實(shí)施例的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該軟件產(chǎn)品可以存儲(chǔ)在一個(gè)非易失性存儲(chǔ)介質(zhì)(可以是⑶-ROM,U盤,移動(dòng)硬盤等)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
[0081]以上所述,僅為本發(fā)明較佳的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明披露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求書的保護(hù)范圍為準(zhǔn)。
【權(quán)利要求】
1.一種無(wú)線傳感器網(wǎng)絡(luò)的分簇路由方法,其特征在于,該方法包括:從所述無(wú)線傳感器網(wǎng)絡(luò)中隨機(jī)選取若干節(jié)點(diǎn)作為簇首節(jié)點(diǎn),各個(gè)簇首之間的通信采用低功耗有損網(wǎng)絡(luò)路由協(xié)議RPL方式;當(dāng)所述簇首節(jié)點(diǎn)向外發(fā)送OFFER消息邀請(qǐng)其他節(jié)點(diǎn)成為其簇成員節(jié)點(diǎn)時(shí),根據(jù)當(dāng)前簇首節(jié)點(diǎn)在RPL路由樹(shù)中的位置控制該簇首節(jié)點(diǎn)所攜帶的簇成員節(jié)點(diǎn)數(shù)量,完成分簇組網(wǎng)過(guò)程;在進(jìn)行數(shù)據(jù)路由時(shí),所述簇成員節(jié)點(diǎn)將采集到的數(shù)據(jù)通過(guò)單跳路由的方式發(fā)送至對(duì)應(yīng)的簇首節(jié)點(diǎn);簇首節(jié)點(diǎn)采用RPL路由方式將數(shù)據(jù)傳遞至根節(jié)點(diǎn)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述簇首節(jié)點(diǎn)向外發(fā)送OFFER廣播邀請(qǐng)其他節(jié)點(diǎn)成為其簇成員節(jié)點(diǎn)包括:所述簇首節(jié)點(diǎn)向外發(fā)送OFFER消息,公告自身的簇首地位;其他節(jié)點(diǎn)收到該OFFER消息后,判斷自身是否已經(jīng)加入簇;若已加入簇,且收到的OFFER廣播為該節(jié)點(diǎn)所在簇的簇首節(jié)點(diǎn)發(fā)送,則回復(fù)確認(rèn)消息ACK ;若已加入簇,且收到的OFFER廣播為其他簇首節(jié)點(diǎn)發(fā)送,則丟棄次消息;若未加入簇,則回復(fù)ACK消息;若同時(shí)收到兩個(gè)簇首節(jié)點(diǎn)發(fā)送的OFFER消息,則向所述兩個(gè)簇首節(jié)點(diǎn)中離根節(jié)點(diǎn)較遠(yuǎn)的簇首節(jié)點(diǎn)回復(fù)ACK消息;簇首節(jié)點(diǎn)收到其他節(jié)點(diǎn)回復(fù)的ACK消息后,判斷該節(jié)點(diǎn)是否在本簇的成員列表內(nèi);如果不存在,則判斷其自身可攜帶的成員數(shù)是否已達(dá)上限,若未達(dá)到上限則添加該節(jié)點(diǎn)為簇成員節(jié)點(diǎn),若已達(dá)上限,則丟棄該消息;如果存在,則更新該節(jié)點(diǎn)的剩余能量信息;當(dāng)節(jié)點(diǎn)收到簇首節(jié)點(diǎn)發(fā)送的允許加入簇的OFFER單播消息后,記錄表示該簇首節(jié)點(diǎn)在RPL路由樹(shù)中位置的Rank值。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法還包括:周期性進(jìn)行簇首節(jié)點(diǎn)的輪換,從簇成員節(jié)點(diǎn)中選擇剩余能量最大的節(jié)點(diǎn)作為新任簇首節(jié)點(diǎn);以及,在當(dāng)前簇首節(jié)點(diǎn)的剩余能量小于設(shè)定的閾值時(shí),從簇成員節(jié)點(diǎn)中選擇剩余能量最大的節(jié)點(diǎn)作為新任簇首節(jié)點(diǎn);所述新任簇首節(jié)點(diǎn)繼承現(xiàn)任簇首節(jié)點(diǎn)在RPL路由樹(shù)中的位置信息。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述從簇成員節(jié)點(diǎn)中選擇剩余能量最大的節(jié)點(diǎn)作為新任簇首節(jié)點(diǎn)之后還包括:所述現(xiàn)任簇首節(jié)點(diǎn)向新任簇首節(jié)點(diǎn)發(fā)送ROUND消息,通告其新任簇首的地位;所述新任簇首節(jié)點(diǎn)收到高消息后向所述現(xiàn)任簇首節(jié)點(diǎn)返回確認(rèn)消息R0UND_ACK,并更新本地的分簇狀態(tài)表,記錄所述現(xiàn)任簇首在RPL路由樹(shù)中的位置信息;所述現(xiàn)任簇首節(jié)點(diǎn)向其簇成員節(jié)點(diǎn)發(fā)送簇首更換消息HEAD_REMOVE ;所述簇成員節(jié)點(diǎn)更新其分簇狀態(tài)表及路由表信息,并將實(shí)時(shí)采集到的數(shù)據(jù)發(fā)送至所述新任簇首節(jié)點(diǎn)。
5.根據(jù)權(quán)利要求1或2或4所述的方法,其特征在于,簇首節(jié)點(diǎn)向簇成員節(jié)點(diǎn)或其他節(jié)點(diǎn)發(fā)送消息時(shí),簇成員節(jié)點(diǎn)或其他節(jié)點(diǎn)在收到該消息后,比較該消息中攜帶的輪數(shù)值與其自身輪數(shù)值的大小;若該節(jié)點(diǎn)自身輪數(shù)值大于或等于該消息中攜帶的輪數(shù)值,則忽略該消息。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述簇首節(jié)點(diǎn)向外發(fā)送OFFER廣播邀請(qǐng)其他節(jié)點(diǎn)成為其簇成員節(jié)點(diǎn)包括:設(shè)置一定時(shí)器來(lái)確保所述RPL路由樹(shù)完成度達(dá)到閾值時(shí),該RPL路由樹(shù)中的簇首節(jié)點(diǎn)向外發(fā)送OFFER廣播邀請(qǐng)其他節(jié)點(diǎn)成為其簇成員節(jié)點(diǎn)。
7.根據(jù)權(quán)利要求1、2、3、4或6所述的方法,其特征在于,所有節(jié)點(diǎn)均需維護(hù)一個(gè)分簇狀態(tài)表,記錄其自身節(jié)點(diǎn)是否為簇首、所在簇的簇首地址、簇首在RPL路由樹(shù)中的Rank值、當(dāng)前輪數(shù)信息;簇首節(jié)點(diǎn)還 需要維護(hù)其簇內(nèi)成員列表,記錄簇成員節(jié)點(diǎn)的地址與剩余能量。
【文檔編號(hào)】H04W40/02GK103702383SQ201410010192
【公開(kāi)日】2014年4月2日 申請(qǐng)日期:2014年1月9日 優(yōu)先權(quán)日:2014年1月9日
【發(fā)明者】高德云, 楊冬, 張宏科, 高筱菲, 朱婉婷, 趙偉程 申請(qǐng)人:北京交通大學(xué)