專(zhuān)利名稱(chēng):基于網(wǎng)絡(luò)編碼的網(wǎng)絡(luò)編碼修復(fù)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及無(wú)線網(wǎng)絡(luò)技術(shù)領(lǐng)域,特別是涉及一種基于網(wǎng)絡(luò)編碼的網(wǎng)絡(luò)編碼修復(fù)方法。
背景技術(shù):
無(wú)線網(wǎng)絡(luò)(Wireless Network)是當(dāng)前應(yīng)用廣泛的接入技術(shù)之一,已經(jīng)受到國(guó)內(nèi)外廣大學(xué)者的關(guān)注,但是無(wú)線鏈路的不可靠性造成無(wú)線網(wǎng)絡(luò)在應(yīng)用過(guò)程中性能的降低已經(jīng)成為無(wú)線網(wǎng)絡(luò)技術(shù)應(yīng)用的瓶頸之一。網(wǎng)絡(luò)編碼技術(shù)自從2000年被提出已經(jīng)成為當(dāng)前提高無(wú)線網(wǎng)絡(luò)性能的關(guān)鍵技術(shù)之一,從當(dāng)前國(guó)內(nèi)外對(duì)于網(wǎng)絡(luò)編碼技術(shù)的研究主要涉及網(wǎng)絡(luò)編碼理論的研究、基于網(wǎng)絡(luò)編碼技術(shù)的各種應(yīng)用研究,本發(fā)明主要涉及網(wǎng)絡(luò)編碼技術(shù)應(yīng)用的研究。網(wǎng)絡(luò)編碼技術(shù)的應(yīng)用首先要保證滿足編碼條件,而由于無(wú)線網(wǎng)絡(luò)中無(wú)線鏈路的不可靠性往往會(huì)造成在網(wǎng)絡(luò)編碼使 用過(guò)程中網(wǎng)絡(luò)編碼的條件無(wú)法滿足,從而在解碼節(jié)點(diǎn)中產(chǎn)生解碼失效問(wèn)題。數(shù)據(jù)包重傳技術(shù)是最主要的保證無(wú)線傳輸可靠性的技術(shù)之一,當(dāng)前關(guān)于數(shù)據(jù)包重傳技術(shù)的研究主要有兩種一種是傳統(tǒng)的基于ARQ (ARQ-based)的數(shù)據(jù)包重傳技術(shù),現(xiàn)在主要有停止等待ARQ技術(shù)、連續(xù)ARQ技術(shù)以及選擇重傳ARQ技術(shù),而基于ARQ技術(shù)的數(shù)據(jù)包重傳技術(shù)最大的缺點(diǎn)就是在數(shù)據(jù)包的重傳過(guò)程中常常會(huì)造成網(wǎng)絡(luò)開(kāi)銷(xiāo)會(huì)很大;面對(duì)當(dāng)前基于ARQ的數(shù)據(jù)包重傳技術(shù)的缺點(diǎn),業(yè)界學(xué)者提出了基于網(wǎng)絡(luò)編碼(NC-based)的數(shù)據(jù)包重傳思想,而當(dāng)前關(guān)于NC-based的數(shù)據(jù)包重傳技術(shù)的研究主要局限于無(wú)線局域網(wǎng)或者一跳鄰居節(jié)點(diǎn)中,同時(shí)當(dāng)前對(duì)于NC-based的數(shù)據(jù)包重傳技術(shù)研究主要是針對(duì)單源節(jié)點(diǎn)多目的節(jié)點(diǎn)而言的,即多個(gè)丟包的節(jié)點(diǎn)向同一個(gè)數(shù)據(jù)源節(jié)點(diǎn)發(fā)送重傳請(qǐng)求,源節(jié)點(diǎn)根據(jù)不同的判斷模式得出重傳的數(shù)據(jù)包組合,這種數(shù)據(jù)包重傳方式減少了重傳的次數(shù)同時(shí)降低了相同數(shù)據(jù)包的重復(fù)重傳的可能性,從而提高了網(wǎng)絡(luò)的性能。針對(duì)解碼失效問(wèn)題,常見(jiàn)的有兩種解決方式一種是直接將解碼失效包丟棄,這種方式勢(shì)必會(huì)造成無(wú)線鏈路容量的浪費(fèi),而另一種方式就是通過(guò)不同的方式來(lái)修復(fù)解碼失效的數(shù)據(jù)包,這里將該方法稱(chēng)為編碼修復(fù),當(dāng)前適用于編碼修復(fù)的解決方案主要有ARQ-based的數(shù)據(jù)包重傳技術(shù),而該技術(shù)在用于編碼修復(fù)問(wèn)題中時(shí)往往會(huì)造成多個(gè)相同的數(shù)據(jù)包重傳,從而降低了網(wǎng)絡(luò)的性能;因此提出NC-based的編碼修復(fù)策略,當(dāng)前關(guān)于NC-based的數(shù)據(jù)包重傳技術(shù)并不適合于作為編碼修復(fù)的解決方法,由于編碼修復(fù)的問(wèn)題主要是單個(gè)解碼節(jié)點(diǎn)缺失數(shù)據(jù)包而向多個(gè)鄰居節(jié)點(diǎn)請(qǐng)求重傳,因此與當(dāng)前NC-based的數(shù)據(jù)包重傳技術(shù)并不相符。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種降低編碼修復(fù)過(guò)程中的數(shù)據(jù)包重傳的次數(shù),提高了網(wǎng)絡(luò)編碼應(yīng)用的有效性和可靠性的基于網(wǎng)絡(luò)編碼的網(wǎng)絡(luò)編碼修復(fù)方法。本發(fā)明的目的是這樣實(shí)現(xiàn)的
基于網(wǎng)絡(luò)編碼的網(wǎng)絡(luò)編碼修復(fù)方法包括以下步驟第一步,解碼失效節(jié)點(diǎn)向鄰居節(jié)點(diǎn)請(qǐng)求重傳所缺失的原始數(shù)據(jù)包;解碼節(jié)點(diǎn)發(fā)生解碼失效后,首先根據(jù)有效的原始數(shù)據(jù)包以及解碼失效的編碼包分析出導(dǎo)致解碼失效所缺失的原始數(shù)據(jù)包,從而形成重傳請(qǐng)求,向周?chē)従庸?jié)點(diǎn)廣播發(fā)送重傳請(qǐng)求包,即Request包,Request包中包括請(qǐng)求節(jié)點(diǎn)的ID和請(qǐng)求節(jié)點(diǎn)所缺失的數(shù)據(jù)包集合Request Packet ;第二步,當(dāng)鄰居節(jié)點(diǎn)在接收到重傳請(qǐng)求后根據(jù)自身緩沖隊(duì)列中的原始數(shù)據(jù)包集合,發(fā)送自己的節(jié)點(diǎn)基本信息NFI給請(qǐng)求節(jié)點(diǎn);解碼節(jié)點(diǎn)向鄰居節(jié)點(diǎn)廣播Request包后,鄰居節(jié)點(diǎn)接收到Request包并讀取包信息,將自己緩存中的原始包與Request包中的Request Packet字段進(jìn)行比較,根據(jù)比較有以下兩種結(jié)果 (I)如果鄰居節(jié)點(diǎn)的緩存中的原始包與Request包中的Request Packet字段中的元素有交集,則表明這個(gè)鄰居節(jié)點(diǎn)有解碼節(jié)點(diǎn)所需的原始包,然后將自己的NFI以R印Iy包的形式發(fā)送給解碼節(jié)點(diǎn),其中NFI中包含有節(jié)點(diǎn)ID以及節(jié)點(diǎn)所包含的原始數(shù)據(jù)包集合;(2)如果鄰居節(jié)點(diǎn)的緩存中的原始包與Request包中的Request Packet字段中的元素沒(méi)有交集,則表明這個(gè)鄰居節(jié)點(diǎn)中沒(méi)有解碼節(jié)點(diǎn)所需的原始包,那么鄰居節(jié)點(diǎn)將丟棄Request包,并不做任何操作;第三步,解碼節(jié)點(diǎn)在接收到鄰居節(jié)點(diǎn)的NFI信息后通過(guò)CBCR算法計(jì)算得出所需的重傳數(shù)據(jù)包集合并形成RACK請(qǐng)求包發(fā)送給鄰居節(jié)點(diǎn);解碼節(jié)點(diǎn)接收到來(lái)自鄰居節(jié)點(diǎn)的NFI信息后在本地節(jié)點(diǎn)形成鄰居節(jié)點(diǎn)信息表NNI, NNI中包含有鄰居節(jié)點(diǎn)的ID、鄰居節(jié)點(diǎn)所包含的原始包的集合PI,以及解碼節(jié)點(diǎn)也鄰居節(jié)點(diǎn)的聯(lián)通狀態(tài)LS;首先定義變量i、j和K,其中變量i用來(lái)記錄解碼失效包的序號(hào),K用來(lái)記錄重傳數(shù)據(jù)包的序號(hào),j記錄鄰居節(jié)點(diǎn)的編號(hào);通過(guò)循環(huán)判斷變量i的值是否等于解碼失效的編碼包的個(gè)數(shù),從第一個(gè)解碼失效包開(kāi)始,即記i=l ;假設(shè)有M個(gè)鄰居節(jié)點(diǎn)包含有解碼節(jié)點(diǎn)所缺失的數(shù)據(jù)包,通過(guò)解碼失效包所缺失的數(shù)據(jù)包信息與NNI中鄰居節(jié)點(diǎn)數(shù)據(jù)包信息作對(duì)t匕,從而形成一個(gè)重傳數(shù)據(jù)包集合,記為Q[],并記K=l,以此循環(huán),直到缺失數(shù)據(jù)包集合為空,即直到所有的缺失數(shù)據(jù)包完成計(jì)算得出各自的重傳包集合Q[];此時(shí)得到的Q[]中包含解碼節(jié)點(diǎn),最后對(duì)Q[]做去重處理以降低傳輸?shù)拈_(kāi)銷(xiāo),通過(guò)計(jì)算重傳算法的計(jì)算復(fù)雜度為0(n2);待解碼節(jié)點(diǎn)完成重傳數(shù)據(jù)包計(jì)算后,即可得出重傳數(shù)據(jù)包的組合,從而形成RACK包,其中在RACK包中包含有重傳數(shù)據(jù)包的類(lèi)型Type、被請(qǐng)求重傳的鄰居節(jié)點(diǎn)的ID (RNN)以及請(qǐng)求重傳的數(shù)據(jù)包集合RP,其中在Type的定義中包含有‘C’和‘S’兩種類(lèi)型,‘C’表示所需重傳的數(shù)據(jù)包以編碼的方式重傳,而‘S’表示所需重傳的數(shù)據(jù)包以單個(gè)原始包的方式重傳;解碼節(jié)點(diǎn)完成RACK包的構(gòu)造后,將RACK包通過(guò)廣播的方式發(fā)送給鄰居節(jié)點(diǎn);第四步,鄰居節(jié)點(diǎn)在接收到來(lái)自解碼節(jié)點(diǎn)的RACK包后,根據(jù)RACK中的請(qǐng)求內(nèi)容重傳解碼節(jié)點(diǎn)所需的數(shù)據(jù)包,具體為(I)若RACK包中的RNN字段中包含有本鄰居節(jié)點(diǎn)的ID,表明解碼節(jié)點(diǎn)需要本鄰居節(jié)點(diǎn)重傳數(shù)據(jù)包,本鄰居節(jié)點(diǎn)獲取RNN值等于自身ID的記錄中相對(duì)應(yīng)的Type值以及RP信息;若Type=‘C’,那么表明這條記錄中的RP集合長(zhǎng)度大于I,此時(shí)本鄰居節(jié)點(diǎn)需要對(duì)RP中的重傳數(shù)據(jù)包進(jìn)行編碼操作,并以編碼包的形式發(fā)送給解碼節(jié)點(diǎn);gType= ‘S’,表明這條記錄中的RP集合長(zhǎng)度等于I,此時(shí)本鄰居節(jié)點(diǎn)只需將RP中的重傳數(shù)據(jù)包以單個(gè)原始包的方式發(fā)送給解碼節(jié)點(diǎn);(2)若RACK包中的RNN字段中不包含有本鄰居節(jié)點(diǎn)的ID,表明解碼節(jié)點(diǎn)不需要本鄰居節(jié)點(diǎn)重傳數(shù)據(jù)包,那么本鄰居節(jié)點(diǎn)將收到的RACK包直接丟棄。
本發(fā)明的有益效果是(I)基于CBCR (基于網(wǎng)絡(luò)編碼的網(wǎng)絡(luò)編碼修復(fù)方法)的編碼修復(fù)策略相比ARQ-based的編碼修復(fù)策略在編碼修復(fù)過(guò)程中所需的數(shù)據(jù)包重傳次數(shù)減少。(2)編碼修復(fù)時(shí)間作為編碼修復(fù)的評(píng)價(jià)標(biāo)準(zhǔn)之一,可判斷不同編碼修復(fù)的方式的優(yōu)劣程度,本發(fā)明所提出的CBCR編碼修復(fù)策略相比傳統(tǒng)的ARQ-based的編碼修復(fù)方式在編碼修復(fù)時(shí)間上降低了。(3)網(wǎng)絡(luò)吞吐量為評(píng)價(jià)網(wǎng)絡(luò)性能的關(guān)鍵指標(biāo),本發(fā)明所提出的CBCR策略相比傳統(tǒng)的ARQ-based的編碼修復(fù)策略在網(wǎng)絡(luò)吞吐量上獲得了較大的提高。(4) COPE協(xié)議作為當(dāng)前網(wǎng)絡(luò)編碼技術(shù)在無(wú)線網(wǎng)絡(luò)中應(yīng)用最為廣泛的協(xié)議,已經(jīng)被多數(shù)學(xué)者所認(rèn)可,因此本發(fā)明所設(shè)計(jì)的CBCR策略在網(wǎng)絡(luò)性能上相比COPE協(xié)議得到了提高。
圖I為CBCR方法基本執(zhí)行過(guò)程圖;圖2為CBCR方法第I步與第2步流程圖;圖3為CBCR方法重傳數(shù)據(jù)包計(jì)算流程圖;圖4為CBCR方法第3步與第4步流程圖;圖5為編碼修復(fù)時(shí)間與解碼失效包的關(guān)系圖;圖6為解碼失效包與網(wǎng)絡(luò)吞吐量的關(guān)系圖;圖7為網(wǎng)絡(luò)負(fù)載與網(wǎng)絡(luò)吞吐量的關(guān)系圖;圖8 (a)為CBCR方法實(shí)例節(jié)點(diǎn)拓?fù)潢P(guān)系圖;圖8 (b)為CBCR方法實(shí)例中各鄰居節(jié)點(diǎn)NFI信息;圖9為CBCR實(shí)例的編碼修復(fù)圖。
具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明做更詳細(xì)的描述結(jié)合圖I。該圖描述了 CBCR技術(shù)的一個(gè)總體執(zhí)行過(guò)程,即解碼節(jié)點(diǎn)和鄰居節(jié)點(diǎn)的四次握手。第一步為解碼節(jié)點(diǎn)向鄰居節(jié)點(diǎn)發(fā)送Request數(shù)據(jù)包,提出所缺數(shù)據(jù)包的重傳請(qǐng)求;第二步為鄰居節(jié)點(diǎn)收到Request數(shù)據(jù)包后向解碼節(jié)點(diǎn)發(fā)送Iteply數(shù)據(jù)包,報(bào)告本身所含有的數(shù)據(jù)包信息;第三步當(dāng)解碼節(jié)點(diǎn)收到鄰居節(jié)點(diǎn)的Reply數(shù)據(jù)包后,根據(jù)鄰居節(jié)點(diǎn)所擁有的數(shù)據(jù)包進(jìn)行RACK數(shù)據(jù)包的構(gòu)造,即計(jì)算所需要的重傳數(shù)據(jù)包的組合,然后將RACK廣播發(fā)送給鄰居節(jié)點(diǎn);第四步為鄰居節(jié)點(diǎn)根據(jù)收到的RACK包的重傳要求進(jìn)行數(shù)據(jù)包重傳,即向解碼節(jié)點(diǎn)發(fā)送Retransmission數(shù)據(jù)包。結(jié)合圖2。首先網(wǎng)絡(luò)編碼技術(shù)在當(dāng)前網(wǎng)絡(luò)環(huán)境中運(yùn)行,在解碼節(jié)點(diǎn)處由于網(wǎng)絡(luò)編碼技術(shù)的應(yīng)用會(huì)接收到一定量的編碼包,其中編碼包得數(shù)據(jù)要大于或者等于16 ;解碼節(jié)點(diǎn)將進(jìn)行解碼操作,通過(guò)接收到的編碼包數(shù)量與成功解碼的編碼包個(gè)數(shù)可以計(jì)算得出該解碼節(jié)點(diǎn)此時(shí)的解碼成功率,通過(guò)與閾值Trad (由前述可知該值為75%)進(jìn)行比較,若解碼節(jié)點(diǎn)的解碼成功率低于T-表明網(wǎng)絡(luò)編碼在該網(wǎng)絡(luò)結(jié)構(gòu)中無(wú)優(yōu)勢(shì),如流程圖中的SRDCIrad所示,解碼節(jié)點(diǎn)將發(fā)送更新包,表明當(dāng)前的網(wǎng)絡(luò)編碼結(jié)構(gòu)在當(dāng)前的網(wǎng)絡(luò)環(huán)境中已無(wú)優(yōu)勢(shì),那么鄰居節(jié)點(diǎn)均將改變當(dāng)前的傳輸方式,從而轉(zhuǎn)換為傳統(tǒng)的存儲(chǔ)-轉(zhuǎn)發(fā)模式,但是為了保證鏈路使用的效率,即使當(dāng)前的網(wǎng)絡(luò)編碼技術(shù)失去了效用,也需要對(duì)其解碼失效的編碼包進(jìn)行修復(fù),即進(jìn)入下一個(gè)過(guò)程;如果SRD>Trad,則直接進(jìn)入編碼修復(fù)的過(guò)程。解碼節(jié)點(diǎn)獲得所缺失的數(shù)據(jù)包后,形成缺失數(shù)據(jù)包的集合,并將此信息發(fā)送給其鄰居節(jié)點(diǎn)。鄰居節(jié)點(diǎn)接收到來(lái)自編碼節(jié)點(diǎn)的請(qǐng)求包后,通過(guò)判斷自己的buffer緩存中是否包含有解碼節(jié)點(diǎn)所請(qǐng)求的數(shù)據(jù)包信息,如果節(jié)點(diǎn)本身中未包含解碼節(jié)點(diǎn)所請(qǐng)求的數(shù)據(jù)包信息,那么節(jié)點(diǎn)將此請(qǐng)求包丟棄;否則,鄰居節(jié)點(diǎn)將自己的NFI信息發(fā)送到解碼節(jié)點(diǎn),其中在鄰居節(jié)點(diǎn)所發(fā)送過(guò)來(lái)的NFI信息中包含有鄰居節(jié)點(diǎn)的ID號(hào)以及該節(jié)點(diǎn)所包含的數(shù)據(jù)包信息。 結(jié)合圖3。定義變量i、j和K,其中變量i用來(lái)記錄解碼失效包的序號(hào),K用來(lái)記錄重傳數(shù)據(jù)包的序號(hào),j記錄鄰居節(jié)點(diǎn)的編號(hào);通過(guò)循環(huán)判斷變量i的值是否等于解碼失效的編碼包的個(gè)數(shù)。從第一個(gè)解碼失效包開(kāi)始,即記i=l ;假設(shè)有M個(gè)鄰居節(jié)點(diǎn)包含有解碼節(jié)點(diǎn)所缺失的數(shù)據(jù)包,通過(guò)解碼失效包所缺失的數(shù)據(jù)包信息與各個(gè)鄰居節(jié)點(diǎn)數(shù)據(jù)包信息作對(duì)t匕,從而形成一個(gè)重傳數(shù)據(jù)包集合,記為Q[],并記K=l,以此循環(huán),直到缺失數(shù)據(jù)包集合為空,即直到將所有的缺失數(shù)據(jù)包完成計(jì)算得出各自的重傳包結(jié)合Q□。最后對(duì)Q[]做去重處理以降低傳輸?shù)拈_(kāi)銷(xiāo),形成重傳數(shù)據(jù)包最終的組合。結(jié)合圖4。首先解碼節(jié)點(diǎn)通過(guò)Q[]的每個(gè)元素的長(zhǎng)度來(lái)判斷該重傳數(shù)據(jù)包的重傳類(lèi)型,如果該重傳數(shù)據(jù)包的長(zhǎng)度大于1,那么重傳數(shù)據(jù)包的類(lèi)型為編碼包方式,即記為“C”,否則記為“S”,從而形成RACK包,并將該包發(fā)送;待鄰居節(jié)點(diǎn)收到來(lái)自解碼節(jié)點(diǎn)的RACK包后,讀取RACK包的信息。RACK包中主要包含有3個(gè)主要的字段,即重傳數(shù)據(jù)包的類(lèi)型Type、重傳數(shù)據(jù)包的節(jié)點(diǎn)RNN以及重傳數(shù)據(jù)包RP,其中鄰居節(jié)點(diǎn)首先讀取RACK包得RNN字段信息,如果RACK包中包含有該節(jié)點(diǎn)的ID號(hào),說(shuō)明解碼節(jié)點(diǎn)需要該節(jié)點(diǎn)重傳數(shù)據(jù)包,否則將該RACK包丟棄;鄰居節(jié)點(diǎn)通過(guò)讀取RACK包判斷出是否需要自己重傳數(shù)據(jù)包后,通過(guò)讀取RNN字段的值等于本地節(jié)點(diǎn)的記錄,從而獲得相應(yīng)的Type以及RP信息,如果Type= “C”,則將RP中所包含的數(shù)據(jù)包以編碼包得方式發(fā)送,否則若Type= “S”,則將RP的數(shù)據(jù)包以單包的方式發(fā)送。結(jié)合圖5。描述了編碼修復(fù)時(shí)間與解碼失效包的關(guān)系。圖中三角曲線為CBCR編碼修復(fù)方法,圓點(diǎn)曲線為傳統(tǒng)的ARQ-based編碼修復(fù)方法,相比之下,當(dāng)解碼失效包的個(gè)數(shù)逐漸增加時(shí),CBCR方法所需要的編碼修復(fù)時(shí)間更少,效率更高。結(jié)合圖6。描述了網(wǎng)絡(luò)吞吐量與解碼失效包的關(guān)系。由圖可知,隨著解碼失效包的數(shù)量不斷增加,CBCR編碼修復(fù)方法比傳統(tǒng)的策略的網(wǎng)絡(luò)吞吐量更高一些并且維持在一個(gè)比較穩(wěn)定的水平。結(jié)合圖7。描述了網(wǎng)絡(luò)吞吐量與網(wǎng)絡(luò)負(fù)載的關(guān)系。本發(fā)明的CBCR方法在網(wǎng)絡(luò)性能上相比COPE協(xié)議得到了提高,同時(shí)相比NCCR數(shù)據(jù)包重傳技術(shù)在網(wǎng)絡(luò)吞吐量性能的優(yōu)勢(shì)。
結(jié)合圖8。在圖8 (a)所示的簡(jiǎn)單網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)中,M節(jié)點(diǎn)為解碼失效節(jié)點(diǎn),A,B,C,D分別是M的鄰居節(jié)點(diǎn)。圖8 (b)所示的分別是M各個(gè)鄰居節(jié)點(diǎn)的NFI (基本信息表),由表可知,節(jié)點(diǎn)A所擁有的數(shù)據(jù)包為P1、P3、P5,節(jié)點(diǎn)B所擁有的數(shù)據(jù)包為P1、P4、P6、P7,節(jié)點(diǎn)C所擁有的數(shù)據(jù)包為P2、P4、P9,節(jié)點(diǎn)D所擁有的數(shù)據(jù)包為PU P2、P3、P4、P8。結(jié)合圖9。該圖為基于CBCR方法對(duì)圖5所示實(shí)例的編碼修復(fù)圖,M節(jié)點(diǎn)根據(jù)CBCR算法構(gòu)建RACK包后,將其廣播發(fā)送給各個(gè)鄰居節(jié)點(diǎn)。鄰居節(jié)點(diǎn)收到RACK包后,按照其中的重傳要求分別進(jìn)行數(shù)據(jù)包重傳=A節(jié)點(diǎn)單包形式發(fā)送P5,B節(jié)點(diǎn)單包形式發(fā)送P4,D節(jié)點(diǎn)編碼包形式發(fā)送Pl P2 P3,最終M節(jié)點(diǎn)獲得所缺失的PU P2、P3、P4、P5數(shù)據(jù)包,從而完成編碼修復(fù)工作。本發(fā)明的具體實(shí)現(xiàn)步驟為首先在使用CBCR方法進(jìn)行編碼修復(fù)之前,需要做這樣一個(gè)判斷,即判斷在當(dāng)前網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)中網(wǎng)絡(luò)編碼技術(shù)是否比傳統(tǒng)的存儲(chǔ)一轉(zhuǎn)發(fā)模式在通信開(kāi)銷(xiāo)上有優(yōu)勢(shì)當(dāng)解碼節(jié)點(diǎn)的解碼成功率(所謂解碼成功率是指解碼節(jié)點(diǎn)中成功解碼的數(shù)據(jù)包數(shù)量占所有編碼數(shù)據(jù)包數(shù)量總和的百分比,用SRD(Success Rate Decoding)表示解碼成功率)在75%以上時(shí),當(dāng)前的網(wǎng)絡(luò)結(jié)構(gòu)中網(wǎng)絡(luò)編碼技術(shù)的使用相比傳統(tǒng)的存儲(chǔ)一轉(zhuǎn)發(fā)模式在通信開(kāi)銷(xiāo)上有優(yōu)勢(shì)。判斷方法如下設(shè)網(wǎng)絡(luò)模型中有M個(gè)源節(jié)點(diǎn)、一個(gè)中繼節(jié)點(diǎn)以及M個(gè)目的節(jié)點(diǎn),每個(gè)源節(jié)點(diǎn)中存在一條指向相應(yīng)目的節(jié)點(diǎn)的數(shù)據(jù)流,并且所有的數(shù)據(jù)流均流經(jīng)同一個(gè)中繼節(jié)點(diǎn),假設(shè)源節(jié)點(diǎn)距離目的節(jié)點(diǎn)為兩跳的距離,且該模型滿足網(wǎng)絡(luò)編碼的條件即在中繼節(jié)點(diǎn)處可以進(jìn)行網(wǎng)絡(luò)編碼,同時(shí)在目的節(jié)點(diǎn)能夠完成解碼,因此為了保證網(wǎng)絡(luò)編碼應(yīng)用的有效性需要滿足
權(quán)利要求
1. 一種基于網(wǎng)絡(luò)編碼的網(wǎng)絡(luò)編碼修復(fù)方法,其特征在于包括以下步驟 第一步,解碼失效節(jié)點(diǎn)向鄰居節(jié)點(diǎn)請(qǐng)求重傳所缺失的原始數(shù)據(jù)包;解碼節(jié)點(diǎn)發(fā)生解碼失效后,首先根據(jù)有效的原始數(shù)據(jù)包以及解碼失效的編碼包分析出導(dǎo)致解碼失效所缺失的原始數(shù)據(jù)包,從而形成重傳請(qǐng)求,向周?chē)従庸?jié)點(diǎn)廣播發(fā)送重傳請(qǐng)求包,即Request包,Request包中包括請(qǐng)求節(jié)點(diǎn)的ID和請(qǐng)求節(jié)點(diǎn)所缺失的數(shù)據(jù)包集合Request Packet ; 第二步,當(dāng)鄰居節(jié)點(diǎn)在接收到重傳請(qǐng)求后根據(jù)自身緩沖隊(duì)列中的原始數(shù)據(jù)包集合,發(fā)送自己的節(jié)點(diǎn)基本信息NFI給請(qǐng)求節(jié)點(diǎn); 解碼節(jié)點(diǎn)向鄰居節(jié)點(diǎn)廣播Request包后,鄰居節(jié)點(diǎn)接收到Request包并讀取包信息,將自己緩存中的原始包與Request包中的Request Packet字段進(jìn)行比較,根據(jù)比較有以下兩種結(jié)果 (1)如果鄰居節(jié)點(diǎn)的緩存中的原始包與Request包中的RequestPacket字段中的元素有交集,則表明這個(gè)鄰居節(jié)點(diǎn)有解碼節(jié)點(diǎn)所需的原始包,然后將自己的NFI以R印Iy包的形式發(fā)送給解碼節(jié)點(diǎn),其中NFI中包含有節(jié)點(diǎn)ID以及節(jié)點(diǎn)所包含的原始數(shù)據(jù)包集合; (2)如果鄰居節(jié)點(diǎn)的緩存中的原始包與Request包中的RequestPacket字段中的元素沒(méi)有交集,則表明這個(gè)鄰居節(jié)點(diǎn)中沒(méi)有解碼節(jié)點(diǎn)所需的原始包,那么鄰居節(jié)點(diǎn)將丟棄Request包,并不做任何操作; 第三步,解碼節(jié)點(diǎn)在接收到鄰居節(jié)點(diǎn)的NFI信息后通過(guò)CBCR算法計(jì)算得出所需的重傳數(shù)據(jù)包集合并形成RACK請(qǐng)求包發(fā)送給鄰居節(jié)點(diǎn); 解碼節(jié)點(diǎn)接收到來(lái)自鄰居節(jié)點(diǎn)的NFI信息后在本地節(jié)點(diǎn)形成鄰居節(jié)點(diǎn)信息表NNI,NNI中包含有鄰居節(jié)點(diǎn)的ID、鄰居節(jié)點(diǎn)所包含的原始包的集合PI,以及解碼節(jié)點(diǎn)也鄰居節(jié)點(diǎn)的聯(lián)通狀態(tài)LS ; 首先定義變量i、j和K,其中變量i用來(lái)記錄解碼失效包的序號(hào),K用來(lái)記錄重傳數(shù)據(jù)包的序號(hào),j記錄鄰居節(jié)點(diǎn)的編號(hào);通過(guò)循環(huán)判斷變量i的值是否等于解碼失效的編碼包的個(gè)數(shù),從第一個(gè)解碼失效包開(kāi)始,即記i=l ;假設(shè)有M個(gè)鄰居節(jié)點(diǎn)包含有解碼節(jié)點(diǎn)所缺失的數(shù)據(jù)包,通過(guò)解碼失效包所缺失的數(shù)據(jù)包信息與NNI中鄰居節(jié)點(diǎn)數(shù)據(jù)包信息作對(duì)比,從而形成一個(gè)重傳數(shù)據(jù)包集合,記為Q[],并記K=l,以此循環(huán),直到缺失數(shù)據(jù)包集合為空,即直到所有的缺失數(shù)據(jù)包完成計(jì)算得出各自的重傳包集合Q[];此時(shí)得到的Q[]中包含解碼節(jié)點(diǎn),最后對(duì)Q[]做去重處理以降低傳輸?shù)拈_(kāi)銷(xiāo),通過(guò)計(jì)算重傳算法的計(jì)算復(fù)雜度為0(n2);待解碼節(jié)點(diǎn)完成重傳數(shù)據(jù)包計(jì)算后,即可得出重傳數(shù)據(jù)包的組合,從而形成RACK包,其中在RACK包中包含有重傳數(shù)據(jù)包的類(lèi)型Type、被請(qǐng)求重傳的鄰居節(jié)點(diǎn)的ID (RNN)以及請(qǐng)求重傳的數(shù)據(jù)包集合RP,其中在Type的定義中包含有‘C’和‘S’兩種類(lèi)型,‘C’表示所需重傳的數(shù)據(jù)包以編碼的方式重傳,而‘S’表示所需重傳的數(shù)據(jù)包以單個(gè)原始包的方式重傳; 解碼節(jié)點(diǎn)完成RACK包的構(gòu)造后,將RACK包通過(guò)廣播的方式發(fā)送給鄰居節(jié)點(diǎn); 第四步,鄰居節(jié)點(diǎn)在接收到來(lái)自解碼節(jié)點(diǎn)的RACK包后,根據(jù)RACK中的請(qǐng)求內(nèi)容重傳解碼節(jié)點(diǎn)所需的數(shù)據(jù)包,具體為 (I)若RACK包中的RNN字段中包含有本鄰居節(jié)點(diǎn)的ID,表明解碼節(jié)點(diǎn)需要本鄰居節(jié)點(diǎn)重傳數(shù)據(jù)包,本鄰居節(jié)點(diǎn)獲取RNN值等于自身ID的記錄中相對(duì)應(yīng)的Type值以及RP信息;若Type= ‘C’,那么表明這條記錄中的RP集合長(zhǎng)度大于1,此時(shí)本鄰居節(jié)點(diǎn)需要對(duì)RP中的重傳數(shù)據(jù)包進(jìn)行編碼操作,并以編碼包的形式發(fā)送給解碼節(jié)點(diǎn);若Type= ‘S’,表明這條記錄中的RP集合長(zhǎng)度等于I,此時(shí)本鄰居節(jié)點(diǎn)只需將RP中的重傳數(shù)據(jù)包以單個(gè)原始包的方式發(fā)送給解碼節(jié)點(diǎn); ( 2)若RACK包中的RNN字段中不包含有本鄰居節(jié)點(diǎn)的ID,表明解碼節(jié)點(diǎn)不需要本鄰居節(jié)點(diǎn)重傳數(shù)據(jù)包,那么本鄰居節(jié)點(diǎn)將收到的RACK包直接丟棄。
全文摘要
本發(fā)明提供的是一種基于網(wǎng)絡(luò)編碼的網(wǎng)絡(luò)編碼修復(fù)方法,其步驟是第一步,解碼失效節(jié)點(diǎn)向鄰居節(jié)點(diǎn)請(qǐng)求重傳所缺失的原始數(shù)據(jù)包;第二步,當(dāng)鄰居節(jié)點(diǎn)在接收到重傳請(qǐng)求后根據(jù)自身緩沖隊(duì)列中的原始數(shù)據(jù)包集合,發(fā)送自己的節(jié)點(diǎn)基本信息NFI給請(qǐng)求節(jié)點(diǎn);第三步,解碼節(jié)點(diǎn)在接收到鄰居節(jié)點(diǎn)的NFI信息后通過(guò)CBCR算法計(jì)算得出所需的重傳數(shù)據(jù)包集合并形成RACK請(qǐng)求包發(fā)送給鄰居節(jié)點(diǎn);第四步,鄰居節(jié)點(diǎn)在接收到來(lái)自解碼節(jié)點(diǎn)的RACK包后,根據(jù)RACK中的請(qǐng)求內(nèi)容重傳解碼節(jié)點(diǎn)所需的數(shù)據(jù)包。本發(fā)明所提出的網(wǎng)絡(luò)編碼修復(fù)方法降低編碼修復(fù)過(guò)程中的數(shù)據(jù)包重傳的次數(shù),提高了網(wǎng)絡(luò)編碼應(yīng)用的有效性和可靠性。
文檔編號(hào)H04L1/00GK102684836SQ201210150038
公開(kāi)日2012年9月19日 申請(qǐng)日期2012年5月15日 優(yōu)先權(quán)日2012年5月15日
發(fā)明者蘭海燕, 宋洪濤, 康世龍, 王浩, 趙蘊(yùn)龍 申請(qǐng)人:哈爾濱工程大學(xué)