微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 电源设计 > 基于网络编码的多信源组播通信系统,包括源代码,原理图等(二)

基于网络编码的多信源组播通信系统,包括源代码,原理图等(二)

时间:12-06 来源:互联网 点击:

,而没有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数据包而交给主机。

⑤第一个包

的填充长度:因为不同数据源的数据包的长度可能不一样,为了便于编码计算,将它们前位补0使得长度一致。由于一个典型的以太网数据包的长度在500~1500字节之间,所以填充长度不超过1000字节。另外,我们还要考虑MAC层的最大传送单元(MTU)的限制,即编码后的MAC帧的长度不能超过1518字节。由此可以计算出,被编码的数据包的最大长度是1499字节

  ⑥编码系数:即随机选择的编码矢量的系数,是在一个GF256的有限域中随机选择。

  ⑦代的编号:即被编码的数据包的代的编号,是按照顺序产生的编号,目的是方便解码。

⑧包的信源号:4位,对进入编码路由器的数据包的信源进行编号,

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top