[004引步驟2 ;通過接收到的鄰居節(jié)點(diǎn)廣播的鄰居列表消息,將非1跳的對稱節(jié)點(diǎn)作為2 跳鄰居添加到路由表中;
[0049] 由W上兩個(gè)步驟可W確定每個(gè)節(jié)點(diǎn)的一跳和兩跳鄰居,并通過不斷的接收廣播消 息進(jìn)行路由表的更新。當(dāng)節(jié)點(diǎn)需要和兩跳W內(nèi)的鄰居進(jìn)行通信,則可W直接查詢所存儲的 路由表進(jìn)行發(fā)送即可。
[0050] 實(shí)施例4巧跳W上路由查找
[0051] 如果節(jié)點(diǎn)需要和超過兩跳W外的節(jié)點(diǎn)進(jìn)行通信,則進(jìn)行按需路由查找。
[0052] 請參照附圖2,每個(gè)圈代表一個(gè)節(jié)點(diǎn),連線代表兩個(gè)節(jié)點(diǎn)可W互相通信,即存在對 稱鏈路;連線上的數(shù)字代表該條鏈路的度量值。
[0053] 首先,對節(jié)點(diǎn)X選擇中轉(zhuǎn)節(jié)點(diǎn)的過程進(jìn)行介紹:建立一跳鄰居節(jié)點(diǎn)集合Sl = (1,2, 3, 4, 5, 6},二跳鄰居節(jié)點(diǎn)集合S2 = {7, 8, 9, 10, 11,12, 13},設(shè)置中轉(zhuǎn)節(jié)點(diǎn)集合S3 = {},選擇過程如下:
[0054] 1、計(jì)算 Sl 中各節(jié)點(diǎn)的度;D(I) = UD似=1、D(3) = 2、D(4) = 2、D巧)=1 和 D 化)=2 ;
[00巧]2、首先判斷可W為二跳鄰居提供唯一可達(dá)鏈路的一跳節(jié)點(diǎn),節(jié)點(diǎn)2、3、4符合條 件,將其加入到中轉(zhuǎn)集合中,S3 = {2, 3, 4},Sl = {1,5, 6},S2 = {7,到 [005引 3、更新各節(jié)點(diǎn)的度,D(I) = 1,D (5) = 1,D (6) = 2 ;
[0057] 4、選擇Sl中具有最大度量值的節(jié)點(diǎn)6, S3 = {2, 3, 4, 6},S2 ={},尋找結(jié)束。此 處,如果對打度量值的節(jié)點(diǎn)有多個(gè),可W選擇其中連接度較大的進(jìn)入S3。當(dāng)然,也可W直接 設(shè)定為選擇具有最大連接度的節(jié)點(diǎn)進(jìn)入S3,當(dāng)有多個(gè)時(shí)在從中選擇具有較大度量值的。
[005引接下來,通過廣播消息的接收,節(jié)點(diǎn)X可W建立如下的本地路由表:
[0059]
[0060] 然后,假定節(jié)點(diǎn)X需要尋找到節(jié)點(diǎn)17的路由。
[0061] 節(jié)點(diǎn)X發(fā)送路由請求消息。
[0062] 各中轉(zhuǎn)節(jié)點(diǎn)轉(zhuǎn)發(fā)給路由請求消息:
[0063] 節(jié)點(diǎn)4作為中轉(zhuǎn)節(jié)點(diǎn)之一,需要轉(zhuǎn)發(fā)該路由請求消息,節(jié)點(diǎn)9收到了路由請求消息 之后查找自己的兩跳W內(nèi)的鄰居列表,發(fā)現(xiàn)節(jié)點(diǎn)17是自己的兩條鄰居消息,則可W立即向 節(jié)點(diǎn)X回復(fù)路由響應(yīng)消息,告知節(jié)點(diǎn)X可W通過自己來轉(zhuǎn)發(fā)消息到節(jié)點(diǎn)17,節(jié)點(diǎn)X收到路由 相應(yīng)消息后開啟定時(shí)器T2 ;
[0064] 同時(shí)節(jié)點(diǎn)10也可W收到路由請求消息,由于節(jié)點(diǎn)10是節(jié)點(diǎn)4的中轉(zhuǎn)節(jié)點(diǎn),所W將 該消息轉(zhuǎn)發(fā)給節(jié)點(diǎn)15,節(jié)點(diǎn)15收到路由請求之后查詢自己的兩跳W內(nèi)的鄰居列表,發(fā)現(xiàn)節(jié) 點(diǎn)17是自己的兩跳鄰居,則給節(jié)點(diǎn)X回復(fù)路由響應(yīng)消息;
[0065] 因此在節(jié)點(diǎn)X處會收到兩個(gè)路由響應(yīng)消息,節(jié)點(diǎn)X可W依據(jù)特定的準(zhǔn)則來選擇合 適的路由,例如可W選擇最先到達(dá)的路由響應(yīng)建立路由,或者選擇LinkMetric最大的路由 響應(yīng)建立路由。
[0066] 通過W上實(shí)施例可W看出,本發(fā)明具有如下有益效果:
[0067] 1、利用自組網(wǎng)自身的特點(diǎn),對路由算法進(jìn)行跨層優(yōu)化,每個(gè)節(jié)點(diǎn)利用自身掃描到 的一跳和兩跳鄰居節(jié)點(diǎn)情況,直接更新路由表格,不需要高層再發(fā)起路由請求,使得兩跳W 內(nèi)的鏈路建立時(shí)間縮短,并且不占用路由開銷;
[0068] 2、針對按需路由算法進(jìn)行改善,每個(gè)節(jié)點(diǎn)都需要選擇并維護(hù)自己的中轉(zhuǎn)節(jié)點(diǎn),在 源節(jié)點(diǎn)有路由請求的時(shí)候,僅由送些中轉(zhuǎn)節(jié)點(diǎn)進(jìn)行路由消息的廣播,送樣極大的降低了路 由帶來的開銷;
[0069] 3、針對按需路由進(jìn)行進(jìn)一步優(yōu)化,由于各節(jié)點(diǎn)都能維護(hù)自身W內(nèi)兩跳的鄰居節(jié)點(diǎn) 情況,所W如果節(jié)點(diǎn)收到其他節(jié)點(diǎn)的路由請求消息時(shí),判斷如果在自己的一跳或者兩跳鄰 居列表內(nèi)可直接給源節(jié)點(diǎn)回復(fù)路由相應(yīng)消息,而在源節(jié)點(diǎn)端可W通過定時(shí)窗口的方式對路 由回復(fù)消息進(jìn)行篩選,送樣帶來的效果是更快的路由響應(yīng),更優(yōu)的路徑選擇。同時(shí)也會極大 的降低路由開銷,因?yàn)槿绻麑ふ易畲?跳的目的節(jié)點(diǎn),Route Request最大轉(zhuǎn)發(fā)次數(shù)設(shè)置為 6即可。
[0070] 基于相同的構(gòu)思,本發(fā)明還提出一種無線自組網(wǎng)的路由方法,所述自組網(wǎng)的各節(jié) 點(diǎn)互相廣播其鄰節(jié)點(diǎn)信息,根據(jù)接收到的鄰節(jié)點(diǎn)的廣播消息維護(hù)本地路由表;所述各節(jié)點(diǎn) 根據(jù)收到的廣播消息選擇和維護(hù)自己的中轉(zhuǎn)節(jié)點(diǎn),并通知所述中轉(zhuǎn)節(jié)點(diǎn);路由消息由所述 中轉(zhuǎn)節(jié)點(diǎn)轉(zhuǎn)發(fā)。
[0071] 優(yōu)選的,所述本地路由表包括本節(jié)點(diǎn)的一跳節(jié)點(diǎn)和二跳節(jié)點(diǎn)信息。
[0072] 優(yōu)選的,所述中轉(zhuǎn)節(jié)點(diǎn)的選擇和維護(hù)包括:設(shè)節(jié)點(diǎn)的一跳節(jié)點(diǎn)集合為SI,二跳節(jié) 點(diǎn)集合為S2,中轉(zhuǎn)節(jié)點(diǎn)結(jié)合為S3,其中,S2中不包含該節(jié)點(diǎn)本身和其一跳節(jié)點(diǎn);計(jì)算Sl中 各節(jié)點(diǎn)的連接度,所述連接度為該一跳節(jié)點(diǎn)在集合Sl W外的對稱節(jié)點(diǎn)個(gè)數(shù);查找Sl中為 S2中的節(jié)點(diǎn)提供唯一可達(dá)路徑的節(jié)點(diǎn),選入中轉(zhuǎn)節(jié)點(diǎn)集合S3 ;從Sl中刪除選中的節(jié)點(diǎn),從 S2中刪除選中節(jié)點(diǎn)可達(dá)的節(jié)點(diǎn)厘新Sl中各節(jié)點(diǎn)的連接度;如果S2為空,則中轉(zhuǎn)節(jié)點(diǎn)選擇 結(jié)束;否則,查找Sl中連接度最大的節(jié)點(diǎn),選入S3 ;從Sl中刪除選中的節(jié)點(diǎn),從S2中刪除 選中節(jié)點(diǎn)可達(dá)的節(jié)點(diǎn);更新Sl中各節(jié)點(diǎn)的連接度;直至S2為空。
[0073] 優(yōu)選的,所述中轉(zhuǎn)節(jié)點(diǎn)的選擇和維護(hù)包括:設(shè)節(jié)點(diǎn)的一跳節(jié)點(diǎn)集合為SI,二跳節(jié) 點(diǎn)集合為S2,中轉(zhuǎn)節(jié)點(diǎn)結(jié)合為S3,其中,S2中不包含該節(jié)點(diǎn)本身和其一跳節(jié)點(diǎn);計(jì)算Sl中 各節(jié)點(diǎn)的連接度,所述連接度為該一跳節(jié)點(diǎn)在集合Sl W外的對稱節(jié)點(diǎn)個(gè)數(shù);計(jì)算Sl中各節(jié) 點(diǎn)的鏈路度量,所述鏈路度量為節(jié)點(diǎn)與各一跳節(jié)點(diǎn)之間鏈路的度量值;查找Sl中為S2中的 節(jié)點(diǎn)提供唯一可達(dá)路徑的節(jié)點(diǎn),選入中轉(zhuǎn)節(jié)點(diǎn)集合S3 ;從Sl中刪除選中的節(jié)點(diǎn),從S2中刪 除選中節(jié)點(diǎn)可達(dá)的節(jié)點(diǎn);更新Sl中各節(jié)點(diǎn)的連接度;如果S2為空,則中轉(zhuǎn)節(jié)點(diǎn)選擇結(jié)束; 否則,查找Sl中鏈路度量最大的節(jié)點(diǎn),將其中連接度最大的節(jié)點(diǎn)選入S3,從Sl中刪除選中 的節(jié)點(diǎn),從S2中刪除選中節(jié)點(diǎn)可達(dá)的節(jié)點(diǎn);更新Sl中各節(jié)點(diǎn)的連接度;直至S2為空;或者, 查找Sl中連接度最大的節(jié)點(diǎn),將其中鏈路度量最大的節(jié)點(diǎn)選入S3,從Sl中刪除選中的節(jié) 點(diǎn),從S2中刪除選中節(jié)點(diǎn)可達(dá)的節(jié)點(diǎn)厘新Sl中各節(jié)點(diǎn)的連接度追至S2為空。
[0074] 優(yōu)選的,所述中轉(zhuǎn)節(jié)點(diǎn)的選擇和維護(hù)包括:設(shè)節(jié)點(diǎn)的一跳節(jié)點(diǎn)集合為SI,二跳節(jié) 點(diǎn)集合為S2,中轉(zhuǎn)節(jié)點(diǎn)結(jié)合為S3,其中,S2中不包含該節(jié)點(diǎn)本身和其一跳節(jié)點(diǎn);計(jì)算Sl中 各節(jié)點(diǎn)的鏈路度量,所述鏈路度量為節(jié)點(diǎn)與各一跳節(jié)點(diǎn)之間鏈路的度量值;查找Sl中為S2 中的節(jié)點(diǎn)提供唯一可達(dá)路徑的節(jié)點(diǎn),選入中轉(zhuǎn)節(jié)點(diǎn)集合S3 ;從Sl中刪除選中的節(jié)點(diǎn),從S2 中刪除選中節(jié)點(diǎn)可達(dá)的節(jié)點(diǎn);如果S2為空,則中轉(zhuǎn)節(jié)點(diǎn)選擇結(jié)束;否則,查找Sl中鏈路度 量最大的節(jié)點(diǎn),選入S3,從SI中刪除該選中的節(jié)點(diǎn),從S2中刪除其可達(dá)的節(jié)點(diǎn);直至S2為 空。
[00巧]優(yōu)選的,所述各節(jié)點(diǎn)如與兩跳或一跳節(jié)點(diǎn)進(jìn)行通信,則直接根據(jù)本地路由表進(jìn)行 路由。
[0076] 優(yōu)選的,所述各節(jié)點(diǎn)如與兩跳W上節(jié)點(diǎn)進(jìn)行通信,則進(jìn)行按需路由查找。
[0077] 本領(lǐng)域普通技術(shù)人員可W理解;實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可W通過 程序指令相關(guān)的硬件來完成,前述的程序可W存儲于一計(jì)算機(jī)可讀取存儲介質(zhì)中,該程序 在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲介質(zhì)包括:ROM、RAM、磁碟或者 光盤等各種可W存儲程序代碼的介質(zhì)。
[0078] 最后應(yīng)說明的是;W上實(shí)施例僅用W說明本發(fā)明的技術(shù)方案,而非對其限制;盡 管參照前述實(shí)施例對本發(fā)