基于網(wǎng)絡編碼的多信源組播通信系統(tǒng),包括源代碼,原理圖等(二)
2 多信源組播系統(tǒng)結構及整體設計方案
本文引用地址:http://m.butianyuan.cn/article/201612/326828.htm2.1項目研究需求、目標和內(nèi)容
網(wǎng)絡編碼能夠提高網(wǎng)絡吞吐量,提升魯棒性、安全性等網(wǎng)絡性能。具有網(wǎng)絡編碼功能的路由器是未來網(wǎng)絡發(fā)展的趨勢。組播通信在網(wǎng)絡通信中有重要的作用,事實上,任何一個網(wǎng)絡都可以認為是組播網(wǎng)的一個特例。然而,目前在世界上研究網(wǎng)絡編碼在組播上的應用大多集中在單信源組播方面,例如,單信源多信宿網(wǎng)絡如何達到最大傳輸速率問題[25],基于網(wǎng)絡編碼的組播路由算法和性能評估[26], 基于網(wǎng)絡編碼的組播通信網(wǎng)絡的拓撲設計[27], 多信源隨機線性網(wǎng)絡編碼在組播通信的研究[28]以及單信源組播網(wǎng)中編碼節(jié)點的研究[29],以上研究都是以軟件仿真為主,沒有形成實際的硬件平臺和系統(tǒng)。
多信源組播的應用非常廣泛,如P2P內(nèi)容分發(fā)網(wǎng)絡等。事實上,任何一個網(wǎng)絡都可以作為多信源組播的一個特例,因此研究多信源組播是有意義且必要的。
本項目的主要研究目標是基于網(wǎng)絡編碼的多信源組播系統(tǒng)的實現(xiàn)。在基于國內(nèi)外網(wǎng)絡編碼理論在組播通信中的最新研究成果和技術,對網(wǎng)絡編碼理論進行深入學習和探討,提出一種基于網(wǎng)絡編碼的多信源組播系統(tǒng)和網(wǎng)絡,然后依據(jù)此系統(tǒng)設計出可實現(xiàn)組播的通信協(xié)議和相關算法,再利用開放式的網(wǎng)絡設計硬件平臺NetFPGA[30],使提出的協(xié)議和算法在硬件上實現(xiàn),最后在實際的環(huán)境中用若干電腦和NetFPGA組成一個小型組播通信網(wǎng)絡進行系統(tǒng)測試和性能評估。
2.2 NetFPGA——新一代開放式網(wǎng)絡研究平臺簡介
由斯坦福大學開發(fā)的NetFPGA是一個基于Linux操作系統(tǒng)的可重用開放性硬件平臺,允許用戶在實驗室內(nèi)搭建高性能的網(wǎng)絡模型進行仿真和研究。它具有以下特點[31]:
(1)很好地支持模塊化設計,它可以使研究人員在硬件上搭建Gb/s高性能網(wǎng)絡系統(tǒng)模型。(2)NetFPGA是一個基于Linux系統(tǒng)的開放性平臺,可以利用平臺上現(xiàn)有的資源,在前人開發(fā)的基礎上添加自己的模塊和修改現(xiàn)有的系統(tǒng),而不需要重復地搭建外圍模塊、開發(fā)驅(qū)動和GUI等,大大減輕了網(wǎng)絡研究的任務。
NetFPGA的硬件主要包含了4個1Gb/s的以太網(wǎng)接口(GigE),一個用戶可編程的FPGA,以及兩片SRAM和一片DRAM。NetFPGA開發(fā)板通過標準的PCI總線接口連接到PC機或服務器,模塊框圖如圖2.2-1所示。
圖 2.2-1:NetFPGA平臺的組成框圖
在外部硬件接口方面,除了連接PC主機的PCI總線插口,一個Broadcom公司的物理層收發(fā)器(PHY)包含了四個千兆位以太網(wǎng)接口,板子上的兩個SATA連接口使得系統(tǒng)內(nèi)部的多個NetFPGA可以通過SATA數(shù)據(jù)線連接起來,互相之間直接以很高的速度交換數(shù)據(jù),而不必再通過PCI總線。NetFPGA通過PCI總線與主機CPU連接,提供了硬件加速的數(shù)據(jù)通道,分擔CPU的處理任務。主機CPU按照DMA方式讀寫NetFPGA上的寄存器和存儲器來配置NetFPGA的工作模式,并對NetFPGA的工作狀態(tài)進行監(jiān)控。
NetFPGA平臺的軟件系統(tǒng)包括操作系統(tǒng)、作為軟件接口的驅(qū)動程序、實現(xiàn)各種硬件功能的邏輯代碼、執(zhí)行控制功能的軟件程序、系統(tǒng)測試的腳本程序,以及計算機輔助設計軟件工具。
2.3 利用NetFPGA實現(xiàn)本設計的總體構想
基于網(wǎng)絡編碼的組播通信系統(tǒng)將充分運用NetFPGA上面的各種硬件和軟件資源,實現(xiàn)系統(tǒng)的設計目標,具體是:(1)根據(jù)項目的需求,合理且充分利用NetFPGA卡上面的各種硬件資源,如FPGA、存儲芯片和輸入輸出接口;(2)由于基于NetFPGA實現(xiàn)的IPv4原理性路由器是一個開源的系統(tǒng),因此我們可以運用其提供的部分代碼和已經(jīng)設計好的底層硬件平臺,來幫助我們實現(xiàn)設計目標。例如,我們的系統(tǒng)的編碼、解碼工作主要在網(wǎng)絡層完成,因此我們可以利用NetFPGA中已有的物理層、MAC層硬件邏輯來實現(xiàn)數(shù)據(jù)的接收和發(fā)送;(3)在軟件方面,由于NetFPGA平臺選擇了CentOS操作系統(tǒng),并且開發(fā)了軟硬件接口的驅(qū)動程序,基于Linux內(nèi)核的設備驅(qū)動程序和Java程序開發(fā)的圖形用戶界面(Java GUI)等,因此我們可以對其應用、改進,使我們的系統(tǒng)更加完善,方便調(diào)試和后續(xù)的進一步研究。
2.4系統(tǒng)實現(xiàn)的整體設計方案說明
2.4.1 系統(tǒng)拓撲圖及說明
如圖2.4-1所示,是擬采用的組播通信網(wǎng)絡的拓撲圖:
圖2.4-1基于網(wǎng)絡編碼組播的網(wǎng)絡拓撲圖
說明:為了易于在工程上實現(xiàn),將網(wǎng)絡編碼路由器分為編碼路由器EC(Encoding router)和解碼路由器DC(Decoding router),分別專門負責編碼和解碼。具體講,如圖1所示,信源S1,S2,S3發(fā)送數(shù)據(jù)包,編碼路由器EC0和EC1負責將接收到的數(shù)據(jù)包以隨機的系數(shù)進行線性編碼后發(fā)送給組播路由器R,注意,這里的組播路由器更準確地說是轉發(fā)路由器,因為它的功能只是將收到的數(shù)據(jù)包轉發(fā)到其三個輸出端口,而沒有IGMP(組播管理)和相應的組播路由功能。當然,我們也可以直接在EC上實現(xiàn)轉發(fā)的功能,增加R的原因是考慮到NetFPGA端口數(shù)量的限制(每塊NetFPGA只有4個端口)。解碼路由器DC接收編碼的數(shù)據(jù)并解碼,并將它發(fā)送給下游的信宿主機,在這里,由于PC數(shù)量的限制,我們使用雙口網(wǎng)卡可以將解碼路由器和信宿放到同一臺主機上,這對網(wǎng)絡性能的測試和實現(xiàn)沒有任何影響。
2.4.2編碼策略與方案
作為一種編碼結構的提出,我們將編碼只限于不同信源數(shù)據(jù)包之間,暫不考慮信源包內(nèi)部編碼。相同信源的數(shù)據(jù)包之間分“代”,以便在解碼時區(qū)分信息先后順序[32]。不同信源的包之間不區(qū)分代的概念。
定義:為了討論的方便性和簡潔性,我們將信源S1的第1代記為S(1,1),信源S2的第3代記為S(2,3),……依此類推。依據(jù)包頭和緩存,每個信源的代的編號從0開始,至1023結束,即信源n的最大的代編號為S(n,1023)
在編碼路由器EC上對不同信源的IP數(shù)據(jù)包進行編碼,編碼系數(shù)矢量隨機選擇,編碼方法是線性編碼。例如,在上圖中的編碼路由器EC0,設兩個鏈路的輸入的全局編碼向量為:in(e)=由于只有兩個信源之間的編碼有且只有一條邊輸出,則本地編碼向量為(α β),依據(jù)文章[33]的公式:
則輸出out(e)=(α β)=αS(1,x)+βS(2,y)。編碼后的數(shù)據(jù)以NCP(network coding protocol)包頭封裝,然后再封裝在IP數(shù)據(jù)報中,如圖2.4-2所示:
圖2.4-2:編碼后數(shù)據(jù)的封裝格式
為減小相應的編碼負擔和提高編碼效率,我們只對網(wǎng)絡中的IP數(shù)據(jù)報中的有效載荷進行編碼(已經(jīng)編碼過的數(shù)據(jù)包可以再進行編碼),不對ARP等其他數(shù)據(jù)包編碼。在編碼路由器中,我們?yōu)椴煌妮斎胪ǖ篱_辟不同的FIFO以進行順序存取和編碼
2.4.3隨機系數(shù)的選擇
根據(jù)相關資料可知,隨即編碼系數(shù)矢量的選擇可以從Galois Field中進行選擇,依據(jù)論文[33][34],我們選擇域為GF256,即,此時可以解碼的概率為1-=0.996,這個概率可以滿足大多數(shù)的應用需求。
2.4.4 NCP數(shù)據(jù)包頭的格式
為了能夠在解碼路由器上進行解碼,我們需要在被編碼的有效載荷前增加NCP數(shù)據(jù)包頭[35],根據(jù)我們的方案,其包頭格式如圖2.4-4:
版本 4位 | 首部長度 4位 | 總長度 16位) | 標志 2位 | 保留 6位 | |||||||||
第1個包信源號 | 第2個包信源號 | …… | …… | 第8個包信源號 | |||||||||
第1個包的填充長度(10位) | 編碼系數(shù)矢量1 (8位) | 代的編號(10位) | 編碼次數(shù) (4位) | ||||||||||
第2個包的填充長度 | 編碼系數(shù)矢量2 | 代的編號 | 編碼次數(shù) | ||||||||||
……………… | …… | …… | |||||||||||
第n個包的填充長度 | 編碼系數(shù)n | 代的編號 | 編碼次數(shù) | ||||||||||
編碼后的有效載荷 | |||||||||||||
圖2.4-4:NCP數(shù)據(jù)包的包頭格式
先將包頭各個字段的含義說明如下:
①版本:NCP數(shù)據(jù)包格式的版本,為了后續(xù)開發(fā)研究和以前版本的區(qū)分,第一個版本為0001.
?、谑撞块L度和總長度:首部長度是指除了有效數(shù)據(jù)載荷以外的部分,共4位,單位是4字節(jié),其最小值為2。當首部長度為3時,意味著該包的載荷沒有被編碼,只是加了包頭。當其值大于3時,其值減去3為被編碼的信源數(shù)。
總長度是之首部長度和有效載荷之和的長度,16位,單位為字節(jié)。
?、蹣酥荆喝暨M入編碼路由器的只是一個沒有編碼過的IP數(shù)據(jù)包時,不進行編碼,直接將包頭前2行加在原IP數(shù)據(jù)包的有效載荷的前面即可。當僅有一個NCP數(shù)據(jù)包進入編碼路由器時,我們不進行編碼,直接進行轉發(fā),如圖2.4-5所示:
有效載荷的數(shù)據(jù)包類型 | 標志位 |
沒有編碼的IP數(shù)據(jù)包 | 01 |
編碼后的NCP數(shù)據(jù)包 | 10 |
保留 | 00 |
保留 | 11 |
圖2.4-5:標志位的含義
④編碼次數(shù):即從原始數(shù)據(jù)包算起,被編碼的次數(shù),因為在一個實際的網(wǎng)絡中,數(shù)據(jù)的編碼可以是遞歸的,即可以多次被編碼。有時,只有一個數(shù)據(jù)源時,直接在其前面加上NCP包頭而不進行編碼。增加編碼次數(shù)是為了能夠在多次編碼后進行解碼。若編碼前數(shù)據(jù)包為IP數(shù)據(jù)包,其編碼次數(shù)為0,若為NCP數(shù)據(jù)包,則次數(shù)≥1.當一個IP數(shù)據(jù)包和一個已編碼的數(shù)據(jù)包編碼時,利用編碼次數(shù),可以避免解碼路由器將NCP數(shù)據(jù)包誤以為IP數(shù)據(jù)包而交給主機。
⑤第一個包
評論