本發(fā)明屬于通信技術(shù)領(lǐng)域,尤其涉及到一種移動ad-hoc網(wǎng)絡(luò)中的路由方法。
背景技術(shù):
Ad-hoc網(wǎng)是一種多跳的、無中心的、自組織無線網(wǎng)絡(luò),是移動通信和計算機網(wǎng)絡(luò)相結(jié)合的網(wǎng)絡(luò),是移動計算機網(wǎng)絡(luò)的一種,用戶終端可以在網(wǎng)內(nèi)隨意移動而保持通信。它是一種多跳的臨時性自治系統(tǒng),并且是一種分布式網(wǎng)絡(luò),在傳感器網(wǎng)絡(luò)、軍用自組織網(wǎng)、車聯(lián)網(wǎng)等方面應(yīng)用越來越廣。
為保證在移動環(huán)境下,網(wǎng)線通信的可靠性和組網(wǎng)快速,移動ad-hoc網(wǎng)絡(luò)(MANETs)中的路由一直是通信領(lǐng)域中的熱點問題,但現(xiàn)存路由方法不能保證未直連兩節(jié)點間的通信,并且通信開銷比較大。
技術(shù)實現(xiàn)要素:
針對上述問題,本發(fā)明的目的在于提出一種移動ad-hoc網(wǎng)絡(luò)中的路由方法。本發(fā)明的基本思想是:先根據(jù)節(jié)點的地址前綴對節(jié)點進行分級,再根據(jù)節(jié)點級別對信息進行分級路由,由此保證未直連兩節(jié)點間的通信并降低通信開銷。
為實現(xiàn)上述目的,本方案的技術(shù)方案如下:
一種移動ad-hoc網(wǎng)絡(luò)中的路由方法,包括分配節(jié)點的地址前綴、建立節(jié)點與鄰居節(jié)點的連接、建立節(jié)點a的i級路由表、確定節(jié)點a的i級路由表中必須包含的路徑、建立節(jié)點間的通信路由。
進一步根據(jù)本發(fā)明所述一種移動ad-hoc網(wǎng)絡(luò)中的路由方法,分配節(jié)點的地址前綴:
(1)、在每個節(jié)點接入網(wǎng)絡(luò)前隨機為該節(jié)點分配唯一不變的n比特地址前綴,,n為正整數(shù),地址前綴附在節(jié)點IP地址之前;
(2)、比較網(wǎng)絡(luò)中兩個節(jié)點的地址前綴,從第一位起連續(xù)相同的前綴稱為兩節(jié)點的共用前綴,從第一位起連續(xù)相同的所有前綴稱為兩節(jié)點的最大共用前綴,用p、q表示網(wǎng)絡(luò)中任意兩個節(jié)點,p和q的地址前綴長度為n比特,用len(p, q)表示p和q地址前綴的最大共用前綴長度,p和q的地址前綴分別是01100和01000,則len(01100,01000) = 2,因為最大共用前綴是01;
(3)、,i為正整數(shù),表示p和q地址前綴的共用前綴長度,則網(wǎng)絡(luò)中的所有節(jié)點q組成關(guān)于p的i級網(wǎng)絡(luò),同時稱p的i級網(wǎng)絡(luò)中的節(jié)點為p的i級節(jié)點,每個節(jié)點的地址前綴唯一不變,當(dāng)len (p,q) =n時,p和q為同一個節(jié)點,因此p最多有n-1級節(jié)點;
(4)、根據(jù)節(jié)點地址前綴將節(jié)點分為黑白兩色的方式描述網(wǎng)絡(luò),具體方法是,i級節(jié)點的第i+1位地址前綴為0,則將此節(jié)點標(biāo)為白節(jié)點,i級節(jié)點的第i+1位地址前綴為1,則將此節(jié)點標(biāo)為黑節(jié)點。
進一步根據(jù)本發(fā)明所述一種移動ad-hoc網(wǎng)絡(luò)中的路由方法,建立節(jié)點與鄰居節(jié)點的連接。網(wǎng)絡(luò)中節(jié)點的地址前綴長度為n比特,在未對節(jié)點進行具體分級前,網(wǎng)絡(luò)中所有節(jié)點性質(zhì)相同,針對一個節(jié)點討論所得結(jié)果可應(yīng)用于網(wǎng)絡(luò)中所有節(jié)點,用a代表當(dāng)前節(jié)點,用b表示a的任一鄰居節(jié)點,a加入網(wǎng)絡(luò)后,a將a的地址前綴發(fā)給網(wǎng)絡(luò)中與a相鄰的所有節(jié)點,a的鄰居節(jié)點 b收到a的地址前綴后向a回復(fù)b的地址前綴,a收到b的地址前綴后根據(jù)len(a,b)將b分級,若,i為正整數(shù),則b為a的i級節(jié)點,當(dāng)a將a所有的鄰居節(jié)點分級后,a與a的1級節(jié)點建立1級連接,并向上順延與a的第2級、第3級、……、第n-1級節(jié)點建立相應(yīng)級別的連接,即a與a的i級節(jié)點建立的連接的級別為I;若a向b發(fā)送a所有i級鄰居節(jié)點的信息,同時b向a發(fā)送b所有i級鄰居節(jié)點的信息,i級鄰居節(jié)點的信息包括i級鄰居節(jié)點的地址前綴以及通過這些i級鄰居節(jié)點到達網(wǎng)絡(luò)中其它節(jié)點的路徑,則a與其i級節(jié)點b連接。
進一步根據(jù)本發(fā)明所述一種移動ad-hoc網(wǎng)絡(luò)中的路由方法,建立節(jié)點a的i級路由表,當(dāng)a和a的i級鄰居節(jié)點連接后,a將從與a連接的所有i級鄰居節(jié)點處收到節(jié)點的信息,生成新表G,即a的i級路由表,由上述得a的i級路由表中包括a的i級鄰居節(jié)點的信息,具體是a的i級鄰居節(jié)點的地址前綴和通過這些i級鄰居節(jié)點到達網(wǎng)絡(luò)中其它節(jié)點的路徑,確定a的i級路由表,按如下步驟進行:
(1)、在a的鄰居節(jié)點中確定必須與a連接的節(jié)點,若b為黑節(jié)點,則將b添加為a的i+1級鄰居;若b為白節(jié)點,則建立b的黑色鄰居節(jié)點間的各級連接,連接級別從1開始,最大到n-1,但未必每一級連接都存在,建立b黑色鄰居節(jié)點間的各級連接:
(1-1)、用集合S表示節(jié)點b的所有黑色鄰居節(jié)點,在S中確定每個節(jié)點的1級鄰居節(jié)點,并建立節(jié)點與此節(jié)點的1級鄰居節(jié)點間的連接,由S中每個節(jié)點與其i級節(jié)點建立連接的級別為i得,此時建立的是1級連接,用表示已建連接的級別,則此時m為1;
(1-2)、將S中的節(jié)點分為black和white兩個集合,如果節(jié)點的第m+1位地址前綴為0,則此節(jié)點屬于white,如果節(jié)點的第m+1位地址前綴為1,則此節(jié)點屬于black;
(1-3)、如果white或者black中沒有節(jié)點,說明節(jié)點集合S中沒有節(jié)點在m+1級連接,則執(zhí)行步驟(2),否則執(zhí)行(1-4);
(1-4)、取white中的節(jié)點和black中的節(jié)點兩個一組按位對地址前綴進行異或運算,異或運算值為n位二進制比特串,比較得到的所有異或運算值得到異或運算值最小的一組節(jié)點,異或運算值最小的節(jié)點可能不止一組,對所有使得異或運算值最小的節(jié)點組都按后文敘述的方法操作,用w表示兩節(jié)點中屬于white的節(jié)點,用y表示兩節(jié)點中屬于black的節(jié)點,異或運算的算法是:0和0異或為0,1和1異或為0,1和0異或為1,0和1異或為1,對兩節(jié)點地址前綴按位進行異或運算,異或運算值越小說明兩節(jié)點地址的最大共用前綴越長;
(1-5)、若a的第m+1位地址為0,則先判斷: w是a,則將y添加為a的m+1級鄰居節(jié)點,w不是a,則不將y添加為a的m+1級鄰居,然后將S中的節(jié)點更新為white中的節(jié)點,m更新為m+1,重新進行步驟(1-2);
(1-6)、如果a的第m+1位地址為1,則先判斷:如果y是a,則將w添加為a的m+1級鄰居節(jié)點;如果y不是a,則不將w添加為a的m+1級鄰居,然后將S中的節(jié)點更新為black中的節(jié)點,m更新為m+1,重新進行步驟(3-1-2)。
(2)、G中的所有路徑g=a-b-c1-c2-…-ck-d,k為正整數(shù),G為a的i級路由表,cj為a的i級節(jié)點,,j為整數(shù),d為網(wǎng)絡(luò)中a、b、c以外的其他節(jié)點,路徑g表示G中確定的從a開始經(jīng)由鄰居節(jié)點b到達網(wǎng)絡(luò)中任意節(jié)點d的路徑,若同時滿足d為黑節(jié)點、b和cj為白節(jié)點、cj無黑色鄰居節(jié)點,將d添加為a的i+1級節(jié)點,用f表示G中任意一個節(jié)點,對于任意cj,不存在f使得f到cj的距離小于g中cj到d的距離或cj到a的距離。
(3)、任意選擇b的一個黑色鄰居節(jié)點e1和ck的一個黑色鄰居節(jié)點e2,對e1和e2的地址前綴按位進行異或運算,如果異或運算值最小,則e1為a。
進一步根據(jù)本發(fā)明所述一種移動ad-hoc網(wǎng)絡(luò)中的路由方法,確定節(jié)點a的i級路由表中必須包含的路徑,按如下步驟進行:
(1)、規(guī)劃源路徑,源路徑是節(jié)點根據(jù)物理網(wǎng)絡(luò)規(guī)劃的路徑,路徑根據(jù)節(jié)點到其它節(jié)點的物理距離從近到遠確定,源路徑包括從本節(jié)點到與本節(jié)點最大共用前綴最長的節(jié)點的路徑和從本節(jié)點到其它與本節(jié)點同級的節(jié)點的路徑;
(2)、規(guī)劃其他路徑,節(jié)點a生成表Gb,對于a的每一個已連鄰居b,設(shè)節(jié)點c為節(jié)點a除b外的任一鄰居節(jié)點,表Gb 為節(jié)點a通過融合從所有的c處收到的關(guān)于c的鄰居節(jié)點信息而生成的表,節(jié)點a生成Gb的一個子集Goutb,Gb中所有的路徑p=b-a-c1-c2-...-ck-d,k為正整數(shù),cj為a的i級節(jié)點,,j為整數(shù),d為網(wǎng)絡(luò)中的其他節(jié)點,p表示從b開始經(jīng)由a到達網(wǎng)絡(luò)中任意節(jié)點d的路徑,若d為白節(jié)點,cj為黑節(jié)點,用f表示Gb中任意白節(jié)點,對任意cj,不存在f使f到cj的距離小于p中cj到d的距離或cj到b的距離,p添加到Goutb中;
(3)、當(dāng)a的i級路由表中有任何變化時,a生成一個新的包含a的i級鄰居節(jié)點信息的表發(fā)送給與a連接的a的所有i級鄰居節(jié)點。
進一步根據(jù)本發(fā)明所述一種移動ad-hoc網(wǎng)絡(luò)中的路由方法,建立節(jié)點間的通信路由,用S表示源節(jié)點,用D表示目的節(jié)點,用O表示網(wǎng)絡(luò)中其它任意節(jié)點,當(dāng)節(jié)點S發(fā)送消息給節(jié)點D時,節(jié)點S利用建立的各級路由表選擇滿足len(O,D)>len(S,D)的最近下一跳O,O以同樣的方式選擇最近下一跳,以此類推直到網(wǎng)絡(luò)中沒有與D有更大共用地址前綴的節(jié)點,路徑中每一個新節(jié)點和D都有更長的共用前綴,由此可避免回環(huán),網(wǎng)絡(luò)中沒有滿足len(O,D)>len(S,D)的下一跳O,S直接通過源路徑將消息發(fā)送給D;S向D發(fā)送消息的方式是,首先 S在S的i級路由表中找到O,S確認(rèn)S的i級路由表中規(guī)劃好的路徑t1-t2-...-tk-D(tj為S的i級節(jié)點,,k為正整數(shù),j為整數(shù))并發(fā)送消息給t1,t1收到消息后按照路徑t1-t2-...-tk-b將消息發(fā)送給D,S向t1發(fā)消息采用的路徑和同級節(jié)點tj之間的通信路徑都是源路徑。
本發(fā)明與現(xiàn)存協(xié)議相比具有以下優(yōu)點:
1、本發(fā)明中相連節(jié)點會主動互相發(fā)送本節(jié)點路由表更新消息,使得當(dāng)某節(jié)點路由表變化時,路由表中儲存的過時路徑(即不再使用的路徑)會被及時消除,可降低網(wǎng)絡(luò)中通信開銷;
2、本發(fā)明中節(jié)點和必要的鄰居節(jié)點相連,可實現(xiàn)任意兩節(jié)點的通信;
3、本發(fā)明中節(jié)點只融合必要鄰居節(jié)點的路由信息,減小了路由表的大小。
附圖說明
圖1 為本發(fā)明所述的一種移動ad-hoc網(wǎng)絡(luò)中的路由方法的流程圖;
圖2為本發(fā)明中連接必要節(jié)點的流程圖。
具體實施方式
以下結(jié)合附圖對本發(fā)明的技術(shù)方案進行詳細的描述,以使本領(lǐng)域技術(shù)人員能夠更加清楚的理解本發(fā)明的方案,但并不因此限制本發(fā)明的保護范圍。
本發(fā)明所述一種移動ad-hoc網(wǎng)絡(luò)中的路由方法,包括以下步驟:
步驟(1)、分配節(jié)點的地址前綴。
在每個節(jié)點接入網(wǎng)絡(luò)前隨機為該節(jié)點分配唯一不變的n比特地址前綴,,n為正整數(shù),地址前綴附在節(jié)點IP地址之前。
比較網(wǎng)絡(luò)中兩個節(jié)點的地址前綴,從第一位起連續(xù)相同的前綴稱為兩節(jié)點的共用前綴,如果是從第一位起連續(xù)相同的所有前綴,則稱為兩節(jié)點的最大共用前綴。用p、q表示網(wǎng)絡(luò)中任意兩個節(jié)點,p和q的地址前綴長度為n(n為正整數(shù))比特,用len(p, q)表示p和q地址前綴的最大共用前綴長度。假設(shè)p和q的地址前綴分別是01100和01000,則len(01100, 01000) = 2,因為最大共用前綴是01。
如果,i為正整數(shù),則網(wǎng)絡(luò)中的所有節(jié)點q組成關(guān)于p的i級網(wǎng)絡(luò),同時稱p的i級網(wǎng)絡(luò)中的節(jié)點為p的i級節(jié)點。由于每個節(jié)點的地址前綴唯一不變,所以當(dāng)len (p,q) =n時,p和q為同一個節(jié)點,因此p最多有n-1級節(jié)點。
為便于描述和理解,本發(fā)明引入根據(jù)節(jié)點地址前綴將節(jié)點分為黑白兩色的方式描述網(wǎng)絡(luò),具體方法是,如果i級節(jié)點的第i+1位地址前綴為0,則將此節(jié)點標(biāo)為白節(jié)點;如果i級節(jié)點的第i+1位地址前綴為1,則將此節(jié)點標(biāo)為黑節(jié)點。
步驟(2)、建立節(jié)點與鄰居節(jié)點的連接。
設(shè)網(wǎng)絡(luò)中節(jié)點的地址前綴長度為n比特,在未對節(jié)點進行具體分級前,網(wǎng)絡(luò)中所有節(jié)點性質(zhì)相同,針對一個節(jié)點討論所得結(jié)果可應(yīng)用于網(wǎng)絡(luò)中所有節(jié)點。
為方便討論,用a代表當(dāng)前節(jié)點,用b表示a的任一鄰居節(jié)點。當(dāng)a加入網(wǎng)絡(luò)后,a將a的地址前綴發(fā)給網(wǎng)絡(luò)中與a相鄰的所有節(jié)點。a的鄰居節(jié)點 b收到a的地址前綴后向a回復(fù)b的地址前綴。a收到b的地址前綴后根據(jù)len(a, b)將b分級,如果,i為正整數(shù),則b為a的i級節(jié)點。當(dāng)a將a所有的鄰居節(jié)點分級后,a與a的1級節(jié)點建立1級連接,并向上順延與a的第2級、第3級……第n-1級節(jié)點建立相應(yīng)級別的連接,即a與a的i級節(jié)點建立的連接的級別為i。
判定a和a的i級節(jié)點b連接的依據(jù)是:a向b發(fā)送a所有i級鄰居節(jié)點的信息,同時b向a發(fā)送b所有i級鄰居節(jié)點的信息。i級鄰居節(jié)點的信息包括i級鄰居節(jié)點的地址前綴以及通過這些i級鄰居節(jié)點到達網(wǎng)絡(luò)中其他節(jié)點的路徑。
步驟(3)、建立節(jié)點a的i級路由表。當(dāng)a和a的i級鄰居節(jié)點連接后,a將從與a連接的所有i級鄰居節(jié)點處收到節(jié)點的信息,生成新表G,即a的i級路由表。由上述得a的i級路由表中包括a的i級鄰居節(jié)點的信息,具體是a的i級鄰居節(jié)點的地址前綴和通過這些i級鄰居節(jié)點到達網(wǎng)絡(luò)中其他節(jié)點的路徑。所述確定a的i級路由表,按如下步驟進行:
(3-1)、在a的鄰居節(jié)點中確定必須與a連接的節(jié)點。若b為黑節(jié)點,則將b添加為a的i+1級鄰居;若b為白節(jié)點,則建立b的黑色鄰居節(jié)點間的各級連接,連接級別從1開始,最大到n-1,但未必每一級連接都存在。
結(jié)合附圖2,建立b黑色鄰居節(jié)點間的各級連接,按如下步驟:
(3-1-1)、用集合S表示節(jié)點b的所有黑色鄰居節(jié)點,確定S中每個節(jié)點的1級鄰居節(jié)點,并建立節(jié)點與該節(jié)點的1級鄰居節(jié)點間的連接。由S中每個節(jié)點與其i級節(jié)點建立連接的級別為i得,此時建立的是1級連接,用表示已建連接的級別,則此時m為1。
(3-1-2)、將S中的節(jié)點分為black和white兩個集合,如果節(jié)點的第m+1位地址前綴為0,則此節(jié)點屬于white,如果節(jié)點的第m+1位地址前綴為1,則此節(jié)點屬于black。
(3-1-3)、如果white或者black中沒有節(jié)點,說明節(jié)點集合S中沒有節(jié)點在m+1級連接,則執(zhí)行步驟(3-2),否則執(zhí)行(3-1-4)。
(3-1-4)、取white中的節(jié)點和black中的節(jié)點兩個一組按位對地址前綴進行異或運算,異或運算值為n位二進制比特串,比較得到的所有異或運算值得到異或運算值最小的一組節(jié)點(異或運算值最小的節(jié)點可能不止一組,對所有使得異或運算值最小的節(jié)點組都按后文敘述的方法操作)。用w表示兩節(jié)點中屬于white的節(jié)點,用y表示兩節(jié)點中屬于black的節(jié)點。
異或運算的算法是:0和0異或為0,1和1異或為0,1和0異或為1,0和1異或為1。對兩節(jié)點地址前綴按位進行異或運算,異或運算值越小說明兩節(jié)點地址的最大共用前綴越長。
(3-1-5)、如果a的第m+1位地址為0,則先判斷:如果w是a,則將y添加為a的m+1級鄰居節(jié)點;如果w不是a,則不將y添加為a的m+1級鄰居。然后將S中的節(jié)點更新為white中的節(jié)點,m更新為m+1,重新進行步驟(3-1-2);
如果a的第m+1位地址為1,則先判斷:如果y是a,則將w添加為a的m+1級鄰居節(jié)點;如果y不是a,則不將w添加為a的m+1級鄰居。然后將S中的節(jié)點更新為black中的節(jié)點,m更新為m+1,重新進行步驟(3-1-2)。
(3-2)、考慮G中的所有路徑g=a-b-c1-c2-…-ck-d(k為正整數(shù)),G為a的i級路由表,cj為a的i級節(jié)點,,j為正整數(shù),d為網(wǎng)絡(luò)中a、b、c以外的其他節(jié)點,路徑g表示G中確定的從a開始經(jīng)由鄰居節(jié)點b到達網(wǎng)絡(luò)中任意節(jié)點d的路徑。當(dāng)滿足下列條件時將d添加為a的i+1級節(jié)點,即:d為黑節(jié)點、b和cj為白節(jié)點、cj無黑色鄰居節(jié)點。用f表示G中任意一個節(jié)點,對于任意cj,不存在f使得f到cj的距離小于g中cj到d的距離或cj到a的距離。
(3-3)、任意選擇b的一個黑色鄰居節(jié)點e1和ck的一個黑色鄰居節(jié)點e2,對e1和e2的地址前綴按位進行異或運算,如果異或運算值最小,則e1為a。
步驟(4)、確定節(jié)點a的i級路由表中必須包含的路徑,具體包括以下步驟:
(4-1)、規(guī)劃源路徑,源路徑是節(jié)點根據(jù)物理網(wǎng)絡(luò)規(guī)劃的路徑,路徑根據(jù)節(jié)點到其它節(jié)點的物理距離從近到遠確定。源路徑包括從本節(jié)點到與本節(jié)點最大共用前綴最長的節(jié)點的路徑和從本節(jié)點到其它與本節(jié)點同級的節(jié)點的路徑。
(4-2)、規(guī)劃其他路徑,節(jié)點a生成表Gb。對于a的每一個已連鄰居b,設(shè)節(jié)點c為節(jié)點a除b外的任一鄰居節(jié)點,表Gb為節(jié)點a通過融合從所有的c處收到的關(guān)于c的鄰居節(jié)點信息的表生成的表;節(jié)點a生成Gb的一個子集Goutb??紤]Gb中所有的路徑p=b-a-c1-c2-...-ck-d(k為正整數(shù)),cj為a的i級節(jié)點,,j為整數(shù),d為網(wǎng)絡(luò)中的其它節(jié)點,p表示從b開始經(jīng)由a到達網(wǎng)絡(luò)中任意節(jié)點d的路徑。當(dāng)下列條件成立時將p添加到Goutb中:d為白節(jié)點;cj為黑節(jié)點;用f表示Gb中任意白節(jié)點,對任意cj,不存在f使f到cj的距離小于p中cj到d的距離或cj到b的距離。
(4-3)、當(dāng)a的i級路由表中有任何變化時,a生成一個新的包含a的i級鄰居節(jié)點信息的表發(fā)送給與a連接的a的所有i級鄰居節(jié)點。
步驟(5)、建立節(jié)點間的通信路由。
用S表示源節(jié)點,用D表示目的節(jié)點,用O表示網(wǎng)絡(luò)中其它任意節(jié)點。當(dāng)節(jié)點S發(fā)送消息給節(jié)點D時,節(jié)點S利用步驟(3)建立的各級路由表選擇滿足len(O,D)> len(S,D)的最近下一跳O,O以同樣的方式選擇最近下一跳,以此類推直到網(wǎng)絡(luò)中沒有與D有更大共用地址前綴的節(jié)點。路徑中每一個新節(jié)點和D都有更長的共用前綴,由此可避免回環(huán)。如果網(wǎng)絡(luò)中沒有滿足len(O,D)>len(S,D)的下一跳O,S直接通過源路徑將消息發(fā)送給D。
S向D發(fā)送消息的方式是:首先 S在S的i級路由表中找到O,S確認(rèn)S的i級路由表中規(guī)劃好的路徑t1-t2-...-tk-D(tj為S的i級節(jié)點,,k為正整數(shù),j為整數(shù))并發(fā)送消息給t1,t1收到消息后按照路徑t1-t2-...-tk-b將消息發(fā)送給D。S向t1發(fā)消息采用的路徑和同級節(jié)點tj之間的通信路徑都是源路徑。
以上僅是對本發(fā)明的優(yōu)選實施方式進行了描述,并不將本發(fā)明的技術(shù)方案限制于此,本領(lǐng)域技術(shù)人員在本發(fā)明的主要技術(shù)構(gòu)思的基礎(chǔ)上所作的任何變化都屬于本發(fā)明所要保護的技術(shù)范疇,本發(fā)明具體的保護范圍以權(quán)利要求書的記載為準(zhǔn)。