新聞中心

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

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

作者: 時(shí)間:2016-12-06 來(lái)源:網(wǎng)絡(luò) 收藏

  2 多信源組播系統(tǒng)結(jié)構(gòu)及整體設(shè)計(jì)方案

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

  2.1項(xiàng)目研究需求、目標(biāo)和內(nèi)容

  網(wǎng)絡(luò)編碼能夠提高網(wǎng)絡(luò)吞吐量,提升魯棒性、安全性等網(wǎng)絡(luò)性能。具有網(wǎng)絡(luò)編碼功能的路由器是未來(lái)網(wǎng)絡(luò)發(fā)展的趨勢(shì)。組播通信在網(wǎng)絡(luò)通信中有重要的作用,事實(shí)上,任何一個(gè)網(wǎng)絡(luò)都可以認(rèn)為是組播網(wǎng)的一個(gè)特例。然而,目前在世界上研究網(wǎng)絡(luò)編碼在組播上的應(yīng)用大多集中在單信源組播方面,例如,單信源多信宿網(wǎng)絡(luò)如何達(dá)到最大傳輸速率問(wèn)題[25],基于網(wǎng)絡(luò)編碼的組播路由算法和性能評(píng)估[26], 基于網(wǎng)絡(luò)編碼的組播通信網(wǎng)絡(luò)的拓?fù)湓O(shè)計(jì)[27], 多信源隨機(jī)線性網(wǎng)絡(luò)編碼在組播通信的研究[28]以及單信源組播網(wǎng)中編碼節(jié)點(diǎn)的研究[29],以上研究都是以軟件仿真為主,沒(méi)有形成實(shí)際的硬件平臺(tái)和系統(tǒng)。

  多信源組播的應(yīng)用非常廣泛,如P2P內(nèi)容分發(fā)網(wǎng)絡(luò)等。事實(shí)上,任何一個(gè)網(wǎng)絡(luò)都可以作為多信源組播的一個(gè)特例,因此研究多信源組播是有意義且必要的。

  本項(xiàng)目的主要研究目標(biāo)是基于網(wǎng)絡(luò)編碼的多信源組播系統(tǒng)的實(shí)現(xiàn)。在基于國(guó)內(nèi)外網(wǎng)絡(luò)編碼理論在組播通信中的最新研究成果和技術(shù),對(duì)網(wǎng)絡(luò)編碼理論進(jìn)行深入學(xué)習(xí)和探討,提出一種基于網(wǎng)絡(luò)編碼的多信源組播系統(tǒng)和網(wǎng)絡(luò),然后依據(jù)此系統(tǒng)設(shè)計(jì)出可實(shí)現(xiàn)組播的通信協(xié)議和相關(guān)算法,再利用開(kāi)放式的網(wǎng)絡(luò)設(shè)計(jì)硬件平臺(tái)NetFPGA[30],使提出的協(xié)議和算法在硬件上實(shí)現(xiàn),最后在實(shí)際的環(huán)境中用若干電腦和NetFPGA組成一個(gè)小型組播通信網(wǎng)絡(luò)進(jìn)行系統(tǒng)測(cè)試和性能評(píng)估。

  2.2 NetFPGA——新一代開(kāi)放式網(wǎng)絡(luò)研究平臺(tái)簡(jiǎn)介

  由斯坦福大學(xué)開(kāi)發(fā)的NetFPGA是一個(gè)基于Linux操作系統(tǒng)的可重用開(kāi)放性硬件平臺(tái),允許用戶在實(shí)驗(yàn)室內(nèi)搭建高性能的網(wǎng)絡(luò)模型進(jìn)行仿真和研究。它具有以下特點(diǎn)[31]:

  (1)很好地支持模塊化設(shè)計(jì),它可以使研究人員在硬件上搭建Gb/s高性能網(wǎng)絡(luò)系統(tǒng)模型。(2)NetFPGA是一個(gè)基于Linux系統(tǒng)的開(kāi)放性平臺(tái),可以利用平臺(tái)上現(xiàn)有的資源,在前人開(kāi)發(fā)的基礎(chǔ)上添加自己的模塊和修改現(xiàn)有的系統(tǒng),而不需要重復(fù)地搭建外圍模塊、開(kāi)發(fā)驅(qū)動(dòng)和GUI等,大大減輕了網(wǎng)絡(luò)研究的任務(wù)。

  NetFPGA的硬件主要包含了4個(gè)1Gb/s的以太網(wǎng)接口(GigE),一個(gè)用戶可編程的FPGA,以及兩片SRAM和一片DRAM。NetFPGA開(kāi)發(fā)板通過(guò)標(biāo)準(zhǔn)的PCI總線接口連接到PC機(jī)或服務(wù)器,模塊框圖如圖2.2-1所示。

  

  圖 2.2-1:NetFPGA平臺(tái)的組成框圖

  在外部硬件接口方面,除了連接PC主機(jī)的PCI總線插口,一個(gè)Broadcom公司的物理層收發(fā)器(PHY)包含了四個(gè)千兆位以太網(wǎng)接口,板子上的兩個(gè)SATA連接口使得系統(tǒng)內(nèi)部的多個(gè)NetFPGA可以通過(guò)SATA數(shù)據(jù)線連接起來(lái),互相之間直接以很高的速度交換數(shù)據(jù),而不必再通過(guò)PCI總線。NetFPGA通過(guò)PCI總線與主機(jī)CPU連接,提供了硬件加速的數(shù)據(jù)通道,分擔(dān)CPU的處理任務(wù)。主機(jī)CPU按照DMA方式讀寫(xiě)NetFPGA上的寄存器和存儲(chǔ)器來(lái)配置NetFPGA的工作模式,并對(duì)NetFPGA的工作狀態(tài)進(jìn)行監(jiān)控。

  NetFPGA平臺(tái)的軟件系統(tǒng)包括操作系統(tǒng)、作為軟件接口的驅(qū)動(dòng)程序、實(shí)現(xiàn)各種硬件功能的邏輯代碼、執(zhí)行控制功能的軟件程序、系統(tǒng)測(cè)試的腳本程序,以及計(jì)算機(jī)輔助設(shè)計(jì)軟件工具。

  2.3 利用NetFPGA實(shí)現(xiàn)本設(shè)計(jì)的總體構(gòu)想

  基于網(wǎng)絡(luò)編碼的組播通信系統(tǒng)將充分運(yùn)用NetFPGA上面的各種硬件和軟件資源,實(shí)現(xiàn)系統(tǒng)的設(shè)計(jì)目標(biāo),具體是:(1)根據(jù)項(xiàng)目的需求,合理且充分利用NetFPGA卡上面的各種硬件資源,如FPGA、存儲(chǔ)芯片和輸入輸出接口;(2)由于基于NetFPGA實(shí)現(xiàn)的IPv4原理性路由器是一個(gè)開(kāi)源的系統(tǒng),因此我們可以運(yùn)用其提供的部分代碼和已經(jīng)設(shè)計(jì)好的底層硬件平臺(tái),來(lái)幫助我們實(shí)現(xiàn)設(shè)計(jì)目標(biāo)。例如,我們的系統(tǒng)的編碼、解碼工作主要在網(wǎng)絡(luò)層完成,因此我們可以利用NetFPGA中已有的物理層、MAC層硬件邏輯來(lái)實(shí)現(xiàn)數(shù)據(jù)的接收和發(fā)送;(3)在軟件方面,由于NetFPGA平臺(tái)選擇了CentOS操作系統(tǒng),并且開(kāi)發(fā)了軟硬件接口的驅(qū)動(dòng)程序,基于Linux內(nèi)核的設(shè)備驅(qū)動(dòng)程序和Java程序開(kāi)發(fā)的圖形用戶界面(Java GUI)等,因此我們可以對(duì)其應(yīng)用、改進(jìn),使我們的系統(tǒng)更加完善,方便調(diào)試和后續(xù)的進(jìn)一步研究。

  2.4系統(tǒng)實(shí)現(xiàn)的整體設(shè)計(jì)方案說(shuō)明

  2.4.1 系統(tǒng)拓?fù)鋱D及說(shuō)明

  如圖2.4-1所示,是擬采用的組播通信網(wǎng)絡(luò)的拓?fù)鋱D:

  

  圖2.4-1基于網(wǎng)絡(luò)編碼組播的網(wǎng)絡(luò)拓?fù)鋱D

  說(shuō)明:為了易于在工程上實(shí)現(xiàn),將網(wǎng)絡(luò)編碼路由器分為編碼路由器EC(Encoding router)和解碼路由器DC(Decoding router),分別專門(mén)負(fù)責(zé)編碼和解碼。具體講,如圖1所示,信源S1,S2,S3發(fā)送數(shù)據(jù)包,編碼路由器EC0和EC1負(fù)責(zé)將接收到的數(shù)據(jù)包以隨機(jī)的系數(shù)進(jìn)行線性編碼后發(fā)送給組播路由器R,注意,這里的組播路由器更準(zhǔn)確地說(shuō)是轉(zhuǎn)發(fā)路由器,因?yàn)樗墓δ苤皇菍⑹盏降臄?shù)據(jù)包轉(zhuǎn)發(fā)到其三個(gè)輸出端口,而沒(méi)有IGMP(組播管理)和相應(yīng)的組播路由功能。當(dāng)然,我們也可以直接在EC上實(shí)現(xiàn)轉(zhuǎn)發(fā)的功能,增加R的原因是考慮到NetFPGA端口數(shù)量的限制(每塊NetFPGA只有4個(gè)端口)。解碼路由器DC接收編碼的數(shù)據(jù)并解碼,并將它發(fā)送給下游的信宿主機(jī),在這里,由于PC數(shù)量的限制,我們使用雙口網(wǎng)卡可以將解碼路由器和信宿放到同一臺(tái)主機(jī)上,這對(duì)網(wǎng)絡(luò)性能的測(cè)試和實(shí)現(xiàn)沒(méi)有任何影響。

  2.4.2編碼策略與方案

  作為一種編碼結(jié)構(gòu)的提出,我們將編碼只限于不同信源數(shù)據(jù)包之間,暫不考慮信源包內(nèi)部編碼。相同信源的數(shù)據(jù)包之間分“代”,以便在解碼時(shí)區(qū)分信息先后順序[32]。不同信源的包之間不區(qū)分代的概念。

  定義:為了討論的方便性和簡(jiǎn)潔性,我們將信源S1的第1代記為S(1,1),信源S2的第3代記為S(2,3),……依此類推。依據(jù)包頭和緩存,每個(gè)信源的代的編號(hào)從0開(kāi)始,至1023結(jié)束,即信源n的最大的代編號(hào)為S(n,1023)

  在編碼路由器EC上對(duì)不同信源的IP數(shù)據(jù)包進(jìn)行編碼,編碼系數(shù)矢量隨機(jī)選擇,編碼方法是線性編碼。例如,在上圖中的編碼路由器EC0,設(shè)兩個(gè)鏈路的輸入的全局編碼向量為:in(e)=由于只有兩個(gè)信源之間的編碼有且只有一條邊輸出,則本地編碼向量為(α β),依據(jù)文章[33]的公式:

  

  則輸出out(e)=(α β)=αS(1,x)+βS(2,y)。編碼后的數(shù)據(jù)以NCP(network coding protocol)包頭封裝,然后再封裝在IP數(shù)據(jù)報(bào)中,如圖2.4-2所示:

  

  圖2.4-2:編碼后數(shù)據(jù)的封裝格式

  為減小相應(yīng)的編碼負(fù)擔(dān)和提高編碼效率,我們只對(duì)網(wǎng)絡(luò)中的IP數(shù)據(jù)報(bào)中的有效載荷進(jìn)行編碼(已經(jīng)編碼過(guò)的數(shù)據(jù)包可以再進(jìn)行編碼),不對(duì)ARP等其他數(shù)據(jù)包編碼。在編碼路由器中,我們?yōu)椴煌妮斎胪ǖ篱_(kāi)辟不同的FIFO以進(jìn)行順序存取和編碼

  2.4.3隨機(jī)系數(shù)的選擇

  根據(jù)相關(guān)資料可知,隨即編碼系數(shù)矢量的選擇可以從Galois Field中進(jìn)行選擇,依據(jù)論文[33][34],我們選擇域?yàn)镚F256,即,此時(shí)可以解碼的概率為1-=0.996,這個(gè)概率可以滿足大多數(shù)的應(yīng)用需求。

  2.4.4 NCP數(shù)據(jù)包頭的格式

  為了能夠在解碼路由器上進(jìn)行解碼,我們需要在被編碼的有效載荷前增加NCP數(shù)據(jù)包頭[35],根據(jù)我們的方案,其包頭格式如圖2.4-4:

