中國電子科技集團(tuán)公司第二十研究所 劉 釗
傳輸層網(wǎng)絡(luò)編碼研究
中國電子科技集團(tuán)公司第二十研究所 劉釗
底層網(wǎng)絡(luò)隨機(jī)丟包導(dǎo)致的TCP傳輸性能的惡化的問題由來已久。為了保障TCP的吞吐量在無線網(wǎng)絡(luò)環(huán)境下依然能夠保持優(yōu)良的性能,通過分析傳輸層網(wǎng)絡(luò)編碼(TCP/NC協(xié)議)的基本原理,結(jié)果表明:傳輸層網(wǎng)絡(luò)編碼能夠有效克服底層的隨機(jī)丟包帶來的影響,提升TCP吞吐量。
網(wǎng)絡(luò)編碼;傳輸層;傳輸層網(wǎng)絡(luò)編碼
引自2000年來,Ahlswede[1]等人的研究開創(chuàng)了網(wǎng)絡(luò)編碼的新領(lǐng)域。網(wǎng)絡(luò)編碼是一種融合了路由和編碼的信息交換技術(shù),它的核心思想是在網(wǎng)絡(luò)中的各個(gè)節(jié)點(diǎn)上對(duì)各條信道上收到的信息進(jìn)行線性或者非線性的處理,然后轉(zhuǎn)發(fā)給下游節(jié)點(diǎn),中間節(jié)點(diǎn)扮演著編碼器或信號(hào)處理器的角色。網(wǎng)絡(luò)編碼突破了傳統(tǒng)路由在網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)包只能轉(zhuǎn)發(fā)和存儲(chǔ)的限制,使網(wǎng)絡(luò)的多播傳輸達(dá)到“最大流最小割”理論上的最大傳輸容量。網(wǎng)絡(luò)編碼雖然起源于對(duì)多播傳輸?shù)难芯?,但是現(xiàn)今已拓展到網(wǎng)絡(luò)研究的許多方面。無線鏈路的不可靠性和物理層廣播特性非常適合使用編碼的方法。
傳輸層TCP協(xié)議能夠提供可靠的端到端通信之外,當(dāng)網(wǎng)絡(luò)出現(xiàn)擁塞時(shí),還會(huì)主動(dòng)降低發(fā)送速率以使網(wǎng)絡(luò)性能盡快恢復(fù)。但由于無線信道本身的易誤碼特性,導(dǎo)致其持續(xù)存在無線物理層隨機(jī)誤碼,使用TCP協(xié)議就容易將這種無線信道誤碼引起的丟包誤認(rèn)為網(wǎng)絡(luò)出現(xiàn)了擁塞,進(jìn)而主動(dòng)降低發(fā)送速率,最終會(huì)將網(wǎng)絡(luò)的吞吐量限制在一個(gè)較低的水平。
對(duì)于協(xié)議棧的修改[2]如圖1所示。其中,添加了網(wǎng)絡(luò)編碼層,它位于傳統(tǒng)計(jì)算機(jī)網(wǎng)絡(luò)分層結(jié)構(gòu)中的傳輸層和網(wǎng)絡(luò)層之間,其在源端對(duì)TCP傳輸?shù)臄?shù)據(jù)進(jìn)行網(wǎng)絡(luò)編碼;在接收端進(jìn)行網(wǎng)絡(luò)解碼,將數(shù)據(jù)還原成TCP的數(shù)據(jù)并遞交給TCP-Sink。
圖1 TCP/NC協(xié)議棧
圖2 發(fā)送端流程圖
本文介紹的網(wǎng)絡(luò)編碼算法為:隨機(jī)線性網(wǎng)絡(luò)編碼。隨機(jī)網(wǎng)絡(luò)編碼該方法基于一種隨機(jī)選擇編碼向量的策略:對(duì)于除了信宿節(jié)點(diǎn)外的所有中間節(jié)點(diǎn),只要在一個(gè)足夠大的有限域上隨機(jī)選擇它們輸入鏈路到輸出鏈路的映射,而且各節(jié)點(diǎn)映射關(guān)系的選取是相互獨(dú)立的,就能以較高概率使各個(gè)信宿節(jié)點(diǎn)對(duì)應(yīng)的系統(tǒng)轉(zhuǎn)移矩陣滿秩,各信宿節(jié)點(diǎn)能以較高的概率成功譯碼。隨機(jī)網(wǎng)絡(luò)編碼具有重要的理論價(jià)值和應(yīng)用價(jià)值,得到了廣泛的關(guān)注和應(yīng)用。傳輸層網(wǎng)絡(luò)編碼的算法主要包含兩個(gè)部分:(1)編碼端算法;(2)解碼段算法。
2.1TCP/NC編碼流程(見圖2)
TCP/NC網(wǎng)絡(luò)編碼的編碼端流程:
(1)設(shè)置變量 NUM 為0。
(2)等待狀態(tài)。
(3)當(dāng)數(shù)據(jù)包從TCP發(fā)送端來。
1)如果數(shù)據(jù)包是一個(gè)用于建立連接的控制數(shù)據(jù)包,將其直接傳遞給IP層,并且返回等待狀態(tài)。
2)如果數(shù)據(jù)包還沒有加入編碼窗口,將其加入網(wǎng)絡(luò)編碼窗口。
3)設(shè)置NUM = NUM + R (R是網(wǎng)絡(luò)編碼冗余因子)。
4)重復(fù)下面子步驟[NUM]次。
①用網(wǎng)絡(luò)編碼窗口中的數(shù)據(jù)包產(chǎn)生一個(gè)隨機(jī)線性組合。
②將網(wǎng)絡(luò)編碼數(shù)據(jù)包的隨機(jī)系數(shù)和編碼信息加入網(wǎng)絡(luò)編碼頭。③將數(shù)據(jù)包傳輸給IP層。④NUM = NUM -1。5)返回等待狀態(tài)。
(1)ACK從接收端到達(dá):將被確認(rèn)的數(shù)據(jù)包從編碼緩存中移除,并且將ACK傳遞給TCP發(fā)送端。
2.2TCP/NC解碼流程
圖3 接收端流程圖
TCP/NC網(wǎng)絡(luò)編碼解碼端流程:
(1)等待狀態(tài)。
(2)當(dāng)ACK是從TCP-Sink到達(dá):如果ACK確認(rèn)的是一個(gè)建立鏈接的控制數(shù)據(jù)包,將其直接傳遞給IP層,然后再返回等待狀態(tài);否則,忽略當(dāng)前ACK。
(3)當(dāng)數(shù)據(jù)包是從源端發(fā)送來。
1)將網(wǎng)絡(luò)編碼的頭從編碼的數(shù)據(jù)包中移除,將編碼系數(shù)向量從包頭中取出。
2)將網(wǎng)絡(luò)編碼的編碼向量作為一個(gè)行向量加入解碼系數(shù)矩陣,并且用高斯-約旦消元法處理接收矩陣。
3)將負(fù)載加入解碼緩存,如果任何一個(gè)數(shù)據(jù)包可以解碼,則將其傳遞給TCP-Sink并從緩存中移除。
4)產(chǎn)生新的TCP確認(rèn)序號(hào)。
本文分析表明:TCP/NC能夠有效克服底層隨機(jī)丟包造成TCP傳輸性能劇烈下降的問題,而且提升吞吐量,與現(xiàn)有協(xié)議棧的兼容性較好。
[1]Ahlswede R,Cai N,Li S-Y,et al.Network information flow[J]. Information Theory,IEEE Transactions on,2000,46 (4):1204-1216.
[2]Sundararajan JK,Shah D,Medard M,et al.Network coding meets TCP[J].IEEE Infocom 2009-IEEE Conference on Computer Communications,Vols 1-5,2009:280-288.