一種基于復雜網(wǎng)絡中心性的vanet分簇路由方法
【專利摘要】本發(fā)明提出了一種基于復雜網(wǎng)絡中心性的VANET分簇路由方法,包括以下步驟:根據(jù)復雜網(wǎng)絡中心性推舉出簇頭節(jié)點,建立簇頭;網(wǎng)絡中所有簇頭節(jié)點根據(jù)收到的確認信息挑選骨干路徑,骨干路徑上的節(jié)點設(shè)為骨干節(jié)點,建立骨干網(wǎng);骨干網(wǎng)建立以后,簇頭和骨干節(jié)點的所有鄰居被設(shè)置為成員節(jié)點,簇結(jié)構(gòu)形成;骨干節(jié)點和簇頭通過Hello報文對簇結(jié)構(gòu)進行維護和解散;根據(jù)相應的規(guī)則進行數(shù)據(jù)包的轉(zhuǎn)發(fā)。本發(fā)明通過骨干節(jié)點拓展了簇頭的控制范圍,減少了簇的總數(shù),提高了分簇算法的性能,在分組到達率、控制開銷等方面的表現(xiàn)更好,更適用于車載自組網(wǎng)環(huán)境。
【專利說明】
-種基于復雜網(wǎng)絡中心性的VANET分簇路由方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明屬于車輛自組織網(wǎng)絡無線通信技術(shù)領(lǐng)域,特別是一種基于復雜網(wǎng)絡中屯、性 的VANET分簇路由方法。
【背景技術(shù)】
[0002] 車載自組網(wǎng)(Vehicular Ad hoc化twork,VA肥T)是智能交通系統(tǒng)的重要組成部 分,是移動自組網(wǎng)(Mobile Ad hoc化twork,MA肥T)技術(shù)在交通領(lǐng)域的新應用。在VA肥T環(huán) 境中,車輛之間、車輛與路邊通信設(shè)施之間通過無線連接進行信息交互。通過VANET提供的 通信平臺,車輛不但能獲取鄰近車輛的位置、速度、加速度、方向等信息,從而最大程度避免 碰撞等交通事故,還能準確獲悉人眼視距W外的實時交通狀況,從而便于選擇最優(yōu)行車路 線,避免擁堵。VA肥T還可W提供Internet接入服務,增強旅行舒適性。VA肥T技術(shù)在交通安 全、輔助駕駛、車聯(lián)網(wǎng)、物聯(lián)網(wǎng)等領(lǐng)域都有很廣闊的應用前景。
[0003] 傳統(tǒng)的MA肥T路由方法W節(jié)約能源為主要目標,并且是基于網(wǎng)絡節(jié)點作低速無約 束運動的前提而設(shè)計的。然而VANET具有高動態(tài)拓撲、頻繁的網(wǎng)絡分割、節(jié)點運動可預測等 獨特性質(zhì),因此傳統(tǒng)的MANET路由方法無法適用于能源充足、節(jié)點高速運動的VANET環(huán)境。此 夕h城市場景中存在路邊建筑物的遮擋、無線電干擾等外部因素的影響,VANET節(jié)點之間的 通信鏈路會出現(xiàn)頻繁中斷的現(xiàn)象,因此基于城市場景建立端到端的路由往往會產(chǎn)生較大的 控制開銷,并且路由的有效期很短。目前VA肥T分簇路由方法方面的研究較熱。相比于其他 類型的路由方法,分簇路由方法可將網(wǎng)絡拓撲變化的影響限制在局部范圍內(nèi),減少了參與 路由計算節(jié)點數(shù)目。簇頭將成員節(jié)點的數(shù)據(jù)進行融合然后再轉(zhuǎn)發(fā),減少了數(shù)據(jù)通信量。此外 分簇結(jié)構(gòu)有利于對網(wǎng)絡進行管理和同步,具有較好的可擴展性和服務發(fā)現(xiàn)功能。但是在 VANET環(huán)境中,現(xiàn)有分簇路由方法存在簇結(jié)構(gòu)不穩(wěn)定、控制開銷較大、延遲大等突出問題亟 待解決。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的目的在于提供一種結(jié)構(gòu)穩(wěn)定、數(shù)據(jù)到達率高、延遲小、控制開銷小的基于 復雜網(wǎng)絡中屯、性的VANET分簇路由方法。
[0005] 實現(xiàn)本發(fā)明目的的技術(shù)解決方案為:一種基于復雜網(wǎng)絡中屯、性的VA肥T分簇路由 方法,包括如下步驟:
[0006] 步驟1,網(wǎng)絡中的全部節(jié)點發(fā)起簇頭推舉過程,建立簇頭:設(shè)定推舉過程的局部捜 索范圍為1,對任意節(jié)點a,首先進行深度為1的廣度優(yōu)先捜索,記錄下捜索到的鄰居節(jié)點及 鄰居節(jié)點的中屯、性;所有鄰居節(jié)點構(gòu)成集合S,a節(jié)點保存自己與S中節(jié)點的所有路徑,然后 將a節(jié)點自己的中屯、性與S中鄰居節(jié)點中屯、性進行對比,如果存在中屯、性比a節(jié)點中屯、性大 的鄰居節(jié)點,則a節(jié)點對集合S中中屯、性最大的鄰居節(jié)點發(fā)出確認信息,同意該中屯、性最大 的鄰居節(jié)點作為簇頭,如果不存在,則a節(jié)點本身設(shè)為簇頭;
[0007] 步驟2,網(wǎng)絡中所有簇頭節(jié)點根據(jù)收到的確認信息挑選骨干路徑,建立骨干網(wǎng):向 簇頭節(jié)點h發(fā)送確認信息的鄰居節(jié)點構(gòu)成候選骨干節(jié)點集B;計算h節(jié)點與B中節(jié)點之間的所 有路徑的中屯、性,選出m條中屯、性最大的路徑作為簇的骨干路徑,骨干路徑上的節(jié)點作為簇 的骨干節(jié)點,最終簇頭和骨干節(jié)點構(gòu)成骨干網(wǎng);
[0008] 步驟3,建立成員節(jié)點:骨干網(wǎng)建立W后,簇頭和骨干節(jié)點的所有鄰居被設(shè)置為成 員節(jié)點,當一個節(jié)點是不同簇的骨干節(jié)點的共同鄰居時,該節(jié)點隨機選擇其中的一個簇加 入;
[0009] 步驟4,骨干節(jié)點和簇頭通過化11〇報文對簇結(jié)構(gòu)進行維護和解散;
[0010] 步驟5,基于所形成的簇結(jié)構(gòu)進行數(shù)據(jù)包的轉(zhuǎn)發(fā),完成VANET分簇路由。
[0011] 進一步地,步驟1所述網(wǎng)絡中的全部節(jié)點發(fā)起簇頭推舉過程,建立簇頭,具體如下:
[0012] (1.1)發(fā)出簇頭聲明:所有不在簇內(nèi)的節(jié)點,周期性地向鄰居節(jié)點廣播簇頭聲明報 文,收到簇頭聲明報文的節(jié)點將做出兩個判斷:一、判斷自己是否為簇頭或骨干路徑上的節(jié) 點;二、判斷自己與上一跳車輛之間的鏈路生存時間是否大于規(guī)定的闊值Tthre,當其中任意 一個判斷為是時,將簇頭聲明報文丟棄不做處理,當兩個判斷均為否時對此簇頭聲明報文 做出如下處理:
[0013] ①判斷簇頭聲明報文是否已達規(guī)定的最大跳數(shù)1,如果已經(jīng)到達1,簇頭聲明報文 不再進行轉(zhuǎn)發(fā),反之將簇頭聲明報文轉(zhuǎn)發(fā)給鄰居節(jié)點,為了避免簇頭聲明報文在網(wǎng)絡里形 成環(huán)路,規(guī)定簇頭聲明報文只能轉(zhuǎn)發(fā)給該簇頭聲明報文儲存路徑W外的節(jié)點,即只能沿著 簡單路徑轉(zhuǎn)發(fā);
[0014] ②節(jié)點將簇頭聲明報文源節(jié)點的中屯、性與自己的中屯、性進行對比,如果自己的中 屯、性較高則發(fā)出駁回報文,駁回源節(jié)點建立簇頭的請求,如果自己的中屯、性較低則根據(jù)如 下的方法將簇頭聲明報文存儲下來:首先建立一個最佳源即候選簇頭節(jié)點的簇頭聲明報文 隊列,隊列中儲存了來自當前最佳源的簇頭聲明報文,當最佳源再次收到新的簇頭聲明報 文時,將此簇頭聲明報文的源節(jié)點與自己儲存的最佳源節(jié)點進行對比,如果新收到的簇頭 聲明報文的源節(jié)點中屯、性更高,則清空舊的最佳源的簇頭聲明報文隊列,將新收到的簇頭 聲明報文加入隊列,若新收到的簇頭聲明報文源節(jié)點恰是最佳源,則將此簇頭聲明報文添 加至隊列末尾;
[0015] (1.2)發(fā)出駁回報文:當一個節(jié)點收到比自己中屯、性低的節(jié)點發(fā)來的簇頭聲明報 文時,該節(jié)點通過駁回報文對簇頭聲明報文予W駁回,通過簇頭聲明報文和駁回報文的交 互最終選擇出中屯、性最高的節(jié)點作為簇頭;當節(jié)點收到駁回報文后,在停止聲明窗口期TSAW 內(nèi)停止簇頭的建立,等待其他節(jié)點形成簇,如果經(jīng)過一個停止聲明窗口期TsAwW后還是不能 加入簇中,則此節(jié)點重啟簇頭的聲明過程即返回步驟(1.1),否則進入下一步;
[0016] (1.3)發(fā)送同意報文:對于收到簇頭聲明報文的節(jié)點,從記錄下第一個聲明報文時 算起,直到經(jīng)歷一個聲明報文的監(jiān)聽窗口期TahwW后,該節(jié)點分析所有收到的簇頭聲明報 文,然后向最佳源發(fā)送同意報文;:
[0017] (1.4)簇頭建立:如果節(jié)點發(fā)出簇頭聲明報文后的一段等待建立窗口期Twee內(nèi),沒 有收到任何駁回報文,該節(jié)點成為簇頭。
[0018] 進一步地,步驟2所述網(wǎng)絡中所有簇頭節(jié)點根據(jù)收到的確認信息挑選骨干,建立骨 干網(wǎng),具體步驟如下:
[0019] (2.1)對等待建立窗口期Twee內(nèi)收到的全部同意報文進行分析,選擇其中度中屯、性 最大的m條路徑作為簇的骨干路徑;
[0020] (2.2)簇頭節(jié)點挑選出骨干路徑之后,沿著骨干路徑發(fā)送通知報文,通知報文攜帶 了簇頭路由表的完整拷貝,收到通知報文的節(jié)點將自己的網(wǎng)絡身份設(shè)置為骨干節(jié)點,然后 建立本簇的名片信息,最終簇頭和骨干節(jié)點構(gòu)成骨干網(wǎng),骨干網(wǎng)建立W后,簇頭節(jié)點繼續(xù)按 照時間周期Τιι重復發(fā)送通知報文,用來維持簇頭與骨干節(jié)點的聯(lián)系,并且更新本簇的名片 信息。
[0021] 進一步地,步驟3所述建立成員節(jié)點的過程如下:
[0022] 簇頭節(jié)點和骨干節(jié)點的所有一階鄰居構(gòu)成簇的成員節(jié)點集合,如果一個節(jié)點是兩 個W上不同簇的骨干節(jié)點的共同一階鄰居,那么該節(jié)點隨機挑選一個簇,并成為成員節(jié)點; 如果有不屬于任何簇的剩余節(jié)點,那么運些剩余節(jié)點之間重新發(fā)起分簇過程,即重復步驟1 ~3,直到所有節(jié)點全部加入簇之中,最終形成簇頭帶動骨干節(jié)點共同控制成員節(jié)點的層次 結(jié)構(gòu)。
[0023] 進一步地,步驟4所述骨干節(jié)點和簇頭通過化11〇報文對簇結(jié)構(gòu)進行維護和解散, 具體過程如下:
[0024] 骨干節(jié)點通過化11〇報文維持與簇頭的聯(lián)系,位于骨干路徑末端的骨干節(jié)點,按照 時間周期Τηι產(chǎn)生化11〇報文,并通過骨干路徑向簇頭轉(zhuǎn)發(fā),Hello報文的作用包括兩個:一、 驗證簇結(jié)構(gòu)的完整性;二、通知簇頭節(jié)點有哪些成員節(jié)點新加入或離開了簇;每個收到 Hello報文的沿途骨干節(jié)點都把自己的鄰居信息加入到當前的化11〇報文中,簇頭節(jié)點收到 來自骨干路徑的Hello報文后,更新該骨干路徑控制下的全部簇成員的名單,當簇頭節(jié)點在 簇頭有效時間窗口期TCHV收不到骨干路徑的化11〇報文時,認為骨干網(wǎng)的鏈路已經(jīng)斷裂,停 止通知報文的周期性發(fā)送,該簇頭節(jié)點并將自己的身份設(shè)置為普通節(jié)點,簇頭消失;同理, 當骨干節(jié)點在展臂時間窗口期TCMV收不到來自簇頭的通知報文時,該骨干節(jié)點將自己的身 份設(shè)置為普通節(jié)點,并且不再參與化11〇報文的轉(zhuǎn)發(fā),從而脫離簇。
[0025] 進一步地,步驟5所述基于所形成的簇結(jié)構(gòu)進行數(shù)據(jù)包的轉(zhuǎn)發(fā),完成VA肥T分簇路 由,具體如下:
[0026] (5.1)待轉(zhuǎn)發(fā)數(shù)據(jù)的節(jié)點將數(shù)據(jù)包交付給自己的簇頭,收到數(shù)據(jù)包后查詢路由表, 更新數(shù)據(jù)包數(shù)據(jù)結(jié)構(gòu)中的Go for gateway和Go for destination兩個bool值的內(nèi)容,Go for gateway的值為真表示本簇內(nèi)無法送達,需要通過網(wǎng)關(guān)轉(zhuǎn)發(fā);Go for destination的值 為真表示在本簇內(nèi)即可完成交付;
[0027] (5.2)骨干節(jié)點通過運兩個bool值的類型判斷將數(shù)據(jù)包轉(zhuǎn)發(fā)給網(wǎng)關(guān)或是直接在簇 內(nèi)交付;如果數(shù)據(jù)需要網(wǎng)關(guān)轉(zhuǎn)發(fā),則骨干網(wǎng)將數(shù)據(jù)包送至網(wǎng)關(guān)節(jié)點,網(wǎng)關(guān)節(jié)點收到數(shù)據(jù)包 后,轉(zhuǎn)發(fā)給相應的目的簇的骨干節(jié)點,該骨干節(jié)點再將數(shù)據(jù)包轉(zhuǎn)發(fā)至簇頭;
[00%] (5.3)重復步驟(5.1)~(5.2),直到數(shù)據(jù)包送至目的節(jié)點。
[0029]本發(fā)明與現(xiàn)有技術(shù)相比,其顯著優(yōu)點為:(1)基于復雜網(wǎng)絡中屯、性的VANET分簇路 由方法推舉中屯、性高的節(jié)點作為簇頭,與簇頭之間的通信鏈路維持時間較長的節(jié)點作為簇 頭的骨干節(jié)點,形成簇頭協(xié)同骨干節(jié)點共同控制簇成員的簇結(jié)構(gòu)。該路由方法通過骨干節(jié) 點拓展了簇頭的控制范圍,減少了簇的總數(shù),提高了分簇算法的性能。與經(jīng)典路由方法 (A0DV、LCA等)的性能相比,該路由方法在分組到達率、控制開銷等方面的表現(xiàn)更好,更適用 于車載自組網(wǎng)環(huán)境。
【附圖說明】
[0030] 圖1是本發(fā)明基于復雜網(wǎng)絡中屯、性的VANET分簇路由方法的流程圖。
[0031] 圖2是聲明報文的數(shù)據(jù)結(jié)構(gòu)圖。
[0032] 圖3是最佳源信息數(shù)據(jù)結(jié)構(gòu)圖。
[0033] 圖4是駁回報文數(shù)據(jù)結(jié)構(gòu)圖。
[0034] 圖5是同意報文數(shù)據(jù)結(jié)構(gòu)圖。
[0035] 圖6是名片信息的建立與通知報文的轉(zhuǎn)發(fā)流程圖。
[0036] 圖7是通知報文數(shù)據(jù)結(jié)構(gòu)圖。
[0037] 圖8是名片信息數(shù)據(jù)結(jié)構(gòu)圖。
[0038] 圖9是多級簇結(jié)構(gòu)示意圖。
[0039] 圖10是化11〇報文數(shù)據(jù)結(jié)構(gòu)圖。
[0040] 圖11是路由表信息結(jié)構(gòu)圖。
[0041] 圖12是路由信息的建立的流程圖。
[0042] 圖13是數(shù)據(jù)包數(shù)據(jù)結(jié)構(gòu)圖。
[0043] 圖14是數(shù)據(jù)包傳遞過程示意圖。
【具體實施方式】
[0044] 下面結(jié)合附圖及具體實施例對本發(fā)明作進一步詳細說明。
[0045] 本發(fā)明基于復雜網(wǎng)絡中屯、性的VA肥T分簇路由方法,包括如下步驟:
[0046] 步驟1,根據(jù)復雜網(wǎng)絡中屯、性,網(wǎng)絡中的全部節(jié)點發(fā)起簇頭推舉過程,建立簇頭。網(wǎng) 絡中的全部節(jié)點發(fā)起簇頭推舉過程:設(shè)定推舉過程的局部捜索范圍為1,對任意節(jié)點a,首先 進行深度為1的廣度優(yōu)先捜索,記錄下捜索到的鄰居節(jié)點及鄰居節(jié)點的中屯、性(定義為節(jié)點 的度);所有鄰居節(jié)點構(gòu)成集合S,a節(jié)點保存自己與S中節(jié)點的所有路徑,然后將a節(jié)點自己 的中屯、性與S中鄰居節(jié)點中屯、性進行對比,如果存在中屯、性比a節(jié)點中屯、性大的鄰居節(jié)點, 則a節(jié)點對集合S中中屯、性最大的鄰居節(jié)點發(fā)出確認信息,同意該中屯、性最大的鄰居節(jié)點作 為簇頭,如果不存在,則a節(jié)點本身設(shè)為簇頭;具體步驟如下:
[0047] (1.1)發(fā)出簇頭聲明。所有不在簇內(nèi)的節(jié)點,周期性地向鄰居節(jié)點廣播簇頭聲明報 文化ead Announce Packet ,ΗΑΡ)。收到聲明的節(jié)點將做出兩個判斷:一、判斷自己是否為簇 頭或骨干路徑上的節(jié)點;二、判斷自己與上一跳車輛之間的鏈路生存時間是否大于協(xié)議規(guī) 定的闊值Tthre(即通過GPS與電子導航系統(tǒng)判斷Tthre時間內(nèi)兩車的距離是否會超出最大通信 距離)。當其中任意一個判斷為是時,將聲明報文丟棄,不做處理。當兩個判斷均為否時對此 報文做出如下處理:
[004引①判斷簇頭聲明報文是否已達規(guī)定的最大跳數(shù)1,如果已經(jīng)到達1,簇頭聲明報文 不再進行轉(zhuǎn)發(fā),反之將簇頭聲明報文轉(zhuǎn)發(fā)給鄰居節(jié)點,為了避免簇頭聲明報文在網(wǎng)絡里形 成環(huán)路,規(guī)定簇頭聲明報文只能轉(zhuǎn)發(fā)給該簇頭聲明報文儲存路徑W外的節(jié)點,即只能沿著 簡單路徑轉(zhuǎn)發(fā);
[0049]②節(jié)點將簇頭聲明報文源節(jié)點的中屯、性與自己的中屯、性進行對比,如果自己的中 屯、性較高則發(fā)出駁回報文,駁回源節(jié)點建立簇頭的請求,如果自己的中屯、性較低則根據(jù)如 下的方法將簇頭聲明報文存儲下來:首先建立一個最佳源即候選簇頭節(jié)點的簇頭聲明報文 隊列,隊列中儲存了來自當前最佳源的簇頭聲明報文,當最佳源再次收到新的簇頭聲明報 文時,將此簇頭聲明報文的源節(jié)點與自己儲存的最佳源節(jié)點進行對比,如果新收到的簇頭 聲明報文的源節(jié)點中屯、性更高,則清空舊的最佳源的簇頭聲明報文隊列,將新收到的簇頭 聲明報文加入隊列,若新收到的簇頭聲明報文源節(jié)點恰是最佳源,則將此簇頭聲明報文添 加至隊列末尾
[0050] 收到聲明報文處理的流程圖如圖1所示,聲明報文的數(shù)據(jù)結(jié)構(gòu)設(shè)計如圖2所示,最 佳源信息數(shù)據(jù)結(jié)構(gòu)設(shè)計如圖3所示。
[0051] (1.2)發(fā)出駁回報文。當一個節(jié)點收到比自己中屯、性低的節(jié)點發(fā)來的聲明報文時, 該節(jié)點通過駁回報文(Reject Packet,RP)對聲明報文予W駁回。通過聲明報文和駁回報文 的交互最終選擇出中屯、性最高的節(jié)點作為簇頭。當節(jié)點收到駁回報文后,在停止聲明窗口 期TsAw(Stop Announce Window)時間窗口內(nèi)停止簇頭的建立,等待其他節(jié)點形成簇。如果經(jīng) 過一個停止聲明窗口期TsAwW后還是不能加入簇中,則此節(jié)點重啟簇頭的聲明過程即返回 步驟(1.1),否則進入下一步;
[0052] 駁回報文數(shù)據(jù)結(jié)構(gòu)設(shè)計如圖4所示。
[0053] (1.3)發(fā)送同意報文。對于收到聲明報文的節(jié)點,從記錄下第一個聲明報文時算 起,直到其經(jīng)歷一個聲明報文的監(jiān)聽窗口期TAHw(Announce化aring Window) W后,該節(jié)點 分析所有收到的聲明報文,然后向最佳源發(fā)送同意報文。同意報文數(shù)據(jù)結(jié)構(gòu)包含兩個整形 變量,兩個數(shù)組。其數(shù)據(jù)結(jié)構(gòu)設(shè)計如圖5所示。一個數(shù)組用于儲存同意報文的轉(zhuǎn)發(fā)路徑,另一 個數(shù)組用W儲存轉(zhuǎn)發(fā)路徑上節(jié)點的全部鄰居節(jié)點。由于兩點之間可能存在多條路徑,每個 聲明報文都代表了最佳源節(jié)點到當前節(jié)點之間的一條路徑,所W當前節(jié)點可能存儲了多個 來自最佳源的聲明報文。對于當前節(jié)點隊列中的每個聲明報文,都要生成一個與之相對應 的同意報文。同意報文的轉(zhuǎn)發(fā)路徑是其對應聲明報文的反向路徑。同意報文在轉(zhuǎn)發(fā)的過程 中,將路徑上的節(jié)點的全部鄰居節(jié)點記錄到數(shù)組中,通過數(shù)組將每條路徑所能控制的節(jié)點 匯總至簇頭,簇頭利用運些信息挑選骨干,建立骨干路徑。
[0054] 步驟4:簇頭建立。如果節(jié)點發(fā)出聲明報文后的一段等待建立窗口期Twcc(Wait to 化eate Cluster)內(nèi),沒有收到任何駁回報文,該節(jié)點成為簇頭。
[0055] 步驟2,網(wǎng)絡中所有簇頭節(jié)點根據(jù)收到的確認信息挑選骨干節(jié)點,建立骨干網(wǎng):向 簇頭節(jié)點h發(fā)送確認信息的鄰居節(jié)點構(gòu)成候選骨干節(jié)點集B。計算h節(jié)點與B中節(jié)點之間的所 有最短路徑的中屯、性(定義為路徑上所有節(jié)點的度的),從中選出m條中屯、性最大的路徑作 為簇的骨干路徑,骨干路徑上的節(jié)點作為簇的骨干節(jié)點,具體如下:
[0056] (2.1)對窗口期Twee內(nèi)收到的全部同意報文進行分析,選擇其中度中屯、性最大的m 條路徑作為簇的骨干路徑,偽代碼如表1所示:
[0化7] 表1
[0化引
[0060] (2.2)簇頭節(jié)點挑選出骨干路徑之后,沿著骨干路徑發(fā)送通知報文,通知報文攜帶 了簇頭路由表的完整拷貝。收到通知報文的節(jié)點將自己的網(wǎng)絡身份設(shè)置為骨干節(jié)點,然后 建立本簇的名片信息,最終簇頭和骨干節(jié)點構(gòu)成骨干網(wǎng)。骨干網(wǎng)建立W后,簇頭節(jié)點繼續(xù)按 照時間周期Tii(Inform Interval)重復發(fā)送通知報文,用來維持簇頭與骨干節(jié)點的聯(lián)系,并 且更新本簇的名片信息。圖6展示了 2號節(jié)點通過通知報文的展臂得知自己不是運條展臂的 末端,繼續(xù)將通知報文傳遞給下面5號節(jié)點的過程。圖7和圖8分別是通知報文數(shù)據(jù)結(jié)構(gòu)圖和 名片信息數(shù)據(jù)結(jié)構(gòu)圖。
[0061] 步驟3,建立成員節(jié)點:骨干網(wǎng)建立W后,簇頭和骨干節(jié)點的所有鄰居被設(shè)置為成 員節(jié)點,當一個節(jié)點是不同簇的骨干節(jié)點的共同鄰居時,該節(jié)點隨機選擇其中的一個簇加 入;具體過程如下:
[0062] 簇頭節(jié)點和骨干節(jié)點的所有一階鄰居構(gòu)成簇的成員節(jié)點集合,如果一個節(jié)點是兩 個W上不同簇的骨干節(jié)點的共同一階鄰居,那么該節(jié)點隨機挑選一個簇,并成為成員節(jié)點; 如果有不屬于任何簇的剩余節(jié)點,那么運些剩余節(jié)點之間重新發(fā)起分簇過程,即重復步驟1 ~3,直到所有節(jié)點全部加入簇之中,最終形成簇頭帶動骨干節(jié)點共同控制成員節(jié)點的層次 結(jié)構(gòu),簇結(jié)構(gòu)形成。
[0063] 最終建立的多級簇結(jié)構(gòu)示意圖如圖9所示。
[0064] 步驟4,骨干節(jié)點和簇頭通過化11〇報文對簇結(jié)構(gòu)進行維護和解散,具體過程如下:
[0065] 骨干節(jié)點通過化11〇報文維持與簇頭的聯(lián)系,位于骨干路徑末端的骨干節(jié)點,按照 時間周期Thi化ello Interval)產(chǎn)生化11〇報文,并通過骨干路徑向簇頭轉(zhuǎn)發(fā),Hello報文的 作用包括兩個:一、驗證簇結(jié)構(gòu)的完整性;二、通知簇頭節(jié)點有哪些成員節(jié)點新加入或離開 了簇;每個收到化11〇報文的沿途骨干節(jié)點都把自己的鄰居信息加入到當前的化11〇報文 中,簇頭節(jié)點收到來自骨干路徑的化11〇報文后,更新該骨干路徑控制下的全部簇成員的名 單,當簇頭節(jié)點在簇頭有效時間窗口期TcmKCluster Head Validity)收不到骨干路徑的 Hello報文時,認為骨干網(wǎng)的鏈路已經(jīng)斷裂,停止通知報文的周期性發(fā)送,該簇頭節(jié)點并將 自己的身份設(shè)置為普通節(jié)點,簇頭消失;同理,當骨干節(jié)點在展臂時間窗口期TcMv(Cluster Mainstay Validity)收不到來自簇頭的通知報文時,該骨干節(jié)點將自己的身份設(shè)置為普通 節(jié)點,并且不再參與化11〇報文的轉(zhuǎn)發(fā),從而脫離簇。
[0066] 化11〇報文的數(shù)據(jù)結(jié)構(gòu)設(shè)計如圖10所示。
[0067] 步驟5,基于所形成的簇結(jié)構(gòu)進行數(shù)據(jù)包的轉(zhuǎn)發(fā),完成VANET分簇路由,具體如下: [006引a、路由表的建立與更新
[0069] 如果一個節(jié)點可W同時直接聯(lián)系到至少兩個屬于不同簇的骨干節(jié)點,那它就是協(xié) 議規(guī)定的網(wǎng)關(guān)節(jié)點。網(wǎng)關(guān)節(jié)點根據(jù)時間周期TGEii(Gateway Exchange Information Interval)交換不同簇的骨干節(jié)點的名片信息,其算法偽代碼如表2所示:
[0070] 表 2
[0073] 網(wǎng)關(guān)節(jié)點將鄰居骨干節(jié)點的名片信息進行封裝,生成網(wǎng)關(guān)報文,然后網(wǎng)關(guān)節(jié)點將
[0071]
[0072] 來自不同簇的網(wǎng)關(guān)報文相互交換。交換后的網(wǎng)關(guān)報文沿骨干路徑轉(zhuǎn)發(fā)至對應的簇頭,通過 運種信息交換機制,簇頭可W得知其他簇內(nèi)的路由信息,從而建立起網(wǎng)絡全局路由表。路由 表信息結(jié)構(gòu)設(shè)計如圖11所示。
[0074]簇頭中存儲了一張全局路由表,用于記錄到達其他節(jié)點的路由信息。圖12展示了 簇頭節(jié)點建立與更新路由信息的流程。對于某個節(jié)點i,簇頭首先判斷i節(jié)點是否在本簇內(nèi), 如果是,將路由表中i節(jié)點的簇內(nèi)標識置為真。如果否,則將簇內(nèi)標識置為假,然后分析來自 其他簇的網(wǎng)關(guān)報文中的路由信息,選擇其中距i節(jié)點最近的簇作為下一跳的轉(zhuǎn)發(fā)地址,如果 距離相等,則選取其中時間戳最新的。協(xié)議規(guī)定了路由信息的有效期TRivUouting Information化lidity),超出有效期的路由信息會失效。簇頭節(jié)點將網(wǎng)絡中全部節(jié)點的路 由信息組合起來,從而形成一張整個網(wǎng)絡的路由表。
[00巧]b、數(shù)據(jù)包傳遞過程
[0076] (5.1)待轉(zhuǎn)發(fā)數(shù)據(jù)的節(jié)點將數(shù)據(jù)包交付給自己的簇頭。收到數(shù)據(jù)包后查詢路由表, 更新數(shù)據(jù)包數(shù)據(jù)結(jié)構(gòu)中的Go for gateway和Go for destination兩個bool值的內(nèi)容。Go for gateway的值為真表示本簇內(nèi)無法送達,需要通過網(wǎng)關(guān)轉(zhuǎn)發(fā)。Go for destination的值 為真表示在本簇內(nèi)即可完成交付。
[0077] (5.2)骨干節(jié)點通過運兩個bool值的類型判斷將數(shù)據(jù)包轉(zhuǎn)發(fā)給網(wǎng)關(guān)或是直接在簇 內(nèi)交付。如果數(shù)據(jù)需要網(wǎng)關(guān)轉(zhuǎn)發(fā),則骨干網(wǎng)將數(shù)據(jù)包送至網(wǎng)關(guān)節(jié)點。網(wǎng)關(guān)節(jié)點收到數(shù)據(jù)包 后,轉(zhuǎn)發(fā)給相應的目的簇的骨干節(jié)點,骨干節(jié)點再將數(shù)據(jù)包至其簇頭;
[0078] (5.3)重復步驟(5.1)~(5.2),直到數(shù)據(jù)包送至目的節(jié)點。
[0079] 數(shù)據(jù)包數(shù)據(jù)結(jié)構(gòu)圖見圖13,數(shù)據(jù)包傳遞過程如圖14所示。
[0080] 實施例1
[0081] 本發(fā)明的方法測試:
[0082] 本仿真實驗采取visual studio 2015軟件,使用C++語言編寫。在windows 2003server系統(tǒng)的服務器平臺上運算。實驗選取一個的模型地圖,地圖中設(shè)置橫向11條,縱 向11條的雙向街道,同方向街道之間的間隔為W(1000m),街道交叉的地方為交通路口,其中 共有121個路口。相關(guān)參數(shù)設(shè)定為:仿真區(qū)域大小L=1000mX 1000m,節(jié)點數(shù)量N= 100,節(jié)點 速度v = 15m/s,數(shù)據(jù)包生成率P = 1.01,節(jié)點通信范圍r = 1500m。
[0083] 通過實驗仿真分析,該路由的骨干網(wǎng)的鏈路持續(xù)時間闊值Tthre存在一個最佳取值 范圍,在此范圍內(nèi)分組到達率與端到端延遲都可W到達最佳值。在本實驗的參數(shù)下,Tthre的 最佳值約在50S-150S之間。
[0084] 本實驗中共對比了 Ξ種路由協(xié)議在模擬環(huán)境下的表現(xiàn):基于中屯、性的分簇路由方 法、按需矢量路由方法(A0DV)、最小ID分簇路由方法化CA)。實驗結(jié)果證明本發(fā)明提出的方 法在分組到達率、控制開銷等方面的表現(xiàn)好于A0DV與LCA路由方法更適用于車載自組網(wǎng)環(huán) 境。
【主權(quán)項】
1. 一種基于復雜網(wǎng)絡中心性的VANET分簇路由方法,其特征在于,包括如下步驟: 步驟1,網(wǎng)絡中的全部節(jié)點發(fā)起簇頭推舉過程,建立簇頭:設(shè)定推舉過程的局部搜索范 圍為1,對任意節(jié)點a,首先進行深度為1的廣度優(yōu)先搜索,記錄下搜索到的鄰居節(jié)點及鄰居 節(jié)點的中心性;所有鄰居節(jié)點構(gòu)成集合S,a節(jié)點保存自己與S中節(jié)點的所有路徑,然后將a節(jié) 點自己的中心性與S中鄰居節(jié)點中心性進行對比,如果存在中心性比a節(jié)點中心性大的鄰居 節(jié)點,貝 1Ja節(jié)點對集合S中中心性最大的鄰居節(jié)點發(fā)出確認信息,同意該中心性最大的鄰居 節(jié)點作為簇頭,如果不存在,則a節(jié)點本身設(shè)為簇頭; 步驟2,網(wǎng)絡中所有簇頭節(jié)點根據(jù)收到的確認信息挑選骨干路徑,建立骨干網(wǎng):向簇頭 節(jié)點h發(fā)送確認信息的鄰居節(jié)點構(gòu)成候選骨干節(jié)點集B;計算h節(jié)點與B中節(jié)點之間的所有路 徑的中心性,選出m條中心性最大的路徑作為簇的骨干路徑,骨干路徑上的節(jié)點作為簇的骨 干節(jié)點,最終簇頭和骨干節(jié)點構(gòu)成骨干網(wǎng); 步驟3,建立成員節(jié)點:骨干網(wǎng)建立以后,簇頭和骨干節(jié)點的所有鄰居被設(shè)置為成員節(jié) 點,當一個節(jié)點是不同簇的骨干節(jié)點的共同鄰居時,該節(jié)點隨機選擇其中的一個簇加入; 步驟4,骨干節(jié)點和簇頭通過Hello報文對簇結(jié)構(gòu)進行維護和解散; 步驟5,基于所形成的簇結(jié)構(gòu)進行數(shù)據(jù)包的轉(zhuǎn)發(fā),完成VANET分簇路由。2. 根據(jù)權(quán)利要求1所述的基于復雜網(wǎng)絡中心性的VANET分簇路由方法,其特征在于,步 驟1所述網(wǎng)絡中的全部節(jié)點發(fā)起簇頭推舉過程,建立簇頭,具體如下: (1.1) 發(fā)出簇頭聲明:所有不在簇內(nèi)的節(jié)點,周期性地向鄰居節(jié)點廣播簇頭聲明報文, 收到簇頭聲明報文的節(jié)點將做出兩個判斷:一、判斷自己是否為簇頭或骨干路徑上的節(jié)點; 二、判斷自己與上一跳車輛之間的鏈路生存時間是否大于規(guī)定的閾值T thre,當其中任意一 個判斷為是時,將簇頭聲明報文丟棄不做處理,當兩個判斷均為否時對此簇頭聲明報文做 出如下處理: ① 判斷簇頭聲明報文是否已達規(guī)定的最大跳數(shù)1,如果已經(jīng)到達1,簇頭聲明報文不再 進行轉(zhuǎn)發(fā),反之將簇頭聲明報文轉(zhuǎn)發(fā)給鄰居節(jié)點,為了避免簇頭聲明報文在網(wǎng)絡里形成環(huán) 路,規(guī)定簇頭聲明報文只能轉(zhuǎn)發(fā)給該簇頭聲明報文儲存路徑以外的節(jié)點,即只能沿著簡單 路徑轉(zhuǎn)發(fā); ② 節(jié)點將簇頭聲明報文源節(jié)點的中心性與自己的中心性進行對比,如果自己的中心性 較高則發(fā)出駁回報文,駁回源節(jié)點建立簇頭的請求,如果自己的中心性較低則根據(jù)如下的 方法將簇頭聲明報文存儲下來:首先建立一個最佳源即候選簇頭節(jié)點的簇頭聲明報文隊 列,隊列中儲存了來自當前最佳源的簇頭聲明報文,當最佳源再次收到新的簇頭聲明報文 時,將此簇頭聲明報文的源節(jié)點與自己儲存的最佳源節(jié)點進行對比,如果新收到的簇頭聲 明報文的源節(jié)點中心性更高,則清空舊的最佳源的簇頭聲明報文隊列,將新收到的簇頭聲 明報文加入隊列,若新收到的簇頭聲明報文源節(jié)點恰是最佳源,則將此簇頭聲明報文添加 至隊列末尾; (1.2) 發(fā)出駁回報文:當一個節(jié)點收到比自己中心性低的節(jié)點發(fā)來的簇頭聲明報文時, 該節(jié)點通過駁回報文對簇頭聲明報文予以駁回,通過簇頭聲明報文和駁回報文的交互最終 選擇出中心性最高的節(jié)點作為簇頭;當節(jié)點收到駁回報文后,在停止聲明窗口期TSM內(nèi)停止 簇頭的建立,等待其他節(jié)點形成簇,如果經(jīng)過一個停止聲明窗口期Ts?以后還是不能加入簇 中,則此節(jié)點重啟簇頭的聲明過程即返回步驟(1.1),否則進入下一步; (1.3) 發(fā)送同意報文:對于收到簇頭聲明報文的節(jié)點,從記錄下第一個聲明報文時算 起,直到經(jīng)歷一個聲明報文的監(jiān)聽窗口期TAfW以后,該節(jié)點分析所有收到的簇頭聲明報文, 然后向最佳源發(fā)送同意報文;: (1.4) 簇頭建立:如果節(jié)點發(fā)出簇頭聲明報文后的一段等待建立窗口期Twee內(nèi),沒有收 到任何駁回報文,該節(jié)點成為簇頭。3. 根據(jù)權(quán)利要求1所述的基于復雜網(wǎng)絡中心性的VANET分簇路由方法,其特征在于,步 驟2所述網(wǎng)絡中所有簇頭節(jié)點根據(jù)收到的確認信息挑選骨干,建立骨干網(wǎng),具體步驟如下: (2.1) 對等待建立窗口期Twee內(nèi)收到的全部同意報文進行分析,選擇其中度中心性最大 的m條路徑作為簇的骨干路徑; (2.2) 簇頭節(jié)點挑選出骨干路徑之后,沿著骨干路徑發(fā)送通知報文,通知報文攜帶了簇 頭路由表的完整拷貝,收到通知報文的節(jié)點將自己的網(wǎng)絡身份設(shè)置為骨干節(jié)點,然后建立 本簇的名片信息,最終簇頭和骨干節(jié)點構(gòu)成骨干網(wǎng),骨干網(wǎng)建立以后,簇頭節(jié)點繼續(xù)按照時 間周期Τπ重復發(fā)送通知報文,用來維持簇頭與骨干節(jié)點的聯(lián)系,并且更新本簇的名片信息。4. 根據(jù)權(quán)利要求1所述的基于復雜網(wǎng)絡中心性的VANET分簇路由方法,其特征在于,步 驟3所述建立成員節(jié)點的過程如下: 簇頭節(jié)點和骨干節(jié)點的所有一階鄰居構(gòu)成簇的成員節(jié)點集合,如果一個節(jié)點是兩個以 上不同簇的骨干節(jié)點的共同一階鄰居,那么該節(jié)點隨機挑選一個簇,并成為成員節(jié)點;如果 有不屬于任何簇的剩余節(jié)點,那么這些剩余節(jié)點之間重新發(fā)起分簇過程,即重復步驟1~3, 直到所有節(jié)點全部加入簇之中,最終形成簇頭帶動骨干節(jié)點共同控制成員節(jié)點的層次結(jié) 構(gòu)。5. 根據(jù)權(quán)利要求1所述的基于復雜網(wǎng)絡中心性的VANET分簇路由方法,其特征在于,步 驟4所述骨干節(jié)點和簇頭通過Hello報文對簇結(jié)構(gòu)進行維護和解散,具體過程如下: 骨干節(jié)點通過Hello報文維持與簇頭的聯(lián)系,位于骨干路徑末端的骨干節(jié)點,按照時間 周期THI產(chǎn)生Hello報文,并通過骨干路徑向簇頭轉(zhuǎn)發(fā),Hello報文的作用包括兩個:一、驗證 簇結(jié)構(gòu)的完整性;二、通知簇頭節(jié)點有哪些成員節(jié)點新加入或離開了簇;每個收到Hello報 文的沿途骨干節(jié)點都把自己的鄰居信息加入到當前的Hello報文中,簇頭節(jié)點收到來自骨 干路徑的Hello報文后,更新該骨干路徑控制下的全部簇成員的名單,當簇頭節(jié)點在簇頭有 效時間窗口期Tow收不到骨干路徑的Hello報文時,認為骨干網(wǎng)的鏈路已經(jīng)斷裂,停止通知 報文的周期性發(fā)送,該簇頭節(jié)點并將自己的身份設(shè)置為普通節(jié)點,簇頭消失;同理,當骨干 節(jié)點在展臂時間窗口期τ?收不到來自簇頭的通知報文時,該骨干節(jié)點將自己的身份設(shè)置 為普通節(jié)點,并且不再參與Hello報文的轉(zhuǎn)發(fā),從而脫離簇。6. 根據(jù)權(quán)利要求1所述的基于復雜網(wǎng)絡中心性的VANET分簇路由方法,其特征在于,步 驟5所述基于所形成的簇結(jié)構(gòu)進行數(shù)據(jù)包的轉(zhuǎn)發(fā),完成VANET分簇路由,具體如下: (5.1) 待轉(zhuǎn)發(fā)數(shù)據(jù)的節(jié)點將數(shù)據(jù)包交付給自己的簇頭,收到數(shù)據(jù)包后查詢路由表,更新 數(shù)據(jù)包數(shù)據(jù)結(jié)構(gòu)中的Go for gateway和Go for destination兩個bool值的內(nèi)容,Go forgateway的值為真表示本簇內(nèi)無法送達,需要通過網(wǎng)關(guān)轉(zhuǎn)發(fā);Go for destination的值 為真表示在本簇內(nèi)即可完成交付; (5.2) 骨干節(jié)點通過這兩個bool值的類型判斷將數(shù)據(jù)包轉(zhuǎn)發(fā)給網(wǎng)關(guān)或是直接在簇內(nèi)交 付;如果數(shù)據(jù)需要網(wǎng)關(guān)轉(zhuǎn)發(fā),則骨干網(wǎng)將數(shù)據(jù)包送至網(wǎng)關(guān)節(jié)點,網(wǎng)關(guān)節(jié)點收到數(shù)據(jù)包后,轉(zhuǎn) 發(fā)給相應的目的簇的骨干節(jié)點,該骨干節(jié)點再將數(shù)據(jù)包轉(zhuǎn)發(fā)至簇頭; (5.3)重復步驟(5.1)~(5.2),直到數(shù)據(jù)包送至目的節(jié)點。
【文檔編號】H04W84/18GK106060888SQ201610361674
【公開日】2016年10月26日
【申請日】2016年5月26日
【發(fā)明人】濮存來, 楊先霞, 李思源, 許忠奇
【申請人】南京理工大學