專(zhuān)利名稱(chēng):基于網(wǎng)絡(luò)編碼的數(shù)據(jù)重傳方法
技術(shù)領(lǐng)域:
本發(fā)明涉及無(wú)線通信領(lǐng)域,特別是涉及一種提高數(shù)據(jù)重傳效率的方法。
技術(shù)背景
由于無(wú)線鏈路的高比特出錯(cuò)率以及干擾的因素,因而無(wú)線通信與傳統(tǒng)的有線通信相比有較為嚴(yán)重的丟包率。為了提高傳輸?shù)目煽啃?,目前已有的解決方案包括自動(dòng)重傳請(qǐng)求(Automatic Repeat Request,簡(jiǎn)稱(chēng) ARQ)禾口前向糾錯(cuò)(Forward Error Correction,簡(jiǎn)稱(chēng)FEC)。將ARQ和FEC技術(shù)結(jié)合使用,就是混合自動(dòng)重傳請(qǐng)求(Hybrid AutomaticRetransmission-reQuest,簡(jiǎn)稱(chēng) HARQ)。在 ARQ 和 HARQ 技術(shù)下,接收節(jié)點(diǎn)反饋原始數(shù)據(jù)包的接收情況,源節(jié)點(diǎn)根據(jù)反饋信息重傳丟失的數(shù)據(jù)包,直到成功發(fā)送數(shù)據(jù)包或達(dá)到最大重傳次數(shù)。但是在無(wú)線通信中,由于接收節(jié)點(diǎn)數(shù)量較多、數(shù)據(jù)包丟失較分散、重傳數(shù)據(jù)包可能再次丟失等因素,傳統(tǒng)重傳技術(shù)需要數(shù)量很大的傳輸次數(shù),因此對(duì)無(wú)線信道的占用率很高,從而降低了信道有效利用率。
針對(duì)上述問(wèn)題,出現(xiàn)了一種將網(wǎng)絡(luò)編碼(Network Coding,簡(jiǎn)稱(chēng)為NC)與ARQ相結(jié)合的重傳技術(shù),即網(wǎng)絡(luò)編碼。在網(wǎng)絡(luò)編碼技術(shù)下,源節(jié)點(diǎn)把對(duì)應(yīng)于不同目標(biāo)節(jié)點(diǎn)的多個(gè)數(shù)據(jù)包編碼成一個(gè)編碼數(shù)據(jù)包,然后通過(guò)一次傳輸發(fā)送該編碼數(shù)據(jù)包。目標(biāo)節(jié)點(diǎn)通過(guò)之前接收到的原始數(shù)據(jù)包來(lái)解碼該編碼數(shù)據(jù)包得到所需要的原始數(shù)據(jù)包。相比傳統(tǒng)重傳技術(shù),使用網(wǎng)絡(luò)編碼技術(shù)可以增加單位時(shí)間內(nèi)傳輸?shù)男畔⒘?,從而減少重傳數(shù)據(jù)包的數(shù)量和無(wú)線信道的占用率。
實(shí)際應(yīng)用中,源節(jié)點(diǎn)需要根據(jù)一定的調(diào)度策略決定先重傳哪些數(shù)據(jù)包。調(diào)度策略的好壞與系統(tǒng)的性能有很大的關(guān)系,只有通過(guò)合理調(diào)度,才能充分發(fā)揮網(wǎng)絡(luò)編碼在提高無(wú)線信道利用率上的優(yōu)勢(shì)。由于無(wú)線鏈路的不可靠性以及廣播傳輸特性,數(shù)據(jù)包在重傳過(guò)程中不僅可能再次丟失,而且各個(gè)節(jié)點(diǎn)對(duì)該數(shù)據(jù)包的接收情況也可能發(fā)生改變。這樣就導(dǎo)致了網(wǎng)絡(luò)中的編碼機(jī)會(huì)隨著數(shù)據(jù)的傳輸在不斷變化著。但是,現(xiàn)有網(wǎng)絡(luò)編碼的調(diào)度方法僅是從重傳隊(duì)列中依次取出數(shù)據(jù)包進(jìn)行重傳,并沒(méi)有考慮通過(guò)尋找這種變化的規(guī)律來(lái)充分的挖掘網(wǎng)絡(luò)中的編碼機(jī)會(huì),從而影響了網(wǎng)絡(luò)編碼算法的效率。
另外,在現(xiàn)有網(wǎng)絡(luò)編碼方法中,由于接收節(jié)點(diǎn)不對(duì)解碼失敗的編碼數(shù)據(jù)包進(jìn)行反饋,因此源節(jié)點(diǎn)需要保證每個(gè)編碼數(shù)據(jù)包中最多只能含有某個(gè)接收節(jié)點(diǎn)丟失的一個(gè)原始數(shù)據(jù)包(當(dāng)包含有該一個(gè)接收節(jié)點(diǎn)丟失的2個(gè)或2個(gè)以上丟失的原始數(shù)據(jù)包時(shí),接收節(jié)點(diǎn)無(wú)法解碼)。這樣不僅減少了網(wǎng)絡(luò)中的編碼機(jī)會(huì),而且可能無(wú)法選擇出最佳的編碼組合方式, 從而大大降低了網(wǎng)絡(luò)編碼算法的效率。發(fā)明內(nèi)容
本發(fā)明為解決上述技術(shù)問(wèn)題所采用的技術(shù)方案是,提供一種網(wǎng)絡(luò)編碼效率更高的基于網(wǎng)絡(luò)編碼的數(shù)據(jù)重傳方法。
基于網(wǎng)絡(luò)編碼的數(shù)據(jù)重傳方法,包括以下步驟
統(tǒng)計(jì)步驟源節(jié)點(diǎn)發(fā)送數(shù)據(jù)包之后,接收并統(tǒng)計(jì)接收節(jié)點(diǎn)反饋回的各數(shù)據(jù)包的接收情況,進(jìn)入判斷步驟;所述數(shù)據(jù)包為原始數(shù)據(jù)包或編碼數(shù)據(jù)包;判斷步驟源節(jié)點(diǎn)判斷是否有需要重傳的數(shù)據(jù)包,如是,則進(jìn)入編碼步驟;如否, 則結(jié)束重傳;編碼步驟源節(jié)點(diǎn)按編碼規(guī)則優(yōu)先對(duì)接收情況最差的數(shù)據(jù)包進(jìn)行網(wǎng)絡(luò)編碼,得到本次重傳的最新的編碼數(shù)據(jù)包,進(jìn)入發(fā)送步驟;發(fā)送步驟源節(jié)點(diǎn)向所有接收節(jié)點(diǎn)廣播本次需要重傳的數(shù)據(jù)包,返回統(tǒng)計(jì)步驟。本發(fā)明優(yōu)先使用當(dāng)前接收情況最差的數(shù)據(jù)包進(jìn)行網(wǎng)絡(luò)編碼,可增加編碼增益,當(dāng)編碼增益越大,重傳次數(shù)就會(huì)越小。并且,本發(fā)明根據(jù)每一次的接收情況反饋信息來(lái)體現(xiàn)網(wǎng)絡(luò)中編碼機(jī)會(huì)變化,再根據(jù)網(wǎng)絡(luò)中編碼機(jī)會(huì)變化規(guī)律,動(dòng)態(tài)地對(duì)重傳數(shù)據(jù)進(jìn)行調(diào)度,能有效地提高網(wǎng)絡(luò)編碼效率。具體的,源節(jié)點(diǎn)接收并統(tǒng)計(jì)接收節(jié)點(diǎn)反饋回的數(shù)據(jù)包的接收情況的具體方法是源節(jié)點(diǎn)為每個(gè)已發(fā)送的數(shù)據(jù)包建立接收向量;所述接收向量中每一個(gè)元素對(duì)應(yīng)一個(gè)接收節(jié)點(diǎn)對(duì)該數(shù)據(jù)包的接收情況;所述接收情況包括接收成功、接收失敗、待確認(rèn);源節(jié)點(diǎn)每接收到一個(gè)接收節(jié)點(diǎn)反饋的接收情況之后,更新數(shù)據(jù)包對(duì)應(yīng)的接收向量;當(dāng)源節(jié)點(diǎn)未收到接收節(jié)點(diǎn)對(duì)數(shù)據(jù)包的反饋信息,則保持該數(shù)據(jù)包的接收向量中對(duì)應(yīng)該接收節(jié)點(diǎn)的元素為現(xiàn)有狀態(tài);具體的,源節(jié)點(diǎn)優(yōu)先對(duì)接收情況最差的數(shù)據(jù)包進(jìn)行網(wǎng)絡(luò)編碼的具體方法是源節(jié)點(diǎn)統(tǒng)計(jì)需要重傳的數(shù)據(jù)包對(duì)應(yīng)的接收向量中接收成功元素和接收失敗元素的個(gè)數(shù),根據(jù)接收成功元素和接收失敗元素的個(gè)數(shù)將數(shù)據(jù)包放入對(duì)應(yīng)的優(yōu)先級(jí)重傳隊(duì)列中;數(shù)據(jù)包對(duì)應(yīng)的接收向量中接收失敗元素的個(gè)數(shù)越多對(duì)應(yīng)放入的優(yōu)先級(jí)重傳對(duì)列的優(yōu)先級(jí)越高;源節(jié)點(diǎn)按編碼規(guī)則,以優(yōu)先級(jí)從高到低的順序,從優(yōu)先級(jí)重傳隊(duì)列中依次取出數(shù)據(jù)包進(jìn)行編碼。本發(fā)明可遵循現(xiàn)有的網(wǎng)絡(luò)編碼規(guī)則,即編碼數(shù)據(jù)包中最多只能含有各接收節(jié)點(diǎn)丟失的一個(gè)原始數(shù)據(jù)包。優(yōu)選的,本發(fā)明為了更進(jìn)一步地提高網(wǎng)絡(luò)編碼效率,在按優(yōu)先級(jí)重傳的基礎(chǔ)上,改進(jìn)了編碼規(guī)則。改進(jìn)后的編碼規(guī)則為編碼數(shù)據(jù)包中每個(gè)原始數(shù)據(jù)包都至少能恢復(fù)一個(gè)接收節(jié)點(diǎn)丟失的原始數(shù)據(jù)包。為了適應(yīng)改進(jìn)的編碼規(guī)則,接收節(jié)點(diǎn)反饋數(shù)據(jù)包的接收情況的具體方法是當(dāng)接收節(jié)點(diǎn)能通過(guò)接收到的數(shù)據(jù)包恢復(fù)自己丟失的原始數(shù)據(jù)包,則向源節(jié)點(diǎn)反饋該解碼恢復(fù)出的原始數(shù)據(jù)包接收成功;當(dāng)接收節(jié)點(diǎn)不能解碼接收到的編碼數(shù)據(jù)包,則向源節(jié)點(diǎn)返回編碼數(shù)據(jù)包接收成功;當(dāng)接收節(jié)點(diǎn)不能從接收到的編碼數(shù)據(jù)包中恢復(fù)自己丟失的原始數(shù)據(jù)包,則不向源節(jié)點(diǎn)反饋任何接收信息;當(dāng)接收節(jié)點(diǎn)未接收到數(shù)據(jù)包,則該接收節(jié)點(diǎn)向源節(jié)點(diǎn)反饋該數(shù)據(jù)包接收失敗。源節(jié)點(diǎn)執(zhí)行的判斷步驟具體為源節(jié)點(diǎn)分別統(tǒng)計(jì)各數(shù)據(jù)包對(duì)應(yīng)的接收向量中接收成功元素和接收失敗元素的個(gè)數(shù),如有接收向量所有元素都是接收成功元素,則丟棄該收向量對(duì)應(yīng)的數(shù)據(jù)包;如所有接收向量中所有元素都是接收成功元素,則結(jié)束重傳;
如有原始數(shù)據(jù)包對(duì)應(yīng)的接收向量中至少有一個(gè)接收失敗元素,則需要對(duì)該原始數(shù)據(jù)包進(jìn)行重傳;
如源節(jié)點(diǎn)判斷當(dāng)編碼數(shù)據(jù)包中至少包含有一個(gè)原始數(shù)據(jù)包不能恢復(fù)任何一個(gè)接收節(jié)點(diǎn)丟失的原始數(shù)據(jù)包,則丟棄該編碼數(shù)據(jù)包;如源節(jié)點(diǎn)判斷當(dāng)編碼數(shù)據(jù)包中包含的每個(gè)原始數(shù)據(jù)包都至少能恢復(fù)一個(gè)接收節(jié)點(diǎn)丟失的原始數(shù)據(jù)包,則該編碼數(shù)據(jù)包需要重傳, 并暫停將該編碼數(shù)據(jù)包中包含的所有原始數(shù)據(jù)包作為需要重傳的原始數(shù)據(jù)包放入優(yōu)先級(jí)隊(duì)列中;所述編碼數(shù)據(jù)包中包含的原始數(shù)據(jù)包是組成該編碼數(shù)據(jù)包的原始數(shù)據(jù)包。
本發(fā)明的有益效果是,最大限度的挖掘網(wǎng)絡(luò)中的編碼機(jī)會(huì),提高網(wǎng)絡(luò)編碼算法的效率,從而減少重傳次數(shù),減少無(wú)線信道的占用率。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面參考附圖并結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述。
本實(shí)施例采用2元域上的加法運(yùn)算來(lái)生成和解析編碼數(shù)據(jù)包,操作簡(jiǎn)單,對(duì)系統(tǒng)軟硬件沒(méi)有任何特殊要求。需要注意的是,參與編碼運(yùn)算的數(shù)據(jù)包數(shù)目可以為η個(gè),η為不小于2的自然數(shù)。因此根據(jù)高斯定理,接收節(jié)點(diǎn)當(dāng)且僅當(dāng)已知其中的η-1個(gè)數(shù)據(jù)包,才可以根據(jù)所述線性變換從η個(gè)數(shù)據(jù)包形成的編碼數(shù)據(jù)包中解出自己丟失的數(shù)據(jù)包,得到全部的 η個(gè)數(shù)據(jù)包。如果接收節(jié)點(diǎn)已知的數(shù)據(jù)包數(shù)目為m個(gè),(m< η-1),那么接收節(jié)點(diǎn)至少需要再接收(n-1-m)個(gè)數(shù)據(jù)包才能解出所有的η個(gè)數(shù)據(jù)包。
源節(jié)點(diǎn)的傳輸過(guò)程分為兩個(gè)階段原始數(shù)據(jù)發(fā)送階段和數(shù)據(jù)重傳階段。
在原始數(shù)據(jù)發(fā)送階段,源節(jié)點(diǎn)依次發(fā)送K個(gè)原始數(shù)據(jù)包。由于無(wú)線信道的不可靠性,某些原始數(shù)據(jù)包不能正確到達(dá)某些接收節(jié)點(diǎn)。因此,源節(jié)點(diǎn)在數(shù)據(jù)重傳階段對(duì)丟失的原始數(shù)據(jù)包進(jìn)行重傳。
為了清楚地說(shuō)明本發(fā)明重傳方法的實(shí)現(xiàn)過(guò)程,首先引入如下符號(hào)
R1, 1 = 1,2,... ,N =N為接收節(jié)點(diǎn)總個(gè)數(shù),R1表示第1個(gè)接收節(jié)點(diǎn);
Pi, i = 1,2, ... , K :K表示源節(jié)點(diǎn)生成的原始數(shù)據(jù)包的總個(gè)數(shù),Pi表示源節(jié)點(diǎn)生成的第i個(gè)原始數(shù)據(jù)包;
Pen 編碼數(shù)據(jù)包;
V(P)數(shù)據(jù)包P所對(duì)應(yīng)的接收向量,其維數(shù)為N;
M⑵V(P)中“1”元素的個(gè)數(shù),即成功接收到P的接收節(jié)點(diǎn)的個(gè)數(shù);
S(P) =V(P)中“-1”元素的個(gè)數(shù),即沒(méi)有成功接收到P的接收節(jié)點(diǎn)的個(gè)數(shù);
C(P)數(shù)據(jù)包P中包含的原始數(shù)據(jù)包的集合;
D(P)能通過(guò)解碼數(shù)據(jù)包P得到自己丟包的接收節(jié)點(diǎn)的集合。
如果P為原始數(shù)據(jù)包,則C(P) = {P},D(P) = (R1 =R1沒(méi)有成功接收到P}。其中 “,,表示集合D (P)的元素札都滿足條件“札沒(méi)有成功接收到P”。
實(shí)施例1
本實(shí)施的改進(jìn)基于現(xiàn)有網(wǎng)絡(luò)編碼規(guī)則的網(wǎng)絡(luò)編碼重傳
圖2是本發(fā)明提出的數(shù)據(jù)重傳方法實(shí)施例的流程圖,重傳方法包括以下步驟步驟201、源節(jié)點(diǎn)發(fā)送數(shù)據(jù)包P之后,為每個(gè)沒(méi)有接收向量的數(shù)據(jù)包建立接收向量 (這里的數(shù)據(jù)包P即可以是原始數(shù)據(jù)包Pi (i = 1,2,...,K),也可以是當(dāng)前發(fā)送的編碼數(shù)據(jù)包PJ ο
圖1是本發(fā)明提出的數(shù)據(jù)包P的接收向量示意圖。接收向量中包括N個(gè)元素,每一個(gè)元素對(duì)應(yīng)一個(gè)接收節(jié)點(diǎn)的接收情況。當(dāng)接收向量的第1(1 = 1,2,...,N)個(gè)元素為1, 則表示接收節(jié)點(diǎn)&成功接收到了 P ;或者,如果第1個(gè)元素為-1,則表示札丟失了 P ;或者, 如果第1個(gè)元素為0,則表示待確認(rèn),Ii1沒(méi)有反饋對(duì)P的接收情況信息。接收向量中每個(gè)元素的初始值為0。步驟202、接收節(jié)點(diǎn)接收數(shù)據(jù)包P,當(dāng)接收的數(shù)據(jù)P為編碼數(shù)據(jù)包Pen時(shí),還需要對(duì)編碼數(shù)據(jù)包進(jìn)行解碼。接收節(jié)點(diǎn)向源節(jié)點(diǎn)反饋數(shù)據(jù)包的接收情況為接收成功或接收失敗。 接收節(jié)點(diǎn)每收到一個(gè)編碼數(shù)據(jù)包,就通過(guò)解碼算法,嘗試從該編碼數(shù)據(jù)包中恢復(fù)自己丟失的原始數(shù)據(jù)包,如果接收節(jié)點(diǎn)無(wú)法從該編碼數(shù)據(jù)包中恢復(fù)自己丟失的原始數(shù)據(jù)包,則直接丟棄該編碼數(shù)據(jù)包(按現(xiàn)有的編碼規(guī)則,該數(shù)據(jù)包對(duì)該接收節(jié)點(diǎn)無(wú)用,該接收節(jié)點(diǎn)不是此次數(shù)據(jù)傳輸?shù)哪繕?biāo)節(jié)點(diǎn)),不向源節(jié)點(diǎn)反饋接收情況。這里把數(shù)據(jù)包P看成由2元域上元素排列而成的向量,然后對(duì)其使用2元域上的加法運(yùn)算來(lái)生成新的向量,即使用模2和(異或運(yùn)算)來(lái)生成編碼數(shù)據(jù)包Pm。因此,接收節(jié)點(diǎn)也同樣使用模2和運(yùn)算來(lái)對(duì)接收的編碼數(shù)據(jù)包Pm進(jìn)行解碼。步驟203、源節(jié)點(diǎn)接收節(jié)點(diǎn)反饋的接收情況更新各接收向量,判斷是否需要進(jìn)行重傳,如是,再根據(jù)各接收向量將需要恢復(fù)的數(shù)據(jù)包分配到不同優(yōu)先級(jí)的重傳隊(duì)列中,再進(jìn)入步驟204 ;如否,結(jié)束重傳步驟。源節(jié)點(diǎn)使用接收向量來(lái)存放所有接收節(jié)點(diǎn)的接收情況信息,因此每接收到來(lái)自某個(gè)接收節(jié)點(diǎn)的反饋信息,就需要對(duì)所述接收向量進(jìn)行更新;所述更新接收向量的步驟包括在接收到來(lái)自接收節(jié)點(diǎn)R1的接收情況信息時(shí),將其中記錄為成功接收的原始數(shù)據(jù)包所對(duì)應(yīng)的接收向量的第1個(gè)元素置1,并將其中記錄為沒(méi)有成功接收的原始數(shù)據(jù)包所對(duì)應(yīng)的接收向量的第1個(gè)元素置為-1。源節(jié)點(diǎn)統(tǒng)計(jì)各原始數(shù)據(jù)包中接收成功元素(“1”元素)的個(gè)數(shù)M(P)和接收失敗元素(“-1”元素)的個(gè)數(shù)S(p),如有接收向量的接收成功元素的個(gè)數(shù)M(P)為N,則丟棄該收向量對(duì)應(yīng)的數(shù)據(jù)包;如所有接收向量的接收成功元素個(gè)數(shù)為N,則結(jié)束重傳;如有原始數(shù)據(jù)包對(duì)應(yīng)的接收向量中至少有一個(gè)接收失敗元素,則需要對(duì)該原始數(shù)據(jù)包進(jìn)行重傳。本實(shí)施例將重傳隊(duì)列設(shè)置為N個(gè)優(yōu)先級(jí),即優(yōu)先級(jí)級(jí)別B (1) 優(yōu)先級(jí)級(jí)別B (N), N為接收節(jié)點(diǎn)總個(gè)數(shù)。源節(jié)點(diǎn)統(tǒng)計(jì)需要重傳的原始數(shù)據(jù)包中接收失敗元素的個(gè)數(shù)S (P),根據(jù)接收失敗元素的個(gè)數(shù)S(P)將數(shù)據(jù)包放入對(duì)應(yīng)的優(yōu)先級(jí)重傳隊(duì)列B[S(P)]中;原始數(shù)據(jù)包對(duì)應(yīng)的接收向量中接收失敗元素的個(gè)數(shù)越多對(duì)應(yīng)放入的優(yōu)先級(jí)重傳對(duì)列的優(yōu)先級(jí)越高。本發(fā)明根據(jù)每一次的接收情況反饋來(lái)體現(xiàn)網(wǎng)絡(luò)中編碼機(jī)會(huì)變化,再根據(jù)網(wǎng)絡(luò)中編碼機(jī)會(huì)變化規(guī)律,合理地對(duì)重傳數(shù)據(jù)進(jìn)行調(diào)度。即通過(guò)對(duì)各數(shù)據(jù)包對(duì)應(yīng)的接收向量中各元素的統(tǒng)計(jì),將接收情況差的數(shù)據(jù)包輸入較高優(yōu)先級(jí)的重傳隊(duì)列中。步驟204、源節(jié)點(diǎn)根據(jù)本發(fā)明規(guī)定編碼規(guī)則提取出優(yōu)先級(jí)重傳隊(duì)列中的數(shù)據(jù)包并進(jìn)行網(wǎng)絡(luò)編碼生成編碼數(shù)據(jù)包Pm,再將該編碼數(shù)據(jù)包Pm廣播給所有接收節(jié)點(diǎn),之后,返回步驟201。
源節(jié)點(diǎn)按照優(yōu)先級(jí)從高到低的順序,從優(yōu)先級(jí)重傳隊(duì)列中依次取出一個(gè)原始數(shù)據(jù)包,將該原始數(shù)據(jù)包與預(yù)設(shè)數(shù)據(jù)包進(jìn)行網(wǎng)絡(luò)編碼,判斷編碼結(jié)果是否滿足編碼規(guī)則;預(yù)設(shè)數(shù)據(jù)包的初始值為全零。
如滿足,則以當(dāng)前的編碼結(jié)果作為新的預(yù)設(shè)數(shù)據(jù)包,再判斷是否所有優(yōu)先級(jí)重傳隊(duì)列中的原始數(shù)據(jù)包已被檢查,如是,將當(dāng)前的預(yù)設(shè)數(shù)據(jù)包作為本次重傳的最新的編碼數(shù)據(jù)包,本次編碼結(jié)束,如否,則返回本步驟;
如不滿足,判斷是否所有優(yōu)先級(jí)重傳隊(duì)列中的原始數(shù)據(jù)包已被檢查,如是,將當(dāng)前的預(yù)設(shè)數(shù)據(jù)包作為本次需要重傳的數(shù)據(jù)包,本次編碼結(jié)束,如否,則返回本步驟;
本實(shí)施例的網(wǎng)絡(luò)編碼過(guò)程保證了接收情況較差的原始數(shù)據(jù)包得到了較早的傳輸機(jī)會(huì)。先傳輸接收情況差的原始數(shù)據(jù)包,即先重傳被較少節(jié)點(diǎn)接收到的原始數(shù)據(jù)包,能夠最大限度地挖掘網(wǎng)絡(luò)中的編碼機(jī)會(huì),從而減少重傳次數(shù),節(jié)省系統(tǒng)資源。
如圖3所示的一種一對(duì)多的無(wú)線傳輸示意圖。源節(jié)點(diǎn)通過(guò)無(wú)線鏈路向N = 3個(gè)接收節(jié)點(diǎn)R1, R2和R3發(fā)送了 3個(gè)原始數(shù)據(jù)包P1, P2和P3。接收節(jié)點(diǎn)隊(duì)丟失了原始數(shù)據(jù)包P1, 接收節(jié)點(diǎn)&丟失了原始數(shù)據(jù)包I32和P3,接收節(jié)點(diǎn)民丟失了原始數(shù)據(jù)包P3。&和民都沒(méi)有正確接收到了 P3。按照現(xiàn)有的NC-ARQ方法,源節(jié)點(diǎn)從重傳隊(duì)列中順次取出,對(duì)P1* P2進(jìn)行模2和運(yùn)算得到編碼數(shù)據(jù)包Pm為P1 P2。⑴如接收節(jié)點(diǎn)R1, R2和R3均成功接收到 Ρεη,可恢復(fù)2個(gè)原始數(shù)據(jù)包,下一次重傳僅傳送P3即可;(2)如只有R3正確接收到了該編碼數(shù)據(jù)包Ρεη,則源節(jié)點(diǎn)依然需要重傳?: !^,再次重傳也最多恢復(fù)2個(gè)原始數(shù)據(jù)包;(3)如R1 和&中一個(gè)或者兩個(gè)正確接收到了該編碼數(shù)據(jù)包,則網(wǎng)絡(luò)中需要重傳的原始數(shù)據(jù)包最多只有2個(gè)(P1和P3、或者P2和P3,或者P3),再次重傳最多可恢復(fù)2個(gè)或1個(gè)原始數(shù)據(jù)包。能夠看出,從重傳隊(duì)列中順次取出數(shù)據(jù)包進(jìn)行網(wǎng)絡(luò)編碼帶來(lái)的編碼增益最多只有2,即一次傳輸最多只能恢復(fù)2個(gè)原始數(shù)據(jù)包。
以圖3為例來(lái)進(jìn)行重傳
1、源節(jié)點(diǎn)通過(guò)無(wú)線鏈路向N = 3個(gè)接收節(jié)點(diǎn)R1A2和R3發(fā)送了 3個(gè)原始數(shù)據(jù)包P1, P2 和 P3。
源節(jié)點(diǎn)本地建立數(shù)據(jù)包的接收向量如下
V(P4) =
;
V(P5) =
;
V(P6) =
;
2、各接收節(jié)點(diǎn)向源節(jié)點(diǎn)返回各自的接收情況=R1丟失了原始數(shù)據(jù)包P1,接收節(jié)點(diǎn) &丟失了原始數(shù)據(jù)包P2、P3,接收節(jié)點(diǎn)R3丟失了原始數(shù)據(jù)包Ρ3。
3、源節(jié)點(diǎn)根據(jù)反饋回的接收情況更新接收向量如下
V(P1)=[-1,1,1];
V(P2)=[1,--1,1];
V(P3)=[1,--1,-1]
4、由于有原始數(shù)據(jù)包未被成功接收,需要進(jìn)行重傳;第一次重傳過(guò)程如下
401、利用各接收向量得到S(P1) = 1,S(P2) = 1,S(P3) = 2,設(shè)置源節(jié)點(diǎn)當(dāng)前的優(yōu)先級(jí)重傳隊(duì)列為B [3]:無(wú);B[2] =P3 ;B[l] =P1^P2 ;402、源節(jié)點(diǎn)開(kāi)始進(jìn)行網(wǎng)絡(luò)編碼設(shè)置Pen為全零向量,D(Pen) = Φ ;由于Β[3]無(wú)原始數(shù)據(jù)包,從Β[2]中取出第1個(gè)原始數(shù)據(jù)包Pt = P3,Pe :P3 = :P3,由于D(P3) η D(Pen)= Φ,所以滿足編碼數(shù)據(jù)包Pe,Ij3中最多只能含有各接收節(jié)點(diǎn)丟失的一個(gè)原始數(shù)據(jù)包,則更新 Pen = P3, D (Pen) = {Ρ2、Ρ3};403、從B [1]中取出第1個(gè)原始數(shù)據(jù)包Pt = P1,判斷PeP1滿足編碼規(guī)則,PeP1 只含有R1丟失的數(shù)據(jù)包P1,只含有&丟失的數(shù)據(jù)包P3,只含有民丟失的數(shù)據(jù)包P3,則更新 Pe =P3 Pi;405、從B[1]中取出第2個(gè)原始數(shù)據(jù)包Pt = P2,判斷:P3 P1 K不滿足編碼規(guī)貝U, 且已檢查完優(yōu)先級(jí)隊(duì)列中的所有原始數(shù)據(jù)包;5、源節(jié)點(diǎn)將^ P1作為第一次重傳編碼數(shù)據(jù)包Pml 當(dāng)源節(jié)點(diǎn)優(yōu)先重傳包括接收情況最差的P3W編碼數(shù)據(jù)包,本實(shí)施例使用為編碼數(shù)據(jù)包Pen,(1)如接收節(jié)點(diǎn)R1, R2和R3均成功接收到Pen,R1可恢復(fù)出P1, R2可恢復(fù)出P3,R3可恢復(fù)出P3,(Pen可恢復(fù)2個(gè)原始數(shù)據(jù)包)下一次重傳僅傳送P2即可;(2)如只有 &正確接收到了該編碼數(shù)據(jù)包Pm,下一次重傳可以將P1^hffiIj3作為新編碼數(shù)據(jù)包,這樣再次重傳就能夠恢復(fù)3個(gè)原始數(shù)據(jù)包。能夠看出,優(yōu)先使用接收情況最差的P3進(jìn)行網(wǎng)絡(luò)編碼帶來(lái)的編碼增益最多為3。當(dāng)編碼增益越大,重傳次數(shù)就會(huì)越小。6、源節(jié)點(diǎn)將:P3 ^P1作為第一次重傳編碼數(shù)據(jù)包Pml,重傳Pml之后,根據(jù)反饋回的接收情況(只有&正確接收到了該編碼數(shù)據(jù)包PJ更新接收向量如下V(P1) = [-1,1,1];V(P2) = [1, -1,1];V(P3) = [1,1, -1];7、由于有原始數(shù)據(jù)包未被成功接收,需要再次進(jìn)行重傳,并根據(jù)與上述編碼判斷過(guò)程類(lèi)似的判斷之后,確定第二次重傳的編碼數(shù)據(jù)包為Ij3 Ij2 P1。8、如接收節(jié)點(diǎn)R1A2和R3均成功接收,則三個(gè)節(jié)點(diǎn)均完成各自的數(shù)據(jù)恢復(fù),重傳過(guò)程結(jié)束。實(shí)施例2如圖2所示,重傳方法包括以下步驟步驟201、源節(jié)點(diǎn)發(fā)送數(shù)據(jù)包P之后,為每個(gè)沒(méi)有接收向量的數(shù)據(jù)包建立接收向量 (這里的數(shù)據(jù)包P即可以是原始數(shù)據(jù)包Pi (i = 1,2,...,K),也可以是當(dāng)前發(fā)送的編碼數(shù)據(jù)包PJ ο步驟202、接收節(jié)點(diǎn)接收數(shù)據(jù)包P,當(dāng)接收的數(shù)據(jù)P為編碼數(shù)據(jù)包Pen時(shí),還需要對(duì)編碼數(shù)據(jù)包進(jìn)行解碼;接收節(jié)點(diǎn)每收到一個(gè)編碼數(shù)據(jù)包,就通過(guò)解碼算法,嘗試通過(guò)該編碼數(shù)據(jù)包恢復(fù)自己丟失的原始數(shù)據(jù)包。如果接收節(jié)點(diǎn)不能從該編碼數(shù)據(jù)包中恢復(fù)自己丟失的原始數(shù)據(jù)包,則不向源節(jié)點(diǎn)反饋任何信息;如果接收節(jié)點(diǎn)不能對(duì)該編碼數(shù)據(jù)包進(jìn)行解碼,則將其存儲(chǔ)在緩存中。此時(shí),其發(fā)送的反饋信息包中還包括對(duì)該編碼數(shù)據(jù)包的接收情況信息;如果接收節(jié)點(diǎn)能從該編碼數(shù)據(jù)包中恢復(fù)自己丟失的原始數(shù)據(jù)包,則其發(fā)送的反饋信息包中只包括對(duì)解碼出得數(shù)據(jù)包的接收情況信息,而不包括對(duì)該編碼數(shù)據(jù)包的接收情況信息。
可選的,每當(dāng)接收節(jié)點(diǎn)收到數(shù)據(jù)包之后,即向源節(jié)點(diǎn)反饋接收情況。優(yōu)選的,為了降低反饋信息帶來(lái)的開(kāi)銷(xiāo),可采用異步反饋的方式,即接收節(jié)點(diǎn)每收到M個(gè)數(shù)據(jù)包時(shí),就發(fā)送一個(gè)反饋信息包,向源節(jié)點(diǎn)報(bào)告該接收節(jié)點(diǎn)當(dāng)前的接收情況。這樣能夠大大減少對(duì)無(wú)線信道的占用,提高能量和帶寬利用率。門(mén)限值M可由每個(gè)接收節(jié)點(diǎn)根據(jù)信道質(zhì)量等因素自行設(shè)定,每個(gè)接收節(jié)點(diǎn)對(duì)應(yīng)的門(mén)限值M可以不同。
接收節(jié)點(diǎn)的異步反饋方式可以通過(guò)以下子步驟來(lái)實(shí)現(xiàn)
初始化子步驟Al 預(yù)置接收變量η = 0,以及門(mén)限值M ;
接收子步驟Α2:當(dāng)接收到一個(gè)數(shù)據(jù)包時(shí),如果該數(shù)據(jù)包是未曾收到過(guò)的數(shù)據(jù)包, 則令η = η+1 ;
檢測(cè)子步驟A3 判斷是否滿足η <Μ,則是,則返回接收子步驟Α2,否則,令η = 0, 并執(zhí)行反饋?zhàn)硬襟EΑ4;
反饋?zhàn)硬襟EΑ4:根據(jù)收到的所有數(shù)據(jù)包,找到未成功接收的數(shù)據(jù)包信息,并將成功接收到的和未成功接收到的數(shù)據(jù)包信息以反饋報(bào)告的形式反饋到發(fā)送節(jié)點(diǎn)。
步驟203、源節(jié)點(diǎn)接收節(jié)點(diǎn)反饋的接收情況更新各接收向量,判斷是否需要進(jìn)行重傳,如是,再根據(jù)各接收向量將需要恢復(fù)的數(shù)據(jù)分配到不同優(yōu)先級(jí)的重傳隊(duì)列中,再進(jìn)入步驟204;如否,結(jié)束重傳步驟。
源節(jié)點(diǎn)使用接收向量來(lái)存放所有接收節(jié)點(diǎn)的接收情況信息,因此每接收到來(lái)自某個(gè)接收節(jié)點(diǎn)的反饋信息,就需要對(duì)所述接收向量進(jìn)行更新;
所述更新接收向量的步驟包括
在接收到來(lái)自接收節(jié)點(diǎn)R1的接收情況信息時(shí),將其中記錄為成功接收的數(shù)據(jù)包對(duì)應(yīng)的接收向量的第1個(gè)元素置1,并將其中記錄為沒(méi)有成功接收的數(shù)據(jù)包對(duì)應(yīng)的接收向量的第1個(gè)元素置為-1。
在掌握各接收節(jié)點(diǎn)的接收情況后,源節(jié)點(diǎn)的下一步工作是判斷哪些數(shù)據(jù)包需要再次重傳
對(duì)于原始數(shù)據(jù)包Pi,只要該數(shù)據(jù)包沒(méi)有被所有接收節(jié)點(diǎn)正確接收到,源節(jié)點(diǎn)就需要再次重傳該原始數(shù)據(jù)包。
本實(shí)施例對(duì)編碼數(shù)據(jù)包進(jìn)行是否需要重傳的判斷原則是只有當(dāng)某個(gè)編碼數(shù)據(jù)包被非目標(biāo)節(jié)點(diǎn)接收時(shí),源節(jié)點(diǎn)才有可能需要對(duì)該編碼數(shù)據(jù)包進(jìn)行重傳。所以,也只有當(dāng)接收節(jié)點(diǎn)不能對(duì)接收的編碼數(shù)據(jù)包進(jìn)行解碼時(shí),才需要向源節(jié)點(diǎn)反饋對(duì)該編碼數(shù)據(jù)包的接收情況信息。所述目標(biāo)節(jié)點(diǎn)是能夠從當(dāng)前接收到的數(shù)據(jù)包中恢復(fù)自己丟包的接收節(jié)點(diǎn)。
為滿足上述原則,實(shí)施例對(duì)編碼數(shù)據(jù)包進(jìn)行是否需要重傳的判斷可以通過(guò)以下子步驟實(shí)現(xiàn)
判斷子步驟Bl 判斷是否有非目標(biāo)節(jié)點(diǎn)成功接收到該編碼數(shù)據(jù)包,如果是,則執(zhí)行判斷子步驟Β2 ;否則,執(zhí)行丟棄子步驟Β4 ;
判斷子步驟Β2 判斷是否該編碼數(shù)據(jù)包中包含的每個(gè)原始數(shù)據(jù)包都至少能恢復(fù)一個(gè)接收節(jié)點(diǎn)丟失的原始數(shù)據(jù)包,如是,執(zhí)行存儲(chǔ)步驟Β3 ;如否,則執(zhí)行丟棄步驟Β4 ;
存儲(chǔ)子步驟Β3 將該編碼數(shù)據(jù)包放入隊(duì)列TrsQueue中,將該編碼數(shù)據(jù)包中包含的所有原始數(shù)據(jù)包放入隊(duì)列PenQueue中;
丟棄子步驟B4:丟棄該編碼數(shù)據(jù)包,將該編碼數(shù)據(jù)包中包含的所有原始數(shù)據(jù)包放入隊(duì)列TrsQueue中。
本實(shí)施例將重傳隊(duì)列設(shè)置為N個(gè)優(yōu)先級(jí),即優(yōu)先級(jí)級(jí)別B (1) 優(yōu)先級(jí)級(jí)別B (N), N為接收節(jié)點(diǎn)總個(gè)數(shù)。
根據(jù)各數(shù)據(jù)包對(duì)應(yīng)的接收向量將需要恢復(fù)的數(shù)據(jù)包分離到多個(gè)優(yōu)先級(jí)隊(duì)列具體可以通過(guò)以下子步驟實(shí)現(xiàn)
判斷子步驟Cl 如果某數(shù)據(jù)包P是隊(duì)列TrsQueue中的元素,并且該數(shù)據(jù)包的接收向量V(P)中沒(méi)有0元素,則進(jìn)入步驟C2 ;否則,保持?jǐn)?shù)據(jù)包P當(dāng)前狀態(tài);
統(tǒng)計(jì)子步驟C2 根據(jù)數(shù)據(jù)包P所對(duì)應(yīng)的接收向量,統(tǒng)計(jì)其中接收失敗元素(“_1” 元素)的個(gè)數(shù)S(P),當(dāng)S(P) =0,則表示該數(shù)據(jù)包P已被所有接收節(jié)點(diǎn)成功接收,丟棄P; S(P) Φ 0,則表示數(shù)據(jù)包P需要進(jìn)行重傳,進(jìn)入步驟C3 ;
分離子步驟C3 根據(jù)S(P)的值,將數(shù)據(jù)包P依次劃分到相應(yīng)的優(yōu)先級(jí)重傳隊(duì)列 B[S(P)]中。
步驟204、源節(jié)點(diǎn)根據(jù)本發(fā)明規(guī)定編碼規(guī)則提取出優(yōu)先級(jí)重傳隊(duì)列中的數(shù)據(jù)包并進(jìn)行網(wǎng)絡(luò)編碼生成編碼數(shù)據(jù)包Pm,再將該編碼數(shù)據(jù)包Pm廣播給所有接收節(jié)點(diǎn),之后,返回步驟201。
源節(jié)點(diǎn)首先取出最高優(yōu)先級(jí)隊(duì)列中的第一個(gè)數(shù)據(jù)包;然后在當(dāng)前最高優(yōu)先級(jí)隊(duì)列中選擇可以進(jìn)行編碼組合的數(shù)據(jù)包;如果已搜索完所述優(yōu)先級(jí)隊(duì)列中所有數(shù)據(jù)包,則在下一優(yōu)先級(jí)隊(duì)列中根據(jù)網(wǎng)絡(luò)編碼規(guī)則選擇需要組合的數(shù)據(jù)包;或者,如果已查找完所有優(yōu)先級(jí)重傳隊(duì)列,則對(duì)所述需要組合的數(shù)據(jù)包進(jìn)行逐位異或運(yùn)算,得到編碼數(shù)據(jù)包;最后,源節(jié)點(diǎn)將生成的編碼數(shù)據(jù)包廣播給接收節(jié)點(diǎn)。
本發(fā)明的網(wǎng)絡(luò)編碼過(guò)程保證了接收情況較差的數(shù)據(jù)包得到了較早的傳輸機(jī)會(huì)。先傳輸接收情況差的數(shù)據(jù)包,即先重傳被較少節(jié)點(diǎn)接收到的數(shù)據(jù)包,能夠最大限度地挖掘網(wǎng)絡(luò)中的編碼機(jī)會(huì),從而減少重傳次數(shù),節(jié)省系統(tǒng)資源。
為了提高網(wǎng)絡(luò)編碼的效率,本實(shí)施例的編碼方案遵循如下原則,即源節(jié)點(diǎn)不保證其生成的編碼數(shù)據(jù)包Pm能被網(wǎng)絡(luò)中所有的接收節(jié)點(diǎn)成功解碼,而只是保證Pm滿足如下條件所述生成的編碼數(shù)據(jù)包中包含的每個(gè)原始數(shù)據(jù)包都至少能恢復(fù)一個(gè)接收節(jié)點(diǎn)丟失的原始數(shù)據(jù)包,即
V P, e C(Pen),D(P1) η D(Pen)乒(K(1)
其中,VP, eC(Pen)表示Pi為是集合C(Pm)中的任意一個(gè)元素。
如圖4所示,源節(jié)點(diǎn)通過(guò)無(wú)線鏈路向N = 3個(gè)接收節(jié)點(diǎn)R1, R2和R3發(fā)送了 3個(gè)原始數(shù)據(jù)包p4,P5和p6。接收節(jié)點(diǎn)隊(duì)丟失了原始數(shù)據(jù)包P4,接收節(jié)點(diǎn)&丟失了原始數(shù)據(jù)包P5, 接收節(jié)點(diǎn)R3丟失了原始數(shù)據(jù)包P4,P5和P6。如按照現(xiàn)有的NC-ARQ方法,由于接收節(jié)點(diǎn)對(duì)不能解碼的數(shù)據(jù)包會(huì)直接進(jìn)行丟棄,所以源節(jié)點(diǎn)需要保證編碼數(shù)據(jù)包最多只能含有某個(gè)接收節(jié)點(diǎn)丟失的一個(gè)原始數(shù)據(jù)包(當(dāng)包含有該接收節(jié)點(diǎn)2個(gè)或2個(gè)以上丟失的原始數(shù)據(jù)包時(shí), 該接收節(jié)點(diǎn)無(wú)法解碼,只能丟棄該編碼數(shù)據(jù)包),因此在如圖4所示的情況下,源節(jié)點(diǎn)第一次重傳時(shí)只能傳送一個(gè)原始數(shù)據(jù)包。按照本發(fā)明的編碼策略,在如圖4所示的情況下,源節(jié)點(diǎn)首先對(duì)接收情況最差的數(shù)據(jù)包P4和P5作模2和運(yùn)算,生成編碼數(shù)據(jù)包P4 P5 (第一次重傳時(shí),將= :P4 P5 :P6不符合編碼策略,因?yàn)樵谶@種編碼組合下,P6 e C(Pen),MD(P6)= {R3},D(PJ = (R1, R2I, D (P6) Π D(Pen) = Φ),然后廣播給接收節(jié)點(diǎn)。本發(fā)明的接收節(jié)點(diǎn)R3 雖然不能解碼該編碼數(shù)據(jù)包,但是當(dāng)民正確接收到該編碼數(shù)據(jù)包,如果民在本地存儲(chǔ)該數(shù)據(jù)包并向源節(jié)點(diǎn)反饋了這一接收信息,則源節(jié)點(diǎn)就可以在下次重傳中把P4,P5和P6編碼在一起,生成新的編碼數(shù)據(jù)包P4^P5 否則,源節(jié)點(diǎn)只能再次重傳Ρ4 Ρ5。
圖5是本發(fā)明提出的基于優(yōu)先級(jí)隊(duì)列進(jìn)行網(wǎng)絡(luò)編碼的流程圖,具體包括
步驟501、初始化重傳隊(duì)列的最高優(yōu)先級(jí)g為接收節(jié)點(diǎn)總個(gè)數(shù)N,變量t = 1,并設(shè)置預(yù)設(shè)數(shù)據(jù)包Pm為全零向量,D (PJ = {R1:l = 1,...,N},之后進(jìn)入步驟502;
步驟502、判斷g是否等于0,如果是,則執(zhí)行步驟511 ;否則,執(zhí)行步驟503 ;
步驟503、判斷優(yōu)先級(jí)隊(duì)列B(g)是否有數(shù)據(jù)包存在,如果是,則執(zhí)行步驟505 ;否則,執(zhí)行步驟504;
步驟504、設(shè)置 g = g-Ι ;
步驟505、取出優(yōu)先級(jí)隊(duì)列B(g)中的第t個(gè)數(shù)據(jù)包Pt(Pt可以是原始數(shù)據(jù)包也可以是編碼數(shù)據(jù)包);
步驟506、判斷Pt是否能與Pen編碼在一起,即判斷編碼數(shù)據(jù)包1^ 朽是否滿足條件(1) :VP; eCiVen Pf),D(P1) ηD(Pe Pf) Φ 6其中 Pi 是集合C(Pe Pf)中的任意一個(gè)元素,如果是,則執(zhí)行步驟507,否則,執(zhí)行步驟508 ;當(dāng)Pen為全零時(shí),PePf = Pf,集合 C(Pe Pf)={Pf}, |C(P) I = 1,符號(hào)I · I表示集合的勢(shì),即為集合中元素的個(gè)數(shù);
步騾507、對(duì)Pt和Pen作逐位異或運(yùn)算,生成編碼數(shù)據(jù)包Pe = Pen Pt;
步驟508、判斷是否已經(jīng)查找完優(yōu)先級(jí)隊(duì)列B (g)中的所有數(shù)據(jù)包,即判斷等式t = |B(g) I是否成立,如果是,則執(zhí)行步驟510 ;否則,執(zhí)行步驟509 ;
步驟509、設(shè)置t = t+Ι,返回步驟505 ;
判斷是否已經(jīng)查找完優(yōu)先級(jí)隊(duì)列B(g)中的所有數(shù)據(jù)包,即判斷等式t = |B(g) 是否成立,如果是,則執(zhí)行步驟510 ;否則,執(zhí)行步驟505 ;
步驟510、重置t = 1,返回步驟504 ;
步驟511、判斷是否需要重傳Pm,即判斷Pm是否為全零向量,如果是,則執(zhí)行步驟 512;否則,執(zhí)行步驟513;
步驟512、Pen為全零向量表明網(wǎng)絡(luò)中已經(jīng)沒(méi)有需要重傳的數(shù)據(jù)包,則源節(jié)點(diǎn)結(jié)束重傳階段;當(dāng)然,也可不進(jìn)行步驟511的判斷,因?yàn)樵诰幋a步驟之前的步驟203中就能對(duì)是否重傳完畢做出判斷。
步驟513、重傳 Pen。
在實(shí)際應(yīng)用中,如果Pm是編碼數(shù)據(jù)包,則在重傳Pm前,還需要為其加上編碼數(shù)據(jù)包頭(coding header)。圖6是本發(fā)明提出的編碼數(shù)據(jù)包頭的格式。編碼數(shù)據(jù)包頭的CodeNum域用來(lái)表示該數(shù)據(jù)包是否為編碼數(shù)據(jù)包以及包含多少個(gè)原始數(shù)據(jù)包。如果 CodeNum = 1,表示非編碼數(shù)據(jù)包;如果CodeNum > 1,表示該包是編碼數(shù)據(jù)包,并且里面包含CodeNum個(gè)原始數(shù)據(jù)包;CodeSeq域用來(lái)記錄Pen的ID,即Pen是源節(jié)點(diǎn)在本次重傳階段中傳輸?shù)牡贑odeSeq個(gè)編碼數(shù)據(jù)包;CodePkt域用來(lái)記錄Pen包含的所有原始數(shù)據(jù)包的ID。 接收節(jié)點(diǎn)通過(guò)提取編碼數(shù)據(jù)包的編碼數(shù)據(jù)包頭來(lái)解碼該編碼數(shù)據(jù)包。
本實(shí)施例采用優(yōu)先級(jí)重傳隊(duì)列來(lái)存放所有需要重傳的數(shù)據(jù)包,并在生成編碼數(shù)據(jù)包時(shí)遵循如下原則,(1)先重傳具有較高優(yōu)先級(jí)的數(shù)據(jù)包;(2)參與編碼運(yùn)算的不僅有原始數(shù)據(jù)包,還包括編碼數(shù)據(jù)包;C3)不需要保證生成的編碼數(shù)據(jù)包Pm能被網(wǎng)絡(luò)中所有的接收節(jié)點(diǎn)成功解碼,但需要保證Pen滿足條件VP; eC(Pe ),D(Pi) Π D(Pen) Φ Φ。這樣,本實(shí)施例能夠最大限度的挖掘網(wǎng)絡(luò)中的編碼機(jī)會(huì),提高網(wǎng)絡(luò)編碼算法的效率,從而減少重傳次數(shù)無(wú)線信道的占用率。
以下用圖4為例,來(lái)完整地描述應(yīng)用本實(shí)施例方法實(shí)現(xiàn)的數(shù)據(jù)包傳輸過(guò)程
1、源節(jié)點(diǎn)通過(guò)無(wú)線鏈路向N = 3個(gè)接收節(jié)點(diǎn)R1A2和R3發(fā)送了 3個(gè)原始數(shù)據(jù)包P4, P5 和 P6。
源節(jié)點(diǎn)本地建立數(shù)據(jù)包的接收向量如下
V(P4) =
;
V(P5) =
;
V(P6) =
;
2、各接收節(jié)點(diǎn)向源節(jié)點(diǎn)返回各自的接收情況=R1丟失了原始數(shù)據(jù)包P4,接收節(jié)點(diǎn) R2丟失了原始數(shù)據(jù)包P5,接收節(jié)點(diǎn)民丟失了原始數(shù)據(jù)包P4,P5和Ρ6。
3、源節(jié)點(diǎn)根據(jù)反饋回的接收情況更新接收向量如下
V(P4) = [-1,1, -1];
V(P5) = [1,-1,-1];
V(P6) = [1,1, -1];
4、由于有原始數(shù)據(jù)包未被成功接收,需要進(jìn)行重傳;第一次重傳過(guò)程如下
401、利用各接收向量得到S(P4) = 2,S(P5) = 2,S(P6) = 1,設(shè)置源節(jié)點(diǎn)當(dāng)前的優(yōu)先級(jí)重傳隊(duì)列為
B [3]:無(wú);
Β[2]:Ρ4、Ρ5;
B[l] =P6 ;
TrsQueue : ;
PenQueue 無(wú);
402、源節(jié)點(diǎn)開(kāi)始進(jìn)行網(wǎng)絡(luò)編碼初始化t = l,g = N = 3,設(shè)置Pen為全零向量;由于B[3]無(wú)數(shù)據(jù)包,更新t = l,g = g-1 = 2,此時(shí),IB[2] I為2,從B[2]中取出第1個(gè)數(shù)據(jù)包 Pt = P4,由于 D (P4) = (R1,R3I,Pen P4 = P4,D(PeP4) Π D(P4) Φ φ,判斷PePf滿足編碼規(guī)則,則更新= Pen P4 = P4;
403、由于t乒B[2] I,更新t = t+1 = 2,從B[2]中取出第2個(gè)數(shù)據(jù)包Pt =P5,由于 D (P4) = (R1, R3I, D(P5) = (R2, R3I, PeP5 = P4 P5, D(Pen P5) = (Ri, R2), D(Pe P5)nD(P4)={Ri}^P5)ηD(P5) =(R2) Φ 0,判斷Pe Pf滿足編碼規(guī)貝1J, 則更新 = P4^P5;
404、由于 t=舊[2]|,更新1= l,g = g-1 = 1,此時(shí),B[l]為 1,從 B[l]中取出第 1 個(gè)數(shù)據(jù)包 Pt = P6,由于 D(P6) = {R3}, Ven P6 = P4 P5 P6,D(Pe P6) = (Ri, R2), D(PeP6) HD(P6) = φ,判斷 :P6不滿足編碼規(guī)則;
405、由于t = |B[1] | = 1,更新t = l,g = g-1 = 0,無(wú)其它數(shù)據(jù)包可以參與編碼,則重傳符合編碼規(guī)則的編碼數(shù)據(jù)包= P4 P5;
5、源節(jié)點(diǎn)將P4^P5作為第一次重傳編碼數(shù)據(jù)包Penl,重傳Penl之后,為當(dāng)前發(fā)送的編碼數(shù)據(jù)包Pml建立接收向量
源節(jié)點(diǎn)本地建立數(shù)據(jù)包的接收向量如下
V(P4) = [-1,1, -1];
V(P5) = [1, -1, -1];
V(P6) = [1,1, -1];
V(Pe i = P4 P5) =
;
6、各接收節(jié)點(diǎn)向源節(jié)點(diǎn)返回各自的接收情況接收節(jié)點(diǎn)禮、&未接收到編碼數(shù)據(jù)包Pml,向源節(jié)點(diǎn)反饋未成功接收的情況,接收節(jié)點(diǎn)R3成功接收了編碼數(shù)據(jù)包Pml,但無(wú)法解碼,將其存儲(chǔ)在本地,接收節(jié)點(diǎn)民向源節(jié)點(diǎn)返回未成功接收到編碼數(shù)據(jù)包Pml,接收節(jié)點(diǎn)隊(duì)、 R2均向源節(jié)點(diǎn)返回未成功接收到編碼數(shù)據(jù)包Pml的信息。
7、源節(jié)點(diǎn)根據(jù)反饋回的接收情況更新接收向量如下
V(P4) = [-1,1, -1];
V(P5) = [1, -1, -1];
V(P6) = [1,1, -1];
V(Pe i = P4 P5) [-1,-1,1];
8、由于有原始數(shù)據(jù)包未被成功接收,需要再次進(jìn)行重傳;并且,由于有非目標(biāo)節(jié)點(diǎn)成功接收到該編碼數(shù)據(jù)包,且D(Penl) = (R1,RJ,D(Pen) HD(P4) = {RJ Φ Φ,D(Pen) HD(P5) ={RJ Φ Φ,即編碼數(shù)據(jù)包Pml中包含的每個(gè)原始數(shù)據(jù)包都至少能恢復(fù)一個(gè)接收節(jié)點(diǎn)丟失的原始數(shù)據(jù)包,判斷出編碼數(shù)據(jù)包Penl需要重傳,將編碼數(shù)據(jù)包Penl放入隊(duì)列TrsQueue中, 并將P4和P5放入隊(duì)列PenQueue中。
第二次重傳過(guò)程如下
801、利用各接收向量得到 S(P4) = 2,S(P5) = 2,S(P6) = 1,S(Penl) = 2,對(duì)于隊(duì)列TrsQueue中編碼數(shù)據(jù)包Penl,由于V(Penl)中沒(méi)有0元素,根據(jù)S(Penl)的值,將編碼數(shù)據(jù)包Penl從隊(duì)列TrsQueue中取出放入優(yōu)先級(jí)重傳隊(duì)列B [2]中;
源節(jié)點(diǎn)當(dāng)前的優(yōu)先級(jí)重傳隊(duì)列為
Β[3]:無(wú);
B [2] =Penl ;
B[l] =P6 ;
TrsQueue : ;
PenQueue :P4、P5 ;
802、源節(jié)點(diǎn)開(kāi)始進(jìn)行網(wǎng)絡(luò)編碼初始化t = Lg = N = 3,設(shè)置Pen為全零向量;由于B[3]無(wú)數(shù)據(jù)包,更新t = l,g = g-1 = 2,此時(shí),IB[2] I為1,從B[2]中取出第1個(gè)數(shù)據(jù)包Pi = Pe i =P4 P5,由于 D (Penl) = (R1, RJ , PeP enl = P enl,D(PeP enl) Π D(Peni) φ 0,判斷Pen Pi滿足編碼規(guī)則,則更新Pe = Pe i Ven = P4 P5;
803、由于 t = B[2] | = 1,更新 t = 1,g = g_l = 1,此時(shí),|B[1] | 為 1, 從 B[l]中取出第 1 個(gè)數(shù)據(jù)包 Pt = P6,D(Pe P6) = D(P4 P5 P6) = {Ri, R2, R3},D(Pe P6)nD(P4)={Ri}^ φ,D(Pe P6)ΠD(P5) = (R2) ^ φ,D(PeP6) ηD(P6) = {R3} φ Φ,判斷Pe:P6滿足編碼規(guī)則,則更新Pe = P4 P5 P6;
804、由于t = |B[1] |,更新t = l,g = g_l = 0,無(wú)其它數(shù)據(jù)包可以參與編碼,則重傳符合編碼規(guī)則的編碼數(shù)據(jù)包= P4 P5 P6;
9、源節(jié)點(diǎn)將P4 Θ P5 Θ :p6作為第2次重傳編碼數(shù)據(jù)包Pen2,重傳Pen2之后,為更新的當(dāng)前發(fā)送的編碼數(shù)據(jù)包接收向量為編碼數(shù)據(jù)包Pm2的接收向量
源節(jié)點(diǎn)本地建立數(shù)據(jù)包的接收向量如下
V(P4) = [-1,1, -1];
V(P5) = [1, -1, -1];
V(P6) = [1,1, -1];
V(Pen2) =
;
10、各接收節(jié)點(diǎn)向源節(jié)點(diǎn)返回各自的接收情況接收節(jié)點(diǎn)R1未接收到編碼數(shù)據(jù)包 Pm2,向源節(jié)點(diǎn)返回未成功接收編碼數(shù)據(jù)包Pm2的信息;接收節(jié)點(diǎn)&接收到編碼數(shù)據(jù)包Pm2, 并能解碼出丟失的原始數(shù)據(jù)包P5,不向源節(jié)點(diǎn)返回成功接收編碼數(shù)據(jù)包Pm2的信息,僅返回成功接收原始數(shù)據(jù)包P5的信息;接收節(jié)點(diǎn)R3成功接收了編碼數(shù)據(jù)包Pm2,并能解碼出丟失的原始數(shù)據(jù)包P6,返回成功接收原始數(shù)據(jù)包P6的信息。
11、源節(jié)點(diǎn)根據(jù)反饋回的接收情況更新接收向量如下
V(P4) = [-1,1, -1];
V(P5) = [1,1, -1];
V(P6) = [1,1,1];
V(Pen2) = [-1,1,1];
12、由于有原始數(shù)據(jù)包P4、P5未被成功接收,需要再次進(jìn)行重傳;沒(méi)有非目標(biāo)節(jié)點(diǎn)成功接收到編碼數(shù)據(jù)包Pm2,丟棄該編碼數(shù)據(jù)包,將組成該編碼數(shù)據(jù)包的所有原始數(shù)據(jù)包 P4、P5、P6放入隊(duì)歹丨J TrsQueue中;
第三次重傳過(guò)程如下
1201、利用各接收向量得到 S(P4) = 2,S(P5) = 1,S(P6) = 0,將隊(duì)列 TrsQueue 中的數(shù)據(jù)包取出,按照S(P)值放入相應(yīng)的B[S(P)]優(yōu)先級(jí)重傳隊(duì)列中,由于S(P6) =0,則表示該數(shù)據(jù)包P6已被所有接收節(jié)點(diǎn)成功接收,丟棄P6 ;
源節(jié)點(diǎn)當(dāng)前的優(yōu)先級(jí)重傳隊(duì)列為
B [3]:無(wú);
B[2] =P4 ;
B[l] =P5 ;
TrsQueue 無(wú);
PenQueue 無(wú);
1202、源節(jié)點(diǎn)開(kāi)始進(jìn)行網(wǎng)絡(luò)編碼初始化t = Lg = N = 3,設(shè)置Pen為全零向量; 由于B[3]無(wú)數(shù)據(jù)包,更新t = l,g = g-1 = 2,此時(shí),IB[2] I為1,從B[2]中取出第1個(gè)數(shù)據(jù)包 Pt 為 P4,由于 D(P4) = (R1, R3I, Pen P4 = P4,D(PeP4) ΠD(P4) φ ^,判斷Pen Pi滿足編碼規(guī)則,則更新Pen = P4;
1203、由于 t = |B[2] |,更新 t = 1,g = g_l = 1,此時(shí),B[l] | 為 1,從 B[l] 中取出第 1 個(gè)數(shù)據(jù)包 Pt = P5,由于 D(P4) = (R1, R3I, D(P5) = {R3},PeP5 = P4 P5, D(PeP5) = {Ri},D(PeP5) η D(P5) = 0,判斷PePf不滿足編碼規(guī)則;
1204、由于t = |B[1] |,更新t = 1,g = g_l = 0,無(wú)其它數(shù)據(jù)包可以參與編碼,則重傳符合編碼規(guī)則的編碼數(shù)據(jù)包Pm = P4 ;
13、由于源節(jié)點(diǎn)已為P4建立了接收向量,所以在重傳P4后,源節(jié)點(diǎn)不再為P4重新建立接收向量
14、各接收節(jié)點(diǎn)向源節(jié)點(diǎn)返回各自的接收情況接收節(jié)點(diǎn)隊(duì)接收到原始數(shù)據(jù)包P4, 從而能恢復(fù)丟失的原始數(shù)據(jù)包P4,接收節(jié)點(diǎn)R1向源節(jié)點(diǎn)返回成功接收原始數(shù)據(jù)包P4的信息;接收節(jié)點(diǎn)R3成功接收了原始數(shù)據(jù)包P4,從而能恢復(fù)解碼出丟失的原始數(shù)據(jù)包P4,并且還能通過(guò)解碼編碼數(shù)據(jù)包Pm= P4 P5恢復(fù)出P5,返回成功接收原始數(shù)據(jù)包P4和P5的信息。
15、源節(jié)點(diǎn)根據(jù)反饋回的接收情況更新接收向量如下
V(P4) = [1,1,1];
V(P5) = [1,1,1];
V(P6) = [1,1,1];
16、由于沒(méi)有原始數(shù)據(jù)包未被成功接收,無(wú)需再次進(jìn)行重傳,重傳結(jié)束。
需要說(shuō)明的是,實(shí)施例中的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,本發(fā)明的實(shí)施例并非用于限定本發(fā)明的保護(hù)范圍,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),具體的實(shí)施方式可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.基于網(wǎng)絡(luò)編碼的數(shù)據(jù)重傳方法,其特征在于,包括以下步驟統(tǒng)計(jì)步驟源節(jié)點(diǎn)發(fā)送數(shù)據(jù)包之后,接收并統(tǒng)計(jì)接收節(jié)點(diǎn)反饋回的各數(shù)據(jù)包的接收情況,進(jìn)入判斷步驟;所述數(shù)據(jù)包為原始數(shù)據(jù)包或編碼數(shù)據(jù)包;判斷步驟源節(jié)點(diǎn)判斷是否有需要重傳的數(shù)據(jù)包,如是,則進(jìn)入編碼步驟;如否,則結(jié)束重傳;編碼步驟源節(jié)點(diǎn)按編碼規(guī)則優(yōu)先對(duì)接收情況最差的數(shù)據(jù)包進(jìn)行網(wǎng)絡(luò)編碼,得到本次需要重傳的數(shù)據(jù)包,進(jìn)入發(fā)送步驟;發(fā)送步驟源節(jié)點(diǎn)向所有接收節(jié)點(diǎn)廣播本次需要重傳的數(shù)據(jù)包,返回統(tǒng)計(jì)步驟。
2.如權(quán)利要求1所述基于網(wǎng)絡(luò)編碼的數(shù)據(jù)重傳方法,其特征在于,所述編碼規(guī)則為編碼數(shù)據(jù)包中最多只能含有各接收節(jié)點(diǎn)丟失的一個(gè)原始數(shù)據(jù)包。
3.如權(quán)利要求2所述基于網(wǎng)絡(luò)編碼的數(shù)據(jù)重傳方法,其特征在于,所述接收節(jié)點(diǎn)反饋數(shù)據(jù)包接收情況的具體方法是當(dāng)接收節(jié)點(diǎn)能通過(guò)接收到的數(shù)據(jù)包恢復(fù)自己丟失的原始數(shù)據(jù)包,則僅向源節(jié)點(diǎn)反饋該解碼恢復(fù)出的原始數(shù)據(jù)包接收成功;當(dāng)接收節(jié)點(diǎn)不能從接收到的編碼數(shù)據(jù)包中恢復(fù)自己丟失的原始數(shù)據(jù)包,則不向源節(jié)點(diǎn)反饋任何接收信息;當(dāng)接收節(jié)點(diǎn)未接收到數(shù)據(jù)包,則該接收節(jié)點(diǎn)向源節(jié)點(diǎn)反饋該數(shù)據(jù)包接收失敗。
4.如權(quán)利要求3所述基于網(wǎng)絡(luò)編碼的數(shù)據(jù)重傳方法,其特征在于,源節(jié)點(diǎn)接收并統(tǒng)計(jì)接收節(jié)點(diǎn)反饋回的數(shù)據(jù)包的接收情況的具體方法是源節(jié)點(diǎn)為每個(gè)已發(fā)送的原始數(shù)據(jù)包建立接收向量;所述接收向量中每一個(gè)元素對(duì)應(yīng)一個(gè)接收節(jié)點(diǎn)對(duì)該原始數(shù)據(jù)包的接收情況;所述接收情況包括接收成功、接收失敗、待確認(rèn); 源節(jié)點(diǎn)每接收到一個(gè)節(jié)點(diǎn)反饋的接收情況之后,更新原始數(shù)據(jù)包對(duì)應(yīng)的接收向量;當(dāng)源節(jié)點(diǎn)未收到接收節(jié)點(diǎn)對(duì)原始數(shù)據(jù)包的反饋信息,則保持該原始數(shù)據(jù)包的接收向量中對(duì)應(yīng)該接收節(jié)點(diǎn)的接收狀態(tài); 所述判斷步驟具體為源節(jié)點(diǎn)分別統(tǒng)計(jì)各原始數(shù)據(jù)包對(duì)應(yīng)的接收向量中接收成功元素和接收失敗元素的個(gè)數(shù),如有接收向量所有元素都是接收成功元素,則丟棄該接收向量對(duì)應(yīng)的原始數(shù)據(jù)包;如所有接收向量中所有元素都是接收成功元素,則結(jié)束重傳;如有接收向量中至少有一個(gè)接收失敗元素,則需要對(duì)該接收向量對(duì)應(yīng)的原始數(shù)據(jù)包進(jìn)行重傳。
5.如權(quán)利要求1所述基于網(wǎng)絡(luò)編碼的數(shù)據(jù)重傳方法,其特征在于,所述編碼規(guī)則為編碼數(shù)據(jù)包中每個(gè)原始數(shù)據(jù)包都至少能恢復(fù)一個(gè)接收節(jié)點(diǎn)丟失的原始數(shù)據(jù)包。
6.如權(quán)利要求5所述基于網(wǎng)絡(luò)編碼的數(shù)據(jù)重傳方法,其特征在于,所述接收節(jié)點(diǎn)反饋的數(shù)據(jù)包的接收情況的具體方法是當(dāng)接收節(jié)點(diǎn)能通過(guò)接收到的數(shù)據(jù)包恢復(fù)自己丟失的原始數(shù)據(jù)包,則向源節(jié)點(diǎn)反饋該解碼恢復(fù)出的原始數(shù)據(jù)包接收成功;當(dāng)接收節(jié)點(diǎn)不能解碼接收到的編碼數(shù)據(jù)包,則向源節(jié)點(diǎn)返回編碼數(shù)據(jù)包接收成功; 當(dāng)接收節(jié)點(diǎn)不能從接收到的編碼數(shù)據(jù)包中恢復(fù)自己丟失的原始數(shù)據(jù)包,則不向源節(jié)點(diǎn)反饋任何接收信息;當(dāng)接收節(jié)點(diǎn)未接收到數(shù)據(jù)包,則該接收節(jié)點(diǎn)向源節(jié)點(diǎn)反饋該數(shù)據(jù)包接收失敗。
7.如權(quán)利要求6所述基于網(wǎng)絡(luò)編碼的數(shù)據(jù)重傳方法,其特征在于,源節(jié)點(diǎn)接收并統(tǒng)計(jì)接收節(jié)點(diǎn)反饋回的數(shù)據(jù)包的接收情況的具體方法是源節(jié)點(diǎn)為每個(gè)已發(fā)送的數(shù)據(jù)包建立接收向量;所述接收向量中每一個(gè)元素對(duì)應(yīng)一個(gè)接收節(jié)點(diǎn)對(duì)該數(shù)據(jù)包的接收情況;所述接收情況包括接收成功、接收失敗、待確認(rèn);源節(jié)點(diǎn)每接收到一個(gè)接收節(jié)點(diǎn)反饋的接收情況之后,更新數(shù)據(jù)包對(duì)應(yīng)的接收向量;當(dāng)源節(jié)點(diǎn)未收到接收節(jié)點(diǎn)對(duì)數(shù)據(jù)包的反饋信息,則保持該數(shù)據(jù)包的接收向量中對(duì)應(yīng)該接收節(jié)點(diǎn)的接收狀態(tài);所述判斷步驟具體為源節(jié)點(diǎn)分別統(tǒng)計(jì)各數(shù)據(jù)包對(duì)應(yīng)的接收向量中接收成功元素和接收失敗元素的個(gè)數(shù),如有接收向量所有元素都是接收成功元素,則丟棄該接收向量對(duì)應(yīng)的數(shù)據(jù)包;如所有接收向量中所有元素都是接收成功元素,則結(jié)束重傳;如有原始數(shù)據(jù)包對(duì)應(yīng)的接收向量中至少有一個(gè)接收失敗元素,則需要對(duì)該原始數(shù)據(jù)包進(jìn)行重傳;如源節(jié)點(diǎn)判斷當(dāng)編碼數(shù)據(jù)包中至少包含有一個(gè)原始數(shù)據(jù)包不能恢復(fù)任何一個(gè)接收節(jié)點(diǎn)丟失的原始數(shù)據(jù)包,則丟棄該編碼數(shù)據(jù)包;如源節(jié)點(diǎn)判斷當(dāng)編碼數(shù)據(jù)包中包含的每個(gè)原始數(shù)據(jù)包都至少能恢復(fù)一個(gè)接收節(jié)點(diǎn)丟失的原始數(shù)據(jù)包,則該編碼數(shù)據(jù)包需要重傳,并暫停將該編碼數(shù)據(jù)包中包含的所有原始數(shù)據(jù)包作為需要重傳的原始數(shù)據(jù)包放入優(yōu)先級(jí)隊(duì)列中;所述編碼數(shù)據(jù)包中包含的原始數(shù)據(jù)包是組成該編碼數(shù)據(jù)包的原始數(shù)據(jù)包。
8.如權(quán)利要求7所述基于網(wǎng)絡(luò)編碼的數(shù)據(jù)重傳方法,其特征在于,所述源節(jié)點(diǎn)優(yōu)先對(duì)接收情況最差的數(shù)據(jù)包進(jìn)行網(wǎng)絡(luò)編碼的具體方法是源節(jié)點(diǎn)統(tǒng)計(jì)得到的接收成功元素和接收失敗元素的個(gè)數(shù)將數(shù)據(jù)包放入對(duì)應(yīng)的優(yōu)先級(jí)重傳隊(duì)列中;數(shù)據(jù)包對(duì)應(yīng)的接收向量中接收失敗元素的個(gè)數(shù)越多對(duì)應(yīng)放入的優(yōu)先級(jí)重傳對(duì)列的優(yōu)先級(jí)越高;源節(jié)點(diǎn)按編碼規(guī)則,以優(yōu)先級(jí)從高到低的順序,從優(yōu)先級(jí)重傳隊(duì)列中依次取出數(shù)據(jù)包進(jìn)行編碼。
9.如權(quán)利要求8所述基于網(wǎng)絡(luò)編碼的數(shù)據(jù)重傳方法,其特征在于,所述源節(jié)點(diǎn)按編碼規(guī)則,以優(yōu)先級(jí)從高到低的順序,從優(yōu)先級(jí)重傳隊(duì)列中依次取出數(shù)據(jù)包進(jìn)行編碼的具體方法是源節(jié)點(diǎn)按照優(yōu)先級(jí)從高到低的順序,從優(yōu)先級(jí)重傳隊(duì)列中依次取出一個(gè)數(shù)據(jù)包,將該數(shù)據(jù)包與預(yù)設(shè)數(shù)據(jù)包進(jìn)行網(wǎng)絡(luò)編碼,判斷編碼結(jié)果是否滿足編碼規(guī)則;如滿足,則以當(dāng)前的編碼結(jié)果作為新的預(yù)設(shè)數(shù)據(jù)包,再判斷是否所有的優(yōu)先級(jí)重傳隊(duì)列中的數(shù)據(jù)包已進(jìn)行了編碼檢查,如是,將當(dāng)前的預(yù)設(shè)數(shù)據(jù)包作為本次需要重傳的數(shù)據(jù)包, 本次編碼結(jié)束,如否,則返回本步驟;如不滿足,判斷是否所有的優(yōu)先級(jí)重傳隊(duì)列中的數(shù)據(jù)包已進(jìn)行了編碼檢查,如是,將當(dāng)前的預(yù)設(shè)數(shù)據(jù)包作為本次需要重傳的數(shù)據(jù)包,本次編碼結(jié)束,如否,則返回本步驟;所述預(yù)設(shè)數(shù)據(jù)包的初始值為全零。
10.如權(quán)利要求1所述基于網(wǎng)絡(luò)編碼的數(shù)據(jù)重傳方法,其特征在于,各接收節(jié)點(diǎn)通過(guò)異步反饋方式將數(shù)據(jù)包的接收情況反饋至源節(jié)點(diǎn)。
全文摘要
本發(fā)明提供一種網(wǎng)絡(luò)編碼效率更高的基于網(wǎng)絡(luò)編碼的數(shù)據(jù)重傳方法,包括步驟統(tǒng)計(jì)步驟源節(jié)點(diǎn)發(fā)送數(shù)據(jù)包之后,接收并統(tǒng)計(jì)接收節(jié)點(diǎn)反饋回的各數(shù)據(jù)包的接收情況,進(jìn)入判斷步驟;所述數(shù)據(jù)包為原始數(shù)據(jù)包或編碼數(shù)據(jù)包;判斷步驟源節(jié)點(diǎn)判斷是否有需要重傳的數(shù)據(jù)包,如是,則進(jìn)入編碼步驟;如否,則結(jié)束重傳;編碼步驟源節(jié)點(diǎn)按編碼規(guī)則優(yōu)先對(duì)接收情況最差的數(shù)據(jù)包進(jìn)行網(wǎng)絡(luò)編碼,得到本次重傳的最新的編碼數(shù)據(jù)包,進(jìn)入發(fā)送步驟;發(fā)送步驟源節(jié)點(diǎn)向所有接收節(jié)點(diǎn)廣播本次需要重傳的數(shù)據(jù)包,返回統(tǒng)計(jì)步驟。本發(fā)明優(yōu)先使用當(dāng)前接收情況最差的數(shù)據(jù)包進(jìn)行網(wǎng)絡(luò)編碼,可增加編碼增益,當(dāng)編碼增益越大,重傳次數(shù)就會(huì)越小。
文檔編號(hào)H04L1/00GK102497248SQ201110390209
公開(kāi)日2012年6月13日 申請(qǐng)日期2011年11月30日 優(yōu)先權(quán)日2011年11月30日
發(fā)明者周亮, 周志恒 申請(qǐng)人:電子科技大學(xué)