版本

4位

首部長(zhǎng)度

4位

總長(zhǎng)度

16位)

標(biāo)志

2位

保留

6位

第1個(gè)包信源號(hào)

第2個(gè)包信源號(hào)

……

……

第8個(gè)包信源號(hào)

第1個(gè)包的填充長(zhǎng)度(10位)

編碼系數(shù)矢量1

(8位)

代的編號(hào)(10位)

編碼次數(shù)

(4位)

第2個(gè)包的填充長(zhǎng)度

編碼系數(shù)矢量2

代的編號(hào)

編碼次數(shù)

………………

……

……

第n個(gè)包的填充長(zhǎng)度

編碼系數(shù)n

代的編號(hào)

編碼次數(shù)

編碼后的有效載荷

圖2.4-4:NCP數(shù)據(jù)包的包頭格式

  先將包頭各個(gè)字段的含義說(shuō)明如下:

 ?、侔姹荆篘CP數(shù)據(jù)包格式的版本,為了后續(xù)開(kāi)發(fā)研究和以前版本的區(qū)分,第一個(gè)版本為0001.

 ?、谑撞块L(zhǎng)度和總長(zhǎng)度:首部長(zhǎng)度是指除了有效數(shù)據(jù)載荷以外的部分,共4位,單位是4字節(jié),其最小值為2。當(dāng)首部長(zhǎng)度為3時(shí),意味著該包的載荷沒(méi)有被編碼,只是加了包頭。當(dāng)其值大于3時(shí),其值減去3為被編碼的信源數(shù)。

  總長(zhǎng)度是之首部長(zhǎng)度和有效載荷之和的長(zhǎng)度,16位,單位為字節(jié)。

  ③標(biāo)志:若進(jìn)入編碼路由器的只是一個(gè)沒(méi)有編碼過(guò)的IP數(shù)據(jù)包時(shí),不進(jìn)行編碼,直接將包頭前2行加在原IP數(shù)據(jù)包的有效載荷的前面即可。當(dāng)僅有一個(gè)NCP數(shù)據(jù)包進(jìn)入編碼路由器時(shí),我們不進(jìn)行編碼,直接進(jìn)行轉(zhuǎn)發(fā),如圖2.4-5所示:

