專利名稱:基于網(wǎng)絡編碼的廣播重傳系統(tǒng)及其方法
技術(shù)領(lǐng)域:
本發(fā)明屬于通信技術(shù)領(lǐng)域,更進一步涉及無線通信廣播工程技術(shù)領(lǐng)域中的基于網(wǎng)絡編碼的廣播重傳系統(tǒng)及其方法。本發(fā)明可以用于各種無線可靠性廣播情景下,實現(xiàn)了一種基于網(wǎng)絡編碼的、動態(tài)的、收發(fā)雙方的廣播重傳方法與廣播重傳流程控制。
背景技術(shù):
自動請求重傳(Automatic-repeat-request, ARQ)是重傳協(xié)議的一個主流類型,是通信中用于處理信道中分組丟失或分組比特受損所帶來差錯的一種可靠數(shù)據(jù)傳輸協(xié)議。ARQ技術(shù)的優(yōu)點是比較簡單,缺點是通信信道利用率不高。而多播或廣播是一種廣泛應用于無線通信網(wǎng)絡的數(shù)據(jù)傳輸形式,其拓撲圖如圖1所示,它由一個發(fā)送方節(jié)點、多個接收方節(jié)點構(gòu)成,發(fā)送方向多個接收方發(fā)送數(shù)據(jù)。無線廣播相較于傳統(tǒng)的有線通信中的廣播,具有較高的誤幀率、傳輸時延以及較低的重傳效率。例如,若此時有一個接收方接收數(shù)據(jù)失敗,根據(jù)傳統(tǒng)的ARQ協(xié)議,發(fā)送方則需廣播接收失敗的數(shù)據(jù)幀,直到所有的接收方都正確接收該數(shù)據(jù)幀為止。網(wǎng)絡編碼(NC,NetWork Coding)在網(wǎng)絡的中間節(jié)點對各條信道上收到的信息進行線性或者非線性的處理,然后轉(zhuǎn)發(fā)給下一個節(jié)點,可以提高網(wǎng)絡吞吐量、減少數(shù)據(jù)幀的傳輸次數(shù)、增強網(wǎng)絡的容錯性和魯棒性。北京郵電大學提出的專利申請“基于隨機線性編碼的無線可靠廣播方法”(申請日:2012年03月16日,申請?zhí)?201210071101.9,公開號:CN102638331A)中公開了一種基于隨機線性編碼的無線可靠廣播方法,來解決無線通信中廣播重傳的低效率問題。該方法的實現(xiàn)步驟為:第一,發(fā)送端廣播指定多個信息幀。第二,發(fā)送端對接收端丟失的信息幀進行隨機線性網(wǎng)絡編碼。第三,接收端利用高斯消元法獲得丟失的信息幀。該方法所存在的不足是:該專利申請沒有考慮到實際工程中的一些要求,如信息幀的及時性、接收端在通信中可分配的內(nèi)存空間、是否與不同的信道編碼兼容等問題,導致該方法并不適合廣泛的用于工程應用領(lǐng)域。由于該專利申請只是采用分塊的傳輸模式,分組與分組之間的信息幀無法進行網(wǎng)絡編碼,因此無法使網(wǎng)絡編碼所帶來的性能最大化,并且使所有信息幀的傳輸時延整體較大;只是簡單的采用了隨機線性網(wǎng)絡編碼,難以實現(xiàn)網(wǎng)絡編碼的最優(yōu)組合,所能帶來的重傳效率的提升非常有限。該專利申請沒有詳細的考慮重傳幀的接收情況,使得該方法會在某些特殊情況下產(chǎn)生部分數(shù)據(jù)幀接收超時的情況。自2008年開始,解決廣播重傳問題的專利技術(shù)共有13個,基本上都是簡單的對信息幀進行分組,然后在分組中尋找最優(yōu)組合,這種解決方案限制了重傳效率。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服上述現(xiàn)有技術(shù)的不足,針對廣播重傳問題,提出基于網(wǎng)絡編碼的廣播重傳系統(tǒng)與方法,可以有效地降低重傳延遲,提高重傳效率,并且廣泛的適用于各種工程應用場景,滿足下一代寬帶無線通信系統(tǒng)對實時性和高吞吐量需求。為實現(xiàn)上述目的,本發(fā)明方法的思路是:過傳輸測試包確定系統(tǒng)單幀最大存活時間;通過基于動態(tài)列表的動態(tài)更新方法,即時的跟蹤每一個信息幀的接收情況;根據(jù)最大匹配與完美匹配方法,找到一種相對最優(yōu)的網(wǎng)絡編碼方案;通過基于重傳幀反饋信息更新動態(tài)列表方法,避免了數(shù)據(jù)幀接收超時的情況;通過廣播重傳系統(tǒng)來實現(xiàn)的數(shù)據(jù)傳輸,具有更高的重傳效率,更低的整體傳輸時延,適用于無線通信系統(tǒng)中的多種廣播情景。本發(fā)明的系統(tǒng)包括一個發(fā)送端和多個接收端。發(fā)送端由協(xié)商模塊、動態(tài)列表模塊、重傳緩存模塊、網(wǎng)絡編碼模塊、發(fā)送緩沖模塊組成;所述的多個接收端中的任意一個接收端由信息緩存模塊、譯碼模塊、反饋模塊組成。協(xié)商模塊,用于測試幀的發(fā)送,來自于接收端的測試幀應答信息的接收,計算系統(tǒng)單幀最大生存時間,并且將系統(tǒng)生存時間發(fā)送至動態(tài)列表模塊;動態(tài)列表模塊,用于來自于接收端的信息幀或重傳幀應答信息的接收,建立、存儲動態(tài)列表,以及對動態(tài)列表進行匹配運算;重傳緩存模塊,用于存儲待重傳的多個信息幀;網(wǎng)絡編碼模塊,用于對不同的信息幀進行網(wǎng)絡編碼,構(gòu)造重傳幀,發(fā)送重傳幀,暫存重傳幀;發(fā)送緩沖模塊,用于存儲當前待發(fā)送的信息幀;信息緩存模塊,用于存儲多個已正確接收的信息幀與重傳幀;譯碼模塊,用于對重傳幀進行譯碼,恢復原始信息幀;反饋模塊,用于向接收端反饋數(shù)據(jù)幀的接收情況。本發(fā)明方法的具體步驟如下:(I)發(fā)送測試包:Ia)協(xié)商模塊記錄廣播測試幀的發(fā)送時間,等待來自于多個接收端的反饋信息;Ib)協(xié)商模塊若收到所有多個接收端的確認應答信息,則執(zhí)行步驟Ic);若協(xié)商模塊收到了否定應答或者未接收到任意一個接收端的反饋信息,則執(zhí)行步驟Ia);Ic)協(xié)商模塊記錄每一個確認應答信息的接收時間,并記錄多個接收端中的每一個反饋的單幀可等待時延以及可分配存儲空間;(2)獲取系統(tǒng)單幀最大存活時間:2a)協(xié)商模塊選取多個確認應答信息接收時間中最大的一個,將最大接收時間減去測試幀的發(fā)送時間,得到系統(tǒng)傳播時延;2b)選取多個單幀可等待時延中最小的一個作為系統(tǒng)單幀可等待時延;2c)選取多個可分配存儲空間中最小的一個作為系統(tǒng)可分配存儲空間;2d)將滿足下式的最大整數(shù),作為系統(tǒng)單幀最大存活時間:(NH-1)TR < TM(NH-1)C0 < CM其中,NH表示系統(tǒng)單幀最大存活時間,TR表示系統(tǒng)傳播時延,TM表示系統(tǒng)單幀可等待時延,Qj表示一個信息幀所需要的存儲空間,CM表示系統(tǒng)可分配存儲空間;(3)動態(tài)鏈表初始化:3a)發(fā)送緩沖模塊將系統(tǒng)單幀最大存活時間除以2,舍尾取整,得到初始量;3b)發(fā)送緩沖模塊向多個接收端連續(xù)廣播初始量個信息幀;3c)存儲子模塊建立與初始量個信息幀一一對應的動態(tài)鏈表;3d)存儲子模塊將初始量個動態(tài)鏈表的序列號分別賦值為對應的信息巾貞序列號,將初始量個動態(tài)鏈表的生存時間分別賦值為,初始量減去初始量個的信息幀序列號后加1,將每個動態(tài)鏈表的若干個節(jié)點值分別賦值為,對該動態(tài)鏈表所對應的信息幀返回否定信息的接收端的用戶序列號;
3e)遍歷存儲子模塊中所有鏈表,依次地提取表頭中的序列號,將所提取的信息幀序列號對應的信息幀由發(fā)送緩沖模塊轉(zhuǎn)存至重傳緩沖模塊,記錄此時轉(zhuǎn)存的信息幀在重傳緩沖模塊中存儲的地址,并且由映射子模塊建立所提取的信息幀序列號與信息幀存儲地址的對應關(guān)系;再次遍歷存儲子模塊中所有鏈表的節(jié)點個數(shù)一項,將節(jié)點個數(shù)為0的動態(tài)鏈表從動態(tài)列表中刪除,同時將該動態(tài)鏈表對應的信息幀從重傳緩沖模塊中刪除,將該動態(tài)鏈表對應的對應關(guān)系從映射子模塊中刪除;(4)發(fā)送信息幀:4a)發(fā)送緩沖模塊檢查是否有信息幀待發(fā)送,如果有,則發(fā)送緩沖模塊廣播下一個信息幀,執(zhí)行步驟4b);否則,執(zhí)行步驟9a);4b)若存儲子模塊收到所有多個接收端的確認應答信息,則執(zhí)行步驟5a);若收到了否定應答或者未接收到任意一個接收端的反饋信息,則執(zhí)行步驟5b);(5)更新動態(tài)列表:5a)發(fā)送緩沖模塊將所發(fā)送信息幀的儲存空間釋放,存儲子模塊將當前所有鏈表的生存時間加I后,執(zhí)行步驟6a);5b)發(fā)送緩沖模塊將所發(fā)送的信息幀轉(zhuǎn)存至重傳緩存模塊,映射子模塊創(chuàng)建信息中貞存儲地址與序列號的對應關(guān)系;5c)存儲子模塊將所發(fā)送的信息幀的序列號作為動態(tài)鏈表的序列號,將0作為動態(tài)鏈表的生存時間,將未能成功接收信息幀的接收端的個數(shù),作為動態(tài)鏈表的節(jié)點個數(shù),將未能成功接收信息幀的接收端的用戶序列號,作為動態(tài)鏈表的節(jié)點,得到一個新的動態(tài)鏈表;5d)存儲子模塊將存儲子模塊中所有鏈表的生存時間加I,執(zhí)行步驟6a);(6)構(gòu)造重傳幀:6a)判斷所有動態(tài)鏈表中,序列號最小的動態(tài)鏈表的存活時間是否小于系統(tǒng)單中貞最大存活時間減去2的差,若小于,則執(zhí)行步驟6c);若大于或者等于,執(zhí)行步驟6b);6b)匹配子模塊調(diào)用最大匹配算法,對所有動態(tài)鏈表中序列號最小的動態(tài)鏈表進行最大匹配運算,得到重傳幀構(gòu)造集合,匹配子模塊將重傳幀構(gòu)造集合發(fā)送至網(wǎng)絡編碼模塊,執(zhí)行步驟7a);6c)匹配子模塊調(diào)用完美匹配算法,對所有動態(tài)鏈表中序列號最小的動態(tài)鏈表進行完美匹配,判斷匹配結(jié)果是否為重傳幀構(gòu)造集合,如果是,則匹配子模塊將重傳幀構(gòu)造集合發(fā)送至網(wǎng)絡編碼模塊,執(zhí)行步驟7a);如果運算的結(jié)果是“無法進行完美匹配”,則執(zhí)行步驟 4a);(7)發(fā)送重傳幀:7a)網(wǎng)絡編碼模塊從重傳幀構(gòu)造集合中取出所有元素,將這組元素的值送入映射子模塊,對于每一個元素的值,逐一索引信息幀序列號與元素值相同的信息幀的存儲位置,根據(jù)存儲位置從重發(fā)緩存模塊中逐一提取信息幀;7b)網(wǎng)絡編碼模塊將,巾貞長為信息巾貞內(nèi)容部分的長度、每個比特都為0的巾貞作為初始重傳幀,將提取的多個信息幀逐一與初始重傳幀進行逐比特異或運算,得到準重傳幀;7c)網(wǎng)絡編碼模塊在準重傳幀之后添加重傳幀構(gòu)造集合,獲得重傳幀;
7d)網(wǎng)絡編碼模塊向多個接收端廣播重傳幀,等待接收端返回應答信息;(8)再次更新動態(tài)列表:8a)存儲子模塊將所有鏈表的生存時間加1,將多個接收端中返回確認應答的接收端的用戶序列號記錄下來,并將記錄的用戶序列號組合成一個反饋用戶集合;Sb)判斷反饋用戶集合是否為空集,若是,則執(zhí)行步驟7d);若不為空集,則執(zhí)行步驟 8c);8c)動態(tài)列表模塊從重傳幀構(gòu)造集合中提取所有元素,對于每一個元素的值,逐一在存儲子模塊中索引出序列號與元素的值相同的動態(tài)鏈表,存儲子模塊對所有得到的動態(tài)鏈表上的所有節(jié)點,如果任意一個節(jié)點的值存在于反饋用戶集合中,則將該節(jié)點刪除,并且將該節(jié)點所屬鏈表的節(jié)點個數(shù)減I ;8d)動態(tài)列表模塊刪除節(jié)點個數(shù)為O的鏈表,將所有剩下鏈表的生存時間加I ;Se)動態(tài)列表模塊刪除重傳幀構(gòu)造集合,網(wǎng)絡編碼模塊刪除重傳幀構(gòu)造集合、準重傳幀以及重傳幀,清空反饋用戶集合,執(zhí)行步驟6a);(9)處理動態(tài)列表中的剩余信息:9a)判斷動態(tài)列表中是否為空,若為空,則執(zhí)行步驟9i);否則執(zhí)行步驟9b);9b)匹配子模塊調(diào)用最大匹配算法,對所有動態(tài)鏈表中序列號最小的動態(tài)鏈表進行最大匹配運算,得到重傳幀構(gòu)造集合,匹配子模塊將重傳幀構(gòu)造集合發(fā)送至網(wǎng)絡編碼模塊;9c)網(wǎng)絡編碼模塊從重傳幀構(gòu)造集合中取出所有元素,將這組元素的值送入映射子模塊,對于每一個元素的值,逐一索引信息幀序列號與元素值相同的信息幀的存儲位置,根據(jù)存儲位置從重發(fā)緩存模塊中逐一提取信息幀;9d)網(wǎng)絡編碼模塊將,巾貞長為信息巾貞內(nèi)容部分的長度、每個比特都為O的巾貞作為初始重傳幀,將得到的多個信息幀逐一與初始重傳幀進行逐比特異或運算,得到準重傳幀;9e)網(wǎng)絡編碼模塊在準重傳幀之后添加重傳幀構(gòu)造集合,從而得到重傳幀,并將重傳幀暫時保存;網(wǎng)絡編碼模塊向多個接收端廣播重傳幀,等待接收端返回應答信息;9f)存儲子模塊將多個接收端中返回確認應答的若干個接收端的用戶序列號記錄下來,并將所述的若干個接收端序列號組合成一個反饋用戶集合;9g)動態(tài)列表模塊從重傳幀構(gòu)造集合中提取所有元素,對于每一個元素的值,逐一在存儲子模塊中索引出序列號與元素的值相同的動態(tài)鏈表,存儲子模塊對所有得到的動態(tài)鏈表上的所有節(jié)點,判斷節(jié)點的值是否存在于反饋用戶集合中,若任意一個節(jié)點的值存在于反饋用戶集合中,則將該節(jié)點刪除,并且將該節(jié)點所屬鏈表的節(jié)點個數(shù)減I ;9h)動態(tài)列表模塊刪除重傳幀構(gòu)造集合,網(wǎng)絡編碼模塊刪除重傳幀構(gòu)造集合、準重傳幀以及重傳幀;清空反饋用戶集合,執(zhí)行步驟9a);9i)結(jié)束;所述的接收過程包括如下步驟:(10)傳輸前準備:IOa)清空信息緩存模塊與譯碼模塊中的緩存內(nèi)容;10b)判斷是否存在需要接收的數(shù)據(jù)幀,若有,則執(zhí)行步驟IOc);否則,執(zhí)行步驟12h);
10c)接收子模塊若未接收到數(shù)據(jù)幀,反饋模塊向發(fā)送端發(fā)送否定應答,執(zhí)行步驟IOc);否則執(zhí)行步驟IOd);IOd)判斷接收到的數(shù)據(jù)幀是測試幀、信息幀、重傳幀;若接收到的是測試幀,執(zhí)行步驟IOe);若接收到的是信息幀,則執(zhí)行步驟Ila);若接收到的是重傳幀,則執(zhí)行步驟He);IOe)反饋模塊返回確認應答信息,并且返回單幀可等待時延以及可分配存儲空間,執(zhí)行步驟IOc);(11)接收數(shù)據(jù)幀:Ila)反饋模塊向發(fā)送端返回確認應答,解析子模塊從信息幀的幀頭,提取信息幀的序列號,緩存模塊判斷是否有足夠的存儲空間,若有,則執(zhí)行步驟Ilb);否則,緩存子模塊釋放存儲的多個信息幀中序列號最小的一個信息幀的存儲空間,解析子模塊刪除信息幀的序列號與存儲地址的對應關(guān)系,執(zhí)行步驟lib);IIb)緩存子模塊儲存接收到的信息幀,解析子模塊保存信息幀存儲地址與序列號的對應關(guān)系,執(zhí)行步驟IOb);He)解析子模塊讀取重傳幀幀頭后的第一個比特以及之后的信息幀長度個比特,將所讀取的內(nèi)容作為準恢復幀;Ild)解析子模塊讀取信息幀長度個比特之后所有比特,并將所讀取的內(nèi)容作為重傳幀構(gòu)造集合,將重傳幀構(gòu)造集合與準恢復幀發(fā)送至譯碼模塊,執(zhí)行步驟12a);(12)重傳幀譯碼:12a)譯碼模塊將兩個空集作為譯碼集合與目的集合,譯碼模塊將提取重傳幀構(gòu)造集合中所有元素的值,對于每一個元素的值,若信息緩存模塊中存在信息幀序列號與元素的值相同的信息幀,則將這個信息幀序列號作為一個元素加入譯碼集合中,否則將這個信息幀序列號作為一個元素加入目的集合中;12b)判斷目的集合的元素個數(shù),若元素個數(shù)為0,反饋模塊向發(fā)送端返回確認應答,執(zhí)行步驟12g);若元素個數(shù)大于等于兩個,則調(diào)用反饋模塊向發(fā)送端返回否定應答,執(zhí)行步驟12g);若元素個數(shù)僅為I個,則調(diào)用反饋模塊向發(fā)送端返回確認應答,執(zhí)行步驟12c);12c)譯碼模塊從譯碼集合中取出所有元素,將這組元素的值送入解析子模塊,對于每一個元素的值,逐一索引信息幀序列號與元素值相同的信息幀的存儲位置,根據(jù)存儲位置從緩存子模塊中逐一提取信息幀;12d)將提取的多個信息幀逐一與準恢復幀進行逐比特異或運算,得到恢復幀,將目的集合中唯一的元素作為恢復幀的序列號;12e)緩存模塊判斷是否有足夠的存儲空間,若有則執(zhí)行步驟12f);否則緩存子模塊將存儲的多個信息幀中序列號最小的一個信息幀的存儲空間釋放,解析子模塊將序列號最小的信息幀的序列號與存儲地址的對應關(guān)系刪除,執(zhí)行步驟12f);12f)緩存子模塊儲存得到的恢復幀,解析子模塊保存恢復幀的序列號與恢復幀的存儲地址的對應關(guān)系;12g)刪除接收端各模塊中存在的重傳幀構(gòu)造集合、準恢復幀、譯碼集合、目的集合以及恢復幀,執(zhí)行步驟IOb);
12h)結(jié)束。本發(fā)明與現(xiàn)有技術(shù)相比具有以下優(yōu)點:第一,由于本發(fā)明在數(shù)據(jù)傳輸時引入了系統(tǒng)單幀最大生存時間,克服了現(xiàn)有技術(shù)忽視信息幀的及時性、接收端通信中可分配的內(nèi)存空間的缺點,使得本發(fā)明具有更高的實際工程適用性,適用于無線通信系統(tǒng)中的多種廣播情景。第二,由于本發(fā)明在數(shù)據(jù)傳輸時采用了基于動態(tài)列表的動態(tài)更新方法,克服了現(xiàn)有技術(shù)需要分塊傳輸?shù)娜秉c,實現(xiàn)了分組與分組之間的信息幀仍可以進行網(wǎng)絡編碼,使得本發(fā)明具有更高的重傳效率,更低的整體傳輸時延。第三,由于本發(fā)明在網(wǎng)絡編碼時引入了最大匹配算法與完美匹配算法,克服了現(xiàn)有技術(shù)難以實現(xiàn)網(wǎng)絡編碼的最優(yōu)組合的缺點,使得本發(fā)明具有更高的重傳效率,適用于無線通信系統(tǒng)中的多種廣播情景。第四,由于本發(fā)明采用了基于重傳幀反饋信息更新動態(tài)列表方法,克服了現(xiàn)有技術(shù)對重傳幀的接收情況考慮不周的缺點,使得本發(fā)明避免了數(shù)據(jù)幀接收超時的情況。
圖1為本發(fā)明廣播網(wǎng)絡拓撲圖;圖2為本發(fā)明系統(tǒng)結(jié)構(gòu)示意圖;圖3為本發(fā)明方法中發(fā)送過程的流程圖;圖4為本發(fā)明方法中接收過程的流程圖。
具體實施例方式下面結(jié)合附圖對本發(fā)明做進一步詳細的描述。參照附圖1,本發(fā)明的應用情景為無線廣播,發(fā)送端S向M個接收端廣播數(shù)據(jù)幀,M個接收端分別用T1, T2,..., Tm表示,每一個接收端都擁有唯一的用戶序列號,當接收端向發(fā)送端反饋信息時,發(fā)送端可以通過反饋信息中包含的用戶序列號,識別該反饋信息是由哪個接收端發(fā)出,本發(fā)明實施例中M個接收端的用戶序列號分別1,2,…,M,其中M為小于255的任意自然數(shù),本發(fā)明實施例中,接收端向發(fā)送端反饋的信息中的用戶序列號用8位比特表示,發(fā)送端廣播的數(shù)據(jù)幀共有三種:測試幀、信息幀、重傳幀,每種數(shù)據(jù)幀的幀頭中,包涵了可以識別數(shù)據(jù)幀種類的信息,其中信息幀的長度是一個定值,本發(fā)明實施例中為I比特,信息幀的幀頭中包涵了信息幀序列號,每一個信息幀都有一個序列號,序列號存儲于信息幀的幀頭,工程協(xié)議中用8bit或者16bit表示,為了方便,本發(fā)明實施例中信息幀的序列號為8bit,即序列號可以表不為O到255中任意一個自然數(shù),如果發(fā)送巾貞數(shù)超過255,信息幀的序列號是將該信息幀發(fā)送的次序模二和的結(jié)果。參照附圖2,本發(fā)明的系統(tǒng)包括一個發(fā)送端和多個接收端。發(fā)送端由協(xié)商模塊、動態(tài)列表模塊、重傳緩存模塊、網(wǎng)絡編碼模塊、發(fā)送緩沖模塊組成。其中,協(xié)商模塊與發(fā)送緩沖模塊通過數(shù)據(jù)線連接,動態(tài)列表模塊與網(wǎng)絡編碼模塊通過數(shù)據(jù)線連接,動態(tài)列表模塊與重傳緩存模塊通過數(shù)據(jù)線連接,重傳緩存模塊與網(wǎng)絡編碼模塊通過數(shù)據(jù)線連接,重傳緩存模塊與發(fā)送緩沖模塊通過數(shù)據(jù)線連接。協(xié)商模塊用于測試幀的發(fā)送,來自于接收端的測試幀應答信息的接收,計算系統(tǒng)單幀最大生存時間,并且將系統(tǒng)生存時間發(fā)送至動態(tài)列表模塊。動態(tài)列表模塊用于來自于接收端的信息幀和重傳幀應答信息的接收,建立、存儲、更新動態(tài)列表,建立動態(tài)鏈表與信息幀存儲地址的對應關(guān)系,以及對動態(tài)列表進行匹配運算,并將運算結(jié)果發(fā)送至網(wǎng)絡編碼模塊。重傳緩存模塊用于存儲待重傳的多個信息幀。網(wǎng)絡編碼模塊用于對不同的信息幀進行網(wǎng)絡編碼,構(gòu)造重傳幀,發(fā)送重傳幀,以及暫存重傳幀。發(fā)送緩沖模塊用于存儲、發(fā)送當前待發(fā)送的信息幀。其中,動態(tài)列表模塊包括存儲子模塊、匹配子模塊、映射子模塊。存儲子模塊與匹配子模塊通過數(shù)據(jù)線連接,存儲子模塊與映射子模塊通過數(shù)據(jù)線連接。存儲子模塊,用于接收來自于接收端的信息幀與重傳幀應答信息,存儲、更新接收端反饋的接收情況。匹配子模塊,進行完美匹配算法或者最大匹配算法,并向網(wǎng)絡編碼模塊返回重傳幀構(gòu)造集合。映射子模塊,用于建立鏈表序列與信息巾貞存儲地址的 對應關(guān)系。多個接收端中的任意一個接收端由信息緩存模塊、譯碼模塊、反饋模塊組成。信息緩存模塊與譯碼模塊通過數(shù)據(jù)線連接,信息緩存模塊與反饋模塊通過數(shù)據(jù)線連接,譯碼模塊與反饋模塊通過數(shù)據(jù)線連接。信息緩存模塊,用于接收數(shù)據(jù)幀,分析數(shù)據(jù)幀的類型,建立信息幀存儲地址與信息中貞序列號的對應關(guān)系,存儲多個已正確接收的信息巾貞與重傳巾貞。譯碼模塊,用于對重傳中貞進行譯碼,恢復原始信息幀。反饋模塊,用于向接收端反饋數(shù)據(jù)幀的接收情況。其中,信息緩存模塊包括接收子模塊、解析子模塊、緩存子模塊。接收子模塊與解析子模塊通過數(shù)據(jù)線連接,解析子模塊與緩存子模塊通過數(shù)據(jù)線連接。接收子模塊,用于接收來自發(fā)送端的數(shù)據(jù)幀,對所接收的數(shù)據(jù)幀選擇發(fā)送解析子模塊或者選擇通知反饋模塊。解析子模塊,用于分析信息幀或重傳幀的幀頭,從而得出信息幀的序列號,或者重傳幀構(gòu)造向量,并且儲存表示信息幀序列號與存儲地址對應關(guān)系的映射表。緩存子模塊,用于存儲多個信息幀與當前重傳幀。結(jié)合具體實例,對本發(fā)明方法的具體步驟做詳細描述:參照附圖3,本發(fā)明發(fā)送過程包括如下步驟:步驟I,發(fā)送測試包:la)協(xié)商模塊記錄廣播測試幀的發(fā)送時間,等待來自于多個接收端的反饋信息;Ib)協(xié)商模塊若收到所有多個接收端的確認應答信息,則執(zhí)行步驟Ib);若協(xié)商模塊收到了否定應答或者未接收到任意一個接收端的反饋信息,則執(zhí)行步驟Ia);Ic)協(xié)商模塊記錄每一個確認應答信息的接收時間,并記錄多個接收端中的每一個反饋的單幀可等待時延以及可分配存儲空間;單幀可等待時延是指,多個接收端中的任意一個接收端Ti,從對任意一個數(shù)據(jù)幀進行第一次請求到正確接收該數(shù)據(jù)幀的最大可承受的等待時間,這個參數(shù)反應了接收端Ti對信息及時性的要求;可分配存儲空間是指,多個接收端中的任意一個接收端的緩存子模塊的存儲空間,這個參數(shù)反應了接收端Ti愿意在該次通信中分配的內(nèi)存空間;因此,整個步驟I的意義在于,發(fā)送端通過測試幀,了解M個接收端中每個接收端對信息及時性的要求、在該次通信中可分配的內(nèi)存空間。步驟2,獲取系統(tǒng)單幀最大存活時間:2a)協(xié)商模塊選取多個確認應答信息接收時間中最大的一個,將最大接收時間減去測試幀的發(fā)送時間,得到系統(tǒng)傳播時延;
2b)選取多個單幀可等待時延中最小的一個作為系統(tǒng)單幀可等待時延;2c)選取多個可分配存儲空間中最小的一個作為系統(tǒng)可分配存儲空間;2d)將滿足下式的最大整數(shù),作為系統(tǒng)單幀最大存活時間:(NH-1)TR < TM(NH-1)C0 < CM其中,NH表示系統(tǒng)單幀最大存活時間,TR表示系統(tǒng)傳播時延,TM表示系統(tǒng)單幀可等待時延,Qj表示一個信息幀所需要的存儲空間,CM表示系統(tǒng)可分配存儲空間;系統(tǒng)單幀最大存活時間的意義在于,一定會保證所有接收端對信息及時性的不同要求,一定不會超過任何一個接收端愿意在該次通信中分配的內(nèi)存空間。步驟3,動態(tài)鏈表初始化:3a)發(fā)送緩沖模塊將系統(tǒng)單幀最大存活時間除以2,舍尾取整,得到初始量;3b)發(fā)送緩沖模塊向多個接收端連續(xù)廣播初始量個信息幀;在這里,如果總共需要發(fā)送的信息幀幀數(shù)小于初始量個,那么直接連續(xù)廣播需要發(fā)送的信息幀幀數(shù);所述的連續(xù)廣播,指的是發(fā)送緩沖模塊向接收端廣播信息幀1,存儲子模塊接收反饋信息之后,發(fā)送緩沖模塊再向接收端廣播信息幀2,存儲子模塊接收反饋信息之后,發(fā)送緩沖模塊再向接收
端廣播信息幀3......直到廣播初始量個信息幀,并且在此過程中存儲子模塊記錄對于初
始量個信息幀所有的反饋信息;若未接收到M個接收端中任意一個接收端Ti,對于任意一個信息幀Pi的反饋信息,存儲子模塊則將Ti對于Pi記錄為反饋了否定信息;3c)存儲子模塊建立與初始量個信息幀一一對應的動態(tài)鏈表;這里所述的一一對應,指的是信息幀Pi的序列號與動態(tài)鏈表h中存儲的序列號相同;3d)存儲子模塊將初始量個動態(tài)鏈表的序列號分別賦值為對應的信息巾貞序列號,將初始量個動態(tài)鏈表的生存時間分別賦值為,初始量減去初始量個的信息幀序列號后加1,將每個動態(tài)鏈表的若干個節(jié)點值分別賦值為,對該動態(tài)鏈表所對應的信息幀返回否定信息的接收端的用戶序列號;本發(fā)明實施例中,M個接收端,對于初始量NH/2個信息幀返回否定應答的用戶個數(shù)分別為:ET1; ET2,..., ETNH/2,動態(tài)列表的初始化結(jié)果可以表示如下:{l’NH/^’ETj {E(1,1),E(1,2),...,E(LET1)I{2,NH/2-1, ET2I {E(2,1),E (2,2),...,E (2,ET2)}____ ________{NH/2,1,ETnh/2} {E (NH/2,1),E (NH/2, 2),...,E (NH/2, ETnh72) }其中,每一行表不動態(tài)列表中的一個動態(tài)鏈表,每一個動態(tài)鏈表用兩個集合表不;第一個集合代表該鏈表的表頭,其第一個兀素為動態(tài)鏈表的序列號MF,第二個兀素為動態(tài)鏈表的生存時間TL,第三個元素為動態(tài)鏈表的節(jié)點個數(shù)ET ;第二個集合表示該鏈表所包涵的元素;整個動態(tài)列表由初始量個這樣的動態(tài)鏈表構(gòu)成;NH/2表示初始量,ET1, ET2,...,ETnh72分別表示,接收端認為,對于信息幀P1, P2,-,Pnh72返回否定應答的接收端個數(shù),E (i,j)表示對于第i幀數(shù)據(jù),第j個返回否定應答接收端的用戶序列號,這里O < i < NH/2,0< j < ETi ;
3e)遍歷存儲子模塊中所有鏈表,依次地提取表頭中的信息幀序列號,將所提取的信息幀序列號對應的信息幀由發(fā)送緩沖模塊轉(zhuǎn)存至重傳緩沖模塊,記錄此時轉(zhuǎn)存的信息幀在重傳緩沖模塊中存儲的地址,并且由映射子模塊建立所提取的信息幀序列號與信息幀存儲地址的對應關(guān)系;再次遍歷存儲子模塊中所有鏈表的節(jié)點個數(shù)一項,將節(jié)點個數(shù)為O的動態(tài)鏈表從動態(tài)列表中刪除,同時將該動態(tài)鏈表對應的信息幀從重傳緩沖模塊中刪除,將該動態(tài)鏈表對應的對應關(guān)系從映射子模塊中刪除;(4)發(fā)送信息幀:4a)發(fā)送緩沖模塊檢查是否有信息幀待發(fā)送,如果有,則發(fā)送緩沖模塊廣播下一個信息幀,執(zhí)行步驟4b);否則,執(zhí)行步驟9a);本發(fā)明只關(guān)心解決廣播重傳這一問題,屬于無線通信中數(shù)據(jù)鏈路層的應用,鏈路層的上層需要發(fā)送多少個信息幀,本發(fā)明并不關(guān)心,鏈路層的上層需要發(fā)送的信息幀向發(fā)送緩沖模塊中輸入,如果沒有輸入,且發(fā)送緩沖模塊為空,本系統(tǒng)將認為沒有信息幀待發(fā)送;4b)若存儲子模塊收到所有多個接收端的確認應答信息,則執(zhí)行步驟5a);若收到了否定應答或者未接收到任意一個接收端的反饋信息,則執(zhí)行步驟5b);(5)更新動態(tài)列表:5a)發(fā)送緩沖模塊將所發(fā)送信息幀的儲存空間釋放,存儲子模塊將當前所有鏈表的生存時間加I后,執(zhí)行步驟6a);5b)發(fā)送緩沖模塊將所發(fā)送的信息幀轉(zhuǎn)存至重傳緩存模塊,映射子模塊創(chuàng)建信息中貞存儲地址與序列號的對應關(guān)系;5c)存儲子模塊將所發(fā)送的信息幀的序列號作為動態(tài)鏈表的序列號,將O作為動態(tài)鏈表的生存時間,將未能成功接收信息幀的接收端的個數(shù),作為動態(tài)鏈表的節(jié)點個數(shù),將未能成功接收信息幀的接收端 的用戶序列號,作為動態(tài)鏈表的節(jié)點,得到一個新的動態(tài)鏈表;本發(fā)明實施例中,發(fā)送的信息幀序列號為MFX,接收端認為,對于該信息幀M個接收端中返回否定應答的接收端個數(shù)為ETx,此因與發(fā)送的信息幀所對應的動態(tài)鏈表為:{MFx,0,ETJ {E(x,l),E(x,2),...,E(x,ETx)}其中,E(x, j)表示對于信息幀序列號位MFx的信息幀,第j個返回否定應答接收端的用戶序列號,這里O < j < ETi ;5d)存儲子模塊將存儲子模塊中所有鏈表的生存時間加1,執(zhí)行步驟6a);(6)構(gòu)造重傳幀:6a)判斷所有動態(tài)鏈表中,序列號最小的動態(tài)鏈表的存活時間是否小于系統(tǒng)單中貞最大存活時間減去2的差,若小于,則執(zhí)行步驟6g);若大于或者等于,執(zhí)行步驟6b);6b)匹配子模塊將重傳幀構(gòu)造集合、目的用戶集合置為空集,將所有動態(tài)鏈表中序列號最小的動態(tài)鏈表中的序列號作為7Π素加入重傳巾貞構(gòu)造集合中,將所有動態(tài)鏈表中序列號最小的動態(tài)鏈表中所包含所有的節(jié)點作為元素逐個加入目的用戶集合中;6c)遍歷存儲子模塊中所有的動態(tài)鏈表,尋找是否存在滿足下式的動態(tài)鏈表:
Ψα ^Ψ 丨其中,Vais表示重傳幀構(gòu)造集合,Vi表示存儲子模塊任意一個動態(tài)鏈表所有節(jié)點構(gòu)成的集合;6d)判斷是否存滿足6c)等式動態(tài)鏈表,若存在則執(zhí)行6e);否則執(zhí)行6f);6e)在所有滿足6c)中等式的動態(tài)鏈表中選取節(jié)點個數(shù)最多的一個,如果節(jié)點個數(shù)最多的動態(tài)鏈表不止一個,則在所述的節(jié)點個數(shù)最多的動態(tài)鏈表中任意選取一個動態(tài)鏈表,按照如下公式對重傳幀構(gòu)造集合與目的用戶集合進行賦值:¥ces = Vcks U {MFj}¥cud = ¥cud U其中,Vras表不重傳巾貞構(gòu)造集合,MFj表不所選取的這個動態(tài)鏈表的序列號,表示目的用戶集合,Vj表示所選取的這個動態(tài)鏈表所有節(jié)點構(gòu)成的集合,執(zhí)行6c);6f)匹配子模塊將重傳幀構(gòu)造集合發(fā)送至網(wǎng)絡編碼模塊,執(zhí)行步驟7a);6g)匹配子模塊將重傳幀構(gòu)造集合、目的用戶集合置為空集,將所有動態(tài)鏈表中序列號最小的動態(tài)鏈表中的序列號作為7Π素加入重傳巾貞構(gòu)造集合中,將所有動態(tài)鏈表中序列號最小的動態(tài)鏈表中所包含所有的節(jié)點作為元素逐個加入目的用戶集合中;6h)遍歷存儲子模塊中所有的動態(tài)鏈表,尋找是否存在滿足下式的動態(tài)鏈表:
權(quán)利要求
1.一種基于網(wǎng)絡編碼的廣播重傳系統(tǒng),包括一個發(fā)送端和多個接收端,其中,發(fā)送端包括協(xié)商模塊、動態(tài)列表模塊、重傳緩存模塊、網(wǎng)絡編碼模塊、發(fā)送緩沖模塊;所述的多個接收端中的任意一個接收端包括信息緩存模塊、譯碼模塊、反饋模塊;所述的協(xié)商模塊與發(fā)送緩沖模塊通過數(shù)據(jù)線相連,動態(tài)列表模塊與網(wǎng)絡編碼模塊通過數(shù)據(jù)線相連,動態(tài)列表模塊與重傳緩存模塊通過數(shù)據(jù)線相連,重傳緩存模塊與網(wǎng)絡編碼模塊通過數(shù)據(jù)線相連,重傳緩存模塊與發(fā)送緩沖模塊通過數(shù)據(jù)線相連;其中: 所述的協(xié)商模塊,用于測試幀的發(fā)送,計算系統(tǒng)單幀最大生存時間,并且將系統(tǒng)生存時間發(fā)送至動態(tài)列表模塊; 所述的動態(tài)列表模塊,用于應答信息的接收,建立、存儲動態(tài)列表,以及對動態(tài)列表進行匹配運算; 所述的重傳緩存模塊,用于存儲待重傳的多個信息幀; 所述的網(wǎng)絡編碼模塊,用于對不同的信息幀進行網(wǎng)絡編碼,構(gòu)造重傳幀,發(fā)送重傳幀,暫存重傳幀; 所述的發(fā)送緩沖模塊,用于存儲當前待發(fā)送的信息幀; 所述的信息緩存模塊,用于接收、存儲多個接收的信息幀與重傳幀; 所述的譯碼模塊,用于對重傳幀進行譯碼,恢復原始信息幀; 所述的反饋模塊,用于反饋數(shù)據(jù)幀的接收情況。
2.根據(jù)權(quán)利要求1所述的基于網(wǎng)絡編碼的廣播重傳系統(tǒng),其特征在于,所述的動態(tài)列表模塊包括存儲子模塊、匹配子模塊、映射子模塊;所述的存儲子模塊與匹配子模塊通過數(shù)據(jù)線連接,存儲子模塊與映射子模塊通過數(shù)據(jù)線連接,其中:所述的存儲子模塊,用于接收來自于接收端的信息幀與重傳幀應`答信息,存儲、更新接收端反饋的接收情況;所述的匹配子模塊,進行完美匹配算法或者最大匹配算法,并向網(wǎng)絡編碼模塊返回重傳幀構(gòu)造集合;所述的映射子模塊,用于建立鏈表序列與信息巾貞存儲地址的對應關(guān)系。
3.根據(jù)權(quán)利要求1所述的基于網(wǎng)絡編碼的廣播重傳系統(tǒng),其特征在于,所述的信息緩存模塊包括接收子模塊、解析子模塊、緩存子模塊;所述的接收子模塊與解析子模塊通過數(shù)據(jù)線連接,解析子模塊與緩存子模塊通過數(shù)據(jù)線連接;其中:所述的接收子模塊,用于接收來自發(fā)送端的數(shù)據(jù)幀,對所接收的數(shù)據(jù)幀選擇發(fā)送解析子模塊或者選擇通知反饋模塊;所述的解析子模塊,用于分析信息幀或重傳幀的幀頭,從而得出信息幀的序列號與重傳幀構(gòu)造向量,并且儲存表示信息幀序列號與存儲地址對應關(guān)系的映射表;所述的緩存子模塊,用于存儲多個信息幀與當前重傳幀。
4.基于網(wǎng)絡編碼的廣播重傳方法,包括發(fā)送過程和接收過程中的兩個步驟;其中: 所述的發(fā)送過程包括如下步驟: (1)發(fā)送測試包: Ia)協(xié)商模塊記錄廣播測試幀的發(fā)送時間,等待來自于多個接收端的反饋信息; Ib)協(xié)商模塊若收到所有多個接收端的確認應答信息,則執(zhí)行步驟Ic);若協(xié)商模塊收到了否定應答或者未接收到任意一個接收端的反饋信息,則執(zhí)行步驟Ia); Ic)協(xié)商模塊記錄每一個確認應答信息的接收時間,并記錄多個接收端中的每一個反饋的單幀可等待時延以及可分配存儲空間; (2)獲取系統(tǒng)單幀最大存活時間:2a)協(xié)商模塊選取多個確認應答信息接收時間中最大的一個,將最大接收時間減去測試中貞的發(fā)送時間,得到系統(tǒng)傳播時延; 2b)選取多個單幀可等待時延中最小的一個作為系統(tǒng)單幀可等待時延; 2c)選取多個可分配存儲空間中最小的一個作為系統(tǒng)可分配存儲空間; 2d)將滿足下式的最大整數(shù),作為系統(tǒng)單幀最大存活時間:(NH-1)TR < TM(NH-1)C0 < CM 其中,NH表示系統(tǒng)單幀最大存活時間,TR表示系統(tǒng)傳播時延,TM表示系統(tǒng)單幀可等待時延,Qj表示一個信息幀所需要的存儲空間,CM表示系統(tǒng)可分配存儲空間; (3)動態(tài)鏈表初始化: 3a)發(fā)送緩沖模塊將系統(tǒng)單幀最大存活時間除以2,舍尾取整,得到初始量; 3b)發(fā)送緩沖模塊向多個接收端連續(xù)廣播初始量個信息幀; 3c)存儲子模塊建立與初 始量個信息幀一一對應的動態(tài)鏈表; 3d)存儲子模塊將初始量個動態(tài)鏈表的序列號分別賦值為對應的信息幀序列號,將初始量減去初始量個的信息幀序列號后加1,將得到的結(jié)果作為初始量個動態(tài)鏈表的生存時間,將每個動態(tài)鏈表中每個節(jié)點值分別賦值為,對該動態(tài)鏈表所對應的信息幀,返回否定信息的接收端的用戶序列號; 3e)遍歷存儲子模塊中所有鏈表,依次提取表頭中的序列號,將所提取的信息幀序列號對應的信息幀由發(fā)送緩沖模塊轉(zhuǎn)存至重傳緩沖模塊,記錄此時轉(zhuǎn)存的信息幀的存儲地址,并且由映射子模塊建立所提取的信息幀序列號與信息幀存儲地址的對應關(guān)系;再次遍歷存儲子模塊中所有鏈表的節(jié)點個數(shù),刪除節(jié)點個數(shù)為O的動態(tài)鏈表,刪除該動態(tài)鏈表對應的信息幀,刪除該動態(tài)鏈表對應的對應關(guān)系; (4)發(fā)送信息巾貞: 4a)發(fā)送緩沖模塊檢查是否有信息幀待發(fā)送,如果有,則發(fā)送緩沖模塊廣播下一個信息幀,執(zhí)行步驟4b);否則,執(zhí)行步驟9a); 4b)若存儲子模塊收到所有多個接收端的確認應答信息,則執(zhí)行步驟5a);若收到了否定應答或者未接收到任意一個接收端的反饋信息,則執(zhí)行步驟5b); (5)更新動態(tài)列表: 5a)發(fā)送緩沖模塊將所發(fā)送信息幀的儲存空間釋放,存儲子模塊將當前所有鏈表的生存時間加I后,執(zhí)行步驟6a); 5b)發(fā)送緩沖模塊將所發(fā)送的信息幀轉(zhuǎn)存至重傳緩存模塊,映射子模塊創(chuàng)建信息幀存儲地址與序列號的對應關(guān)系; 5c)存儲子模塊將所發(fā)送的信息幀的序列號作為動態(tài)鏈表的序列號,將O作為動態(tài)鏈表的生存時間,將未能成功接收信息幀的接收端的個數(shù),作為動態(tài)鏈表的節(jié)點個數(shù),將未能成功接收信息幀的接收端的用戶序列號,作為動態(tài)鏈表的節(jié)點,得到一個新的動態(tài)鏈表;5d)存儲子模塊將存儲子模塊中所有鏈表的生存時間加I,執(zhí)行步驟6a); (6)構(gòu)造重傳巾貞: 6a)判斷所有動態(tài)鏈表中,序列號最小的動態(tài)鏈表的存活時間是否小于系統(tǒng)單幀最大存活時間減去2的差,若小于,則執(zhí)行步驟6c);若大于或者等于,執(zhí)行步驟6b);6b)匹配子模塊調(diào)用最大匹配算法,對所有動態(tài)鏈表中序列號最小的動態(tài)鏈表進行最大匹配運算,得到重傳幀構(gòu)造集合,匹配子模塊將重傳幀構(gòu)造集合發(fā)送至網(wǎng)絡編碼模塊,執(zhí)行步驟7a); 6c)匹配子模塊調(diào)用完美匹配算法,對所有動態(tài)鏈表中序列號最小的動態(tài)鏈表進行完美匹配,判斷匹配結(jié)果是否為重傳幀構(gòu)造集合,如果是,則匹配子模塊將重傳幀構(gòu)造集合發(fā)送至網(wǎng)絡編碼模塊,執(zhí)行步驟7a);如果運算的結(jié)果是“無法進行完美匹配”,則執(zhí)行步驟4a); (7)發(fā)送重傳巾貞: 7a)網(wǎng)絡編碼模塊從重傳幀構(gòu)造集合中取出所有元素,將這組元素的值送入映射子模塊,對于每一個元素的值,逐一索引信息幀序列號與元素值相同的信息幀的存儲位置,根據(jù)存儲位置從重發(fā)緩存模塊中逐一提取信息幀; 7b)網(wǎng)絡編碼模塊將,幀長為信息幀內(nèi)容部分的長度、每個比特都為O的幀作為初始重傳幀,將提取的多個信息幀逐一與初始重傳幀進行逐比特異或運算,得到準重傳幀; 7c)網(wǎng)絡編碼模塊在準重傳幀之后添加重傳幀構(gòu)造集合,獲得重傳幀; 7d)網(wǎng)絡編碼模塊向多個接收端廣播重傳幀,等待接收端返回應答信息; (8)再次更新動態(tài)列表: 8a)存儲子模塊將所有鏈表的生存時間加1,將多個接收端中返回確認應答的接收端的用戶序列號記錄下來,并將記錄的用戶序列號組合成一個反饋用戶集合; Sb)判斷反饋用 戶集合是否為空集,若是,則執(zhí)行步驟7d);若不為空集,則執(zhí)行步驟8c); 8c)動態(tài)列表模塊從重傳幀構(gòu)造集合中提取所有元素,對于每一個元素的值,逐一在存儲子模塊中索引出序列號與元素的值相同的動態(tài)鏈表,存儲子模塊對所有得到的動態(tài)鏈表上的所有節(jié)點,如果任意一個節(jié)點的值存在于反饋用戶集合中,則將該節(jié)點刪除,并且將該節(jié)點所屬鏈表的節(jié)點個數(shù)減I ; 8d)動態(tài)列表模塊刪除節(jié)點個數(shù)為O的鏈表,將所有剩下鏈表的生存時間加I ; Se)動態(tài)列表模塊刪除重傳幀構(gòu)造集合,網(wǎng)絡編碼模塊刪除重傳幀構(gòu)造集合、準重傳幀以及重傳幀,清空反饋用戶集合,執(zhí)行步驟6a); (9)處理動態(tài)列表中的剩余信息: 9a)判斷動態(tài)列表中是否為空,若為空,則執(zhí)行步驟9i);否則執(zhí)行步驟9b); 9b)匹配子模塊調(diào)用最大匹配算法,對所有動態(tài)鏈表中序列號最小的動態(tài)鏈表進行最大匹配運算,得到重傳幀構(gòu)造集合,匹配子模塊將重傳幀構(gòu)造集合發(fā)送至網(wǎng)絡編碼模塊;9c)網(wǎng)絡編碼模塊從重傳幀構(gòu)造集合中取出所有元素,將這組元素的值送入映射子模塊,對于每一個元素的值,逐一索引信息幀序列號與元素值相同的信息幀的存儲位置,根據(jù)存儲位置從重發(fā)緩存模塊中逐一提取信息幀; 9d)網(wǎng)絡編碼模塊將幀長為信息幀內(nèi)容部分的長度、每個比特都為O的幀作為初始重傳幀,將得到的多個信息幀逐一與初始重傳幀進行逐比特異或運算,得到準重傳幀; 9e)網(wǎng)絡編碼模塊在準重傳幀之后添加重傳幀構(gòu)造集合,從而得到重傳幀,并將重傳幀暫時保存;網(wǎng)絡編碼模塊向多個接收端廣播重傳幀,等待接收端返回應答信息; 9f)存儲子模塊將多個接收端中返回確認應答的接收端的用戶序列號記錄下來,并將所述的接收端序列號組合成一個反饋用戶集合; 9g)動態(tài)列表模塊從重傳幀構(gòu)造集合中提取所有元素,對于每一個元素的值,逐一在存儲子模塊中索引出序列號與元素的值相同的動態(tài)鏈表,存儲子模塊對所有得到的動態(tài)鏈表上的所有節(jié)點,判斷節(jié)點的值是否存在于反饋用戶集合中,若任意一個節(jié)點的值存在于反饋用戶集合中,則將該節(jié)點刪除,并且將該節(jié)點所屬鏈表的節(jié)點個數(shù)減I ; 9h)動態(tài)列表模塊刪除重傳幀構(gòu)造集合,網(wǎng)絡編碼模塊刪除重傳幀構(gòu)造集合、準重傳幀以及重傳幀;清空反饋用戶集合,執(zhí)行步驟9a); 9i)結(jié)束; 所述的接收過程包括如下步驟: (10)傳輸前準備: IOa)清空信息緩存模塊與譯碼模塊中的緩存內(nèi)容; 10b)判斷是否存在需要接收的數(shù)據(jù)幀,若有,則執(zhí)行步驟10c);否則,執(zhí)行步驟12h);10c)接收子模塊若未接收到數(shù)據(jù)幀,反饋模塊向發(fā)送端發(fā)送否定應答,執(zhí)行步驟IOc);否則執(zhí)行步驟IOd); IOd)判斷接收到的數(shù)據(jù)幀是測試幀、信息幀、重傳幀;若接收到的是測試幀,執(zhí)行步驟IOe);若接收到的是信息幀,則執(zhí)行步驟Ila);若接收到的是重傳幀,則執(zhí)行步驟lie);IOe)反饋模塊返回確認應答信息,并且返回單幀可等待時延以及可分配存儲空間,執(zhí)行步驟IOc); (11)接收數(shù)據(jù)幀: Ila)反饋模塊向發(fā)送端返回確`認應答,解析子模塊從信息幀的幀頭,提取信息幀的序列號,緩存模塊判斷是否有足夠的存儲空間,若有,則執(zhí)行步驟Ilb);否則,緩存子模塊釋放存儲的多個信息幀中序列號最小的一個信息幀的存儲空間,解析子模塊刪除信息幀的序列號與存儲地址的對應關(guān)系,執(zhí)行步驟Ilb); Ilb)緩存子模塊儲存接收到的信息幀,解析子模塊保存信息幀存儲地址與序列號的對應關(guān)系,執(zhí)行步驟IOb); He)解析子模塊讀取重傳幀幀頭后的第一個比特以及之后的信息幀長度個比特,將所讀取的內(nèi)容作為準恢復幀; lid)解析子模塊讀取信息幀長度個比特之后所有比特,并將所讀取的內(nèi)容作為重傳幀構(gòu)造集合,將重傳幀構(gòu)造集合與準恢復幀發(fā)送至譯碼模塊,執(zhí)行步驟12a); (12)重傳幀譯碼: 12a)譯碼模塊將兩個空集作為譯碼集合與目的集合,譯碼模塊將提取重傳幀構(gòu)造集合中所有元素的值,對于每一個元素的值,若信息緩存模塊中存在信息幀序列號與元素的值相同的信息幀,則將這個信息幀序列號作為一個元素加入譯碼集合中,否則將這個信息幀序列號作為一個兀素加入目的集合中;12b)判斷目的集合的元素個數(shù),若元素個數(shù)為0,反饋模塊向發(fā)送端返回確認應答,執(zhí)行步驟12g);若元素個數(shù)大于等于兩個,則調(diào)用反饋模塊向發(fā)送端返回否定應答,執(zhí)行步驟12g);若元素個數(shù)僅為I個,則調(diào)用反饋模塊向發(fā)送端返回確認應答,執(zhí)行步驟12c);12c)譯碼模塊從譯碼集合中取出所有元素,將這組元素的值送入解析子模塊,對于每一個元素的值,逐一索引信息幀序列號與元素值相同的信息幀的存儲位置,根據(jù)存儲位置從緩存子模塊中逐一提取信息幀; 12d)將提取的多個信息幀逐一與準恢復幀進行逐比特異或運算,得到恢復幀,將目的集合中唯一的元素作為恢復幀的序列號; 12e)緩存模塊判斷是否有足夠的存儲空間,若有則執(zhí)行步驟12f);否則緩存子模塊將存儲的多個信息幀中序列號最小的一個信息幀的存儲空間釋放,解析子模塊將序列號最小的信息幀的序列號與存儲地址的對應關(guān)系刪除,執(zhí)行步驟12f); 12f)緩存子模塊儲存得到的恢復幀,解析子模塊保存恢復幀的序列號與恢復幀的存儲地址的對應關(guān)系; 12g)刪除接收端各模塊中存在的重傳幀構(gòu)造集合、準恢復幀、譯碼集合、目的集合以及恢復幀,執(zhí)行步驟IOb); 12h)結(jié)束。
5.根據(jù)權(quán)利要求4所述的基于網(wǎng)絡編碼的廣播重傳方法,其特征在于:步驟lc)、和步驟IOe)所述的單幀可等待 時延是指,多個接收端中的任意一個接收端,從對任意一個數(shù)據(jù)幀進行第一次請求到正確接收該數(shù)據(jù)幀的最大可承受的等待時間。
6.根據(jù)權(quán)利要求4所述的基于網(wǎng)絡編碼的廣播重傳方法,其特征在于:步驟lc)、和步驟IOe)所述的可分配存儲空間是指,多個接收端中的任意一個接收端的緩存子模塊的存儲空間。
7.根據(jù)權(quán)利要求4所述的基于網(wǎng)絡編碼的廣播重傳方法,其特征在于:步驟6b)和步驟9b)所述的最大匹配算法具體步驟如下: 第一步,將重傳幀構(gòu)造集合、目的用戶集合置為空集,將所有動態(tài)鏈表中序列號最小的動態(tài)鏈表中的序列號作為兀素加入重傳巾貞構(gòu)造集合中,將所有動態(tài)鏈表中序列號最小的動態(tài)鏈表中所包含所有的節(jié)點作為元素逐個加入目的用戶集合中; 第二步,遍歷存儲子模塊中所有的動態(tài)鏈表,尋找是否存在滿足下式的動態(tài)鏈表:
8.根據(jù)權(quán)利要求4所述的基于網(wǎng)絡編碼的廣播重傳方法,其特征在于:步驟6c)所述的完美匹配算法具體步驟如下: 第一步,將重傳幀構(gòu)造集合、目的用戶集合置為空集,將所有動態(tài)鏈表中序列號最小的動態(tài)鏈表中的序列號加入重傳巾貞構(gòu)造集合中,將所有動態(tài)鏈表中序列號最小的動態(tài)鏈表中所包含所有的節(jié)點逐個加入目的用戶集合中; 第二步,遍歷存儲子模塊中所有的動態(tài)鏈表,尋找是否存在滿足下式的動態(tài)鏈表:
9.根據(jù)權(quán)利 要求4所述的基于網(wǎng)絡編碼的廣播重傳方法,其特征在于:步驟7b)、9d)、12d)所述的逐比特異或運算是指,從長度相同的兩個幀的第一個比特到最后一個比特,對于每個相同位置的一對比特,進行模二和。
全文摘要
本發(fā)明公開了一種基于網(wǎng)絡編碼的廣播重傳系統(tǒng)及其方法,主要解決現(xiàn)有廣播重傳技術(shù)重傳效率較低的問題。本發(fā)明的系統(tǒng)包括發(fā)送端和多個接收端,發(fā)送端包括協(xié)商模塊、動態(tài)列表模塊、重傳緩存模塊、網(wǎng)絡編碼模塊、發(fā)送緩沖模塊;每個接收端包括信息緩存模塊、譯碼模塊、反饋模塊。本發(fā)明方法實現(xiàn)步驟包括(1)發(fā)送測試包;(2)獲取系統(tǒng)單幀最大存活時間;(3)動態(tài)鏈表初始化;(4)發(fā)送信息幀;(5)更新動態(tài)列表;(6)構(gòu)造重傳幀;(7)發(fā)送重傳幀;(8)再次更新動態(tài)列表;(9)處理動態(tài)列表中的剩余信息;(10)傳輸前準備;(11)接收數(shù)據(jù)幀;(12)重傳幀譯碼。本發(fā)明具有低的傳輸時延和高的重傳效率的優(yōu)點。
文檔編號H04L1/00GK103107875SQ20131005428
公開日2013年5月15日 申請日期2013年1月31日 優(yōu)先權(quán)日2013年1月31日
發(fā)明者孫岳, 李厚意, 李穎 申請人:西安電子科技大學