2 多信源组播体系结构及全体规划计划
2.1项目研讨需求、方针和内容
网络编码能够进步网络吞吐量,进步鲁棒性、安全性等网络功用。具有网络编码功用的路由器是未来网络开展的趋势。组播通讯在网络通讯中有重要的效果,事实上,任何一个网络都能够认为是组播网的一个特例。但是,现在在世界上研讨网络编码在组播上的运用大多会集在单信源组播方面,例如,单信源多信宿网络怎么到达最大传输速率问题[25],依据网络编码的组播路由算法和功用评价[26], 依据网络编码的组播通讯网络的拓扑规划[27], 多信源随机线性网络编码在组播通讯的研讨[28]以及单信源组播网中编码节点的研讨[29],以上研讨都是以软件仿真为主,没有构成实践的硬件渠道和体系。
多信源组播的运用十分广泛,如P2P内容分发网络等。事实上,任何一个网络都能够作为多信源组播的一个特例,因而研讨多信源组播是有意义且必要的。
本项意图首要研讨方针是依据网络编码的多信源组播体系的完结。在依据国内外网络编码理论在组播通讯中的最新研讨成果和技能,对网络编码理论进行深化学习和评论,提出一种依据网络编码的多信源组播体系和网络,然后依据此体系规划出可完结组播的通讯协议和相关算法,再运用开放式的网络规划硬件渠道NetFPGA[30],使提出的协议和算法在硬件上完结,最终在实践的环境顶用若干电脑和NetFPGA组成一个小型组播通讯网络进行体系测验和功用评价。
2.2 NetFPGA——新一代开放式网络研讨渠道简介
由斯坦福大学开发的NetFPGA是一个依据Linux操作体系的可重用开放性硬件渠道,答运用户在试验室内建立高功用的网络模型进行仿真和研讨。它具有以下特色[31]:
(1)很好地支撑模块化规划,它能够使研讨人员在硬件上建立Gb/s高功用网络体系模型。(2)NetFPGA是一个依据Linux体系的开放性渠道,能够运用渠道上现有的资源,在前人开发的基础上添加自己的模块和修正现有的体系,而不需求重复地建立外围模块、开发驱动和GUI等,大大减轻了网络研讨的使命。
NetFPGA的硬件首要包含了4个1Gb/s的以太网接口(GigE),一个用户可编程的FPGA,以及两片SRAM和一片DRAM。NetFPGA开发板经过规范的PCI总线接口衔接到PC机或服务器,模块框图如图2.2-1所示。

图 2.2-1:NetFPGA渠道的组成框图
在外部硬件接口方面,除了衔接PC主机的PCI总线插口,一个Broadcom公司的物理层收发器(PHY)包含了四个千兆位以太网接口,板子上的两个SATA衔接口使得体系内部的多个NetFPGA能够经过SATA数据线衔接起来,相互之间直接以很高的速度交流数据,而不用再经过PCI总线。NetFPGA经过PCI总线与主机CPU衔接,供给了硬件加速的数据通道,分管CPU的处理使命。主机CPU依照DMA方法读写NetFPGA上的寄存器和存储器来装备NetFPGA的作业形式,并对NetFPGA的作业状况进行监控。
NetFPGA渠道的软件体系包含操作体系、作为软件接口的驱动程序、完结各种硬件功用的逻辑代码、履行操控功用的软件程序、体系测验的脚本程序,以及计算机辅助规划软件东西。
2.3 运用NetFPGA完结本规划的全体设想
依据网络编码的组播通讯体系将充分运用NetFPGA上面的各种硬件和软件资源,完结体系的规划方针,详细是:(1)依据项意图需求,合理且充分运用NetFPGA卡上面的各种硬件资源,如FPGA、存储芯片和输入输出接口;(2)由于依据NetFPGA完结的IPv4原理性路由器是一个开源的体系,因而咱们能够运用其供给的部分代码和现已规划好的底层硬件渠道,来协助咱们完结规划方针。例如,咱们的体系的编码、解码作业首要在网络层完结,因而咱们能够运用NetFPGA中已有的物理层、MAC层硬件逻辑来完结数据的接纳和发送;(3)在软件方面,由于NetFPGA渠道挑选了CentOS操作体系,而且开发了软硬件接口的驱动程序,依据Linux内核的设备驱动程序和Java程序开发的图形用户界面(Java GUI)等,因而咱们能够对其运用、改善,使咱们的体系愈加完善,便利调试和后续的进一步研讨。
2.4体系完结的全体规划计划阐明
2.4.1 体系拓扑图及阐明
如图2.4-1所示,是拟选用的组播通讯网络的拓扑图:

图2.4-1依据网络编码组播的网络拓扑图
阐明:为了易于在工程上完结,将网络编码路由器分为编码路由器EC(Encoding router)和解码路由器DC(Decoding router),别离专门担任编码和解码。详细讲,如图1所示,信源S1,S2,S3发送数据包,编码路由器EC0和EC1担任将接纳到的数据包以随机的系数进行线性编码后发送给组播路由器R,留意,这儿的组播路由器更精确地说是转发路由器,由于它的功用仅仅将收到的数据包转发到其三个输出端口,而没有IGMP(组播办理)和相应的组播路由功用。当然,咱们也能够直接在EC上完结转发的功用,添加R的原因是考虑到NetFPGA端口数量的约束(每块NetFPGA只要4个端口)。解码路由器DC接纳编码的数据并解码,并将它发送给下流的信宿主机,在这儿,由于PC数量的约束,咱们运用双口网卡能够将解码路由器和信宿放到同一台主机上,这对网络功用的测验和完结没有任何影响。
2.4.2编码战略与计划
作为一种编码结构的提出,咱们将编码只限于不同信源数据包之间,暂不考虑信源包内部编码。相同信源的数据包之间分“代”,以便在解码时区别信息先后次序[32]。不同信源的包之间不区别代的概念。
界说:为了评论的便利性和简洁性,咱们将信源S1的第1代记为S(1,1),信源S2的第3代记为S(2,3),……依此类推。依据包头和缓存,每个信源的代的编号从0开端,至1023完毕,即信源n的最大的代编号为S(n,1023)
在编码路由器EC上对不同信源的IP数据包进行编码,编码系数矢量随机挑选,编码方法是线性编码。例如,在上图中的编码路由器EC0,设两个链路的输入的大局编码向量为:in(e)=由于只要两个信源之间的编码有且只要一条边输出,则本地编码向量为(α β),依据文章[33]的公式:

则输出out(e)=(α β)=αS(1,x)+βS(2,y)。编码后的数据以NCP(network coding protocol)包头封装,然后再封装在IP数据报中,如图2.4-2所示:

图2.4-2:编码后数据的封装格局
为减小相应的编码担负和进步编码功率,咱们只对网络中的IP数据报中的有用载荷进行编码(现已编码过的数据包能够再进行编码),不对ARP等其他数据包编码。在编码路由器中,咱们为不同的输入通道拓荒不同的FIFO以进行次序存取和编码
2.4.3随机系数的挑选
依据相关材料可知,随即编码系数矢量的挑选能够从Galois Field中进行挑选,依据论文[33][34],咱们挑选域为GF256,即,此刻能够解码的概率为1-
=0.996,这个概率能够满意大多数的运用需求。
2.4.4 NCP数据包头的格局
为了能够在解码路由器上进行解码,咱们需求在被编码的有用载荷前添加NCP数据包头[35],依据咱们的计划,其包头格局如图2.4-4:
版别 4位 |
首部长度 4位 |
总长度 16位) |
标志 2位 |
保存 6位 |
|||||||||
第1个包信源号 |
第2个包信源号 |
…… |
…… |
|
|
|
第8个包信源号 |
||||||
第1个包的填充长度(10位) |
编码系数矢量1 (8位) |
代的编号(10位) |
编码次数 (4位) |
||||||||||
第2个包的填充长度 |
编码系数矢量2 |
代的编号 |
编码次数 |
||||||||||
……………… |
…… |
…… |
|
||||||||||
第n个包的填充长度 |
编码系数n |
代的编号 |
编码次数 |
||||||||||
编码后的有用载荷 |
|||||||||||||
图2.4-4:NCP数据包的包头格局
先将包头各个字段的意义阐明如下:
①版别:NCP数据包格局的版别,为了后续开发研讨和曾经版别的区别,第一个版别为0001.
②首部长度和总长度:首部长度是指除了有用数据载荷以外的部分,共4位,单位是4字节,其最小值为2。当首部长度为3时,意味着该包的载荷没有被编码,仅仅加了包头。当其值大于3时,其值减去3为被编码的信源数。
总长度是之首部长度和有用载荷之和的长度,16位,单位为字节。
③标志:若进入编码路由器的仅仅一个没有编码过的IP数据包时,不进行编码,直接将包头前2行加在原IP数据包的有用载荷的前面即可。当仅有一个NCP数据包进入编码路由器时,咱们不进行编码,直接进行转发,如图2.4-5所示:
有用载荷的数据包类型 |
标志位 |
没有编码的IP数据包 |
01 |
编码后的NCP数据包 |
10 |
保存 |
00 |
保存 |
11 |
图2.4-5:标志位的意义
④编码次数:即从原始数据包算起,被编码的次数,由于在一个实践的网络中,数据的编码可所以递归的,即能够屡次被编码。有时,只要一个数据源时,直接在其前面加上NCP包头而不进行编码。添加编码次数是为了能够在屡次编码后进行解码。若编码前数据包为IP数据包,其编码次数为0,若为NCP数据包,则次数≥1.当一个IP数据包和一个已编码的数据包编码时,运用编码次数,能够防止解码路由器将NCP数据包误以为IP数据包而交给主机。
⑤第一个包