有效載荷的數(shù)據(jù)包類型

標(biāo)志位

沒(méi)有編碼的IP數(shù)據(jù)包

01

編碼后的NCP數(shù)據(jù)包

10

保留

00

保留

11

圖2.4-5:標(biāo)志位的含義

 ?、芫幋a次數(shù):即從原始數(shù)據(jù)包算起,被編碼的次數(shù),因?yàn)樵谝粋€(gè)實(shí)際的網(wǎng)絡(luò)中,數(shù)據(jù)的編碼可以是遞歸的,即可以多次被編碼。有時(shí),只有一個(gè)數(shù)據(jù)源時(shí),直接在其前面加上NCP包頭而不進(jìn)行編碼。增加編碼次數(shù)是為了能夠在多次編碼后進(jìn)行解碼。若編碼前數(shù)據(jù)包為IP數(shù)據(jù)包,其編碼次數(shù)為0,若為NCP數(shù)據(jù)包,則次數(shù)≥1.當(dāng)一個(gè)IP數(shù)據(jù)包和一個(gè)已編碼的數(shù)據(jù)包編碼時(shí),利用編碼次數(shù),可以避免解碼路由器將NCP數(shù)據(jù)包誤以為IP數(shù)據(jù)包而交給主機(jī)。

⑤第一個(gè)包


上一頁(yè) 1 2 3 下一頁(yè)

評(píng)論


技術(shù)專區(qū)

關(guān)閉