亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種基于WMN的礦井下多策略混合修復(fù)路由協(xié)議的制作方法

文檔序號(hào):11064750閱讀:427來源:國(guó)知局
一種基于WMN的礦井下多策略混合修復(fù)路由協(xié)議的制造方法與工藝
本發(fā)明涉及無線通信
技術(shù)領(lǐng)域
,尤其是一種基于WMN的礦井下多策略混合修復(fù)路由協(xié)議。
背景技術(shù)
:隨著煤炭開采和巷道掘進(jìn),煤礦井下采煤工作面和掘進(jìn)工作面在不斷推進(jìn),是個(gè)移動(dòng)的工作環(huán)境,且井下環(huán)境惡劣、開采條件復(fù)雜,有線通信網(wǎng)絡(luò)無法到達(dá)這些特殊區(qū)域,由于有線節(jié)點(diǎn)受其數(shù)據(jù)傳輸方式的限制,使得有線鏈路的布控范圍有限,容易受到環(huán)境因素的制約,且有線網(wǎng)絡(luò)的監(jiān)測(cè)點(diǎn)有限,無法全方位監(jiān)測(cè)這些區(qū)域的災(zāi)害信息。由于有線網(wǎng)絡(luò)的可拓展能力差,對(duì)故障應(yīng)對(duì)能力相對(duì)薄弱,難以應(yīng)對(duì)井下的復(fù)雜環(huán)境,因此需要無線通信。無線Mesh網(wǎng)絡(luò)(WirelessMeshNetwork,WMN)具有快速部署、組網(wǎng)靈活和擴(kuò)展性強(qiáng)等特點(diǎn),因此適用于一些環(huán)境比較復(fù)雜的區(qū)域,例如煤礦井下巷道監(jiān)測(cè)。井下的無線Mesh網(wǎng)絡(luò)的體系結(jié)構(gòu)可分成終端設(shè)備型、基礎(chǔ)設(shè)施/骨干型和混合型等三種類型,其中,終端設(shè)備型無線Mesh網(wǎng)絡(luò)僅由終端節(jié)點(diǎn)組成,終端節(jié)點(diǎn)除了可以發(fā)送數(shù)據(jù)外,還可以用于轉(zhuǎn)發(fā)數(shù)據(jù),自組網(wǎng)提供通信支撐。骨干型無線Mesh網(wǎng)絡(luò)中,網(wǎng)絡(luò)終端只能收發(fā)數(shù)據(jù),不能轉(zhuǎn)發(fā)來自其他節(jié)點(diǎn)的數(shù)據(jù),且任意兩個(gè)終端設(shè)備間不能直接通信,需用無線路由器作為節(jié)點(diǎn)間聯(lián)系的橋梁,實(shí)現(xiàn)彼此的數(shù)據(jù)交換以及無線寬帶接入。混合型無線Mesh網(wǎng)絡(luò)是一種結(jié)合了上述兩種網(wǎng)絡(luò)的特點(diǎn)形成的新型網(wǎng)絡(luò),且具備優(yōu)于兩者的良好性能。在混合型無線Mesh網(wǎng)絡(luò)中,終端設(shè)備可以用于轉(zhuǎn)發(fā)數(shù)據(jù),與無線路由器組成混合數(shù)據(jù)傳輸通路。當(dāng)鏈路出現(xiàn)故障時(shí),由于節(jié)點(diǎn)都具有數(shù)據(jù)轉(zhuǎn)發(fā)的功能,因此可以使用終端節(jié)點(diǎn)參與路由,配合網(wǎng)路中的無線路由節(jié)點(diǎn),使得路由修復(fù)更加靈活,魯棒性更好。由于井下巷道狹長(zhǎng)造成井下網(wǎng)絡(luò)多為帶狀拓?fù)浣Y(jié)構(gòu),網(wǎng)絡(luò)連接度低,魯棒性差。一旦因?yàn)槟承┰蛟斐陕酚晒?jié)點(diǎn)發(fā)生故障,則無線路由所覆蓋的終端節(jié)點(diǎn)都會(huì)與網(wǎng)絡(luò)脫離,造成通信故障,因此迫切需要一種更加適合該網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的路由算法。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的主要是針對(duì)煤礦井下復(fù)雜工作環(huán)境對(duì)通信質(zhì)量的要求,提出一種能夠快速修復(fù)網(wǎng)絡(luò)故障,增加網(wǎng)絡(luò)魯棒性,提高網(wǎng)絡(luò)通信能力的新型無線Mesh網(wǎng)絡(luò)路由協(xié)議。協(xié)議采用鏈路狀態(tài)預(yù)測(cè)機(jī)制及快速修復(fù)策略提高網(wǎng)絡(luò)性能。為了達(dá)到上述目的,本發(fā)明提出的技術(shù)方案為:一種基于WMN的礦井下多策略混合修復(fù)路由協(xié)議,該協(xié)議包括以下階段:(1)網(wǎng)絡(luò)初始化階段:各節(jié)點(diǎn)建立自己的鄰居表和路由表,并初始化路與表、鄰居表和HELLO數(shù)據(jù)包;路由表包括:路由的目的地、路由的序列號(hào)、路由的跳數(shù)、路由的下一跳地址、路由的下兩跳地址、路由的超時(shí)時(shí)間和路由的狀態(tài);任意一個(gè)節(jié)點(diǎn)的鄰居表包括該節(jié)點(diǎn)的鄰居節(jié)點(diǎn)IP地址以及該節(jié)點(diǎn)與各鄰居節(jié)點(diǎn)之間的鏈路連接質(zhì)量;所述鏈路連接質(zhì)量是用于衡量鏈路連接是否穩(wěn)定的變量;(2)節(jié)點(diǎn)間信息維護(hù)階段:各節(jié)點(diǎn)通過向相鄰節(jié)點(diǎn)發(fā)送HELLO數(shù)據(jù)包定期交換信息,維護(hù)自己的鄰居表;(3)路由建立階段:網(wǎng)絡(luò)中某節(jié)點(diǎn)需要發(fā)送數(shù)據(jù)包前,建立到達(dá)該數(shù)據(jù)包目的節(jié)點(diǎn)的路由;(4)路由維護(hù)階段:在路由維護(hù)階段,執(zhí)行以下步驟:(4-1)各節(jié)點(diǎn)初始化自己的鄰居表中的鏈路連接質(zhì)量為Q0;(4-2)各節(jié)點(diǎn)根據(jù)接收到HELLO報(bào)文數(shù)量或接收到的數(shù)據(jù)包接收功率更新自己鄰居表中鏈路連接質(zhì)量;(4-3)當(dāng)任意一節(jié)點(diǎn)K+1發(fā)現(xiàn)鄰居表中與上一跳節(jié)點(diǎn)K的鏈路連接質(zhì)量為0時(shí),該節(jié)點(diǎn)發(fā)起路由提前修復(fù),提前修復(fù)的步驟為:(4-3-1)節(jié)點(diǎn)K+1向節(jié)點(diǎn)K發(fā)送PROP_START報(bào)文,PROP_START報(bào)文中包括:TYPE字段、NC字段、DST字段、RT_SRC字段、RT_DST字段、Nn_IP字段、Nn_S字段;其中,TYPE字段記錄PROP_START報(bào)文的報(bào)文類型,NC字段記錄與節(jié)點(diǎn)K+1的鏈路連接質(zhì)量不為零的鄰居節(jié)點(diǎn)數(shù),DST字段記錄PROP_START報(bào)文發(fā)送的目的地,RT_SRC字段記錄待修復(fù)路由的源節(jié)點(diǎn),RT_DST字段記錄待修復(fù)路由的目的節(jié)點(diǎn),Nn_IP字段記錄節(jié)點(diǎn)K+1第n個(gè)鄰居節(jié)點(diǎn)的IP地址,Nn_S字段記錄節(jié)點(diǎn)K+1與第n個(gè)鄰居節(jié)點(diǎn)的之間的鏈路連接質(zhì)量值;(4-3-2)節(jié)點(diǎn)K根據(jù)接收到的ROP_START報(bào)文選擇自己與節(jié)點(diǎn)K+1共有的鄰居節(jié)點(diǎn)集合,在選出的鄰居節(jié)點(diǎn)集合中選擇對(duì)應(yīng)鏈路連接質(zhì)量值最大的節(jié)點(diǎn)C作為中間節(jié)點(diǎn);(4-3-3)將節(jié)點(diǎn)C插入節(jié)點(diǎn)K、K+1之間,形成鏈路K-C-K+1;插入完成后,節(jié)點(diǎn)K將鏈路的變化情況告知正向路由中K的上游節(jié)點(diǎn)和反向路由中K的下游節(jié)點(diǎn);(4-4)當(dāng)提前修復(fù)失敗時(shí),在斷路處進(jìn)行小范圍的快速修復(fù);快速修復(fù)包括以下步驟:當(dāng)節(jié)點(diǎn)K與下一跳節(jié)點(diǎn)K+1之間的鏈路發(fā)生斷裂時(shí),節(jié)點(diǎn)K以自己路由表中記錄的下兩跳節(jié)點(diǎn)K+2作為目的節(jié)點(diǎn)發(fā)送快速修復(fù)請(qǐng)求;節(jié)點(diǎn)K+2接收到節(jié)點(diǎn)K發(fā)送的快速修復(fù)請(qǐng)求后,向節(jié)點(diǎn)K回復(fù)一個(gè)接受請(qǐng)求的反饋報(bào)文,建立替換鏈路K—K+2;(4-5)若步驟(4-4)中節(jié)點(diǎn)K未能找到下兩跳節(jié)點(diǎn)作為目的節(jié)點(diǎn),則快速修復(fù)失??;此時(shí),進(jìn)行二次修復(fù),包括步驟:節(jié)點(diǎn)K沿反向路由向上游發(fā)送回溯消息,回溯消息每到達(dá)一個(gè)節(jié)點(diǎn)時(shí),會(huì)檢查當(dāng)前節(jié)點(diǎn)是否滿足修復(fù)條件;修復(fù)條件為:定義回溯消息回溯至節(jié)點(diǎn)A,節(jié)點(diǎn)A滿足2*hop1>hop2,且節(jié)點(diǎn)A的鄰居節(jié)點(diǎn)數(shù)量大于預(yù)設(shè)的閾值;其中,hop1表示節(jié)點(diǎn)A距離路由源節(jié)點(diǎn)的跳數(shù),hop2表示節(jié)點(diǎn)A距離路由目的節(jié)點(diǎn)的跳數(shù);若節(jié)點(diǎn)A滿足修復(fù)條件,則由節(jié)點(diǎn)A作為二次修復(fù)的發(fā)起節(jié)點(diǎn);若節(jié)點(diǎn)A不滿足修復(fù)條件,則回溯消息會(huì)沿著反向路由繼續(xù)向上游節(jié)點(diǎn)轉(zhuǎn)發(fā),直至回溯到源節(jié)點(diǎn)或下一個(gè)滿足條件的節(jié)點(diǎn)為止;滿足修復(fù)條件的節(jié)點(diǎn)發(fā)送以待修復(fù)路由的目的節(jié)點(diǎn)為目的地的RP_REQUEST包,當(dāng)目的節(jié)點(diǎn)或者有目的節(jié)點(diǎn)信息的節(jié)點(diǎn)接收到該請(qǐng)求包后回復(fù)RP_REPLY報(bào)文,建立替換鏈并修復(fù)路由。進(jìn)一步的,所述步驟(4)中,各節(jié)點(diǎn)根據(jù)接收到HELLO報(bào)文數(shù)量更新鏈路連接質(zhì)量的方法為:對(duì)于任意一個(gè)節(jié)點(diǎn)X,每當(dāng)X接收到一次鄰居節(jié)點(diǎn)發(fā)送的HELLO報(bào)文,則令節(jié)點(diǎn)X與對(duì)應(yīng)鄰居節(jié)點(diǎn)間的鏈路質(zhì)量值加1。進(jìn)一步的,所述步驟(4)中,各節(jié)點(diǎn)根據(jù)接收到的數(shù)據(jù)包接收功率更新鏈路連接質(zhì)量的方法為:對(duì)于任意一個(gè)節(jié)點(diǎn)X,當(dāng)X接收到一個(gè)鄰居節(jié)點(diǎn)所發(fā)送的連續(xù)N個(gè)數(shù)據(jù)包,且這N個(gè)數(shù)據(jù)包的接收功率逐漸增大,則令節(jié)點(diǎn)X與對(duì)應(yīng)鄰居節(jié)點(diǎn)間的鏈路質(zhì)量值加1;否則,令節(jié)點(diǎn)X與對(duì)應(yīng)鄰居節(jié)點(diǎn)間的鏈路質(zhì)量值加1;若X接收到一個(gè)鄰居節(jié)點(diǎn)所發(fā)送的連續(xù)M個(gè)數(shù)據(jù)包,且這M個(gè)數(shù)據(jù)包的接收功率均小于預(yù)設(shè)的閾值,則令節(jié)點(diǎn)X與對(duì)應(yīng)鄰居節(jié)點(diǎn)間的鏈路質(zhì)量值為0。進(jìn)一步的,所述步驟(4-3-3)中將節(jié)點(diǎn)C插入節(jié)點(diǎn)K和K+1之間形成鏈路K-C-K+1的方法為:節(jié)點(diǎn)K通過對(duì)節(jié)點(diǎn)K+1發(fā)送PROP_START_ACK報(bào)文將節(jié)點(diǎn)C插入到正向路由,節(jié)點(diǎn)K+1向節(jié)點(diǎn)K發(fā)送PROP_START_ACK_REPLY報(bào)文將節(jié)點(diǎn)C插入到反向路由;至此C節(jié)點(diǎn)插入到節(jié)點(diǎn)K和K+1中間的過程結(jié)束,形成鏈路K-C-K+1;所述PROP_START_ACK報(bào)文和PROP_START_ACK_REPLY報(bào)文的格式一致,均包括:TYPE字段、RT_SRC字段、RT_SRC_SEQNO字段、RT_DST字段、RT_DST_SEQNO字段、RT_DST_PRE字段、RT_SRC_HOPS字段和RT_DST_HOPS字段;其中,TYPE字段記錄報(bào)文類型;RT_SRC字段記錄待修復(fù)路由的源節(jié)點(diǎn)地址;RT_SRC_SEQNO字段記錄待修復(fù)路由的源節(jié)點(diǎn)的序列號(hào);RT_DST字段記錄待修復(fù)路由的目的節(jié)點(diǎn)地址;RT_DST_SEQNO字段記錄待修復(fù)路由的目的節(jié)點(diǎn)的序列號(hào);RT_DST_PRE字段記錄用于在建立路由時(shí)填充路由的下兩跳地址;RT_SRC_HOPS字段記錄現(xiàn)有路由到達(dá)源節(jié)點(diǎn)的跳數(shù);RT_DST_HOPS字段記錄現(xiàn)有路由到達(dá)目的節(jié)點(diǎn)的跳數(shù)。進(jìn)一步的,所述步驟(4-4)中,快速修復(fù)請(qǐng)求為RP_REQUEST報(bào)文,RP_REQUEST報(bào)文包括:TYPE字段、RQ_DST字段、RQ_PREHOP字段、RQ_REALDST_SEQNO字段、RQ_REAL_DST字段;其中,TYPE字段記錄RP_REQUEST報(bào)文的報(bào)文類型;RQ_DST字段記錄RP_REQUEST報(bào)文的目的地地址;RQ_PREHOP字段記錄RP_REQUEST報(bào)文到達(dá)的當(dāng)前節(jié)點(diǎn)的前一跳;RQ_REALDST_SEQNO字段記錄RP_REQUEST報(bào)文所到達(dá)的當(dāng)前節(jié)點(diǎn)知道的目的節(jié)點(diǎn)的最新序列號(hào);RQ_REAL_DST字段記錄節(jié)點(diǎn)K所在路由的目的節(jié)點(diǎn)地址;節(jié)點(diǎn)K+2向節(jié)點(diǎn)K回復(fù)的反饋報(bào)文為RP_REPLY報(bào)文,RP_REPLY報(bào)文包括:TYPE字段、RP_HOP_CN字段、RP_DST字段、RP_PREHOP字段、RP_REALDST_SEQNO字段、RP_REAL_DST字段;其中,TYPE字段記錄RP_REPLY報(bào)文的報(bào)文類型;RP_HOP_CN字段記錄RP_REPLY報(bào)文到達(dá)的當(dāng)前節(jié)點(diǎn)距離路由目的節(jié)點(diǎn)的跳數(shù);RP_DST字段記錄節(jié)點(diǎn)K+2的地址;RP_PREHOP字段記錄當(dāng)前節(jié)點(diǎn)在路由中的后兩跳節(jié)點(diǎn)的地址;RP_REALDST_SEQNO字段記錄當(dāng)前節(jié)點(diǎn)所知道的待修復(fù)路由的目的節(jié)點(diǎn)的序列號(hào),RP_REALDST_SEQNO字段在每次回復(fù)時(shí)更新為RP_REQUEST中的RQ_REALDST_SEQNO字段;RP_REAL_DST字段記錄待修復(fù)路由的目的節(jié)點(diǎn)地址。進(jìn)一步的,在所述步驟(2)中的節(jié)點(diǎn)間信息維護(hù)階段,各節(jié)點(diǎn)維護(hù)自己的鄰居表的方法為:節(jié)點(diǎn)通過HELLO數(shù)據(jù)包定期交換信息;若節(jié)點(diǎn)接收到另一個(gè)節(jié)點(diǎn)發(fā)來的HELLO消息,則會(huì)檢查鄰居表中是否存在該鄰居,若不存在則將其加入鄰居表中;節(jié)點(diǎn)定期檢查自己的鄰居表,若在預(yù)設(shè)的時(shí)間段內(nèi)沒有接收到鄰居表中的某個(gè)鄰居節(jié)點(diǎn)發(fā)來的HELLO消息,則認(rèn)為對(duì)應(yīng)的鏈路斷裂并將該鄰居刪除。進(jìn)一步的,所述步驟(3)中路由建立的方法為:當(dāng)某節(jié)點(diǎn)X想要發(fā)送數(shù)據(jù)時(shí),先檢查自己的路由表,如果沒有到達(dá)目的節(jié)點(diǎn)的路由,則節(jié)點(diǎn)X會(huì)廣播一個(gè)RREQ數(shù)據(jù)包;鄰居節(jié)點(diǎn)Y接收到RREQ數(shù)據(jù)包,會(huì)首先檢查先前是否已經(jīng)接收到該廣播,如果有,則直接丟棄RREQ數(shù)據(jù)包;如果沒有,則會(huì)檢查自己的路由表中是否包含到達(dá)RREQ數(shù)據(jù)包源節(jié)點(diǎn)的反向路由;如果鄰居節(jié)點(diǎn)Y的路由表中不存在到達(dá)源節(jié)點(diǎn)的反向路由,則建立到達(dá)源節(jié)點(diǎn)的反向路由,該反向路由用于返回路由應(yīng)答;然后節(jié)點(diǎn)Y檢查路由表中是否包含到達(dá)RREQ數(shù)據(jù)包目的節(jié)點(diǎn)的路由,如果有則生成路由回復(fù)RREP,并按照先前建立的反向路由返回RREP;如果沒有則繼續(xù)轉(zhuǎn)發(fā),直到到達(dá)RREQ數(shù)據(jù)包的目的節(jié)點(diǎn);RREP沿著反向路由轉(zhuǎn)發(fā),沿途的節(jié)點(diǎn)會(huì)將RREP中的序列號(hào)和跳數(shù)與自己的路由表比對(duì),如果RREP中的序列號(hào)較大,或者是序列號(hào)相同但跳數(shù)較小,則將自己的路由表中的序列號(hào)替換為RREP中的序列號(hào);當(dāng)RREP到達(dá)源節(jié)點(diǎn)時(shí),則建立正向路由,路由建立過程完畢。有益效果:本發(fā)明提出的技術(shù)方案使得鏈路在斷裂之前便已經(jīng)切換了路由,降低了鏈路斷裂修復(fù)的過程中所帶來的丟包和延時(shí),使得數(shù)據(jù)能夠穩(wěn)定持續(xù)的傳輸。同時(shí)在鏈路斷裂后首先采用了快速修復(fù)策略,由于該做法帶來的網(wǎng)絡(luò)開銷很小,因此在對(duì)網(wǎng)絡(luò)性能影響很小的情況下修復(fù)路由。而對(duì)于快速修復(fù)失敗后的二次修復(fù)策略,能夠盡量選擇成功率較高的節(jié)點(diǎn)進(jìn)行路由修復(fù),同時(shí)帶來的開銷較小。因此本協(xié)議對(duì)多種網(wǎng)絡(luò)拓?fù)涔收咸岢隽溯^為完善的解決方案,并能在對(duì)網(wǎng)絡(luò)影響較小的情況下有效的修復(fù)路由,對(duì)應(yīng)對(duì)復(fù)雜環(huán)境下的網(wǎng)絡(luò)有較好的效果,達(dá)到了本發(fā)明的目的。附圖說明圖1是實(shí)施例中提前修復(fù)階段鏈路斷裂前的網(wǎng)絡(luò)拓?fù)鋱D;圖2是實(shí)施例中提前修復(fù)階段鏈路斷裂時(shí)的網(wǎng)絡(luò)拓?fù)鋱D;圖3是實(shí)施例中快速修復(fù)階段鏈路斷裂前的網(wǎng)絡(luò)拓?fù)鋱D;圖4是實(shí)施例中快速修復(fù)階段鏈路斷裂時(shí)的網(wǎng)絡(luò)拓?fù)鋱D。具體實(shí)施方式本發(fā)明提出的路由協(xié)議包含四個(gè)部分:網(wǎng)絡(luò)初始化、節(jié)點(diǎn)間信息維護(hù)、路由建立和路由維護(hù)。步驟A,網(wǎng)絡(luò)初始化:步驟A-1,節(jié)點(diǎn)建立鄰居表、路由表,為其申請(qǐng)內(nèi)存空間。步驟A-2,初始化節(jié)點(diǎn)序列號(hào),設(shè)定HELLO消息定時(shí)器,鄰居緩存定時(shí)器、路由緩存定時(shí)器等相關(guān)定時(shí)器。步驟A-3,節(jié)點(diǎn)初始化HELLO數(shù)據(jù)包。步驟B,節(jié)點(diǎn)間信息維護(hù):節(jié)點(diǎn)通過HELLO數(shù)據(jù)包定期交換信息,維護(hù)鄰居表。若節(jié)點(diǎn)接收到節(jié)點(diǎn)發(fā)來的HELLO消息,則會(huì)檢查鄰居表中是否存在該鄰居,若不存在則將其加入鄰居表中。若長(zhǎng)時(shí)間沒有接收到鄰居表中的某個(gè)鄰居節(jié)點(diǎn)發(fā)來的HELLO消息,則認(rèn)為鏈路斷裂并將該鄰居刪除。步驟C,路由建立:當(dāng)某節(jié)點(diǎn)想要發(fā)送數(shù)據(jù)時(shí),如果沒有到達(dá)目的節(jié)點(diǎn)的路由,則會(huì)廣播一個(gè)路由請(qǐng)求分組稱為RREQ包。鄰居節(jié)點(diǎn)接收到該分組后,會(huì)首先檢查先前是否已經(jīng)接收到該廣播,如果有,則直接丟棄,如果沒有,則會(huì)檢查路由表中是否包含到達(dá)源節(jié)點(diǎn)的反向路由,如果不存在則建立反向路由,該反向路由用于返回路由應(yīng)答。然后檢查路由表是否包含到達(dá)目的節(jié)點(diǎn)的路由,如果有則生成路由回復(fù)RREP,并按照先前建立的反向路由返回該回復(fù)。如果沒有則繼續(xù)轉(zhuǎn)發(fā),直到到達(dá)目的節(jié)點(diǎn)。路由回復(fù)消息沿著反向路由轉(zhuǎn)發(fā),沿途的節(jié)點(diǎn)會(huì)將回復(fù)消息中的序列號(hào)和跳數(shù)與現(xiàn)有路由表比對(duì),其中序列號(hào)由RREQ和RREP消息維護(hù),代表了路由的新舊程度,序列號(hào)越大則路由越新。如果回復(fù)消息中的序列號(hào)較大,或者是序列號(hào)相同但跳數(shù)較小,則更新路由。當(dāng)路由回復(fù)消息到達(dá)源節(jié)點(diǎn)時(shí),則建立正向路由,路由建立過程完畢。步驟D,路由維護(hù):路由維護(hù)過程主要包括三個(gè)階段:避免鏈路斷裂的鏈路狀態(tài)檢測(cè)、小范圍的快速修復(fù)、初次修復(fù)失敗的二次修復(fù)。步驟D-1,避免鏈路斷裂的鏈路狀態(tài)檢測(cè)。定義:鏈路連接質(zhì)量,用于衡量鏈路連接是否穩(wěn)定的變量。其值由節(jié)點(diǎn)通信的接收功率以及HELLO消息獲得。步驟D-1-1,鏈路連接質(zhì)量的更新。節(jié)點(diǎn)間的鏈路連接質(zhì)量的更新方法分為兩種。第一種是通過HELLO報(bào)文。鄰居節(jié)點(diǎn)間往往會(huì)通過HELLO報(bào)文維持連通性,接受到HELLO報(bào)文的數(shù)量一定程度上能代表鄰居間的聯(lián)系是否頻繁,鏈路是否正常工作。假設(shè)有兩個(gè)節(jié)點(diǎn)X和Y,Y在某一時(shí)刻進(jìn)入了X的通信范圍,那么X和Y會(huì)接收到彼此廣播的HELLO報(bào)文,此時(shí)X和Y會(huì)將對(duì)方加入鄰居列表,并將其鏈路穩(wěn)定度初始化為10,此后,每接收到一次HELLO報(bào)文就會(huì)將對(duì)應(yīng)的鏈路穩(wěn)定度加1。第二種是節(jié)點(diǎn)之間的鏈路穩(wěn)定度會(huì)隨著數(shù)據(jù)包的接收功率實(shí)時(shí)更新。如果Y節(jié)點(diǎn)接收到的X節(jié)點(diǎn)的連續(xù)三個(gè)數(shù)據(jù)包的接收功率呈現(xiàn)上升趨勢(shì),則說明X與Y的通信質(zhì)量增強(qiáng),那么Y會(huì)將X的鏈路連接質(zhì)量加1,最大值是255。反之,如果接收功率呈現(xiàn)下降趨勢(shì),則表示鏈路質(zhì)量正在下降,Y將X的鏈路連接質(zhì)量減1,最小值是0。如果Y接收到的數(shù)據(jù)包的接收功率短時(shí)間內(nèi)一直處于閾值以下,則表示鏈路很可能會(huì)不穩(wěn)定,有斷裂的可能性,Y將X的鏈路連接質(zhì)量設(shè)為0。步驟D-1-2,不穩(wěn)定路由的提前修復(fù)。當(dāng)鏈路連接質(zhì)量為0時(shí)發(fā)起路由維護(hù)。在活躍數(shù)據(jù)鏈路A---B中,下游節(jié)點(diǎn)B發(fā)現(xiàn)上游鄰居節(jié)點(diǎn)A的鏈路連接質(zhì)量為0時(shí)會(huì)向A發(fā)送PROP_START包,其中PROP_START包記錄了B節(jié)點(diǎn)的鄰居信息。A節(jié)點(diǎn)接收到PROP_START包后首先會(huì)選擇出與B節(jié)點(diǎn)共有的鄰居節(jié)點(diǎn)集合,然后在該集合中選擇穩(wěn)定度最大的節(jié)點(diǎn)C作為中間節(jié)點(diǎn)。隨后A節(jié)點(diǎn)通過對(duì)B發(fā)送PROP_START_ACK消息將C節(jié)點(diǎn)插入到正向路由,B節(jié)點(diǎn)向A發(fā)送PROP_START_ACK_REPLY消息將C節(jié)點(diǎn)插入到反向路由。至此C節(jié)點(diǎn)插入到AB節(jié)點(diǎn)中間的過程結(jié)束并形成鏈路A-C-B。插入完成后由A節(jié)點(diǎn)發(fā)送HOPSINCREASE消息告知鏈路上下游變化情況。步驟D-2,小范圍的快速修復(fù);在鏈路提前修復(fù)失敗時(shí)會(huì)在斷路處的小范圍內(nèi)進(jìn)行代價(jià)較小的快速修復(fù),包括步驟:D-2-1,目的節(jié)點(diǎn)的選擇。本路由協(xié)議在路由表中添加了記錄下兩跳的NEXT_TWOHOP項(xiàng),并由控制報(bào)文進(jìn)行維護(hù)。假設(shè)存在鏈路A--B--C,C節(jié)點(diǎn)即為A節(jié)點(diǎn)的下兩跳節(jié)點(diǎn)。在進(jìn)行路由修復(fù)時(shí)A節(jié)點(diǎn)將以下兩跳節(jié)點(diǎn)C作為目的節(jié)點(diǎn)并發(fā)起路由修復(fù)請(qǐng)求。D-2-2,快速修復(fù)流程。本協(xié)議的改進(jìn)之處是在很小的范圍內(nèi)選擇出少量的節(jié)點(diǎn)參與新路由,替換斷鏈,原路由的剩余節(jié)點(diǎn)依舊參與路由。在進(jìn)行路由修復(fù)時(shí),發(fā)起路由修復(fù)的節(jié)點(diǎn)將廣播以NEXT_TWOHOP(下兩跳節(jié)點(diǎn))為目的地的RP_REQUEST報(bào)文,報(bào)文中的序列號(hào)由請(qǐng)求發(fā)起節(jié)點(diǎn)主動(dòng)更新。這樣做是因?yàn)樾迯?fù)成功后的鏈路往往會(huì)比先前的鏈路長(zhǎng),更新序列號(hào)會(huì)有效避免因鏈路長(zhǎng)度邊長(zhǎng)導(dǎo)致的目的節(jié)點(diǎn)不接受鏈路的現(xiàn)象,從而提高鏈路修復(fù)成功率。當(dāng)NEXT_TWOHOP節(jié)點(diǎn)接收到該報(bào)文時(shí)則會(huì)回復(fù)RP_REPLY報(bào)文,從而建立替換鏈并修復(fù)路由。步驟D-3:初次修復(fù)失敗的二次修復(fù)。如果在初次修復(fù)階段沒有找到合適的替換節(jié)點(diǎn),則會(huì)造成修復(fù)失敗。在本協(xié)議中,由于第一次修復(fù)占用的時(shí)間較短,所帶來的網(wǎng)絡(luò)負(fù)擔(dān)較小,因此加入二次修復(fù)是一種可行的方案。步驟D-3-1,二次修復(fù)節(jié)點(diǎn)的選取。一般情況下,節(jié)點(diǎn)分布較密集的區(qū)域,節(jié)點(diǎn)之間的鏈路可能會(huì)比較多,因此有更多的鏈路供節(jié)點(diǎn)選擇,在進(jìn)行路由修復(fù)時(shí),也會(huì)有更多的幾率修復(fù)成功。因此,可以將某節(jié)點(diǎn)鄰居數(shù)量的多少作為是否可以進(jìn)行修復(fù)的判據(jù)。由于初次修復(fù)很可能是因?yàn)樵摴?jié)點(diǎn)周圍節(jié)點(diǎn)分布較稀疏,難以找到合適的節(jié)點(diǎn)作為替換節(jié)點(diǎn),因此繼續(xù)選擇初次修復(fù)的節(jié)點(diǎn)往往不可取。初次修復(fù)不成功時(shí)會(huì)由初次修復(fù)節(jié)點(diǎn)向上游發(fā)送回溯消息?;厮莸南⒎Q為RECALL消息,RECALL消息到達(dá)每一個(gè)節(jié)點(diǎn)時(shí),會(huì)檢查當(dāng)前節(jié)點(diǎn)所處的位置是否滿足修復(fù)條件,修復(fù)條件有如下定義:設(shè)RECALL消息回溯至節(jié)點(diǎn)A,A節(jié)點(diǎn)距離源節(jié)點(diǎn)的跳數(shù)為hop1,距離目的節(jié)點(diǎn)的跳數(shù)為hop2,若2*hop1>hop2,則A節(jié)點(diǎn)會(huì)檢查自身的鄰居節(jié)點(diǎn)數(shù)量是否大于閾值。如果上述條件均滿足,則會(huì)由A節(jié)點(diǎn)發(fā)起第二次路由修復(fù),否則,回溯消息會(huì)沿著反向路由繼續(xù)向上游節(jié)點(diǎn)轉(zhuǎn)發(fā),直至回溯到源節(jié)點(diǎn)或下一個(gè)滿足條件的節(jié)點(diǎn)為止。步驟D-3-2,二次修復(fù)過程。在修復(fù)的目的地的選擇上,由于先前針對(duì)下兩跳的修復(fù)失敗了,如果仍然選擇初次修復(fù)的目的節(jié)點(diǎn),那么失敗的可能性比較大,因此,發(fā)起二次修復(fù)的節(jié)點(diǎn)會(huì)直接以原來路由的目的節(jié)點(diǎn)作為修復(fù)的目的地。選擇出二次修復(fù)節(jié)點(diǎn)后,在二次修復(fù)節(jié)點(diǎn)的修復(fù)手段上,選用改進(jìn)后的修復(fù)策略即發(fā)送RP_REQUEST包。這樣做能夠保證較高的修復(fù)成功率。因此二次修復(fù)的過程為,節(jié)點(diǎn)發(fā)送以待修復(fù)路由的目的節(jié)點(diǎn)為目的地的RP_REQUEST包,當(dāng)目的節(jié)點(diǎn)或者有目的節(jié)點(diǎn)信息的節(jié)點(diǎn)接收到該請(qǐng)求包后回復(fù)RP_REPLY報(bào)文,從而建立替換鏈并修復(fù)路由。下面結(jié)合附圖對(duì)本發(fā)明作更進(jìn)一步的說明。(一)提前修復(fù)階段:在圖1所示的網(wǎng)絡(luò)拓?fù)鋱D中,數(shù)據(jù)流的方向是n0到n4,在協(xié)議的路由建立階段由RREQ和RREP包建立起來的路由是n0---n1---n2---n4,n1是n2的鄰居上游節(jié)點(diǎn)。RREQ和RREP包的結(jié)構(gòu)如下所示。RREQ包的部分字段如下表所示:TYPERQ_HOP_CNRQ_SRCRQ_DST表中,各字段的含義為:TYPE:數(shù)據(jù)包類型RQ_HOP_CN:請(qǐng)求包所經(jīng)過的節(jié)點(diǎn)的個(gè)數(shù)RQ_SRC:發(fā)起路由請(qǐng)求的節(jié)點(diǎn)地址RQ_DST:路由請(qǐng)求的目的節(jié)點(diǎn)地址RREP包的部分字段如下表所示:TYPERP_HOP_CNRP_SRCRP_DST表中,各字段的含義為:TYPE:數(shù)據(jù)包類型RP_HOP_CN:距離目的節(jié)點(diǎn)的跳數(shù)RP_SRC:路由回復(fù)的目的節(jié)點(diǎn)RP_DST:路由回復(fù)的源節(jié)點(diǎn)某一時(shí)刻,n2開始逐漸向其所在位置的右下方移動(dòng),直至移出n1的通信范圍形成圖2的網(wǎng)絡(luò)拓?fù)?。在n2移動(dòng)的過程中會(huì)在某一時(shí)刻達(dá)到接收功率的閾值使得與n1的鏈路連接質(zhì)量為0,或者是因?yàn)檫h(yuǎn)離趨勢(shì)使鏈路連接質(zhì)量減為0。此時(shí)n2會(huì)啟動(dòng)路由提前修復(fù)流程避免鏈路斷裂。當(dāng)n2發(fā)現(xiàn)對(duì)n1的鄰居鏈路連接質(zhì)量變?yōu)?時(shí),因?yàn)榇藭r(shí)n1到n2的鏈路并未斷裂,n1和n2之間仍然能夠收發(fā)數(shù)據(jù),n2會(huì)向n1發(fā)送PROP_START報(bào)文以啟動(dòng)路由提前修復(fù)過程。在發(fā)送PROP_START報(bào)文時(shí),n2會(huì)首先篩選出鏈路連接質(zhì)量不為0的鄰居節(jié)點(diǎn)并填充PROP_START報(bào)文,然后向n1發(fā)送。當(dāng)n1接收到來自n2的PROP_START報(bào)文時(shí),會(huì)首先篩選出鄰居列表中穩(wěn)定度不為0的節(jié)點(diǎn)。然后n1將這些節(jié)點(diǎn)與報(bào)文共有的相對(duì)穩(wěn)定性高的節(jié)點(diǎn)選出并插入到n1和n2之間。PROP_START報(bào)文的結(jié)構(gòu)如下表所示:TYPENCDSTTR_SRCRT_DSTN1_IPN1_S…Nn_IPNn_S表中,各字段的含義為:TYPE:報(bào)文類型NC:相對(duì)穩(wěn)定度不為0的鄰居數(shù)量DST:PROP_START報(bào)文發(fā)送的目的地RT_SRC:待修復(fù)路由的源節(jié)點(diǎn)RT_DST:待修復(fù)路由的目的節(jié)點(diǎn)N1_IP:第一個(gè)鄰居節(jié)點(diǎn)的IP地址N1_S:第一個(gè)鄰居節(jié)點(diǎn)的相對(duì)穩(wěn)定度Nn_IP:第n個(gè)鄰居節(jié)點(diǎn)的IP地址Nn_S:第n個(gè)鄰居節(jié)點(diǎn)的相對(duì)穩(wěn)定度假設(shè)n1和n2的鄰居節(jié)點(diǎn)列表如下:在上述鄰居列表中,n2在給n1發(fā)送PROP_START報(bào)文時(shí),已經(jīng)將穩(wěn)定度為0的鄰居列表項(xiàng)過濾掉,因此,n1接收到的n2的鄰居列表信息如下表所示為:PROP_START消息中的鄰居列表經(jīng)計(jì)算可知,n1篩選出的共有節(jié)點(diǎn)為n3。篩選出共有節(jié)點(diǎn)后,會(huì)將其插入n1---n2鏈路中。首先,n1向n2發(fā)送消息,稱為PROP_START_ACK消息。PROP_START_ACK首先單播至n3。當(dāng)n3接收到來自n1的PROP_START_ACK消息后,會(huì)首先建立到達(dá)n4的路由,并將n2作為路由的下一跳,然后將PROP_START_ACK消息轉(zhuǎn)發(fā)給n2。當(dāng)n2接收到PROP_START_ACK消息后,n2會(huì)產(chǎn)生一個(gè)PROP_START_ACK_REPLY消息,該消息格式與PROP_START_ACK的消息格式一致,其發(fā)送與接收的過程是PROP_START_ACK的逆過程,除了方向相反外,別無二致。由此可見,PROP_START_ACK是將n3節(jié)點(diǎn)插入到了正向路由中,PROP_START_ACK_REPLY則是將n3節(jié)點(diǎn)插入到了反向路由中。PROP_START_ACK和PROP_START_ACK_REPLY報(bào)文的結(jié)構(gòu)如下表所示:TYPERT_SRCRT_SRC_SEQNORT_DSTRT_DST_SEQNORT_DST_PRERT_SRC_PRERT_SRC_HOPSRT_DST_HOPS表中各字段的含義為:TYPE:消息類型RT_SRC:待修復(fù)路由的源節(jié)點(diǎn)RT_SRC_SEQNO:待修復(fù)路由的源節(jié)點(diǎn)的序列號(hào)RT_DST:待修復(fù)路由的目的節(jié)點(diǎn)RT_DST_SEQNO:待修復(fù)路由的目的節(jié)點(diǎn)的序列號(hào)RT_DST_PRE:用于在建立路由時(shí)填充路由的下兩跳地址,該地址在本地修復(fù)時(shí)會(huì)用到RT_SRC_PRE:作用同RT_DST_PRE。RT_SRC_HOPS:記錄現(xiàn)有路由到達(dá)源節(jié)點(diǎn)的跳數(shù)RT_DST_HOPS:記錄現(xiàn)有路由到達(dá)目的節(jié)點(diǎn)的跳數(shù)。當(dāng)n1節(jié)點(diǎn)接收到了PROP_START_ACK_REPLY消息后,整個(gè)插入過程結(jié)束。但由此產(chǎn)生了一個(gè)問題:由于n3節(jié)點(diǎn)插入到了原先的鏈路中,使得原來鏈路的長(zhǎng)度增加,必須盡快告知新的鏈路中的其他節(jié)點(diǎn)鏈路正常的消息。經(jīng)過分析,無論是正向路由還是反向路由,鏈路增長(zhǎng)影響到的是上游節(jié)點(diǎn),因此,只需通知鏈路中正反向路由各自的上游節(jié)點(diǎn)即可。當(dāng)n1接收到了PROP_START_ACK_REPLY后,將會(huì)對(duì)正向路由和反向路由的上游節(jié)點(diǎn)發(fā)出HOPSINCREASE消息。HOPSINCREASE的消息格式如下表所示:TYPERT_DSTRT_SRCPRE_HOPN_HOPS表中,各字段的含義為:TYPE:消息類型RT_DST:待修復(fù)路由的目的節(jié)點(diǎn)RT_SRC:待修復(fù)路由的源節(jié)點(diǎn)PRE_HOP:用于維護(hù)路由表中的下兩跳N_HOPS:接收到該消息的節(jié)點(diǎn)距離目的節(jié)點(diǎn)的跳數(shù)。對(duì)于n1,n0---n1---n3---n2---n4為其正向路由,因此,節(jié)點(diǎn)插入影響到的是n0---n1鏈路,所以n1向n0發(fā)出HOPSINCREASE。HOPSINCREASE消息向上游節(jié)點(diǎn)轉(zhuǎn)發(fā),沿途經(jīng)過的各個(gè)節(jié)點(diǎn)都會(huì)將現(xiàn)有的路由表與HOPSINCREASE消息進(jìn)行對(duì)比,若HOPSINCREASE消息中路由跳數(shù)較大更新為該跳數(shù)。同理,n1也會(huì)向n4發(fā)出HOPSINCREASE消息用于更新n4---n0的反向路由。至此為止,在不穩(wěn)定的鏈路斷裂之前,便將原來的路由替換成了相對(duì)可靠的路由,避免了路由的斷裂。(二)快速修復(fù)階段:若提前修復(fù)未成功,則進(jìn)入快速修復(fù)階段。在快速修復(fù)階段,為了實(shí)現(xiàn)該修復(fù)算法,首先定義路由表如下表所示:RT_DSTRT_SEQNORT_HOPSRT_LAST_HOP_CNRT_NEXTHOPRT_NEXTTWOHOPRT_MODELRT_PCLISTRT_EXPIRERT_FLAGS路由表中各字段的含義為:RT_DST:路由的目的地RT_SEQNO:路由的序列號(hào)RT_HOPS:路由的跳數(shù)RT_NEXTHOP:路由的下一跳RT_NEXTTWOHOP:路由的下兩跳(新增)RT_EXPIRE:路由的超時(shí)時(shí)間RT_FLAGS:路由的狀態(tài)。圖3所示的網(wǎng)絡(luò)拓?fù)鋱D中,初始路由為n0---n1---n2---n3---n4,某一時(shí)刻n1---n2鏈路發(fā)生斷裂。當(dāng)n1發(fā)現(xiàn)鏈路發(fā)生了斷裂時(shí),n1會(huì)產(chǎn)生一個(gè)RP_REQUEST包將RQ_DST填充為NEXT_TWOHOP項(xiàng)的值即n3,將REAL_DST填充為待修復(fù)路由的目的節(jié)點(diǎn)即n4,RQ_PREHOP填充為當(dāng)前節(jié)點(diǎn)的前一跳節(jié)點(diǎn)。由于目的節(jié)點(diǎn)是n3節(jié)點(diǎn),在原路由中是其下下跳,相距2跳,為了提高修復(fù)的幾率,將RP_REQUEST的廣播跳數(shù)設(shè)置為3跳。RP_REQUEST報(bào)文的格式如下表所示:TYPERQ_HOP_CNRQ_DSTRQ_PREHOPRQ_REALDST_SEQNORQ_REAL_DST表中,各字段的含義為:TYPE:數(shù)據(jù)包類型RQ_DST:RP_REQUEST包的目的地RQ_PREHOP:RP_REQUEST包中記錄的當(dāng)前節(jié)點(diǎn)的前一跳,用于更新路由表中的后兩跳RQ_REALDST_SEQNO:記錄的是當(dāng)前節(jié)點(diǎn)所知道的目的節(jié)點(diǎn)的最新序列號(hào)。RQ_REAL_DST:RP_REQUEST中記錄的該節(jié)點(diǎn)所處的路由的目的節(jié)點(diǎn)。RP_REPLY報(bào)文的格式如下表所示:TYPERP_HOP_CNRP_DSTRP_PREHOPRP_REALDST_SEQNORP_REAL_DST表中,各字段的含義為:TYPE:數(shù)據(jù)包類型RP_HOP_CN:記錄到達(dá)路由目的地的跳數(shù),會(huì)隨著數(shù)據(jù)包到達(dá)的節(jié)點(diǎn)實(shí)時(shí)更新RP_DST:記錄RP_REQUEST包所到達(dá)的目的節(jié)點(diǎn)RQ_DST,在發(fā)送回復(fù)時(shí)初始化為當(dāng)前節(jié)點(diǎn)RP_PREHOP:用于更新新路由中的后兩跳地址RP_REALDST_SEQNO:當(dāng)前節(jié)點(diǎn)所知道的待修復(fù)路由的目的節(jié)點(diǎn)的序列號(hào),在回復(fù)時(shí)更新為RP_REQUEST中的RQ_REALDST_SEQNORP_REAL_DST:記錄待修復(fù)路由的目的節(jié)點(diǎn)。本協(xié)議在發(fā)送RP_REQUEST包的時(shí)候,n1會(huì)將其所擁有的n4的序列號(hào)加1,然后將其廣播出去,過程與RREQ的廣播過程大致相同。當(dāng)n3接收到RP_REQUEST包時(shí),會(huì)檢查RP_REQUEST包中RQ_DST_SEQNO字段,如果RQ_DST_SEQNO比現(xiàn)有序列號(hào)大,則更新。當(dāng)n3節(jié)點(diǎn)接收到該請(qǐng)求包時(shí)會(huì)發(fā)送回復(fù)信息RP_REPLYRP_REPLY包按照傳播RP_REQUEST包建立起的反向路由回到n1節(jié)點(diǎn),由于RP_REPLY包中的待修復(fù)路由的目的節(jié)點(diǎn)序列號(hào)比現(xiàn)有路由的大,因此會(huì)更新路由,新的路由為n0---n1---n5---n6---n3---n4,路由修復(fù)成功。由于在修復(fù)的過程中設(shè)定的廣播范圍為3跳,因此最終尋得的路由可能會(huì)比原來的路由長(zhǎng),因此必須告知上游節(jié)點(diǎn)路由長(zhǎng)度的變化。在這里采取的是發(fā)送HOPSINCREASE消息的方法來通知上游節(jié)點(diǎn)跳數(shù)的變化,由此保持前后跳數(shù)一致。(三)二次修復(fù)階段圖4所示的網(wǎng)絡(luò)拓?fù)鋱D中,初始路由為n0---n1---n2---n3---n4---n5---n6---n7---n8,在某一時(shí)刻,n5和n6之間的鏈路發(fā)生了斷裂,按照快速修復(fù)算法進(jìn)行第一次修復(fù)是失敗的,因此,n5節(jié)點(diǎn)會(huì)向上游節(jié)點(diǎn)發(fā)出RECALL消息。RECALL消息到達(dá)每一個(gè)節(jié)點(diǎn)時(shí),會(huì)檢查當(dāng)前節(jié)點(diǎn)所處的位置是否滿足修復(fù)條件,即2*hop1>hop2,除此之外還要檢查自身的鄰居節(jié)點(diǎn)數(shù)量是否大于閾值。假設(shè)閾值為3,即有三個(gè)鄰居節(jié)點(diǎn)。如果上述條件均滿足,則會(huì)發(fā)起第二次修復(fù),否則,回溯消息會(huì)沿著反向路由繼續(xù)向上游節(jié)點(diǎn)轉(zhuǎn)發(fā),直至回溯到源節(jié)點(diǎn)或下一個(gè)滿足條件的節(jié)點(diǎn)為止。當(dāng)來自n5節(jié)點(diǎn)的RECALL消息到達(dá)n4節(jié)點(diǎn)時(shí),n4滿足二次修復(fù)條件,因此n4節(jié)點(diǎn)會(huì)進(jìn)行第二次修復(fù)。RECALL消息結(jié)構(gòu)定義如下表所示:TYPEDSTREAL_DSTNEXT_TWO_HOPHOPS表中,各字段的含義為:TYPE:數(shù)據(jù)包類型DST:RECALL消息發(fā)送的目的節(jié)點(diǎn),一般是待修復(fù)路由的源節(jié)點(diǎn)REAL_DST:待修復(fù)路由的目的節(jié)點(diǎn)NEXT_TWO_HOP:初次修復(fù)時(shí)的目的節(jié)點(diǎn),用作二次修復(fù)的目的節(jié)點(diǎn)HOPS:RECALL消息所處的節(jié)點(diǎn)距離REAL_DST的跳數(shù)。在二次修復(fù)節(jié)點(diǎn)的修復(fù)手段上,是選用改進(jìn)后的修復(fù)策略即發(fā)送RP_REQUEST包。改進(jìn)后的策略適當(dāng)放寬了選擇的標(biāo)準(zhǔn),成功的可能性比較高。在各種資源比較緊張的無線Mesh網(wǎng)絡(luò)中,快速而有效的路由修復(fù)策略往往比較可取,因此選擇與初次修復(fù)相同的策略。在修復(fù)的目的地的選擇上,由于先前針對(duì)下兩跳的修復(fù)失敗了,如果仍然選擇初次修復(fù)的目的節(jié)點(diǎn),那么失敗的可能性比較大,因此,二次修復(fù)選擇的是待修復(fù)路由的目的節(jié)點(diǎn)作為目的節(jié)點(diǎn),圖中二次修復(fù)的目的節(jié)點(diǎn)為n8。在請(qǐng)求的跳數(shù)設(shè)定上,通過字段HOPS記錄此時(shí)距離待修復(fù)路由的目的節(jié)點(diǎn)的距離,在發(fā)出請(qǐng)求包時(shí),直接用該值或者比該值稍大一點(diǎn)的值作為請(qǐng)求包的跳數(shù)。例如,在圖中n4節(jié)點(diǎn)在發(fā)起二次修復(fù)請(qǐng)求時(shí),會(huì)將請(qǐng)求包的跳數(shù)設(shè)為4+2跳,其中4是n4節(jié)點(diǎn)距離n8的跳數(shù),2是為了保證修復(fù)的成功率添加的額外的跳數(shù)。n4發(fā)出請(qǐng)求包后的流程與初次修復(fù)完全相同。如果二次修復(fù)失敗,在失敗后的應(yīng)對(duì)方案同樣分為兩種,由源節(jié)點(diǎn)修復(fù)和由中間節(jié)點(diǎn)修復(fù)。由于前兩次修復(fù)皆失敗,如果繼續(xù)選擇由中間節(jié)點(diǎn)修復(fù),仍可能會(huì)失敗,且多次修復(fù)同樣會(huì)造成時(shí)間和開銷的問題,并且由于二次修復(fù)時(shí)的回溯機(jī)制,使得此時(shí)節(jié)點(diǎn)更加靠近源節(jié)點(diǎn),因此,在第二次路由修復(fù)失敗后將由當(dāng)前節(jié)點(diǎn)通知源節(jié)點(diǎn)進(jìn)行路由修復(fù)。以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出:對(duì)于本
技術(shù)領(lǐng)域
的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。當(dāng)前第1頁(yè)1 2 3 
當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1