新聞中心

EEPW首頁 > 電源與新能源 > 設計應用 > 基于網(wǎng)絡編碼的多信源組播通信系統(tǒng),包括源代碼,原理圖等(二)

基于網(wǎng)絡編碼的多信源組播通信系統(tǒng),包括源代碼,原理圖等(二)

作者: 時間:2016-12-06 來源:網(wǎng)絡 收藏

  2 多信源組播系統(tǒng)結構及整體設計方案

本文引用地址:http://m.butianyuan.cn/article/201612/326828.htm

  2.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ù)包而交給主機。

⑤第一個包


上一頁 1 2 3 下一頁

評論


技術專區(qū)

關閉