專(zhuān)利名稱(chēng):無(wú)線(xiàn)傳感器網(wǎng)絡(luò)高鄰接度資源搜索方法
技術(shù)領(lǐng)域:
本發(fā)明屬于網(wǎng)絡(luò)技術(shù)領(lǐng)域,具體涉及一種無(wú)線(xiàn)傳感器網(wǎng)絡(luò)高鄰接度資源搜索方 法。
背景技術(shù):
無(wú)線(xiàn)傳感器網(wǎng)絡(luò)(WSNs)包含大量的網(wǎng)絡(luò)節(jié)點(diǎn)(網(wǎng)絡(luò)節(jié)點(diǎn)可以是具有無(wú)線(xiàn)通信模 塊的設(shè)備如用于環(huán)境監(jiān)測(cè)傳感器、車(chē)載計(jì)算機(jī)、手機(jī)、PDA等),無(wú)線(xiàn)傳感器網(wǎng)絡(luò)中的資源 分布存儲(chǔ)在各個(gè)節(jié)點(diǎn)上。基于無(wú)線(xiàn)傳感器網(wǎng)絡(luò)的應(yīng)用常需要能夠?qū)Y源搜索請(qǐng)求進(jìn)行響 應(yīng)。針對(duì)無(wú)線(xiàn)傳感器網(wǎng)絡(luò)中的任何節(jié)點(diǎn)提出資源搜索請(qǐng)求,網(wǎng)絡(luò)各節(jié)點(diǎn)需要能夠按照某種 消息傳遞策略將資源搜索請(qǐng)求傳達(dá)到擁有被搜索資源的節(jié)點(diǎn)。為解決資源搜索請(qǐng)求在個(gè)網(wǎng) 絡(luò)節(jié)點(diǎn)間的傳遞問(wèn)題,需要有一種好的資源搜索傳遞策略,使得能夠在盡可能少次數(shù)的節(jié) 點(diǎn)間的消息傳遞,將資源搜索請(qǐng)求傳遞到盡量多的擁有被搜索資源的節(jié)點(diǎn)上,從而為提出 資源搜索請(qǐng)求的節(jié)點(diǎn)返回盡可能多的資源匹配成功的響應(yīng)。目前最簡(jiǎn)單直觀的資源搜索請(qǐng) 求是資源搜索請(qǐng)求提出節(jié)點(diǎn)向周?chē)従庸?jié)點(diǎn)使用洪泛的方法廣播資源搜索請(qǐng)求,這種洪泛 的廣播方法能夠以最快的速度定位網(wǎng)絡(luò)中所有含有被請(qǐng)求資源的節(jié)點(diǎn),但消耗的消息量最 大。另一種隨機(jī)路由單播方法是每次從鄰居節(jié)點(diǎn)隨機(jī)選擇一個(gè)節(jié)點(diǎn)進(jìn)行消息的傳遞,直到 將資源搜索請(qǐng)求傳遞到一個(gè)知道被請(qǐng)求資源地址的節(jié)點(diǎn)上。該方法相對(duì)于洪泛法能夠大幅 度減少消息傳遞,但能夠成功定位被請(qǐng)求資源的概率較小。
發(fā)明內(nèi)容
本發(fā)明克服了現(xiàn)有技術(shù)的不足,提出了一種無(wú)線(xiàn)傳感器網(wǎng)絡(luò)高鄰接度資源搜索方 法,該方法設(shè)計(jì)了一種單播策略,實(shí)現(xiàn)了資源搜索策略。本發(fā)明的技術(shù)方案為無(wú)線(xiàn)傳感器網(wǎng)絡(luò)高鄰接度資源搜索方法,所述搜索方法對(duì) 于無(wú)線(xiàn)傳感器網(wǎng)絡(luò)包含的網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)置鄰接表和數(shù)據(jù)庫(kù),所述鄰接表包括節(jié)點(diǎn)ID和節(jié)點(diǎn) 鄰接度,所述節(jié)點(diǎn)鄰接度為記錄本節(jié)點(diǎn)當(dāng)前能夠與自己直接通信的鄰近節(jié)點(diǎn)個(gè)數(shù),所述搜 索方法的資源搜索步驟為1)提出資源搜索查詢(xún)的節(jié)點(diǎn)(源節(jié)點(diǎn))首先查詢(xún)節(jié)點(diǎn)自身數(shù)據(jù)庫(kù)是否存儲(chǔ)有被查詢(xún)資源,若有則向提出資源搜索請(qǐng)求的 用戶(hù)返回資源地址;然后源節(jié)點(diǎn)檢查自己的鄰接表是否為空,若不為空,則將自己的節(jié)點(diǎn)標(biāo) 識(shí)(ID)及鄰接表中的所有節(jié)點(diǎn)ID組成的集合記為T(mén)id,將集合Tid加入資源搜索消息;最后 源節(jié)點(diǎn)從其鄰接表中選擇具有最大鄰接度和最大ID號(hào)(設(shè)ID號(hào)無(wú)重復(fù))的節(jié)點(diǎn),向其發(fā) 送一個(gè)資源搜索消息,所述資源搜索消息包含集合Tid ;2)假設(shè)節(jié)點(diǎn)Y從節(jié)點(diǎn)X發(fā)來(lái)資源搜索消息,節(jié)點(diǎn)Y首先查詢(xún)自身數(shù)據(jù)庫(kù)是否存儲(chǔ) 有被查詢(xún)資源,若有則向提出資源搜索請(qǐng)求的用戶(hù)返回資源地址;3)節(jié)點(diǎn)Y將收到的資源搜索消息中包含的上一跳節(jié)點(diǎn)(X)的Tid值為X. Tid,節(jié)點(diǎn) Y創(chuàng)建自己的下一跳節(jié)點(diǎn)集Tnext = Tid-X. Tid);
4)節(jié)點(diǎn)Y檢查自己的下一跳節(jié)點(diǎn)集Tnext是否空集,若是,則丟棄該資源搜索消息, 停止資源搜索過(guò)程;否則,節(jié)點(diǎn)Y將自己的Tid加入資源搜索消息,節(jié)點(diǎn)Y根據(jù)自己的鄰接 表,從Tmxt中選擇具有最大鄰接度和最大ID號(hào)的節(jié)點(diǎn),向其發(fā)送包含集合Y. Tid的資源搜索 消息;5)所有收到資源搜索消息的節(jié)點(diǎn)都按照第2步開(kāi)始的過(guò)程執(zhí)行相應(yīng)動(dòng)作。所述節(jié)點(diǎn)鄰接表能夠初始化,其步驟為1)每個(gè)節(jié)點(diǎn)向鄰居節(jié)點(diǎn)發(fā)送“Hello”消息;2)收到“Hello”消息的節(jié)點(diǎn)將自身鄰接度增1 ;3)每個(gè)節(jié)點(diǎn)得到鄰接度值后,向其鄰居節(jié)點(diǎn)發(fā)送“degree-info”消息,告知鄰居 自己當(dāng)前的鄰接度取值;4)節(jié)點(diǎn)收到“degree-info”消息后,將收到的消息中所包含的節(jié)點(diǎn)ID及相應(yīng)的鄰 接度添加到自己的鄰接表中。所述節(jié)點(diǎn)鄰接表設(shè)置有兩個(gè)處理方法1)新節(jié)點(diǎn)加入的處理首先,新加入節(jié)點(diǎn)(設(shè)其為χ)向鄰居節(jié)點(diǎn)發(fā)送“Hello”消息;其次,收到“Hello”消息的節(jié)點(diǎn)(設(shè)其為y)將自身鄰接度增1,然后,向其鄰居節(jié) 點(diǎn)發(fā)送“degree-info”消息(包含節(jié)點(diǎn)y的ID及相應(yīng)鄰接度記錄);最后,收到“degree-info”消息的節(jié)點(diǎn)根據(jù)消息中的節(jié)點(diǎn)ID(y)查找鄰接表,若鄰 接表中不存在節(jié)點(diǎn)ID為y的記錄則按照“degree-info”消息內(nèi)容添加一條節(jié)點(diǎn)ID為y的 記錄,若存在節(jié)點(diǎn)ID為y的記錄則按照“degree-info”消息內(nèi)容更新相應(yīng)的鄰接度值。2)舊節(jié)點(diǎn)的退出處理首先,舊節(jié)點(diǎn)向鄰居節(jié)點(diǎn)發(fā)送“Quit”消息;其次,收到“Quit”消息的節(jié)點(diǎn)將自身鄰接度減1,同時(shí)將自己的鄰接表的相應(yīng)條 目刪除。本發(fā)明具有如下有益效果1)本發(fā)明能夠在無(wú)線(xiàn)傳感器網(wǎng)絡(luò)WSNs中的任何節(jié)點(diǎn)開(kāi)始,以盡可能少的消息傳 遞,搜索到盡可能多的資源。2)本發(fā)明用盡可能少的節(jié)點(diǎn)間的消息傳遞,將資源搜索節(jié)點(diǎn)提出的搜索請(qǐng)求傳遞 到鄰居數(shù)最多的節(jié)點(diǎn)上。3)深度搜索算法使用盡可能少的消息傳遞,將資源搜索請(qǐng)求傳遞到距離資源搜 索節(jié)點(diǎn)盡可能遠(yuǎn)的節(jié)點(diǎn)上。
圖1表示本發(fā)明從源節(jié)點(diǎn)出發(fā)按照本發(fā)明所述方法進(jìn)行的一次資源搜索路徑的 示意圖。圖中,1.網(wǎng)絡(luò)中的一般的節(jié)點(diǎn);2.表示搜索路徑。
具體實(shí)施例方式以下結(jié)合實(shí)施例進(jìn)一步說(shuō)明。
參見(jiàn)圖1所示,本發(fā)明包含網(wǎng)絡(luò)中的一般的節(jié)點(diǎn)1和本算法的搜索路徑2。每個(gè)節(jié) 點(diǎn)在進(jìn)行資源搜索前必須維護(hù)以下變量鄰接度記錄本節(jié)點(diǎn)當(dāng)前能夠與自己直接通信的鄰居節(jié)點(diǎn)個(gè)數(shù),初始值為“0”鄰接表鄰接表模式為 < 鄰居節(jié)點(diǎn)ID,鄰接度 >,用來(lái)記錄本節(jié)點(diǎn)當(dāng)前的所有鄰居 節(jié)點(diǎn)ID及對(duì)應(yīng)鄰接度的取值,初始值為空集本方法由以下三種操作組成一、鄰接表初始化操作1、每個(gè)節(jié)點(diǎn)向鄰居節(jié)點(diǎn)發(fā)送“Hello”消息;2、收到“Hello”消息的節(jié)點(diǎn)將自身鄰接度增1。3、每個(gè)節(jié)點(diǎn)得到鄰接度值后,向其鄰居節(jié)點(diǎn)發(fā)送“degree-info”消息,告知鄰居自 己當(dāng)前的鄰接度取值;4、節(jié)點(diǎn)收到“degree-info”消息后,將收到的消息中所包含的節(jié)點(diǎn)ID及相應(yīng)的鄰 接度添加到自己的鄰接表中。二、鄰接表維護(hù)過(guò)程1、新節(jié)點(diǎn)加入處理1)新加入節(jié)點(diǎn)(設(shè)其為χ)向鄰居節(jié)點(diǎn)發(fā)送“Hello”消息;2)收到“Hello”消息的節(jié)點(diǎn)(設(shè)其為y)將自身鄰接度增1,然后,向其鄰居節(jié)點(diǎn) 發(fā)送“degree-info”消息(包含節(jié)點(diǎn)y的ID及相應(yīng)鄰接度記錄);3)收到“degree-info”消息的節(jié)點(diǎn)根據(jù)消息中的節(jié)點(diǎn)ID(y)查找鄰接表,若鄰接 表中不存在節(jié)點(diǎn)ID為y的記錄則按照“degree-info”消息內(nèi)容添加一條節(jié)點(diǎn)ID為y的記 錄,若存在節(jié)點(diǎn)ID為y的記錄則按照“degree-info”消息內(nèi)容更新相應(yīng)的鄰接度值。2、舊節(jié)點(diǎn)退出處理1)舊節(jié)點(diǎn)向鄰居節(jié)點(diǎn)發(fā)送“Quit”消息;2)收到“Quit”消息的節(jié)點(diǎn)將自身鄰接度減1,同時(shí)將自己的鄰接表的相應(yīng)條目刪除。三、分布式資源搜索過(guò)程1)提出資源搜索查詢(xún)的節(jié)點(diǎn)(源節(jié)點(diǎn))首先查詢(xún)自身數(shù)據(jù)庫(kù)是否存儲(chǔ)有被查詢(xún) 資源,若有則向提出資源搜索請(qǐng)求的用戶(hù)返回資源地址;然后源節(jié)點(diǎn)檢查自己的鄰接表是 否為空,若不為空,則將自己的ID及鄰接表中的所有節(jié)點(diǎn)ID組成的集合記為T(mén)id,將集合Tid 加入資源搜索消息;最后源節(jié)點(diǎn)從其鄰接表中選擇具有最大鄰接度和最大ID號(hào)(設(shè)ID號(hào) 無(wú)重復(fù))的節(jié)點(diǎn),向其發(fā)送資源搜索消息(包含集合Tid);2)假設(shè)節(jié)點(diǎn)Y從節(jié)點(diǎn)X發(fā)來(lái)的資源搜索消息,節(jié)點(diǎn)Y首先查詢(xún)自身數(shù)據(jù)庫(kù)是否存 儲(chǔ)有被查詢(xún)資源,若有則向提出資源搜索請(qǐng)求的用戶(hù)返回資源地址; 3)節(jié)點(diǎn)Y將自己的ID及鄰接表中的所有節(jié)點(diǎn)ID組成的集合記為T(mén)id,節(jié)點(diǎn)Y將收 到的資源搜索消息中包含的上一跳節(jié)點(diǎn)⑴的Tid值為X. Tid,節(jié)點(diǎn)Y創(chuàng)建自己的下一跳節(jié)
點(diǎn)集 Tnext ( — Tid~X. Tid); 4)節(jié)點(diǎn)Y檢查自己的下一跳節(jié)點(diǎn)集Tmxt是否空集,若是,則丟棄該資源搜索消息, 停止資源搜索過(guò)程;否則,節(jié)點(diǎn)Y將自己的Tid加入資源搜索消息,節(jié)點(diǎn)Y根據(jù)自己的鄰接 表,從Tmxt中選擇具有最大鄰接度和最大ID號(hào)的節(jié)點(diǎn),向其發(fā)送資源搜索消息(注意該消息中包含集合Y. Tid);5)從這以后,所有收到資源搜索消息的節(jié)點(diǎn)都按照第2步開(kāi)始的過(guò)程執(zhí)行相應(yīng)動(dòng)作。本發(fā)明所述搜索方法用盡可能少節(jié)點(diǎn)間的消息傳遞,將資源搜索節(jié)點(diǎn)提出的搜索 請(qǐng)求傳遞到鄰居數(shù)最多的節(jié)點(diǎn)上;使用盡可能少的消息傳遞,將資源搜索請(qǐng)求傳遞到距離 資源搜索節(jié)點(diǎn)盡可能遠(yuǎn)的節(jié)點(diǎn)上。
權(quán)利要求
1.無(wú)線(xiàn)傳感器網(wǎng)絡(luò)高鄰接度資源搜索方法,所述搜索方法對(duì)于無(wú)線(xiàn)傳感器網(wǎng)絡(luò)包含的 網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)置鄰接表和數(shù)據(jù)庫(kù),所述鄰接表包括節(jié)點(diǎn)標(biāo)識(shí)(ID)和節(jié)點(diǎn)鄰接度,所述節(jié)點(diǎn)鄰 接度為記錄本節(jié)點(diǎn)當(dāng)前能夠與自己直接通信的鄰近節(jié)點(diǎn)個(gè)數(shù),所述搜索方法的資源搜索步 驟為1)提出資源搜索查詢(xún)的節(jié)點(diǎn)(源節(jié)點(diǎn))首先查詢(xún)節(jié)點(diǎn)自身數(shù)據(jù)庫(kù)是否存儲(chǔ)有被查詢(xún)資源,若有則向提出資源搜索請(qǐng)求的用戶(hù) 返回資源地址;然后源節(jié)點(diǎn)檢查自己的鄰接表是否為空,若不為空,則將自己的節(jié)點(diǎn)標(biāo)識(shí) (ID)及鄰接表中的所有節(jié)點(diǎn)標(biāo)識(shí)(ID)組成的集合記為T(mén)id,將集合Tid加入資源搜索消息; 最后源節(jié)點(diǎn)從其鄰接表中選擇具有最大鄰接度和最大ID號(hào)(設(shè)ID號(hào)無(wú)重復(fù))的節(jié)點(diǎn),向 其發(fā)送一個(gè)資源搜索消息,所述資源搜索消息包含集合Tid ;2)假設(shè)節(jié)點(diǎn)Y從節(jié)點(diǎn)X發(fā)來(lái)資源搜索消息,節(jié)點(diǎn)Y首先查詢(xún)自身數(shù)據(jù)庫(kù)是否存儲(chǔ)有被 查詢(xún)資源,若有則向提出資源搜索請(qǐng)求的用戶(hù)返回資源地址;3)節(jié)點(diǎn)Y將收到的資源搜索消息中包含的上一跳節(jié)點(diǎn)⑴的Tid值為X.Tid,節(jié)點(diǎn)Y創(chuàng) 建自己的下一跳節(jié)點(diǎn)集Tnext = Tid-X. Tid);4)節(jié)點(diǎn)Y檢查自己的下一跳節(jié)點(diǎn)集Tmxt是否空集,若是,則丟棄該資源搜索消息,停止 資源搜索過(guò)程;否則,節(jié)點(diǎn)Y將自己的Tid加入資源搜索消息,節(jié)點(diǎn)Y根據(jù)自己的鄰接表,從 Tnext中選擇具有最大鄰接度和最大ID號(hào)的節(jié)點(diǎn),向其發(fā)送包含集合Y. Tid的資源搜索消息;5)所有收到資源搜索消息的節(jié)點(diǎn)都按照第2步開(kāi)始的過(guò)程執(zhí)行相應(yīng)動(dòng)作。
2.根據(jù)權(quán)利要求1所述的無(wú)線(xiàn)傳感器網(wǎng)絡(luò)高鄰接度資源搜索方法,其特征在于所述 節(jié)點(diǎn)鄰接表能夠初始化,其步驟為1)每個(gè)節(jié)點(diǎn)向鄰居節(jié)點(diǎn)發(fā)送“Hello”消息;2)收到“Hello”消息的節(jié)點(diǎn)將自身鄰接度增1;3)每個(gè)節(jié)點(diǎn)得到鄰接度值后,向其鄰居節(jié)點(diǎn)發(fā)送“degree-info”消息,告知鄰居自己 當(dāng)前的鄰接度取值;4)節(jié)點(diǎn)收到“degree-info”消息后,將收到的消息中所包含的節(jié)點(diǎn)ID及相應(yīng)的鄰接度 添加到自己的鄰接表中。
3.根據(jù)權(quán)利要求1所述的無(wú)線(xiàn)傳感器網(wǎng)絡(luò)高鄰接度資源搜索方法,其特征在于所述 節(jié)點(diǎn)鄰接表設(shè)置有兩個(gè)處理方法1)新節(jié)點(diǎn)加入的處理首先,新加入節(jié)點(diǎn)(設(shè)其為χ)向鄰居節(jié)點(diǎn)發(fā)送“Hello”消息;其次,收到“Hello”消息的節(jié)點(diǎn)(設(shè)其為y)將自身鄰接度增1,然后,向其鄰居節(jié)點(diǎn)發(fā) 送“degree-info,,消息(包含節(jié)點(diǎn)y的ID及相應(yīng)鄰接度記錄);最后,收到“degree-info”消息的節(jié)點(diǎn)根據(jù)消息中的節(jié)點(diǎn)ID(y)查找鄰接表,若鄰接表 中不存在節(jié)點(diǎn)ID為y的記錄則按照“degree-info”消息內(nèi)容添加一條節(jié)點(diǎn)ID為y的記錄, 若存在節(jié)點(diǎn)ID為y的記錄則按照“degree-info”消息內(nèi)容更新相應(yīng)的鄰接度值;2)舊節(jié)點(diǎn)的退出處理首先,舊節(jié)點(diǎn)向鄰居節(jié)點(diǎn)發(fā)送“Quit”消息;其次,收到“Quit”消息的節(jié)點(diǎn)將自身鄰接度減1,同時(shí)將自己的鄰接表的相應(yīng)條目刪除。
全文摘要
本發(fā)明涉及一種無(wú)線(xiàn)傳感器網(wǎng)絡(luò)高鄰接度資源搜索方法,所述搜索方法對(duì)于無(wú)線(xiàn)傳感器網(wǎng)絡(luò)包含的網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)置鄰接表和數(shù)據(jù)庫(kù),所述鄰接表包括節(jié)點(diǎn)標(biāo)識(shí)(ID)和節(jié)點(diǎn)鄰接度,所述節(jié)點(diǎn)鄰接度為記錄本節(jié)點(diǎn)當(dāng)前能夠與自己直接通信的鄰近節(jié)點(diǎn)個(gè)數(shù),本發(fā)明用盡可能少的節(jié)點(diǎn)間的消息傳遞,將資源搜索節(jié)點(diǎn)提出的搜索請(qǐng)求傳遞到鄰居數(shù)最多的節(jié)點(diǎn)上。本發(fā)明提出的算法能使用盡可能少的消息傳遞,將資源搜索請(qǐng)求傳遞到距離資源搜索節(jié)點(diǎn)盡可能遠(yuǎn)的節(jié)點(diǎn)上。
文檔編號(hào)H04W84/18GK102075974SQ20111000327
公開(kāi)日2011年5月25日 申請(qǐng)日期2011年1月10日 優(yōu)先權(quán)日2011年1月10日
發(fā)明者張俊虎 申請(qǐng)人:張俊虎