專利名稱:自適應(yīng)選擇中繼方案的中繼傳輸系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明屬于無線通信技術(shù)領(lǐng)域,具體涉及一種自適應(yīng)選擇中繼方案的中繼傳輸系統(tǒng)及方法。
背景技術(shù):
在無線通信中,隨著通信距離的增加,無線信號的衰減也越嚴重,這就使得長距離的點對點直接通信變得不現(xiàn)實。為了解決這一問題,滿足即使相隔很遠的兩個節(jié)點間也能夠完成彼此的數(shù)據(jù)傳輸與交換,可以在這兩個節(jié)點之間尋找一個或一系列能夠同時與兩節(jié)點直接通信的節(jié)點來進行輔助通信,這種通信方式就稱之為無線中繼。無線中繼傳輸具有諸多優(yōu)勢,可以擴展無線網(wǎng)絡(luò)的覆蓋范圍、實現(xiàn)長距離的可靠通信、節(jié)省布線、降低成本等,目前已廣泛應(yīng)用于移動通信、無線局域網(wǎng)、衛(wèi)星通信網(wǎng)絡(luò)等領(lǐng)域,且在未來的新型無線通信中,也將具有更加廣泛的應(yīng)用前景。然而,現(xiàn)有無線中繼協(xié)議(即路由協(xié)議)仍存在諸多不足,尚有許多關(guān)鍵問題待研究解決。目前已被廣泛應(yīng)用的無線中繼協(xié)議其最初是參考有線網(wǎng)絡(luò)的路由模式設(shè)計的,認為網(wǎng)絡(luò)節(jié)點之間是一個點對點的鏈路,并沒有考慮無線網(wǎng)絡(luò)不同于有線網(wǎng)絡(luò)的固有的鏈路廣播特性,因此其效率較低。為解決這一問題,網(wǎng)絡(luò)編碼這一概念被提出。其原理是將數(shù)據(jù)包在中繼節(jié)點處進行編碼處理,并將編碼后的內(nèi)容作為一個新的數(shù)據(jù)包進行廣播,相鄰的 其他節(jié)點再對收到的一系列編碼后的數(shù)據(jù)包進行解碼,以獲得自己需要的數(shù)據(jù)包。這樣,特別是在有一個節(jié)點為中心節(jié)點的無線中繼網(wǎng)絡(luò)中,可以減小中繼節(jié)點所需的轉(zhuǎn)發(fā)次數(shù),從而提聞吞吐率等性能指標。GNU Radio是一個可以通過最小程度地結(jié)合硬件,用軟件來定義無線電波發(fā)射和接收的方式,進而搭建無線電通信系統(tǒng)的開源軟件。它為大眾提供一套信號處理軟件模塊,將那些高性能的無線電設(shè)備中所遇到的數(shù)字調(diào)制等問題轉(zhuǎn)換成軟件問題,在通信系統(tǒng)的設(shè)計和實現(xiàn)上具有更大的靈活性。GNU Radio應(yīng)用程序用Python來編寫,實際的信息處理過程是由C++來實現(xiàn)的,因此開發(fā)者可以獲得實時高效的可復(fù)用的應(yīng)用開發(fā)環(huán)境。通用軟件無線電外設(shè)(UniversalSoftware Radio Peripheral, USRP)是與 GNURadio配套使用的硬件平臺,旨在使普通的計算機能夠像高帶寬的軟件無線電設(shè)備一樣工作。從本質(zhì)上講,它充當了一個無線電通信系統(tǒng)的數(shù)字基帶和中頻部分。其基本設(shè)計理念是在主機CPU上完成所有波形相關(guān)方面的處理,如調(diào)制和解調(diào),其他諸如數(shù)字上下變頻、抽樣和內(nèi)插等高速通用操作都在FPGA (Field Programmable Gata Array)上完成。USRP的真正價值是它能使工程師和設(shè)計師以較低預(yù)算和最少精力進行創(chuàng)造。目前國內(nèi)外的相關(guān)研究僅針對單一中繼方式進行,比如只針對傳統(tǒng)中繼方式或只針對網(wǎng)絡(luò)編碼方式進行研究,并沒有將傳統(tǒng)中繼方式、網(wǎng)絡(luò)編碼方式聯(lián)合考慮。另外,市場上現(xiàn)有成型的中繼設(shè)備僅支持傳統(tǒng)中繼方式,不支持網(wǎng)絡(luò)編碼方式,也沒有人利用相關(guān)設(shè)備實現(xiàn)可以同時支持多種中繼方式自適應(yīng)選擇。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)的不足,本發(fā)明的目的提出一種自適應(yīng)選擇中繼方案的中繼傳輸系統(tǒng)及方法,以實現(xiàn)將傳統(tǒng)中繼方式和網(wǎng)絡(luò)編碼方式相結(jié)合,可以同時支持多種中繼方式自適應(yīng)選擇,進一步提聞吞吐率、靈活度的目的。一種自適應(yīng)選擇中繼方案的中繼傳輸系統(tǒng),該系統(tǒng)包括三個無線電設(shè)備,每個無線電設(shè)備由一臺通用軟件無線電設(shè)備USRP和一臺計算機組成;上述三個無線電設(shè)備作為三個節(jié)點,其中兩個節(jié)點作為源節(jié)點,另外一個作為中繼節(jié)點,并且兩個源節(jié)點通過中繼節(jié)點進行中繼通信,所述的作為中繼節(jié)點無線電設(shè)備是用于自適應(yīng)選擇無網(wǎng)絡(luò)編碼雙向中繼傳輸方式進行數(shù)據(jù)傳輸還是流間網(wǎng)絡(luò)編碼雙向中繼傳輸方式進行傳輸?shù)难b置;所述的作為中繼節(jié)點的無線電設(shè)備包括網(wǎng)絡(luò)編碼模塊、協(xié)議頭部生成模塊、協(xié)議頭部分析模塊和網(wǎng)絡(luò)解碼模塊;其中網(wǎng)絡(luò)編碼模塊用于在作為中繼節(jié)點的無線電設(shè)備處對作為源節(jié)點的兩個無線電 設(shè)備發(fā)送的兩個數(shù)據(jù)包進行網(wǎng)絡(luò)編碼;協(xié)議頭部生成模塊用于生成數(shù)據(jù)包包頭,包括非網(wǎng)絡(luò)編碼的數(shù)據(jù)包、網(wǎng)絡(luò)編碼數(shù)據(jù)包、請求包和停止包;協(xié)議頭部分析模塊用于在作為中繼節(jié)點的無線電設(shè)備接收數(shù)據(jù)包時,對接收數(shù)據(jù)包包頭進行分析處理,包括識別數(shù)據(jù)包的類型、源地址和目的地址的信息;并通過判斷作為源節(jié)點的兩個無線電設(shè)備數(shù)據(jù)包發(fā)送完成情況,進行自適應(yīng)選擇無網(wǎng)絡(luò)編碼雙向中繼傳輸方式或流間網(wǎng)絡(luò)編碼雙向中繼傳輸方式;網(wǎng)絡(luò)解碼模塊用于在作為源節(jié)點的無線電設(shè)備處根據(jù)本地數(shù)據(jù)包與接收到的網(wǎng)絡(luò)編碼包進行異或運算解出另一個作為源節(jié)點的無線電設(shè)備發(fā)送的數(shù)據(jù)包。采用自適應(yīng)選擇中繼方案的中繼傳輸系統(tǒng)進行中繼傳輸?shù)姆椒?,包括以下步驟步驟I、在三個無線電設(shè)備內(nèi)建立通信協(xié)議,包括所需數(shù)據(jù)包格式、請求包和停止包格式,以及幀格式;并啟動流間網(wǎng)絡(luò)編碼雙向中繼傳輸過程;步驟2、作為中繼節(jié)點的無線電設(shè)備向作為其中一個源節(jié)點的無線電設(shè)備發(fā)送請求包,請求作為該源節(jié)點的無線電設(shè)備發(fā)送數(shù)據(jù)包;步驟3、作為源節(jié)點的無線電設(shè)備接收到請求包后,通過協(xié)議頭部生成模塊對數(shù)據(jù)加入包頭,形成完整的數(shù)據(jù)包,并通過打包與封裝成幀模塊將上述數(shù)據(jù)包封裝成幀,發(fā)送至作為中繼節(jié)點的無線電設(shè)備;步驟4、作為中繼節(jié)點的無線電設(shè)備接收并儲存作為一個源節(jié)點的無線電設(shè)備發(fā)送的數(shù)據(jù)包,并向作為另一個源節(jié)點的無線電設(shè)備發(fā)送請求包,請求該源節(jié)點的無線電設(shè)備發(fā)送數(shù)據(jù)包;步驟5、作為另一個源節(jié)點的無線電設(shè)備接收到上述請求包后,通過協(xié)議頭部生成模塊對數(shù)據(jù)加入包頭,形成完整的數(shù)據(jù)包;并通過打包與封裝成幀模塊將上述數(shù)據(jù)包封裝成幀,發(fā)送至作為中繼節(jié)點的無線電設(shè)備;步驟6、作為中繼節(jié)點的無線電設(shè)備接收到作為另一個源節(jié)點的無線電設(shè)備數(shù)據(jù)包后,利用網(wǎng)絡(luò)編碼模塊將作為一個源節(jié)點的無線電設(shè)備發(fā)送的數(shù)據(jù)包與作為另一個源節(jié)點的無線電設(shè)備發(fā)送的數(shù)據(jù)包進行網(wǎng)絡(luò)編碼操作,形成網(wǎng)絡(luò)編碼包;步驟7、作為中繼節(jié)點的無線電設(shè)備通過協(xié)議頭部生成模塊將上述網(wǎng)絡(luò)編碼包加入包頭,形成完整的數(shù)據(jù)包,并通過打包與封裝成幀模塊將上述數(shù)據(jù)包封裝成幀,發(fā)至作為源節(jié)點的兩個無線電設(shè)備;步驟8、作為源節(jié)點的兩個無線電設(shè)備接收到編碼數(shù)據(jù)包后,利用自身內(nèi)部的解碼模塊解出對方作為源節(jié)點的無線電設(shè)備所發(fā)送的數(shù)據(jù)包;步驟9、判斷作為源節(jié)點的兩個無線電設(shè)備是否都未發(fā)送完畢;若是,則返回執(zhí)行步驟2;否則,執(zhí)行步驟10;步驟10、判斷作為源節(jié)點的兩個無線電設(shè)備是否都發(fā)送完畢,若是,則執(zhí)行步驟12;否則,則執(zhí)行步驟11;步驟11、啟動無網(wǎng)絡(luò)編碼雙向中繼傳輸過程繼續(xù)進行數(shù)據(jù)傳輸;步驟12、作為中繼節(jié)點的無線電設(shè)備向作為源節(jié)點的兩個無線電設(shè)備發(fā)送停止 包,作為源節(jié)點的兩個無線電設(shè)備停止傳輸。本發(fā)明優(yōu)點本發(fā)明是一種自適應(yīng)選擇中繼方案的中繼傳輸系統(tǒng)及方法,本發(fā)明建立出適合軟件無線電平臺的多種中繼方式,并在軟件無線電平臺上實現(xiàn)了多種中繼傳輸方案,并能夠支持傳輸數(shù)據(jù)、文件和視頻3種不同類型的業(yè)務(wù);本發(fā)明可提高吞吐率,并通過軟件無線電平臺實現(xiàn)在辦公室條件下進行實驗數(shù)據(jù)的采集和分析。
圖I為本發(fā)明一種實施例無網(wǎng)絡(luò)編碼雙向中繼傳輸方式的結(jié)構(gòu)框圖;圖2為本發(fā)明一種實施例流間網(wǎng)絡(luò)編碼雙向中繼傳輸方式的結(jié)構(gòu)框圖;圖3為本發(fā)明一種實施例無網(wǎng)絡(luò)編碼雙向中繼傳輸方式和流間網(wǎng)絡(luò)編碼雙向中繼傳輸方式的原理圖;其中,圖3中(a)為無網(wǎng)絡(luò)編碼雙向中繼傳輸方式的原理圖;圖3中(b)為流間網(wǎng)絡(luò)編碼雙向中繼傳輸方式的原理圖;圖4為本發(fā)明一種實施例封裝成巾貞過程不意圖;圖5為本發(fā)明一種實施例基于GNURadio和USRP軟件無線電平臺的中繼傳輸方法流程圖;其中,圖5 Ca)為本發(fā)明一種實施例自適應(yīng)選擇中繼方案的中繼傳輸方法流程圖;圖5(b)為本發(fā)明一種實施例無網(wǎng)絡(luò)編碼雙向中繼傳輸方案的流程圖;圖6為本發(fā)明一種實施例系統(tǒng)功能框架示意圖;圖7為本發(fā)明一種實施例系統(tǒng)平臺示意圖;圖8為本發(fā)明一種實施例的非網(wǎng)絡(luò)編碼數(shù)據(jù)包包頭格式示意圖;圖9為本發(fā)明一種實施例的網(wǎng)絡(luò)編碼數(shù)據(jù)包包頭格式示意圖;圖10為本發(fā)明一種實施例采用信道編碼時幀格式示意圖;其中,圖10中(a)為控制幀格式;圖10中(b)數(shù)據(jù)幀格式;圖11為本發(fā)明一種實施例不采用信道編碼時幀格式示意圖;其中,圖11中(a)為控制幀格式;圖11中(b)數(shù)據(jù)幀格式;圖12為本發(fā)明一種實施例請求包和控制包的發(fā)送過程示意圖;圖13為本發(fā)明一種實施例發(fā)送模塊的結(jié)構(gòu)示意圖;圖14為本發(fā)明一種實施例流間網(wǎng)絡(luò)編碼雙向中繼方式源節(jié)點的接收過程圖15為本發(fā)明一種實施例流間網(wǎng)絡(luò)編碼雙向中繼方式源節(jié)點的發(fā)送過程;圖16為本發(fā)明一種實施例流間網(wǎng)絡(luò)編碼雙向中繼方式中繼節(jié)點的接收過程;圖17為本發(fā)明一種實施例突發(fā)大小不同時,網(wǎng)絡(luò)編碼與有效吞吐量的關(guān)系不意圖;圖18為本發(fā)明一種實施例突發(fā)大小不同時,采用網(wǎng)絡(luò)編碼時有效吞吐量增益的實際值和理論值的關(guān)系不意圖;
圖19為本發(fā)明一種實施例突發(fā)大小不同時,網(wǎng)絡(luò)編碼與誤包率的關(guān)系示意圖;圖20為本發(fā)明一種實施例發(fā)射速率不同時,網(wǎng)絡(luò)編碼與有效吞吐量的關(guān)系不意圖;圖21為本發(fā)明一種實施例發(fā)射速率不同時,采用網(wǎng)絡(luò)編碼時有效吞吐量增益的實際值和理論值的關(guān)系不意圖;圖22為本發(fā)明一種實施例發(fā)射速率不同時,網(wǎng)絡(luò)編碼與誤包率的關(guān)系示意圖。
具體實施例方式下面結(jié)合如圖對本發(fā)明做進一步說明。一種自適應(yīng)選擇中繼方案的中繼傳輸系統(tǒng),該系統(tǒng)包括三個無線電設(shè)備,每個無線電設(shè)備由一臺通用軟件無線電設(shè)備USRP和一臺計算機組成;上述三個無線電設(shè)備作為三個節(jié)點,其中兩個節(jié)點作為源節(jié)點A、B,另外一個作為中繼節(jié)點R,并且兩個源節(jié)點A、B通過中繼節(jié)點R進行中繼通信,所述的作為中繼節(jié)點無線電設(shè)備是用于自適應(yīng)選擇無網(wǎng)絡(luò)編碼雙向中繼傳輸方式進行數(shù)據(jù)傳輸還是流間網(wǎng)絡(luò)編碼雙向中繼傳輸方式進行傳輸?shù)难b置;上述兩種傳輸方式如圖I和圖2所示,所述的無網(wǎng)絡(luò)編碼雙向中繼傳輸方式中,每個節(jié)點無線電設(shè)備內(nèi)包括協(xié)議頭部生成模塊、協(xié)議頭部分析模塊、打包與封裝成幀模塊、發(fā)送模塊、接收模塊和存儲模塊;流間網(wǎng)絡(luò)編碼雙向中繼傳輸方式中,除包括上述模塊外,作為源節(jié)點的無線電設(shè)備還包括網(wǎng)絡(luò)解碼模塊,作為中繼節(jié)點的無線電設(shè)備還包括網(wǎng)絡(luò)編碼模塊;其中網(wǎng)絡(luò)編碼模塊用于在作為中繼節(jié)點的無線電設(shè)備處對作為源節(jié)點的兩個無線電設(shè)備發(fā)送的兩個數(shù)據(jù)包進行網(wǎng)絡(luò)編碼;協(xié)議頭部生成模塊用于生成數(shù)據(jù)包包頭,包括非網(wǎng)絡(luò)編碼的數(shù)據(jù)包、網(wǎng)絡(luò)編碼數(shù)據(jù)包、請求包和停止包;協(xié)議頭部分析模塊用于在作為中繼節(jié)點的無線電設(shè)備接收數(shù)據(jù)包時,對接收數(shù)據(jù)包包頭的進行分析處理,包括識別數(shù)據(jù)包的類型、源地址和目的地址的信息;并通過判斷作為源節(jié)點的兩個無線電設(shè)備數(shù)據(jù)包發(fā)送完成情況,進行自適應(yīng)選擇無網(wǎng)絡(luò)編碼雙向中繼傳輸方式或流間網(wǎng)絡(luò)編碼雙向中繼傳輸方式;網(wǎng)絡(luò)解碼模塊用于在作為源節(jié)點的無線電設(shè)備處根據(jù)本地數(shù)據(jù)包與接收到的網(wǎng)絡(luò)編碼包進行異或運算解出另一個作為源節(jié)點的無線電設(shè)備發(fā)送的數(shù)據(jù)包。所述的無網(wǎng)絡(luò)編碼雙向中繼傳輸系統(tǒng)和流間網(wǎng)絡(luò)編碼雙向中繼傳輸系統(tǒng)的工作原理如下如圖3所示,在三節(jié)點的中繼網(wǎng)絡(luò)中,源節(jié)點A和源節(jié)點B之間由于距離太遠,無法直接進行通信,需要借助中繼節(jié)點R進行輔助來完成彼此的數(shù)據(jù)交換。圖3 (a)所示,無網(wǎng)絡(luò)編碼雙向中繼傳輸系統(tǒng)采用存儲轉(zhuǎn)發(fā)方式,即源節(jié)點A向中繼節(jié)點R發(fā)送數(shù)據(jù)包,中繼節(jié)點R再向源節(jié)點B轉(zhuǎn)發(fā)源節(jié)點A發(fā)送的數(shù)據(jù)包,源節(jié)點B向中繼節(jié)點R發(fā)送數(shù)據(jù)包,中繼節(jié)點R再向源節(jié)點A轉(zhuǎn)發(fā)源節(jié)點B發(fā)送的數(shù)據(jù)包。圖3 (b)所示,流間網(wǎng)絡(luò)編碼雙向中繼傳輸系統(tǒng)中,首先源節(jié)點A和源節(jié)點B分別向中繼節(jié)點R發(fā)送數(shù)據(jù)包X和y,中繼節(jié)點R接收上述兩個數(shù)據(jù)包X、y后,對其進行異或(XOR)運算,再將運算結(jié)果形成一個新的數(shù)據(jù)包廣播至源節(jié)點A、B,源節(jié)點A、B接收到數(shù)據(jù)包χθ;;后,根據(jù)自身的數(shù)據(jù)包解出對方的數(shù)據(jù)包,例如,源節(jié)點A通過X 0j0x=3;,從而獲得源節(jié)點B的數(shù)據(jù)包,該系統(tǒng)相比于無網(wǎng)絡(luò)編碼雙向中繼傳輸系統(tǒng)節(jié)省了源節(jié)點A和B交換數(shù)據(jù)的時間,從而提高了網(wǎng)絡(luò)吞吐量。本發(fā)明實施例中,流間網(wǎng)絡(luò)編碼雙向中繼傳輸與無網(wǎng)絡(luò)編碼雙向中繼傳輸?shù)倪m用區(qū)別在于中繼節(jié)點采用基于網(wǎng)絡(luò)編碼與解碼的中繼方式進行輔助中繼傳輸。(I)本發(fā)明實施例中,網(wǎng)絡(luò)編碼與解碼模塊的實現(xiàn)網(wǎng)絡(luò)編碼核心思想是將待編碼雙方數(shù)據(jù)進行逐比特異或(XOR)操作從而能夠?qū)⒍鄠€數(shù)據(jù)包的信息用一個網(wǎng)絡(luò)編碼的數(shù)據(jù)包來表示。由于網(wǎng)絡(luò)編碼需要逐比特進行異或操
作,從而要求待編碼雙方數(shù)據(jù)的大小保持一致。由于傳輸業(yè)務(wù)可是對稱的也可是非對稱,且待傳輸業(yè)務(wù)量的大小也可不等,因此,在本發(fā)明實施例中,通過補O擴充的方式來保證并實現(xiàn)網(wǎng)絡(luò)編碼雙方數(shù)據(jù)的大小一致,即在進行網(wǎng)絡(luò)編碼之前,檢查待編碼雙方數(shù)據(jù)的大小若二者一致,則直接進行具體的編碼操作;若二者不一致,則對較小者進行補O擴充,即在其后補充若干個0,使其大小與另一方的大小保持一致,再進行具體的編碼操作。網(wǎng)絡(luò)解碼模塊仍然通過異或操作來實現(xiàn),將網(wǎng)絡(luò)編碼包和本地數(shù)據(jù)包進行逐比特異或操作。在進行網(wǎng)絡(luò)解碼時,若恢復(fù)出的內(nèi)容為補O后的新數(shù)據(jù)包,為獲得其中的有用數(shù)據(jù)部分,則需要再對其進行消O還原操作,去除冗余。(2)本發(fā)明實施例中,協(xié)議頭部生成與分析模塊的實現(xiàn)協(xié)議頭部生成模塊用于數(shù)據(jù)包包頭的生成與處理。在本發(fā)明實施例中,發(fā)送數(shù)據(jù)時,協(xié)議頭部生成與分析模塊用于生成數(shù)據(jù)包包頭,包括數(shù)據(jù)包DATA(非網(wǎng)絡(luò)編碼的數(shù)據(jù)包或網(wǎng)絡(luò)編碼數(shù)據(jù)包)、請求包RTS和控制包STOP包頭的生成;本發(fā)明實施例中數(shù)據(jù)包頭部主要攜帶數(shù)據(jù)包類型(DATA、RTS、STOP等)、源地址目的地址、數(shù)據(jù)包ID以及有用數(shù)據(jù)長度信息。因此,協(xié)議頭部的生成主要是將這些信息包含到頭部中去。在形成包頭的過程中,首先需要采集該包的相關(guān)信息,并將其封裝在相應(yīng)的包頭字節(jié)變量中,如數(shù)據(jù)包類型、地址信息、數(shù)據(jù)包ID、有用數(shù)據(jù)長度信息,這一過程可以通過按位或操作來完成,并將各信息變量轉(zhuǎn)換為字符串(即字節(jié)流,因Python中沒有Byte類型);最后,通過函數(shù)將表示包頭各字節(jié)內(nèi)容的字符串連接起來,即為生成好的包頭。協(xié)議頭部分析模塊在接收數(shù)據(jù)時,用于對接收數(shù)據(jù)包包頭的分析處理,包括識別數(shù)據(jù)包的類型、源地址、目的地址等信息,為節(jié)點下一步的處理過程提供決策依據(jù)。通過函數(shù)完成包頭分析與處理功能,包括對接收到的數(shù)據(jù)包的包頭首字節(jié)和次字節(jié)的內(nèi)容進行分析并提取相關(guān)包信息,這主要是通過按位與操作來完成,并將字符串轉(zhuǎn)化為信息變量,返回的內(nèi)容是由True (判定詞,判定結(jié)果為真)和False (判定詞,判定結(jié)果為假)構(gòu)成的。(3)本發(fā)明實施例中,打包與封裝成幀模塊的實現(xiàn)本發(fā)明實施例中的打包與封裝成幀模塊用于完整數(shù)據(jù)包的形成以及將數(shù)據(jù)包最終封裝成幀。打包過程就是將已生成好的數(shù)據(jù)包包頭與數(shù)據(jù)包的內(nèi)容即有用數(shù)據(jù)部分連接起來形成初始數(shù)據(jù)包。封裝成幀就是將初始數(shù)據(jù)包進行處理形成一個可直接交付給發(fā)包器的數(shù)據(jù)幀。打包過程的實現(xiàn)僅需將包頭和包內(nèi)容加起來便可,在Python語言中僅需將兩個字符串相加便可實現(xiàn)。本發(fā)明中封裝成幀處理過程如圖4所示。其中,由于幀長度是固定的,因此有時需要進行內(nèi)容填充,以符合幀長度的要求;內(nèi)容填充功能是通過字符串相加實現(xiàn)的,填充的內(nèi)容為全O ;加CRC (Cyclic Redundancy Check,循環(huán)冗余校驗碼)校驗是GNU Radio內(nèi)置的函數(shù)實現(xiàn);信道編碼是由GNU Radio自帶的信道編碼函數(shù)實現(xiàn)的,本發(fā)明實施例采用RS(Read Solomon,里德 所羅門碼)信道編碼;通過相關(guān)函數(shù)實現(xiàn)加幀頭操作。該模塊最終返回一個完整的數(shù)據(jù)幀。(4)本發(fā)明實施例中,建立傳輸系統(tǒng)的傳輸過程如圖5 (a)和圖5 (b)所不,其中,圖5 (a)表不自適應(yīng)選擇中繼方案的中繼傳輸方法流程圖,圖5 (b)表示無網(wǎng)絡(luò)編碼雙向中繼傳輸方案的流程圖中繼傳輸?shù)陌l(fā)起與結(jié)束控制
在本發(fā)明實施例中,中繼傳輸?shù)陌l(fā)起與結(jié)束控制均由中繼節(jié)點來完成。中繼節(jié)點通過發(fā)送請求包RTS (Request to Send)來請求源節(jié)點發(fā)送數(shù)據(jù),從而發(fā)起中繼傳輸過程;中繼節(jié)點通過發(fā)送控制包STOP來告知所有節(jié)點停止傳輸,從而結(jié)束中繼傳輸過程,采用中繼觸發(fā)模式能夠避免USRP設(shè)備本身具有的不確定發(fā)送時延和接收延時的限制問題。節(jié)點收發(fā)數(shù)據(jù)的方式在本發(fā)明實施例中,節(jié)點包括源節(jié)點和中繼節(jié)點兩種類型。其中,由于是雙向傳輸,源節(jié)點也可以充當目的節(jié)點;中繼節(jié)點為起輔助中繼功能的中間節(jié)點。不同類型的節(jié)點其收發(fā)數(shù)據(jù)的類型不同,其收發(fā)數(shù)據(jù)的方式也不同。具體來講,對于發(fā)送過程,源節(jié)點僅發(fā)送數(shù)據(jù)包,而中繼節(jié)點既可以發(fā)送數(shù)據(jù)包又可以發(fā)送控制包;對于接收過程,源節(jié)點既可以接收數(shù)據(jù)包又可以接收控制包,而中繼節(jié)點僅接收數(shù)據(jù)包。另外,對于控制包的收發(fā),是以單個數(shù)據(jù)包的形式進行的;而對于數(shù)據(jù)包的收發(fā),則是以一個突發(fā)(一次發(fā)送的連續(xù)多個數(shù)據(jù)包)為單位進行的。節(jié)點收發(fā)狀態(tài)的切換控制在本發(fā)明實施例中,對于中繼節(jié)點來講,其初始狀態(tài)為發(fā)送狀態(tài),當發(fā)送結(jié)束后則立即切換為接收狀態(tài);而當在接收過程中檢測到突發(fā)尾(突發(fā)的最后一個數(shù)據(jù)包)時則又重新切換為發(fā)送狀態(tài),并重復(fù)以上過程。對于源節(jié)點來講,其初始狀態(tài)為接收狀態(tài),其中源節(jié)點當接收到請求包RTS后,則立即啟動發(fā)送過程,切換為發(fā)送狀態(tài);當本次突發(fā)中的所有數(shù)據(jù)包全部發(fā)送完畢后,則重新切換為接收狀態(tài),等待新的請求包和控制包的到來。流間網(wǎng)絡(luò)編碼雙向中繼方案中除了要解決上述問題外,還要解決網(wǎng)絡(luò)編碼與解碼在本發(fā)明實施例中,中繼節(jié)點首先接收不同源節(jié)點發(fā)來的數(shù)據(jù)包,并將其存儲與相應(yīng)的接收緩存器中,然后,再對不同接收緩存器中的數(shù)據(jù)進行網(wǎng)絡(luò)編碼,獲得網(wǎng)絡(luò)編碼的數(shù)據(jù)包并發(fā)送出去。而源節(jié)點發(fā)送數(shù)據(jù)包時,需要對發(fā)出的數(shù)據(jù)包在本地保留備份,當接收到中繼節(jié)點發(fā)出的網(wǎng)絡(luò)編碼的數(shù)據(jù)包,結(jié)合備份的本地數(shù)據(jù)包,可以進行網(wǎng)絡(luò)解碼,從而獲得期望數(shù)據(jù)。本發(fā)明的系統(tǒng)功能框架示意圖如圖6所示,本發(fā)明實施例中所實現(xiàn)平臺的系統(tǒng)功能框架中,從計算機網(wǎng)絡(luò)四層模型入手,主機Host主要負責應(yīng)用層的業(yè)務(wù)生成發(fā)送與接收處理,例如傳輸視頻時,發(fā)送方主機Host負責讀取待傳輸視頻文件,而接收方主機Host則負責將接收到的視頻文件通過播放器播放出來;網(wǎng)絡(luò)層主要負責數(shù)據(jù)的封包、網(wǎng)絡(luò)編碼和解碼等;MAC (Media Access Control,媒體接入控制)層模塊主要負責協(xié)調(diào)網(wǎng)絡(luò)中各節(jié)點的信道接入;物理層主要負責信號的調(diào)制、解調(diào)等信號處理操作,并與USRP (UniversalSoftware Radio Peripheral,通用軟件無線電外設(shè))連接進行信號的接收與發(fā)送;測試與記錄模塊主要負責各模塊的測試與調(diào)試,并記錄詳細的運行信息以及進行相關(guān)數(shù)據(jù)的統(tǒng)計與分析處理。本發(fā)明實施例系統(tǒng)包括三個無線電設(shè)備,每個無線電設(shè)備由一臺通用軟件無線電設(shè)備USRP和一臺計算機組成;如圖7所示;一個完整的通信節(jié)點由USRP設(shè)備和PC(Personal Computer,個人電腦)共同組成。PC安裝有GNU Radio (與USRP配套使用的開源軟件)軟件包,以及本實施例已編寫完成并調(diào)試通過的Python (—種編程語言)應(yīng)用,主要完成高層協(xié)議功能,USRP設(shè)備完成具體信號的收發(fā)工作,主要完成物理層的信號處理等功能。搭建完整的實現(xiàn)平臺,共需要3個節(jié)點組成,分別作為源節(jié)點A,中繼節(jié)點R和源節(jié)點B。本發(fā)明實施例中實現(xiàn)平臺可以完全支持流間網(wǎng)絡(luò)編碼雙向中繼傳輸方式和無網(wǎng)絡(luò)編碼雙向中繼傳輸方式,并可同時支持傳輸數(shù)據(jù)、文件和視頻3種不同類型的業(yè)務(wù)。 采用自適應(yīng)選擇中繼方案的中繼傳輸系統(tǒng)進行中繼傳輸?shù)姆椒?,如圖5 (a)所示,包括以下步驟步驟I、在三個無線電設(shè)備內(nèi)建立通信協(xié)議,包括所需數(shù)據(jù)包格式、請求包和停止包格式,以及幀格式;并啟動流間網(wǎng)絡(luò)編碼雙向中繼傳輸過程;本發(fā)明實施例中收發(fā)數(shù)據(jù)包的類型包括請求包RTS、控制包STOP和數(shù)據(jù)包DATA(包括網(wǎng)絡(luò)編碼的數(shù)據(jù)包和非網(wǎng)絡(luò)編碼的數(shù)據(jù)包)。它們都由包頭和數(shù)據(jù)部分構(gòu)成,其中,數(shù)據(jù)部分即為待傳輸?shù)挠杏脭?shù)據(jù),首部指定數(shù)據(jù)包的類型、源地址和目的地址、數(shù)據(jù)包ID以及有用數(shù)據(jù)的長度等信息。如圖8所示,該圖適用于除網(wǎng)絡(luò)編碼數(shù)據(jù)包以外的所有數(shù)據(jù)包,包括非網(wǎng)絡(luò)編碼的數(shù)據(jù)包、請求包RTS和控制包ST0P,圖9僅適用于網(wǎng)絡(luò)編碼的數(shù)據(jù)包。如圖8所示對于非網(wǎng)絡(luò)編碼數(shù)據(jù)包,其初始數(shù)據(jù)包的首部包含pkt_type(第O字節(jié))、pkt_addr (第I字節(jié))、pkt_id (第2、3字節(jié))和length (第5字節(jié))信息,分別指定了該初始數(shù)據(jù)的數(shù)據(jù)類型、源地址和目的地址、數(shù)據(jù)包ID以及有用數(shù)據(jù)的長度;padding表示數(shù)據(jù)填充部分,其功能主要是為了占位,以保證包頭總長度為6字節(jié),一般填充為0,不能為空;對于請求包RTS和控制包STOP來講,其有用數(shù)據(jù)部分均為空,故其length = O。其中pkt_type 的后四位分別為 is_RTS、is_ST0P、is_DATA、is_last_in_burst,分別表示該包為請求包、停止包、數(shù)據(jù)包和突發(fā)尾,用于節(jié)點對該包進行識別;如果突發(fā)尾為真,表不該包為一個突發(fā)中的最后一個包,標志一個突發(fā)發(fā)送結(jié)束;pkt_addr中前四位O、1、2、3表示源地址src_addr,后四位4、5、6、7表示目的地址
dest_addr。如圖9所示,對于網(wǎng)絡(luò)編碼的數(shù)據(jù)包,其初始數(shù)據(jù)包的首部包含pkt_type、pkt_id_A、pkt_id_B和length信息,pkt_type指定了該數(shù)據(jù)包的類型,其中is_NC表示該包為網(wǎng)絡(luò)編碼包,pkt_id_A和pkt_id_B為進行網(wǎng)絡(luò)編碼雙方的數(shù)據(jù)包ID,length為網(wǎng)絡(luò)編碼雙方編碼后的網(wǎng)絡(luò)編碼包長度。本發(fā)明實施例中,初始數(shù)據(jù)包經(jīng)過封裝成幀處理后得到幀,包括控制幀(RTS幀、STOP幀)和數(shù)據(jù)幀。本發(fā)明實施例中的傳輸方案均可自主選擇是否采用信道編碼,故數(shù)據(jù)幀格式需要考慮采用信道編碼和不采用信道編碼兩種策略。圖10所示為采用信道編碼時,圖中(a)為控制幀格式;圖中(b)數(shù)據(jù)幀格式。圖11所示為不采用信道編碼時,圖中(a)為控制幀格式;圖中(b)數(shù)據(jù)幀格式其中header為巾貞頭,表示該巾貞的類型。當header = 0x0000時,表示該巾貞為控制巾貞;當header = Oxffff時,表示該巾貞為數(shù)據(jù)巾貞,其中Ox表示16進制,即之后的每一位都是用四位二進制表示;payload_with_cc是控制巾貞里的內(nèi)容,包含payload_ with_crc和cc,其中payload_with_crc表示含有CRC校驗的數(shù)據(jù)包,而cc表示payload_with_crc部分的信道編碼值,cc對于控制幀來講,其長度為4字節(jié);針對數(shù)據(jù)幀,其長度為32字節(jié),由所選信道編碼方式?jīng)Q定;payload_with_crc包含payload和crc32 ;payload由初始數(shù)據(jù)包組成,或由初始數(shù)據(jù)包和paddings組成,當幀類型和是否采用信道編碼確定之后,其長度固定;crc32為payload部分的CRC校驗值,其長度為固定值4字節(jié)。如圖10和圖11所示,無論是控制幀還是數(shù)據(jù)幀,其組成部分相同,當采用信道編碼時,均由header、payload、crc32和cc構(gòu)成;當不采用信道編碼時,均由header、payload、crc32構(gòu)成??刂茙蛿?shù)據(jù)幀的不同之處在于其組成部份的大小不同,另外,header和payload的內(nèi)容也不同。數(shù)據(jù)巾貞的payload部分由初始數(shù)據(jù)包和paddings (數(shù)據(jù)填充)部分構(gòu)成。由于本發(fā)明實施例采用的信道編碼僅支持固定長度的輸入,故對其長度有特別限制,當數(shù)據(jù)長度小于規(guī)定值時,需要補充O來實現(xiàn)。此外,對于具體crc32校驗碼以及信道編碼cc值的計算過程,都是有GNU Radio本身所提供的相關(guān)函數(shù)完成。步驟2、作為中繼節(jié)點的無線電設(shè)備R向作為其中一個源節(jié)點的無線電設(shè)備A發(fā)送請求包,請求作為該源節(jié)點的無線電設(shè)備發(fā)送數(shù)據(jù)包;本發(fā)明實施例中,如圖12所示,中繼節(jié)點R通過協(xié)議頭部生成模塊生成請求包RTS_to_A的包頭,然后通過打包與封裝成幀模塊形成完整的數(shù)據(jù)包并封裝成幀,然后通過發(fā)送模塊將幀發(fā)送出去,請求源節(jié)點A發(fā)送數(shù)據(jù)包。數(shù)據(jù)包是以字節(jié)流的形式進入發(fā)送模塊,如圖13所示,依次經(jīng)過類型轉(zhuǎn)換(比特轉(zhuǎn)化為符號)、高斯濾波和FM調(diào)制后獲得已調(diào)制的信號,再經(jīng)過放大器放大,通過USRP以無線電磁波的形式發(fā)送。選用不同的調(diào)制方式,其具體的調(diào)制處理過程也不同,本發(fā)明實施例采用的調(diào)制方式為GMSK(Guassian Minimum Shift Keying,高斯最小頻移鍵控)調(diào)制。初始數(shù)據(jù)包的有效數(shù)據(jù)部分內(nèi)容均為空,包頭即為初始數(shù)據(jù)包的全部內(nèi)容,另外,發(fā)送請求包RTS時,必須指定該包的源地址和目的地址。步驟3、作為源節(jié)點的無線電設(shè)備A接收到請求包后,通過協(xié)議頭部生成模塊對數(shù)據(jù)加入包頭,形成完整的數(shù)據(jù)包,并通過打包與封裝成幀模塊將上述數(shù)據(jù)包封裝成幀,發(fā)送至作為中繼節(jié)點的無線電設(shè)備R ;本發(fā)明實施例中,源節(jié)點A利用接收模塊接收到請求包RTS_to_A后,利用協(xié)議頭部分析模塊對請求包進行分析,然后對待發(fā)送的數(shù)據(jù)加入包頭,形成完整的數(shù)據(jù)包DATA_A2R,然后再封裝成幀,通過發(fā)送模塊發(fā)送給中繼節(jié)點。
對請求包的接收過程如圖14所示。當源節(jié)點收到一個新包后,首先更新統(tǒng)計變量總收包數(shù)n_rCvd,以便后續(xù)統(tǒng)計諸如誤包率等相關(guān)信息;再依次對收到的內(nèi)容進行信道解碼以及CRC32檢驗,若檢驗有誤則直接丟棄該包并結(jié)束本次接收處理過程;若檢驗無誤,則可繼續(xù)進行下一步的收包處理。若檢驗無誤,該節(jié)點先更新統(tǒng)計變量正確收包數(shù)n_right,通過協(xié)議頭部分析模塊對該包包頭進行分析,獲得該包的類型、源地址、目的地址信息,并根據(jù)這些信息繼續(xù)進行下一步的收包處理。通過包頭分析結(jié)果中的包類型信息判斷,若該包是控制包STOP,則應(yīng)直接啟動停止過程,否則,繼續(xù)判斷是否為網(wǎng)絡(luò)編碼包,若不是,根據(jù)目的地址信息判斷該包是否為發(fā)給該源節(jié)點的包(即是否為is_t0_me)。若不是,則丟棄該包;若是發(fā)給該源節(jié)點,則進行統(tǒng)計變量n_f0r_me (統(tǒng)計發(fā)送給自己包的數(shù)量)的更新,并根據(jù)該包的類型信息判斷該包是否為RTS包。若不是,則直接丟棄;若是,則應(yīng)啟動數(shù)據(jù)發(fā)送過程。源節(jié)點數(shù)據(jù)包的發(fā)送過程如圖15所示。本發(fā)明中源節(jié)點的數(shù)據(jù)包發(fā)送過程與請 求包和控制包的發(fā)送過程區(qū)別在于本發(fā)送過程在封裝成幀之前,需判斷是否要進行網(wǎng)絡(luò)編碼,若要進行網(wǎng)絡(luò)編碼,則將該數(shù)據(jù)包緩存起來,用于之后的解碼過程,否則就直接封裝成幀,此外,只有當發(fā)送隊列已滿(即隊列中的數(shù)據(jù)包數(shù)量等于突發(fā)大小)時,封裝好的幀才進入發(fā)送模塊,否則,繼續(xù)讀取數(shù)據(jù)包。當傳輸視頻或文件時,首先檢查是否已經(jīng)到達文件末尾,若是,則說明文件已經(jīng)傳輸完畢,直接返回空;否則,說明文件尚未全部傳完,則從指定的待發(fā)送數(shù)據(jù)源中讀取固定的字節(jié)數(shù)作為本次傳輸?shù)膬?nèi)容。步驟4、作為中繼節(jié)點的無線電設(shè)備R接收并儲存作為一個源節(jié)點的無線電設(shè)備A發(fā)送的數(shù)據(jù)包,并向作為另一個源節(jié)點的無線電設(shè)備B發(fā)送請求包,請求該源節(jié)點的無線電設(shè)備B發(fā)送數(shù)據(jù)包;本發(fā)明實施例中,中繼節(jié)點R接收源節(jié)點A發(fā)來的數(shù)據(jù)包DATA_A2R,并將其存儲在接收緩存器Rcvd_Buffer_A中;中繼節(jié)點R發(fā)送請求包RTS_to_B,請求源節(jié)點B發(fā)送數(shù)據(jù);中繼節(jié)點接收過程如圖16所示。由圖所示,在分析包頭之前的步驟與源節(jié)點步驟相同。通過包頭分析處理之后,控制節(jié)點可以獲得該包的類型、源地址、目的地址信息。首先根據(jù)目的節(jié)點信息判斷該包是否發(fā)給本節(jié)點,若不是,則直接丟棄;若是,則繼續(xù)判斷該包類型是否為DATA。如果該包不是DATA類型,則直接丟棄;若是,則根據(jù)包頭分析結(jié)果中的源地址信息記錄該包的來源。當該包內(nèi)容為空時,將相應(yīng)的結(jié)束標識設(shè)置為True ;若內(nèi)容不為空,則存入相應(yīng)的收包緩存器中。并根據(jù)包頭分析結(jié)果中的包類型信息,判斷該包是否為突發(fā)尾,若不是,則重新啟動超時計時器,并結(jié)束本次收包處理過程;如果是突發(fā)尾,說明本次突發(fā)的所有數(shù)據(jù)包都接收完畢,那么就判斷該包是從哪個節(jié)點發(fā)送過來的,如果是從源節(jié)點A發(fā)送過來的,則向源節(jié)點B發(fā)送請求包RTS_to_B。步驟5、作為另一個源節(jié)點的無線電設(shè)備B接收到上述請求包后,通過協(xié)議頭部生成模塊對數(shù)據(jù)加入包頭,形成完整的數(shù)據(jù)包;并通過打包與封裝成幀模塊將上述數(shù)據(jù)包封裝成幀,發(fā)送至作為中繼節(jié)點的無線電設(shè)備R ;本發(fā)明實施例中,源節(jié)點B收到請求包RTS_to_B后,發(fā)送數(shù)據(jù)包DATA_B2R給中繼節(jié)點R ;對請求包的接收過程與步驟4中的一致,對數(shù)據(jù)包的發(fā)送過程與步驟4中的發(fā)送過程也一致。
步驟6、作為中繼節(jié)點的無線電設(shè)備R接收到作為另一個源節(jié)點的無線電設(shè)備B數(shù)據(jù)包后,利用網(wǎng)絡(luò)編碼模塊將作為一個源節(jié)點的無線電設(shè)備發(fā)送的數(shù)據(jù)包與作為另一個源節(jié)點的無線電設(shè)備B發(fā)送的數(shù)據(jù)包進行網(wǎng)絡(luò)編碼操作,形成網(wǎng)絡(luò)編碼包;本發(fā)明實施例中,中繼節(jié)點R接收源節(jié)點B發(fā)來的數(shù)據(jù)包DATA_B2R,并將其存儲在接收緩存器Rcvd_Buffer_B中;中繼節(jié)點R將緩存器Rcvd_Buffer_A和Rcvd_Buffer_B中的數(shù)據(jù)利用網(wǎng)絡(luò)編碼模塊進行網(wǎng)絡(luò)編碼后獲得網(wǎng)絡(luò)編碼的數(shù)據(jù)包DATA_NC ;在實際的數(shù)據(jù)傳輸中,由于兩個源節(jié)點的數(shù)據(jù)不等長,在傳輸?shù)淖詈?,會出現(xiàn)緩存器RcvcLBuffer_A和RCVd_Buffer_B中的數(shù)據(jù)包個數(shù)不等,兩個緩存器中的數(shù)據(jù)包進行網(wǎng)絡(luò)編碼后,那么其中一個緩存器中剩下的數(shù)據(jù)包不再進行編碼。中繼節(jié)點對第二個源節(jié)點數(shù)據(jù)包的接收過程與步驟5中的接收過程相同。步驟7、作為中繼節(jié)點的無線電設(shè)備R通過協(xié)議頭部生成模塊將上述網(wǎng)絡(luò)編碼包 加入包頭,形成完整的數(shù)據(jù)包,并通過打包與封裝成幀模塊將上述數(shù)據(jù)包封裝成幀,發(fā)至作為源節(jié)點的兩個無線電設(shè)備A、B ;DATA_NC的ID可以直接從兩個源節(jié)點的原數(shù)據(jù)包包頭信息中提取,即packet_id_A與packet_id_B ;有效數(shù)據(jù)長度new_length為2個數(shù)據(jù)包的原有效數(shù)據(jù)長度進行網(wǎng)絡(luò)編碼后的值;網(wǎng)絡(luò)編碼數(shù)據(jù)包的有效數(shù)據(jù)部分為2個數(shù)據(jù)包的原有效數(shù)據(jù)部分進行網(wǎng)絡(luò)編碼后的值。將形成的網(wǎng)絡(luò)編碼數(shù)據(jù)包的包頭與其有效數(shù)據(jù)部分連接起來完成打包操作并獲得網(wǎng)絡(luò)編碼的初始數(shù)據(jù)包。最后,將其送入封裝成幀器,完成封裝成幀處理。中繼節(jié)點發(fā)送過程與源節(jié)點數(shù)據(jù)包的發(fā)送過程相同,如圖15所示,但不必對網(wǎng)絡(luò)編碼包進行緩存。步驟8、作為源節(jié)點的兩個無線電設(shè)備A、B接收到編碼數(shù)據(jù)包后,利用自身內(nèi)部的解碼模塊解出對方作為源節(jié)點的無線電設(shè)備所發(fā)送的數(shù)據(jù)包;本發(fā)明實施例中,源節(jié)點A、B接收中繼節(jié)點R發(fā)出的網(wǎng)絡(luò)編碼的數(shù)據(jù)包DATA_NC,并結(jié)合本地發(fā)送緩存器中的數(shù)據(jù)包進行網(wǎng)絡(luò)解碼,從而獲得各自期望數(shù)據(jù);源節(jié)點的接收過程如圖14所示,判斷是否為網(wǎng)絡(luò)編碼包,如果是就利用網(wǎng)絡(luò)解碼模塊解出對方的數(shù)據(jù)包。步驟9、判斷作為源節(jié)點的兩個無線電設(shè)備是否都未發(fā)送完畢;若是,則返回執(zhí)行步驟2;否則,執(zhí)行步驟10;在圖16中繼節(jié)點對每個源節(jié)點的數(shù)據(jù)包的接收過程中,會檢查發(fā)送來的數(shù)據(jù)包DATA是否為空,如果為空,那么就表明該源節(jié)點的數(shù)據(jù)已經(jīng)發(fā)送完畢,那么設(shè)置結(jié)束標志X_is_end為真,其中X為A或B ;如果檢查到接收的結(jié)束標志都為假,那么就進行進一步操作,重新向兩個源節(jié)點發(fā)送數(shù)據(jù)請求包;如果兩結(jié)束標識同時為True,說明雙方待傳輸?shù)膬?nèi)容均已經(jīng)全部傳輸完畢,此時可以直接發(fā)送控制包STOP,并啟動停止過程stop_execution來結(jié)束傳輸;若不全為True,則需要根據(jù)該包的來源信息進行下一步處理。若該包是來自源節(jié)點A,則發(fā)送RTS_to_B請求另一源節(jié)點發(fā)送數(shù)據(jù);若該包是來自源節(jié)點B,則啟動數(shù)據(jù)發(fā)送過程,先將來自A的數(shù)據(jù)轉(zhuǎn)發(fā)給B,再將來自B的數(shù)據(jù)轉(zhuǎn)發(fā)給A,然后檢查收包緩存器的狀態(tài);否則的話,應(yīng)直接檢查收包緩存器的狀態(tài)。若兩個收包緩存器的內(nèi)容同時為空,則重新發(fā)送RTS_to_A,否則,直接重新啟動超時計時器并結(jié)束本次收包處理過程。
步驟10、判斷作為源節(jié)點的兩個無線電設(shè)備是否都發(fā)送完畢,若是,則執(zhí)行步驟12;否則,則執(zhí)行步驟11;如果檢查到兩個結(jié)束標志都為真,表明兩個節(jié)點的數(shù)據(jù)都發(fā)送完畢,那么中繼節(jié)點就執(zhí)行步驟12 ;如果有一個源節(jié)點的結(jié)束標志為真,那么表明該節(jié)點的數(shù)據(jù)已經(jīng)發(fā)送完畢,這個時候另外一個源節(jié)點的數(shù)據(jù)還未發(fā)送完畢,此時在中繼節(jié)點處無法進行網(wǎng)絡(luò)編碼,因此執(zhí)行步驟11,采用無網(wǎng)絡(luò)編碼雙向中繼方案來繼續(xù)完成數(shù)據(jù)傳輸。步驟11、啟動無網(wǎng)絡(luò)編碼雙向中繼傳輸過程繼續(xù)進行數(shù)據(jù)傳輸;無網(wǎng)絡(luò)編碼雙向中繼傳輸系統(tǒng)的傳輸過程如圖5 (b),本發(fā)明實施例中,無網(wǎng)絡(luò)編碼雙向中繼傳輸步驟如下步驟a :中繼節(jié)點R發(fā)送請求包RTS_to_A至源節(jié)點A,請求源節(jié)點A發(fā)送數(shù)據(jù);步驟b :源節(jié)點A收到請求包RTS_to_A后,發(fā)送數(shù)據(jù)包DATA_A2R給中繼節(jié)點R ; 步驟c :中繼節(jié)點R接收源節(jié)點A發(fā)來的數(shù)據(jù)包DATA_A2R,并將其存儲在接收緩存器 Rcvd_Buffer_A 中;步驟d :中繼節(jié)點R發(fā)送請求包RTS_to_B至源節(jié)點B,請求源節(jié)點B發(fā)送數(shù)據(jù);步驟e :源節(jié)點B收到請求包RTS_to_B后,發(fā)送數(shù)據(jù)包DATA_B2R給中繼節(jié)點R ;步驟f :中繼節(jié)點R接收源節(jié)點B發(fā)來的數(shù)據(jù)包DATA_B2R,并將其存儲在接收緩存器 Rcvd_Buffer_B 中;步驟g :中繼節(jié)點R將緩存器Rcvd_Buffer_A中的數(shù)據(jù)包(即源節(jié)點A發(fā)給中繼節(jié)點R的數(shù)據(jù)包)全部轉(zhuǎn)發(fā)給節(jié)點B,并清空緩存器Rcvd_BufTer_A ;步驟h :中繼節(jié)點R將緩存器Rcvd_Buffer_B中的數(shù)據(jù)包(即源節(jié)點B發(fā)給中繼節(jié)點R的數(shù)據(jù)包)全部轉(zhuǎn)發(fā)給源節(jié)點A,并清空緩存器Rcvd_BufTer_B ;步驟i :兩個源節(jié)點中的數(shù)據(jù)是否完全發(fā)送完畢,如果沒有就執(zhí)行步驟a,否則執(zhí)行步驟j;步驟j :中繼節(jié)點向兩個源節(jié)點發(fā)送STOP,兩個源節(jié)點停止發(fā)送數(shù)據(jù)包。在無網(wǎng)絡(luò)編碼雙向中繼傳輸過程中,源節(jié)點與中繼節(jié)點的發(fā)送和接收過程與流間網(wǎng)絡(luò)編碼雙向中繼傳輸過程中的發(fā)送過程和接收過程相似,只不過此時中繼節(jié)點不再進行網(wǎng)絡(luò)編碼,而是直接轉(zhuǎn)發(fā)收到的數(shù)據(jù)包;接收過程中源節(jié)點不用再進行網(wǎng)絡(luò)解碼。步驟12、作為中繼節(jié)點的無線電設(shè)備向作為源節(jié)點的兩個無線電設(shè)備發(fā)送停止包,作為源節(jié)點的兩個無線電設(shè)備停止傳輸。本發(fā)明實施例中,源節(jié)點A和源節(jié)點B收到控制包STOP后,立即停止傳輸。圖17為突發(fā)大小與有效數(shù)據(jù)吞吐量的關(guān)系,其中帶圓圈的實線表示無網(wǎng)絡(luò)編碼,帶三角的為有網(wǎng)絡(luò)編碼,在突發(fā)大小一定時,由圖可知,采用網(wǎng)絡(luò)編碼時的有效數(shù)據(jù)吞吐量要遠大于不采用網(wǎng)絡(luò)編碼時的有效數(shù)據(jù)吞吐量,且突發(fā)越大時,這一相差的幅度也越大。因此網(wǎng)絡(luò)編碼可以提高系統(tǒng)吞吐量的理論優(yōu)勢。圖18為采用網(wǎng)絡(luò)編碼時,有效數(shù)據(jù)吞吐量增益與突發(fā)大小的關(guān)系,帶圓圈的實線表示實際值,帶三角的實線表示理論值。由圖可知,隨著突發(fā)大小的增加,有效數(shù)據(jù)吞吐量增益也在不斷提高,并最終接近理論值。圖19為突發(fā)大小與誤包率之間的關(guān)系,各曲線與圖17中代表的含義相同。由圖19所示,隨著突發(fā)大小的增大,誤包率是降低的,當突發(fā)大小固定時,采用網(wǎng)絡(luò)編碼時的誤包率要比不采用網(wǎng)絡(luò)編碼時的誤包率小。因此網(wǎng)絡(luò)編碼還可以在一定程度上降低誤包率。圖20為發(fā)射速率與有效數(shù)據(jù)吞吐量之間的關(guān)系,各曲線與圖17中代表的含義相同。由圖20所示,當發(fā)射速率不斷增大時,有效數(shù)據(jù)吞吐量也隨之提高;當發(fā)射速率一致時,采用網(wǎng)絡(luò)編碼時比不采用網(wǎng)絡(luò)編碼時的有效數(shù)據(jù)吞吐量要高,且發(fā)射速率越大,這一優(yōu)勢越明顯。圖21為采用網(wǎng)絡(luò)編碼時發(fā)射速率與有效數(shù)據(jù)吞吐量增益之間的關(guān)系,各曲線與圖18中代表的含義相同。由圖21可 知,有效數(shù)據(jù)吞吐量增益隨著發(fā)射速率的增大而增大,且其值與有效數(shù)據(jù)吞吐量增益的理論值非常接近。圖22為發(fā)射速率與誤包率之間的關(guān)系,各曲線與圖17中代表的含義相同。由圖22可以看出,誤包率隨著發(fā)射速率的增大而降低。另外,在發(fā)射速率相同時,使用網(wǎng)絡(luò)編碼時要比不使用網(wǎng)絡(luò)編碼時的誤包率低。
權(quán)利要求
1.一種自適應(yīng)選擇中繼方案的中繼傳輸系統(tǒng),該系統(tǒng)包括三個無線電設(shè)備,每個無線電設(shè)備由一臺通用軟件無線電設(shè)備USRP和一臺計算機組成;上述三個無線電設(shè)備作為三個節(jié)點,其中兩個節(jié)點作為源節(jié)點,另外一個作為中繼節(jié)點,并且兩個源節(jié)點通過中繼節(jié)點進行中繼通信,其特征在于所述的作為中繼節(jié)點無線電設(shè)備是用于自適應(yīng)選擇無網(wǎng)絡(luò)編碼雙向中繼傳輸方式進行數(shù)據(jù)傳輸還是流間網(wǎng)絡(luò)編碼雙向中繼傳輸方式進行傳輸?shù)难b置; 所述的作為中繼節(jié)點的無線電設(shè)備包括網(wǎng)絡(luò)編碼模塊、協(xié)議頭部生成模塊、協(xié)議頭部分析模塊和網(wǎng)絡(luò)解碼模塊;其中 網(wǎng)絡(luò)編碼模塊用于在作為中繼節(jié)點的無線電設(shè)備處對作為源節(jié)點的兩個無線電設(shè)備發(fā)送的兩個數(shù)據(jù)包進行網(wǎng)絡(luò)編碼; 協(xié)議頭部生成模塊用于生成數(shù)據(jù)包包頭,包括非網(wǎng)絡(luò)編碼的數(shù)據(jù)包、網(wǎng)絡(luò)編碼數(shù)據(jù)包、請求包和停止包; 協(xié)議頭部分析模塊用于在作為中繼節(jié)點的無線電設(shè)備接收數(shù)據(jù)包時,對接收數(shù)據(jù)包包頭進行分析處理,包括識別數(shù)據(jù)包的類型、源地址和目的地址的信息;并通過判斷作為源節(jié)點的兩個無線電設(shè)備數(shù)據(jù)包發(fā)送完成情況,進行自適應(yīng)選擇無網(wǎng)絡(luò)編碼雙向中繼傳輸方式或流間網(wǎng)絡(luò)編碼雙向中繼傳輸方式; 網(wǎng)絡(luò)解碼模塊用于在作為源節(jié)點的無線電設(shè)備處根據(jù)本地數(shù)據(jù)包與接收到的網(wǎng)絡(luò)編碼包進行異或運算解出另一個作為源節(jié)點的無線電設(shè)備發(fā)送的數(shù)據(jù)包。
2.采用權(quán)利要求I所述的自適應(yīng)選擇中繼方案的中繼傳輸系統(tǒng)進行中繼傳輸?shù)姆椒?,其特征在于包括以下步驟 步驟I、在三個無線電設(shè)備內(nèi)建立通信協(xié)議,包括所需數(shù)據(jù)包格式、請求包和停止包格式,以及幀格式;并啟動流間網(wǎng)絡(luò)編碼雙向中繼傳輸過程; 步驟2、作為中繼節(jié)點的無線電設(shè)備向作為其中一個源節(jié)點的無線電設(shè)備發(fā)送請求包,請求作為該源節(jié)點的無線電設(shè)備發(fā)送數(shù)據(jù)包; 步驟3、作為源節(jié)點的無線電設(shè)備接收到請求包后,通過協(xié)議頭部生成模塊對數(shù)據(jù)加入包頭,形成完整的數(shù)據(jù)包,并通過打包與封裝成幀模塊將上述數(shù)據(jù)包封裝成幀,發(fā)送至作為中繼節(jié)點的無線電設(shè)備; 步驟4、作為中繼節(jié)點的無線電設(shè)備接收并儲存作為一個源節(jié)點的無線電設(shè)備發(fā)送的數(shù)據(jù)包,并向作為另一個源節(jié)點的無線電設(shè)備發(fā)送請求包,請求該源節(jié)點的無線電設(shè)備發(fā)送數(shù)據(jù)包; 步驟5、作為另一個源節(jié)點的無線電設(shè)備接收到上述請求包后,通過協(xié)議頭部生成模塊對數(shù)據(jù)加入包頭,形成完整的數(shù)據(jù)包;并通過打包與封裝成幀模塊將上述數(shù)據(jù)包封裝成幀,發(fā)送至作為中繼節(jié)點的無線電設(shè)備; 步驟6、作為中繼節(jié)點的無線電設(shè)備接收到作為另一個源節(jié)點的無線電設(shè)備數(shù)據(jù)包后,利用網(wǎng)絡(luò)編碼模塊將作為一個源節(jié)點的無線電設(shè)備發(fā)送的數(shù)據(jù)包與作為另一個源節(jié)點的無線電設(shè)備發(fā)送的數(shù)據(jù)包進行網(wǎng)絡(luò)編碼操作,形成網(wǎng)絡(luò)編碼包; 步驟7、作為中繼節(jié)點的無線電設(shè)備通過協(xié)議頭部生成模塊將上述網(wǎng)絡(luò)編碼包加入包頭,形成完整的數(shù)據(jù)包,并通過打包與封裝成幀模塊將上述數(shù)據(jù)包封裝成幀,發(fā)至作為源節(jié)點的兩個無線電設(shè)備;步驟8、作為源節(jié)點的兩個無線電設(shè)備接收到編碼數(shù)據(jù)包后,利用自身內(nèi)部的解碼模塊解出對方作為源節(jié)點的無線電設(shè)備所發(fā)送的數(shù)據(jù)包; 步驟9、判斷作為源節(jié)點的兩個無線電設(shè)備是否都未發(fā)送完畢;若是,則返回執(zhí)行步驟2;否則,執(zhí)行步驟10; 步驟10、判斷作 為源節(jié)點的兩個無線電設(shè)備是否都發(fā)送完畢,若是,則執(zhí)行步驟12 ;否貝U,則執(zhí)行步驟11 ; 步驟11、啟動無網(wǎng)絡(luò)編碼雙向中繼傳輸過程繼續(xù)進行數(shù)據(jù)傳輸; 步驟12、作為中繼節(jié)點的無線電設(shè)備向作為源節(jié)點的兩個無線電設(shè)備發(fā)送停止包,作為源節(jié)點的兩個無線電設(shè)備停止傳輸。
全文摘要
本發(fā)明一種自適應(yīng)選擇中繼方案的中繼傳輸系統(tǒng)及方法,屬于無線通信技術(shù)領(lǐng)域;該系統(tǒng)包括三個無線電設(shè)備,每個無線電設(shè)備由一臺通用軟件無線電設(shè)備USRP和一臺計算機組成;上述三個無線電設(shè)備作為三個節(jié)點,其中兩個節(jié)點作為源節(jié)點,另外一個作為中繼節(jié)點,并且兩個源節(jié)點通過中繼節(jié)點進行中繼通信,所述的中繼節(jié)點可自適應(yīng)選擇無網(wǎng)絡(luò)編碼雙向中繼傳輸方式或流間網(wǎng)絡(luò)編碼雙向中繼傳輸方式;本發(fā)明建立出適合軟件無線電平臺的多種中繼方式,并在軟件無線電平臺上實現(xiàn)了多種中繼傳輸方案,并能夠支持傳輸數(shù)據(jù)、文件和視頻3種不同類型的業(yè)務(wù);本發(fā)明可提高提高吞吐率,并通過軟件無線電平臺實現(xiàn)在辦公室條件下進行實驗數(shù)據(jù)的采集和分析。
文檔編號H04B7/15GK102892142SQ20121031955
公開日2013年1月23日 申請日期2012年8月31日 優(yōu)先權(quán)日2012年8月31日
發(fā)明者宋清洋, 黃洋, 莊建華, 崔亞運 申請人:宋清洋