一、技術(shù)領(lǐng)域
本發(fā)明涉及容遲網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤其涉及一種基于資源受限條件下的自適應(yīng)dtn路由算法。
二、
背景技術(shù):
隨著信息技術(shù)的發(fā)展,internet網(wǎng)絡(luò)的出現(xiàn)極大改變了人類(lèi)社會(huì)的生產(chǎn)生活方式。internet網(wǎng)絡(luò)節(jié)點(diǎn)始終保持著端到端連接路徑,且丟包率小、傳輸時(shí)延低。這類(lèi)網(wǎng)絡(luò)是以tcp/ip協(xié)議簇作為基礎(chǔ)的,適用于大部分的網(wǎng)絡(luò)環(huán)境。然而,隨著信息技術(shù)的不斷深入發(fā)展,常常需要在一些極端環(huán)境中部署網(wǎng)絡(luò)。由此出現(xiàn)了眾多不同于傳統(tǒng)網(wǎng)絡(luò)特征的場(chǎng)景。這些網(wǎng)絡(luò)具有鏈接頻繁中斷、傳輸時(shí)延高、丟包率高、上行和下行數(shù)據(jù)率不對(duì)稱(chēng)等特點(diǎn)。例如,在衛(wèi)星通信中,由于經(jīng)濟(jì)和技術(shù)方面的原因?qū)е戮W(wǎng)絡(luò)節(jié)點(diǎn)數(shù)量較少,且衛(wèi)星時(shí)常移動(dòng),導(dǎo)致衛(wèi)星通信網(wǎng)絡(luò)連接時(shí)常中斷;海洋、湖泊、山川等極端環(huán)境下為了節(jié)約節(jié)點(diǎn)能量消耗,在節(jié)點(diǎn)不工作時(shí),采取待機(jī)或者關(guān)閉措施,造成網(wǎng)絡(luò)連接中斷。
具有上述連接時(shí)常中斷、傳輸時(shí)延高等特點(diǎn)的網(wǎng)絡(luò)稱(chēng)為容遲容斷網(wǎng)絡(luò)(delaytolerantnetwork,dtn)。這類(lèi)網(wǎng)絡(luò)特點(diǎn)使得傳統(tǒng)的基于tpc/ip協(xié)議簇的路由算法不再適用。dtn網(wǎng)絡(luò)傳遞信息采用的是“存儲(chǔ)-攜帶-轉(zhuǎn)發(fā)”的模式。路由算法作為信息傳遞的關(guān)鍵,隨著dtn網(wǎng)絡(luò)應(yīng)用場(chǎng)景越來(lái)越多,各類(lèi)dtn路由算法被相繼提出。
基于網(wǎng)絡(luò)拓?fù)涫欠裣闰?yàn),可將路由算法分為確定性路由算法和隨機(jī)路由算法。確定性路由假設(shè)網(wǎng)絡(luò)拓?fù)湓谶M(jìn)行數(shù)據(jù)傳輸之前就已經(jīng)確定。隨機(jī)路由算法適用于網(wǎng)絡(luò)拓?fù)湮粗膱?chǎng)景。此類(lèi)算法通?;诰W(wǎng)絡(luò)動(dòng)態(tài)拓?fù)鋫鬟f數(shù)據(jù),并且記錄各節(jié)點(diǎn)參量選擇下一跳。
根據(jù)路由算法制定路由規(guī)則依賴(lài)的指標(biāo)不同,可以將dtn路由算法分為基于社交屬性的路由算法和非基于社交屬性的路由算法?;谏缃粚傩月酚伤惴ㄓ挚煞譃榛诜e極社交屬性和基于消極社交屬性。積極社交屬性主要指網(wǎng)絡(luò)的中心度、相關(guān)度、度分布等指標(biāo),消極社交屬性主要指網(wǎng)絡(luò)中節(jié)點(diǎn)“自私”程度,即有些節(jié)點(diǎn)可能由于能耗、隱私等原因不愿作為中繼節(jié)點(diǎn)傳輸數(shù)據(jù)。典型的基于積極社交屬性的路由算法包括multi-simbet,bubblerap,levelrouting等算法;基于消極社交屬性的路由算法包括tit-for-tat,smart,mobicent等算法。
根據(jù)算法優(yōu)先于哪個(gè)服務(wù)指標(biāo)又可將路由算法分為flood-based,historyandencounter-based,socialbehavior-based,knowledge-based等。其中flood-based算法以泛洪為基礎(chǔ)思想,傳輸成功率較高,典型的flood-based算法有epidemicrouting,sprayandwait,rapid,multi-simbet算法等;historyandencounter-based算法以相遇概率推算為基礎(chǔ)思想,性能開(kāi)銷(xiāo)較小,典型的historyandencounter-based算法有prophet,singlerecent,sprayandfocus算法等;socialbehavior-based算法類(lèi)似于前文提到的基于社交屬性的算法,主要通過(guò)計(jì)算節(jié)點(diǎn)社交屬性選擇下一跳,成功率較高,典型的socialbehavior-based算法有bubble-rap,simbet等算法;knowledge-based算法則與前文提到的確定性路由算法相似,適用于網(wǎng)絡(luò)拓?fù)湎闰?yàn)的場(chǎng)景。
根據(jù)算法路由策略可以將dtn路由算法分為泛洪路由算法和轉(zhuǎn)發(fā)路由算法。泛洪路由算法允許網(wǎng)絡(luò)中包含多個(gè)信息副本以便提高網(wǎng)絡(luò)傳輸成功率,適用于網(wǎng)絡(luò)資源較為豐富的場(chǎng)景,典型的泛洪路由算法有epidemic,sprayandwait,sprayandfocus,multi-simbet等;轉(zhuǎn)發(fā)路由算法則只允許同一時(shí)刻網(wǎng)絡(luò)中最多存在信息的一個(gè)副本,此類(lèi)算法成功率不如泛洪路由算法,但適用于資源緊缺的場(chǎng)景。典型的轉(zhuǎn)發(fā)路由算法有singlerecent,directtransmission,onehopencounterprediction算法。
三、
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是,針對(duì)上述各類(lèi)典型dtn路由算法存在的優(yōu)缺點(diǎn),提出一種基于資源受限條件下的自適應(yīng)dtn路由算法。該算法能夠根據(jù)網(wǎng)絡(luò)實(shí)時(shí)資源負(fù)載消耗情況選擇合適的典型dtn路由算法。旨在提高網(wǎng)絡(luò)吞吐量,達(dá)到提高傳輸成功率的同時(shí)降低平均時(shí)延的效果。
本發(fā)明的技術(shù)方案是:一種基于資源受限條件下的自適應(yīng)dtn(容遲容斷網(wǎng)絡(luò))路由算法即基于節(jié)點(diǎn)負(fù)載的自適應(yīng)路由算法,合理利用泛洪路由算法傳輸成功率高、轉(zhuǎn)發(fā)路由算法資源消耗低的優(yōu)點(diǎn),根據(jù)節(jié)點(diǎn)當(dāng)前負(fù)載選擇適用的路由算法。算法分為兩個(gè)階段:訓(xùn)練階段和傳輸階段。
1)訓(xùn)練階段,主要任務(wù)為根據(jù)所選擇的路由算法確定節(jié)點(diǎn)負(fù)載和網(wǎng)絡(luò)負(fù)載計(jì)算參數(shù),并確定各個(gè)算法適用的負(fù)載區(qū)間;
2)傳輸階段,主要任務(wù)為對(duì)未過(guò)期的數(shù)據(jù)根據(jù)訓(xùn)練階段定義的節(jié)點(diǎn)負(fù)載計(jì)算公式計(jì)算得到節(jié)點(diǎn)負(fù)載,判斷節(jié)點(diǎn)負(fù)載所在的負(fù)載區(qū)間及負(fù)載區(qū)間對(duì)應(yīng)的路由算法。然后根據(jù)這個(gè)路由算法進(jìn)行路由。同時(shí)根據(jù)這一跳路由情況更新訓(xùn)練階段定義的節(jié)點(diǎn)負(fù)載計(jì)算所需參數(shù),以及對(duì)應(yīng)負(fù)載區(qū)間的更新。
通過(guò)對(duì)路由算法的靈活選擇,達(dá)到提高網(wǎng)絡(luò)傳輸成功率和降低資源消耗的目的。
如附圖1所示,訓(xùn)練階段1)過(guò)程具體為:
步驟1.1:根據(jù)實(shí)際應(yīng)用場(chǎng)景選取幾個(gè)典型的dtn路由算法,需要包含轉(zhuǎn)發(fā)路由算法和泛洪路由算法;
步驟1.2:根據(jù)網(wǎng)絡(luò)情況按照選取的典型路由算法分別進(jìn)行路由傳輸,并統(tǒng)計(jì)這段時(shí)間算法的傳輸成功率、網(wǎng)絡(luò)平均時(shí)延、網(wǎng)絡(luò)平均路由資源消耗、性能資源消耗比隨著時(shí)間的變化情況。同時(shí)統(tǒng)計(jì)路由傳輸過(guò)程中每個(gè)節(jié)點(diǎn)接收到的消息總數(shù)按照消息來(lái)源上次與當(dāng)前節(jié)點(diǎn)接觸時(shí)間差的分布情況;
步驟1.3:定義并計(jì)算每個(gè)節(jié)點(diǎn)負(fù)載情況以及網(wǎng)絡(luò)平均負(fù)載;
步驟1.4:根據(jù)步驟1.3計(jì)算得到的負(fù)載情況確定各個(gè)典型路由算法適用的負(fù)載區(qū)間;
如附圖2所示,傳輸階段2)具體為:
步驟2.1:當(dāng)前節(jié)點(diǎn)向目的節(jié)點(diǎn)發(fā)送消息;
步驟2.2:判斷消息是否已經(jīng)過(guò)期,如果過(guò)期則直接廢棄消息;
步驟2.3:查看當(dāng)前節(jié)點(diǎn)所有鄰居,首先驗(yàn)證鄰居節(jié)點(diǎn)中是否有目的節(jié)點(diǎn),如果有,則直接將消息傳送到目的節(jié)點(diǎn);
步驟2.4:對(duì)于當(dāng)前節(jié)點(diǎn)的每個(gè)鄰居,根據(jù)步驟1.3定義的公式計(jì)算每個(gè)鄰居的節(jié)點(diǎn)負(fù)載情況;
步驟2.5:判斷各個(gè)鄰居節(jié)點(diǎn)適用于哪種典型路由算法,并用此算法進(jìn)行路由;
步驟2.6:更新步驟1.3節(jié)點(diǎn)負(fù)載計(jì)算公式中的參數(shù)以及步驟1.4各個(gè)路由算法使用的負(fù)載區(qū)間;返回步驟2.1。
以上步驟只表述一個(gè)數(shù)據(jù)在網(wǎng)絡(luò)中的傳輸情況。多個(gè)數(shù)據(jù)的情況類(lèi)似。
網(wǎng)絡(luò)傳輸成功率計(jì)算如下:
其中,n代表網(wǎng)絡(luò)中總傳輸數(shù)據(jù)數(shù)量,當(dāng)信息mk最終成功傳輸時(shí)dk=1,否則dk=0。
網(wǎng)絡(luò)平均時(shí)延計(jì)算如下:
其中,n代表網(wǎng)絡(luò)中成功傳輸?shù)南?shù)量,receivetimek以及createtimek代表消息k產(chǎn)生和最終成功傳輸?shù)臅r(shí)間。
網(wǎng)絡(luò)傳輸資源消耗計(jì)算如下:
其中,n代表網(wǎng)絡(luò)傳輸過(guò)程中產(chǎn)生的所有消息數(shù)量,ck指消息mk在網(wǎng)絡(luò)中副本個(gè)數(shù)。網(wǎng)絡(luò)平均路由資源消耗代表每傳遞一份消息,需要伴隨多少消息副本散布在網(wǎng)絡(luò)中。
性能消耗比計(jì)算如下:
其中,deliveryratio指網(wǎng)絡(luò)傳輸成功率;averageoverhead指網(wǎng)絡(luò)傳輸資源消耗。
路由傳輸過(guò)程中每個(gè)節(jié)點(diǎn)接收到的消息總數(shù)按照消息來(lái)源上次與當(dāng)前節(jié)點(diǎn)接觸時(shí)間差的分布情況具體計(jì)算方式如下:
對(duì)于每個(gè)鄰居節(jié)點(diǎn),當(dāng)要接收當(dāng)前節(jié)點(diǎn)傳來(lái)的消息時(shí),記錄下這個(gè)鄰居節(jié)點(diǎn)與當(dāng)前節(jié)點(diǎn)上次相遇時(shí)間與當(dāng)前時(shí)間的差值。最后統(tǒng)計(jì)整個(gè)網(wǎng)絡(luò)傳輸過(guò)程中,消息接收過(guò)程中接收消息總量隨著相鄰節(jié)點(diǎn)上次相遇時(shí)間差的分布情況。進(jìn)行這項(xiàng)統(tǒng)計(jì)是為了后續(xù)計(jì)算節(jié)點(diǎn)負(fù)載的權(quán)重。
節(jié)點(diǎn)負(fù)載情況計(jì)算如下:
其中,
衰減因子q計(jì)算如下:
按照每個(gè)節(jié)點(diǎn)接收到的消息總數(shù)按照消息來(lái)源上次與當(dāng)前節(jié)點(diǎn)接觸時(shí)間差的分布情況能夠得到如下幾個(gè)公式:
z=k(t-tij)+b
z=lny
其中y指接收消息數(shù)量,t指當(dāng)前時(shí)間,tij指節(jié)點(diǎn)i與節(jié)點(diǎn)j上次相遇時(shí)間。k與b是按照線(xiàn)性回歸方程計(jì)算得到的。
整理上面兩個(gè)公式可以得到如下關(guān)系:
q=ek
網(wǎng)絡(luò)負(fù)載按照如下公式進(jìn)行計(jì)算:
其中,n是網(wǎng)絡(luò)中節(jié)點(diǎn)數(shù)量,
在路由傳輸過(guò)程中,每過(guò)一個(gè)時(shí)間間隔,按照上式計(jì)算網(wǎng)絡(luò)負(fù)載。
各個(gè)典型算法適用的負(fù)載區(qū)間計(jì)算如下:
步驟1:根據(jù)網(wǎng)絡(luò)負(fù)載隨時(shí)間分布以及傳輸成功率隨時(shí)間分布的數(shù)據(jù),得到各個(gè)路由算法傳輸成功率差分隨網(wǎng)絡(luò)負(fù)載變化的數(shù)據(jù);
步驟2:對(duì)于每一個(gè)網(wǎng)絡(luò)負(fù)載,根據(jù)步驟1得到的數(shù)據(jù),存在一個(gè)算法在這個(gè)負(fù)載下對(duì)成功率增長(zhǎng)變化最大。自適應(yīng)算法在這個(gè)負(fù)載下將選擇此算法進(jìn)行路由;
步驟3:總結(jié)步驟2得到的每個(gè)網(wǎng)絡(luò)負(fù)載對(duì)應(yīng)選擇的路由算法,得到每個(gè)路由算法適用的負(fù)載區(qū)間。
傳輸階段更新權(quán)重大小主要是重新統(tǒng)計(jì)接收消息數(shù)量隨著相遇時(shí)間差分布情況,同時(shí)更新衰減因子q進(jìn)而更新網(wǎng)絡(luò)權(quán)重,最后達(dá)到更新算法適用區(qū)間的目的。
本發(fā)明的有益效果,本發(fā)明自適應(yīng)算法能夠通過(guò)少量的訓(xùn)練自適應(yīng)的根據(jù)網(wǎng)絡(luò)當(dāng)前負(fù)載情況合理選擇路由算法進(jìn)行數(shù)據(jù)傳輸。能夠根據(jù)當(dāng)前網(wǎng)絡(luò)環(huán)境選擇成功率最高的路由算法進(jìn)行路由,同時(shí)避免網(wǎng)絡(luò)由于過(guò)度泛洪而發(fā)生擁塞。進(jìn)而降低網(wǎng)絡(luò)資源消耗。
四、附圖說(shuō)明
圖1是訓(xùn)練階段算法流程圖
圖2是傳輸階段算法流程圖
圖3是自適應(yīng)算法和典型路由算法傳輸成功率對(duì)比
圖4是自適應(yīng)算法和典型路由算法平均路由資源消耗對(duì)比
圖5是路由傳輸過(guò)程中每個(gè)節(jié)點(diǎn)接收到的消息總數(shù)按照消息來(lái)源上次與當(dāng)前節(jié)點(diǎn)接觸時(shí)間差的分布情況。
圖6是訓(xùn)練階段結(jié)束各算法適用區(qū)間分布情況。
五、具體實(shí)施方式
下面通過(guò)具體實(shí)施方式結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)說(shuō)明。
首先,本實(shí)例是在mit移動(dòng)用戶(hù)數(shù)據(jù)集下選取epidemic、multi-simbet、sprayandwait、singlerecent、directtransmission五個(gè)算法作為典型算法進(jìn)行仿真。其中,mit移動(dòng)用戶(hù)數(shù)據(jù)集包含94個(gè)移動(dòng)用戶(hù)。這94個(gè)用戶(hù)中,75人為mit數(shù)字實(shí)驗(yàn)室的學(xué)生和工作人員,其余用戶(hù)為mitsloanbusiness實(shí)驗(yàn)室學(xué)生。組成數(shù)據(jù)集的包括這94個(gè)用戶(hù)在2004年9月到2005年3月期間的電話(huà),短信,位置等信息。此數(shù)據(jù)集符合dtn網(wǎng)絡(luò)節(jié)點(diǎn)動(dòng)態(tài)移動(dòng)、網(wǎng)絡(luò)連接斷開(kāi)頻繁的特性;在以上五個(gè)典型路由算法中,epidemic、multi-simbet、sprayandwait是泛洪路由算法,singlerecent、directtransmission是轉(zhuǎn)發(fā)路由算法。
其次,訓(xùn)練階段測(cè)試各個(gè)算法性能指標(biāo)及消息總數(shù)分布情況并計(jì)算負(fù)載區(qū)間。圖3和圖4表明上面五個(gè)路由算法進(jìn)行路由傳輸并統(tǒng)計(jì)傳輸成功率、平均路由資源消耗。圖5表明路由傳輸過(guò)程中每個(gè)節(jié)點(diǎn)接收到的消息總數(shù)按照消息來(lái)源上次與當(dāng)前節(jié)點(diǎn)接觸時(shí)間差的分布情況。根據(jù)圖5進(jìn)行線(xiàn)性回歸得到衰減因子q。圖6給出各個(gè)算法根據(jù)衰減因子q計(jì)算的節(jié)點(diǎn)負(fù)載對(duì)成功率的增加情況。由圖6得到epidemic算法適用的負(fù)載區(qū)間是[0,0.37],multi-simbet算法適用區(qū)間是[0.37,0.62],sprayandwait算法適用的負(fù)載區(qū)間是[0.62,0.75]。
接著進(jìn)入傳輸階段。對(duì)于任意一個(gè)節(jié)點(diǎn)及其鄰居,按照如下流程進(jìn)行路由:
步驟1:如果鄰居節(jié)點(diǎn)就是目的節(jié)點(diǎn),則直接將消息傳送到鄰居節(jié)點(diǎn),路由結(jié)束;
步驟2:如果此消息已經(jīng)過(guò)期,則直接廢棄,路由結(jié)束;
步驟3:如果鄰居節(jié)點(diǎn)負(fù)載大于0.75,則使用singlerecent算法進(jìn)行路由,轉(zhuǎn)到步驟7;
步驟4:如果鄰居節(jié)點(diǎn)負(fù)載小于0.75大于0.62,則使用sprayandwait算法進(jìn)行路由,轉(zhuǎn)到步驟7;
步驟5:如果鄰居節(jié)點(diǎn)負(fù)載小于0.62大于0.37,則使用multi-simbet算法進(jìn)行路由,轉(zhuǎn)到步驟7;
步驟6:如果鄰居節(jié)點(diǎn)負(fù)載小于0.37則使用epidemic算法進(jìn)行路由;
步驟7:確定路由算法之后,更新圖5和圖6以便進(jìn)行下一跳路由,轉(zhuǎn)到步驟1。