中國電子科技集團公司第二十研究所 劉 釗
傳輸層網絡編碼研究
中國電子科技集團公司第二十研究所 劉釗
底層網絡隨機丟包導致的TCP傳輸性能的惡化的問題由來已久。為了保障TCP的吞吐量在無線網絡環境下依然能夠保持優良的性能,通過分析傳輸層網絡編碼(TCP/NC協議)的基本原理,結果表明:傳輸層網絡編碼能夠有效克服底層的隨機丟包帶來的影響,提升TCP吞吐量。
網絡編碼;傳輸層;傳輸層網絡編碼
引自2000年來,Ahlswede[1]等人的研究開創了網絡編碼的新領域。網絡編碼是一種融合了路由和編碼的信息交換技術,它的核心思想是在網絡中的各個節點上對各條信道上收到的信息進行線性或者非線性的處理,然后轉發給下游節點,中間節點扮演著編碼器或信號處理器的角色。網絡編碼突破了傳統路由在網絡中傳輸的數據包只能轉發和存儲的限制,使網絡的多播傳輸達到“最大流最小割”理論上的最大傳輸容量。網絡編碼雖然起源于對多播傳輸的研究,但是現今已拓展到網絡研究的許多方面。無線鏈路的不可靠性和物理層廣播特性非常適合使用編碼的方法。
傳輸層TCP協議能夠提供可靠的端到端通信之外,當網絡出現擁塞時,還會主動降低發送速率以使網絡性能盡快恢復。但由于無線信道本身的易誤碼特性,導致其持續存在無線物理層隨機誤碼,使用TCP協議就容易將這種無線信道誤碼引起的丟包誤認為網絡出現了擁塞,進而主動降低發送速率,最終會將網絡的吞吐量限制在一個較低的水平。
對于協議棧的修改[2]如圖1所示。其中,添加了網絡編碼層,它位于傳統計算機網絡分層結構中的傳輸層和網絡層之間,其在源端對TCP傳輸的數據進行網絡編碼;在接收端進行網絡解碼,將數據還原成TCP的數據并遞交給TCP-Sink。

圖1 TCP/NC協議棧

圖2 發送端流程圖
本文介紹的網絡編碼算法為:隨機線性網絡編碼。隨機網絡編碼該方法基于一種隨機選擇編碼向量的策略:對于除了信宿節點外的所有中間節點,只要在一個足夠大的有限域上隨機選擇它們輸入鏈路到輸出鏈路的映射,而且各節點映射關系的選取是相互獨立的,就能以較高概率使各個信宿節點對應的系統轉移矩陣滿秩,各信宿節點能以較高的概率成功譯碼。隨機網絡編碼具有重要的理論價值和應用價值,得到了廣泛的關注和應用。傳輸層網絡編碼的算法主要包含兩個部分:(1)編碼端算法;(2)解碼段算法。
2.1TCP/NC編碼流程(見圖2)
TCP/NC網絡編碼的編碼端流程:
(1)設置變量 NUM 為0。
(2)等待狀態。
(3)當數據包從TCP發送端來。
1)如果數據包是一個用于建立連接的控制數據包,將其直接傳遞給IP層,并且返回等待狀態。
2)如果數據包還沒有加入編碼窗口,將其加入網絡編碼窗口。
3)設置NUM = NUM + R (R是網絡編碼冗余因子)。
4)重復下面子步驟[NUM]次。
①用網絡編碼窗口中的數據包產生一個隨機線性組合。
②將網絡編碼數據包的隨機系數和編碼信息加入網絡編碼頭。③將數據包傳輸給IP層。④NUM = NUM -1。5)返回等待狀態。
(1)ACK從接收端到達:將被確認的數據包從編碼緩存中移除,并且將ACK傳遞給TCP發送端。
2.2TCP/NC解碼流程

圖3 接收端流程圖
TCP/NC網絡編碼解碼端流程:
(1)等待狀態。
(2)當ACK是從TCP-Sink到達:如果ACK確認的是一個建立鏈接的控制數據包,將其直接傳遞給IP層,然后再返回等待狀態;否則,忽略當前ACK。
(3)當數據包是從源端發送來。
1)將網絡編碼的頭從編碼的數據包中移除,將編碼系數向量從包頭中取出。
2)將網絡編碼的編碼向量作為一個行向量加入解碼系數矩陣,并且用高斯-約旦消元法處理接收矩陣。
3)將負載加入解碼緩存,如果任何一個數據包可以解碼,則將其傳遞給TCP-Sink并從緩存中移除。
4)產生新的TCP確認序號。
本文分析表明:TCP/NC能夠有效克服底層隨機丟包造成TCP傳輸性能劇烈下降的問題,而且提升吞吐量,與現有協議棧的兼容性較好。
[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.