CN102088331B - 一种数据传输方法及网络节点 - Google Patents
一种数据传输方法及网络节点 Download PDFInfo
- Publication number
- CN102088331B CN102088331B CN200910251379.2A CN200910251379A CN102088331B CN 102088331 B CN102088331 B CN 102088331B CN 200910251379 A CN200910251379 A CN 200910251379A CN 102088331 B CN102088331 B CN 102088331B
- Authority
- CN
- China
- Prior art keywords
- code coefficient
- node
- network code
- data
- network
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
本发明公开了一种数据传输方法以及网络节点,一方面可以减小控制开销,另一方面可以降低解码失败概率。本发明的方法包括:下载节点和种子节点分别生成网络编码系数表;下载节点分别向各个种子节点发送下载请求,所述下载请求包括请求待下载数据的标识以及网络编码系数标识;各个种子节点根据所接收下载请求中携带的编码系数标识从自身生成的网络编码系数表中获取相应的列向量作为网络编码系数;各个种子节点根据所获取的网络编码系数对由下载请求中携带的数据标识所指示的数据中包含的数据单位进行网络编码,并将编码后的数据单位发送给下载节点;下载节点分别接收来自各个种子节点的经过网络编码后的数据单位,通过解码得到待下载数据。
Description
技术领域
本发明涉及网络编码技术,特别涉及一种基于网络编码的数据传输方法及网络节点。
背景技术
网络编码技术是在网络层对数据分组进行编码的技术,该技术允许网络中的节点对接收到的分组进行编码,产生新的分组并转发出去。目前,网络编码技术的应用主要集中在大规模的文件发布,即源节点或服务器发布大量的信息给网络中其它节点的业务,例如,点对点(P2P)文件传输业务或P2P流业务等等。
图1给出了一个网络编码的简单实例。在大规模文件发布的应用中,由于源节点要发布的文件太大,而传输带宽有限,在传输文件之前,源节点首先会把原文件划分成n个原始信息片段(Segment)S1,S2,S3,…,Sn,再对这n个原始信息片段进行线性编码生成新的信息片段E1,E2,…,并携带其对应的系数在网络中转发。因此,Ei都是原始信息片段S1,S2,S3,…,Sn的线性组合,其长度和原始信息片段相同,区别在于每个Ei都携带了部分或所有原始信息片段的信息。图1中,是从伽罗瓦域中随机选出的系数,分别与原始信息片段S1,S2,S3,…,Sn相乘再相加后得到E1,即 E2的生成方式类似。在本例中,当网络节点A从文件发布的源节点处接收到新的信息片段E1及其对应的系数之后,就会给网络中其它网络节点广播或多播新信息片段。由于网络节点A的缓存中已经保留了信息片段E2,网络节点A将会将信息片段E1和信息片段E2进行线性编码,在得到新的信息片段E3后广播或多播出去。其中,网络节点A生成信息片段E3的过程如下:网络节点A从伽罗瓦域随机选择系数c1和c2,然后分别与E1和E2相乘再相加得到E3。由于E1,E2都是原始信息片段S1,S2,S3,…,Sn的线性编码,那么E3也是这n个原始信息片段的线性编码。需要说明的是,网络节点A在广播或多播新片段E3的同时也将把E3对应的系数和广播或多播出去。网络中的每个网络节点接收到新的信息片段之后都进行类似的处理,那么每个网络节点只要接收到n个不相关的信息片段及其对应的系数,就能够恢复出原文件。
本领域的技术人员可以理解,在不采用网络编码的情况下,有的原始信息片段(例如一个文件的开始部分)在网络上可能已经被很多网络节点拥有了,也就是具有较高的流行度;而有些原始信息片段(比如一个文件的结尾部分)则可能在网络上非常稀缺,也就是具有较低的流行度,此时网络节点需要根据自身已收到的信息片段判断先接收哪个信息片段,例如为了避免拥有稀缺资源的网络节点动态离开造成文件下载失败,网络节点通常选择先下载流行度较低的原始信息片段。而采用了网络编码之后,由于在网络中传播的信息片段均是原始信息片段的线性组合,因此所有信息片段具有相同的流行度,此时网络节点无需判断需要先接收哪个信息片段,同时,也不存在稀缺资源的问题,这样,网络节点的动态加入和离开,对其他网络节点的影响也将会降低。
由于在上述方法中,网络节点必须等到收到足够多的经过网络编码的信息片段之后,才能开始解码,以得到整个文件,因此,上述方法不适用于需要一边下载一遍观看的P2P流业务。为此,还提出了一种适用于P2P流业务的网络编码方法。
在该方法中,每个信息片段被进一步划分成若干个信息块(block),参与P2P流业务的种子节点(Seed)在转发数据之前,首先在一个信息片段内的信息块之间进行网络编码。这样,下载节点(Peer)在接收到足够多经过网络编码的信息块后即可解码得到信息片段。这种在信息片段内的信息块之间进行网络编码的方法,可以支持多个种子节点同时给一个下载节点发送某个信息片段,从而缩短传送某个信息片段的时间,以减少下载节点用户等待观看的时间。
然而,在上述两种方法中,无论是信息片段还是信息块的编码系数都是随机选择即随机生成的(这类方法被称为随机网络编码),而且为了让下载节点能够解码,生成的编码系数必须和信息片段或信息块一起传送,因此具有比较高的控制开销(COH,Control Overhead)。通常,上述方法中的控制开销的大小可以通过如下公式(1)计算得到:
其中,q表示有限域(GF)的大小,n表示一个文件被划分的信息片段的数目或一个信息片段中的信息块的数目。例如,如果GF的大小是256,且一个信息片段中包含128个信息块,那么发送一个信息片段需要的控制开销将达到16.384Kbytes。
另外,由于随机网络编码的编码系数是随机生成的,无法百分之百保证所生成编码系数之间是线性独立的,因此,即使下载节点已收到n个信息片段或信息块也不一定可以正确解码,即存在解码失败的情况。上述网络编码方法的解码失败概率可以通过下面的公式(2)计算:
其中,q表示有限域(GF)的大小,n表示一个一个文件被划分的信息片段的数目或一个信息片段中的信息块的数目。从公式(2)可以看出,有限域的大小是解码失败概率的决定性因素,例如,当有限域大小取128时,解码失败概率在10-2量级上。
发明内容
为了解决上述技术问题,本发明提供了一种数据传输方法以及网络节点,一方面可以减小控制开销,另一方面可以降低解码失败概率。
本发明实施例所述的数据传输方法,包括:
下载节点和种子节点分别生成网络编码系数表,所述网络编码系数表中的任意n个列向量之间是线性独立的,其中,n表示由待传输数据划分出的数据单位的数目;
下载节点从服务器获知所有种子节点后,分别向各个种子节点发送下载请求,所述下载请求包括请求待下载数据的标识以及网络编码系数标识;
各个种子节点根据所接收下载请求中携带的编码系数标识从自身生成的网络编码系数表中获取相应的列向量作为网络编码系数;
各个种子节点根据所获取的网络编码系数对由下载请求中携带的数据标识所指示的数据中包含的数据单位进行网络编码,并将编码后的数据单位发送给下载节点;
下载节点分别接收来自各个种子节点的经过网络编码后的数据单位,并在接收到n个数据单位后进行解码,得到待下载数据。
其中,上述下载节点和种子节点分别生成网络编码系数表包括:下载节点和种子节点分别生成基数大于或等于n的矩阵作为所述网络编码系数表。较佳地,矩阵的基数为2n。本说明书中,给出了一个生成基数大于等于n的矩阵的例子,即构造范德蒙德矩阵。
上述下载节点和种子节点分别生成网络编码系数表包括:所述下载节点和种子节点生成不同基数且基数大于或等于n的至少两个矩阵,并根据n大小选择一个矩阵作为网络编码系数表。
具体可以包括:所述下载节点和种子节点分别生成基数为64,128,256,512的四个矩阵;若待下载数据所包含的数据单位的数目小于或等于32,则选择基数为64的矩阵作为网络编码系数表;若待下载数据所包含的数据单位的数目大于32且小于或等于64,则选择基数为128矩阵作为网络编码系数表;若待下载数据所包含的数据单位的数目大于64且小于或等于128,则选择基数为256矩阵作为网络编码系数表;若待下载数据所包含的数据单位的数目大于128且小于或等于256,则选择基数为512的矩阵作为网络编码系数表。
上述下载节点从服务器获知所有种子节点包括:下载节点通过向服务器发送请求种子节点列表消息向服务器请求所有可以提供数据的种子节点的信息;服务器在收到请求种子节点列表消息后,将向下载节点返回包含有所有种子节点标识的种子节点标识列表;下载节点根据服务器返回的种子节点标识列表获知所有提供数据的种子节点。
上述网络编码系数标识包括编码系数模值和编码系数索引;各个种子节点根据所接收下载请求中携带的编码系数标识从自身生成的网络编码系数表中获取相应的列向量作为网络编码系数包括:各个种子节点根据如下计算公式计算得到所选择的作为编码系数的列向量在网络编码系数表中的编号:i=x×k+y,其中,i为网络编码系数表中列向量的编号;x为编码系数模值,y为编码系数索引,k为非负整数。
其中,下载节点向各个种子节点发送的下载请求中携带的编码系数模值是相同的,而编码系数索引是不同的。
上述下载节点分别接收来自各个种子节点的经过网络编码后的数据单位,并在接收到n个数据单位后进行解码包括:下载节点根据发送给各个种子节点的下载请求中携带的网络编码系数标识从自身生成的网络编码系数表中获取相应的列向量作为各个种子节点的编码系数,再根据各个种子节点的编码系数分别对来自各个种子节点的n个数据单位进行解码。
上述网络编码系数标识包括编码系数模值和编码系数索引;下载节点根据发送给各个种子节点的下载请求中携带的网络编码系数标识从自身生成的网络编码系数表中获取相应的列向量作为各个种子节点的编码系数包括:下载节点根据如下计算公式分别计算各个种子节点所选择的作为编码系数的列向量在网络编码系数表中的编号:i=x×k+y,其中,i为网络编码系数表中列向量的编号;x和y分别为一个种子编码系数模值和编码系数索引,k为非负整数。
上述数据为一个文件;所述数据单位为所述文件被划分得到的至少一个信息片段。或者上述数据是一个文件被划分得到的多个信息片段中的一个;所述数据单位为该信息片段包含的至少一个数据块。
本发明实施例提供的一种网络节点,包括:
网络编码系数表生成单元,用于生成网络编码系数表,其中,网络编码系数表中的任意n列均是线性独立的,其中,n表示由待传输数据划分的数据单位的数目;
种子节点信息获取单元,用于从服务器获取所有提供数据的种子节点;
下载请求生成单元,用于分别对各个种子节点生成下载请求,并将下载请求发送至相应种子节点,其中,下载请求至少包括请求待下载数据的标识以及网络编码系数标识;
编码系数生成单元,用于分别针对各个种子节点根据所生成的下载请求中的网络编码系数标识从自身生成的网络编码系数表中获取相应的列向量作为各个种子节点的网络编码系数;
数据接收及解码单元,用于从各个种子节点接收经过网络编码后的数据单位,并在接收到n个数据单位后根据各个节点的网络编码系数进行解码,得到待下载数据。
其中,上述网络编码系数表生成单元包括:
网络编码系数矩阵生成模块,用于生成具有不同基数且基数大于或等于n的至少一个矩阵;
网络编码系数表选择模块,用于根据n的大小从所生成的至少一个根据矩阵中选择一个作为网络编码系数表。
本发明实施例提供的另一种网络节点,包括:
网络编码系数表生成单元,用于生成网络编码系数表,其中,网络编码系数表中的任意n列均是线性独立的,其中,n表示由待传输数据划分的数据单位的数目;
下载请求接收单元,用于接收来自下载节点的下载请求;
编码系数生成单元,用于根据所接收下载请求中携带的网络编码系数标识从自身生成的网络编码系数表中获取相应的列向量作为网络编码系数;
网络编码单元,用于根据所获取的网络编码系数对自身存储的,由下载请求中携带的数据标识所指示数据中包含的数据单位进行网络编码,并将编码后的数据单位发送给下载节点。
其中,上述网络编码系数表生成单元包括:
网络编码系数矩阵生成模块,用于生成具有不同基数且基数大于或等于n的至少一个矩阵;
网络编码系数表选择模块,用于根据n的大小从所生成的至少一个根据矩阵中选择一个作为网络编码系数表。
在上述数据传输的过程中,各个种子节点根据下载节点发送的下载请求中携带的编码系数模值和编码系数索引选择编码系数,而不是随机选择,因此,各个种子节点在向下载节点发送经过网络编码后的数据单位时无需向下载节点上报编码系数,从而可以大大降低上述数据传输过程的控制开销。
另外,由于各个网络节点生成的网络编码系数表中任意的n个列向量之间均是线性独立的,因此,经过网络编码后的数据单位也是线性独立的。这样,下载节点物理无论从哪些种子节点接收数据,只要正确接收到n个数据单位即可成功进行解码得到待传输的数据。
附图说明
下面将通过参照附图详细描述本发明的示例性实施例,使本领域的普通技术人员更清楚本发明的上述及其它特征和优点,附图中:
图1为一种网络编码简单实例的示意图;
图2为根据本发明实施例的基于网络编码的数据传输方法的流程图;
图3为网络编码系数表以及各个种子节点选择网络编码系数的示意图;
图4显示了作为下载节点的网络节点的内部结构;
图5显示了作为种子节点的网络节点的内部结构;
图6显示了采用本发明实施例所述方法以及现有随机网络编码方法时控制开销随每个信息片段所包含信息块数目变化的曲线;
图7显示了采用本发明实施例所述方法以及现有随机网络编码方法时控制开销随待下载文件所包含信息片段数目变化的曲线。
具体实施方式
为了解决上述问题,本发明的实施例提出了一种基于网络编码的数据传输方法,如图2所示,主要包括如下步骤:
步骤101:网络中的各个网络节点分别生成网络编码系数表(NetworkCoding Table)。
在这里,上述各个节点包括用于提供数据的种子节点和需要下载数据的下载节点。
上述网络编码系数表用于限定网络编码系数的范围,各个节点将选择网络编码系数表的至少一个列向量作为待传输数据的编码系数。需要说明的是,为了使不同网络节点发送的经过网络编码的数据之间没有冗余,各个网络节点所生成的网络编码系数表需要满足以下条件:网络编码系数表中的任意n个列向量之间是线性独立的,其中,n表示由待传输数据划分出的数据单位的数目,也即需要进行网络编码的数据单位的数目,例如P2P文件传输业务中待下载文件被划分的信息片段的数目或者P2P流业务中每个信息片段内包含的信息块的数目等。
在上述方法应用到P2P的应用中时,每个网络节点(包括用于提供数据的种子节点和需要下载数据的下载节点)在安装P2P应用软件的时候,就可以同时生成网络编码系数表。
步骤102:下载节点(Peer)从服务器(Tracker)获知所有种子节点(Seed)后,分别向各个种子节点发送下载请求,该下载请求至少包括请求待下载数据的标识以及网络编码系数标识。
具体而言,在本步骤中,下载节点首先通过向服务器发送请求种子节点列表消息向服务器请求所有可以提供数据的种子节点的信息;服务器在收到请求种子节点列表消息后,将向下载节点返回包含有所有种子节点标识的种子节点标识列表;下载节点根据服务器返回的种子节点标识列表获知所有提供数据的种子节点。
在本步骤中,所述的待下载数据可以是一个文件或通过划分一个文件得到的多个信息片段中的一个。
另外,在本步骤中,下载请求中包括的网络编码系数标识用于指示一个种子节点进行网络编码时所使用的编码系数在网络编码系数表中的位置。较佳地,网络编码系数标识可以包括编码系数模值和编码系数索引,此时,各个种子节点所选择的作为编码系数的列向量的编号i可以按照如下计算公式计算得到i=x×k+y,其中,x为编码系数模值,y为编码系数索引,k为非负整数(包括0和正整数)。为了保证各个种子节点所选择的编码系数不同,较佳地,下载节点向各个种子节点发送的下载请求中携带的编码系数模值是相同的,而编码系数索引是不同的。
步骤103:各个种子节点根据所接收下载请求中携带的编码系数标识从自身生成的网络编码系数表中获取相应的列向量作为网络编码系数。
如前所述,在本步骤中,若网络编码系数标识包括编码系数模值和编码系数索引,则各个种子节点按照如下计算公式计算得到自身的网络编码系数向量:i=x×k+y,其中,x为编码系数模值,y为编码系数索引,k为非负整数(包括0和正整数)。
步骤104:各个种子节点根据所获取的网络编码系数对由下载请求中携带的数据标识所指示的数据中包含的数据单位进行网络编码,并将编码后的数据单位发送给下载节点。
在本步骤中,若上述数据是一个文件,则上述数据单位是该文件被划分得到的至少一个信息片段;若上述数据是一个文件被划分得到的多个信息片段中的一个,则上述数据单位为该数据片段包含的至少一个数据块。
步骤105:下载节点分别接收来自各个种子节点的经过网络编码后的数据单位,并在接收到n个数据单位后进行解码,得到待下载数据。
在本步骤中,下载节点也首先根据发送给各个种子节点的下载请求中携带的网络编码系数标识从自身生成的网络编码系数表中获取相应的列向量作为各个种子节点的编码系数,然后再根据各个种子节点的编码系数分别对来自各个种子节点的数据单位进行解码从而得到待下载的数据。具体而言,若网络编码系数标识包括编码系数模值和编码系数索引,则下载节点将根据如下计算公式分别计算各个种子节点所选择的作为编码系数的列向量在网络编码系数表中的编号:i=x×k+y,其中,i为网络编码系数表中列向量的编号;x和y分别为一个种子编码系数模值和编码系数索引,k为非负整数。
可以看出,上述方法使用的编码系数既不是随机生成的,也不是预先固定好的,因此上述方法中使用的网络编码方法又可称为半静态网络编码。
在上述数据传输的过程中,各个种子节点根据下载节点发送的下载请求中携带的编码系数模值和编码系数索引选择编码系数,而不是随机选择,因此,各个种子节点在向下载节点发送经过网络编码后的数据单位(信息片段或信息块)时无需向下载节点上报编码系数,从而可以大大降低上述数据传输过程的控制开销。
另外,由于各个网络节点生成的网络编码系数表中任意的n个列向量之间均是线性独立的,因此,经过网络编码后的数据单位(信息片段或信息块)也是线性独立的。这样,下载节点物理无论从哪些种子节点接收数据,只要正确接收到n个数据单位(信息片段或信息块)即可成功进行解码得到待传输的数据。
下面将结合具体的示例详细描述网络编码系数表的生成方法。
如前所述,为了使不同种子节点发送的经过网络编码的数据之间没有冗余,网络编码系数表需要满足:网络编码系数表中的任意n个列向量之间均是线性独立的,其中,n表示待传输数据所包含的数据单位的数据,例如,一个文件所包含的信息片段的数目或者一个信息片段所包含的信息块数目。通常,一个信息片段所包含的信息块的数目在32-256之间,因此,可以假设32≤n≤256。网络编码系数表可以采用如下公式(3)所示矩阵A的形式。
如前所述,如果矩阵A中任意n列均是线性独立的,即矩阵A的基数为n,那么以矩阵A中的列向量作为编码系数得到的数据单位(信息片段或信息块)之间将不会包含冗余信息。此时,下载节点不管从哪个种子节点接收数据,只要正确收到n个数据单位之后,就必然可以成功解码,得到原始数据。也就是说只要保证矩阵A的基数(cardinality)至少为n,就可以大幅降低解码失败概率。较佳地,考虑到网络节点的动态离开以及链路差错等因素,A的基数应当设置为大于n,较佳地,可以设定为2n,例如,当n为256时,可以设置A的基数为512。
经过数学分析可以得到,保证A的基数为n的充分条件是有限域(GF)的大小为n。在本说明书中,我们给出一个例子来构造基数为n的矩阵A。
范德蒙德矩阵是一个具有典型特征的矩阵形式,它可以由下面的公式(4)表示,
该矩阵满足如下性质:也就是说,只要αi≠αj,当有限域(GF)大小为n时,由范德蒙德矩阵构成的A就能够满足基数为n,即任意n列线性独立。
在实际的应用中,可以根据待下载数据所包含数据单位的数目确定有限域的大小,即矩阵A的基数,再由矩阵构成满足任意n个列向量之间线性独立的条件的矩阵A。具体来讲,各个网络节点可以分别生成基数大于或等于n的矩阵作为上述网络编码系数表。
下面通过一个示例详细说明本发明的实施例。图3为网络编码系数表以及各个种子节点选择网络编码系数的示意图。
首先,网络中的各个网络节点生成如图3所示的网络编码系数表。在一个Peer下载某个数据的时候,首先根据服务器反馈的Seed标识列表选择合适的种子节点,包括Seed1、Seed2、Seed3以及Seed4,然后分别为每个Seed选择编码系数模值Mod和编码系数索引Index,例如,为Seed1选择的Mod为8,Index为1;为Seed2选择的Mod为8,Index为2;为Seed3选择的Mod为8,Index为3以及为Seed4选择的Mod为8,Index为4。然后,Peer将选择的编码系数模值和编码系数索引发送至相应的种子节点。此后,Seed1、Seed2、Seed3以及Seed4可以根据这两个信息分别选择编码系数,再对一个文件的信息片段或一个信息片段所包含的信息块进行编码。例如,Seed1将在网络编码系数表中选择其编号模8为1的列向量作为编码系数(如第1,9,17…列);Seed2将在网络编码系数表中选择其编号模8为2的列向量作为编码系数(如第2,10,18…列);Seed3将在网络编码系数表中选择其编号模8为3的列向量作为编码系数(如第3,11,19…列)以及Seed4将在网络编码系数表中选择其编号模8为4的列向量作为编码系数(如第4,12,20…列)。通过上述准则选择编码系数,就可以保证每个seed不会使用相同的编码系数,且每个Seed所使用的编码系数是线性独立的。
为了尽可能减少网络节点的运算量,进一步优化上述方法性能,可以根据待下载数据所包含的数据单位的数目调整网络编码系数矩阵的基数,也即有限(GF)的大小,进一步动态调整所生成的网络编码系数表的大小。例如,若待下载数据所包含的数据单位若较少,则可以生成基数较小的矩阵作为网络编码系数表。在实际应用中,网络节点可以预先生成不同基数且基数大于或等于n的多个矩阵作为备选的网络编码系数表,并根据待下载数据所包含的数据单位的数目从所有备选的网络编码系数表中选择一个适合的网络编码系数表。然后,再根据所选择的网络编码系数表得到编码系数。例如,网络中的各个节点分别生成了基数为64,128,256,512的四个矩阵,唯一的不同的是这四个矩阵的有限域的大小分别为GF(64),GF(128),GF(256)以及GF(512)。在种子节点收到来自下载节点的下载请求后,若待下载数据所包含的数据单位的数目小于或等于32,则选择基数为64的矩阵作为网络编码系数表;若待下载数据所包含的数据单位的数目大于32且小于或等于64,则选择基数为128的矩阵作为网络编码系数表;若待下载数据所包含的数据单位的数目大于64且小于或等于128,则选择基数为256的矩阵作为网络编码系数表;且若待下载数据所包含的数据单位的数目大于128且小于或等于256,则选择基数为512的矩阵作为网络编码系数表。本领域的技术人员可以理解,上述方法中,在待下载数据所包含的数据单位的数目较少时可以进一步降低网络节点的运算量,达到优化网络节点性能的目的。
除了上述方法之外,本发明还提供了作为下载节点的网络节点以及作为种子节点的网络节点的内部结构。
其中,图4显示了作为下载节点的网络节点的内部结构。如图4所示,该网络节点主要包括:
网络编码系数表生成单元,用于生成网络编码系数表,其中,网络编码系数表中的任意n列均是线性独立的,其中,n表示由待传输数据划分的数据单位的数目;
种子节点信息获取单元,用于从服务器获取所有提供数据的种子节点;
下载请求生成单元,用于分别对各个种子节点生成下请求,并将下载请求发送至相应种子节点,其中,下载请求至少包括请求待下载数据的标识以及网络编码系数标识;
编码系数生成单元,用于分别针对各个种子节点根据所生成的下载请求中的网络编码系数标识从自身生成的网络编码系数表中获取相应的列向量作为各个种子节点的网络编码系数;
数据接收及解码单元,用于从各个种子节点接收经过网络编码后的数据单位,并在接收到n个数据单位后根据各个节点的网络编码系数进行解码,得到待下载数据。
更进一步,上述网络编码系数表生成单元可以包括:
网络编码系数矩阵生成模块,用于生成具有不同基数且基数大于或等于n的至少一个矩阵;
网络编码系数表选择模块,用于根据n的大小从所生成的至少一个根据矩阵中选择一个作为网络编码系数表。
图5显示了作为种子节点的网络节点的内部结构。如图5所示,该网络节点主要包括:
网络编码系数表生成单元,用于生成网络编码系数表,其中,网络编码系数表中的任意n列均是线性独立的,其中,n表示由待传输数据划分的数据单位的数目;
下载请求接收单元,用于接收来自下载节点的下载请求;
编码系数生成单元,用于根据所接收下载请求中携带的网络编码系数标识从自身生成的网络编码系数表中获取相应的列向量作为网络编码系数;
网络编码单元,用于根据所获取的网络编码系数对自身存储的,由下载请求中携带的数据标识所指示数据中包含的数据单位进行网络编码,并将编码后的数据单位发送给下载节点。
更进一步,上述网络编码系数表生成单元也可以包括:
网络编码系数矩阵生成模块,用于生成具有不同基数且基数大于或等于n的至少一个矩阵;
网络编码系数表选择模块,用于根据n的大小从所生成的至少一个根据矩阵中选择一个作为网络编码系数表。
下面通过仿真对本发明所述方法以及现有的随机网络编码方法进行比较。假设网络中网络节点的数目为250,待下载文件包含50-200个信息片段,每个信息片段包含32-256个信息块。应用P2P流业务时观看视频文件每个网络节点需要缓冲20个信息片段。服务器最多允许接入8个下载节点,每个网络节点最多允许接入4个下载节点,每个网络节点最多允许成为4个下载节点的种子节点。在上述情况下,图6显示了采用本发明实施例所述方法以及现有随机网络编码方法时控制开销随每个信息片段所包含信息块数目变化的曲线。图7显示了采用本发明实施例所述方法以及现有随机网络编码方法时控制开销随待下载文件所包含信息片段数目变化的曲线。在图6和图7中,带方形的曲线为采用本发明实施例所述方法时控制开销的变化曲线,而带圆形的曲线为采用现有随机网络编码时控制开销的变化曲线。从上述曲线可以看出,与现有随机网络编码方案相比,本发明实施例所述的方法大大降低了控制开销。例如,在随机网络编码方案中,控制包的开销在10%左右,采用了我们的方案,控制包的开销不到0.1%。
而且,如前所述,由于本发明实施例所生成的网络编码系数表的任意n列均是线性独立的,因此,下载节点不管从哪个种子节点接收数据,只要正确收到n个数据单位之后,就必然可以成功解码,得到原始数据,从而大幅降低解码失败概率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (16)
1.一种数据传输方法,其特征在于,包括:
下载节点和种子节点分别生成网络编码系数表,所述网络编码系数表中的任意n个列向量之间是线性独立的,其中,n表示由待传输数据划分出的数据单位的数目;
下载节点从服务器获知所有种子节点后,分别向各个种子节点发送下载请求,所述下载请求包括请求待下载数据的标识以及网络编码系数标识;
各个种子节点根据所接收下载请求中携带的编码系数标识从自身生成的网络编码系数表中获取相应的列向量作为网络编码系数;
各个种子节点根据所获取的网络编码系数对由下载请求中携带的数据标识所指示的数据中包含的数据单位进行网络编码,并将编码后的数据单位发送给下载节点;
下载节点分别接收来自各个种子节点的经过网络编码后的数据单位,并在接收到n个数据单位后进行解码,得到待下载数据。
2.根据权利要求1所述的方法,其特征在于,所述下载节点和种子节点分别生成网络编码系数表包括:
下载节点和种子节点分别生成基数大于或等于n的矩阵作为所述网络编码系数表。
3.根据权利要求2所述的方法,其特征在于,所述矩阵的基数为2n。
4.根据权利要求1所述的方法,其特征在于,所述下载节点和种子节点分别生成网络编码系数表包括:
所述下载节点和种子节点生成不同基数且基数大于或等于n的至少两个矩阵,并根据n大小选择一个矩阵作为网络编码系数表。
5.根据权利要求4所述的方法,其特征在于,所述下载节点和种子节点生成不同基数且基数大于或等于n的至少两个矩阵,并根据n大小选择一个矩阵作为网络编码系数表包括:
所述下载节点和种子节点分别生成基数为64,128,256,512的四个矩阵;
若待下载数据所包含的数据单位的数目小于或等于32,则选择基数为64的矩阵作为网络编码系数表;
若待下载数据所包含的数据单位的数目大于32且小于或等于64,则选择基数为128矩阵作为网络编码系数表;
若待下载数据所包含的数据单位的数目大于64且小于或等于128,则选择基数为256矩阵作为网络编码系数表;
若待下载数据所包含的数据单位的数目大于128且小于或等于256,则选择基数为512的矩阵作为网络编码系数表。
6.根据权利要求1所述的方法,其特征在于,所述下载节点从服务器获知所有种子节点包括:
下载节点通过向服务器发送请求种子节点列表消息向服务器请求所有可以提供数据的种子节点的信息;
服务器在收到请求种子节点列表消息后,将向下载节点返回包含有所有种子节点标识的种子节点标识列表;
下载节点根据服务器返回的种子节点标识列表获知所有提供数据的种子节点。
7.根据权利要求1所述的方法,其特征在于,所述网络编码系数标识包括编码系数模值和编码系数索引;
各个种子节点根据所接收下载请求中携带的编码系数标识从自身生成的网络编码系数表中获取相应的列向量作为网络编码系数包括:
各个种子节点根据如下计算公式计算得到所选择的作为编码系数的列向量在网络编码系数表中的编号:
i=x×k+y,其中,i为网络编码系数表中列向量的编号;x为编码系数模值,y为编码系数索引,k为非负整数。
8.根据权利要求7所述的方法,其特征在于,下载节点向各个种子节点发送的下载请求中携带的编码系数模值是相同的,而编码系数索引是不同的。
9.根据权利要求1所述的方法,其特征在于,所述下载节点分别接收来自各个种子节点的经过网络编码后的数据单位,并在接收到n个数据单位后进行解码包括:
下载节点根据发送给各个种子节点的下载请求中携带的网络编码系数标识从自身生成的网络编码系数表中获取相应的列向量作为各个种子节点的编码系数,再根据各个种子节点的编码系数分别对来自各个种子节点的n个数据单位进行解码。
10.根据权利要求9所述的方法,其特征在于,所述网络编码系数标识包括编码系数模值和编码系数索引;
下载节点根据发送给各个种子节点的下载请求中携带的网络编码系数标识从自身生成的网络编码系数表中获取相应的列向量作为各个种子节点的编码系数包括:
下载节点根据如下计算公式分别计算各个种子节点所选择的作为编码系数的列向量在网络编码系数表中的编号:
i=x×k+y,其中,i为网络编码系数表中列向量的编号;x和y分别为一个种子编码系数模值和编码系数索引,k为非负整数。
11.根据权利要求1至10任一项所述的方法,其特征在于,所述数据为一个文件;所述数据单位为所述文件被划分得到的至少一个信息片段。
12.根据权利要求1至10任一项所述的方法,所述数据是一个文件被划分得到的多个信息片段中的一个;所述数据单位为该信息片段包含的至少一个数据块。
13.一种网络节点,其特征在于,包括:
网络编码系数表生成单元,用于生成网络编码系数表,其中,网络编码 系数表中的任意n列均是线性独立的,其中,n表示由待传输数据划分的数据单位的数目;
种子节点信息获取单元,用于从服务器获取所有提供数据的种子节点;
下载请求生成单元,用于分别对各个种子节点生成下载请求,并将下载请求发送至相应种子节点,其中,下载请求至少包括请求待下载数据的标识以及网络编码系数标识;
编码系数生成单元,用于分别针对各个种子节点根据所生成的下载请求中的网络编码系数标识从自身生成的网络编码系数表中获取相应的列向量作为各个种子节点的网络编码系数;
数据接收及解码单元,用于从各个种子节点接收经过网络编码后的数据单位,并在接收到n个数据单位后根据各个节点的网络编码系数进行解码,得到待下载数据。
14.根据权利要求13所述的网络节点,其特征在于,所述网络编码系数表生成单元包括:
网络编码系数矩阵生成模块,用于生成具有不同基数且基数大于或等于n的至少一个矩阵;
网络编码系数表选择模块,用于根据n的大小从所生成的至少一个矩阵中选择一个作为网络编码系数表。
15.一种网络节点,其特征在于,包括:
网络编码系数表生成单元,用于生成网络编码系数表,其中,网络编码系数表中的任意n列均是线性独立的,其中,n表示由待传输数据划分的数据单位的数目;
下载请求接收单元,用于接收来自下载节点的下载请求;
编码系数生成单元,用于根据所接收下载请求中携带的网络编码系数标识从自身生成的网络编码系数表中获取相应的列向量作为网络编码系数;
网络编码单元,用于根据所获取的网络编码系数对自身存储的,由下载请求中携带的数据标识所指示的数据中包含的数据单位进行网络编码,并将 编码后的数据单位发送给下载节点。
16.根据权利要求15所述的网络节点,其特征在于,所述网络编码系数表生成单元包括:
网络编码系数矩阵生成模块,用于生成具有不同基数且基数大于或等于n的至少一个矩阵;
网络编码系数表选择模块,用于根据n的大小从所生成的至少一个矩阵中选择一个作为网络编码系数表。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910251379.2A CN102088331B (zh) | 2009-12-03 | 2009-12-03 | 一种数据传输方法及网络节点 |
JP2010240701A JP5587735B2 (ja) | 2009-12-03 | 2010-10-27 | データ伝送方法およびネットワークノード |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910251379.2A CN102088331B (zh) | 2009-12-03 | 2009-12-03 | 一种数据传输方法及网络节点 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102088331A CN102088331A (zh) | 2011-06-08 |
CN102088331B true CN102088331B (zh) | 2015-01-14 |
Family
ID=44099957
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910251379.2A Active CN102088331B (zh) | 2009-12-03 | 2009-12-03 | 一种数据传输方法及网络节点 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP5587735B2 (zh) |
CN (1) | CN102088331B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102291202A (zh) * | 2011-09-02 | 2011-12-21 | 北京大学深圳研究生院 | 一种网络编码包头的压缩方法 |
CN105979284B (zh) * | 2016-05-10 | 2019-07-19 | 杨�远 | 移动终端视频共享方法 |
US11108705B2 (en) * | 2019-04-30 | 2021-08-31 | Code On Network Coding, Llc | Linear network coding with pre-determined coefficient generation through parameter initialization and reuse |
CN112217820B (zh) * | 2020-09-27 | 2022-08-09 | 伍仁勇 | 网络传输方法、系统、本地编码核生成方法及系统 |
CN114679256A (zh) * | 2020-12-24 | 2022-06-28 | 科大国盾量子技术股份有限公司 | 一种多路径密钥中继方法、装置及相关设备 |
CN114615014B (zh) * | 2022-01-29 | 2023-03-17 | 北京航空航天大学 | 面向多层分布式网络的数据传输方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101174955A (zh) * | 2006-10-30 | 2008-05-07 | 华为技术有限公司 | 共享内容传输方法和系统以及内容源端、内容接收端 |
CN101222295A (zh) * | 2007-01-12 | 2008-07-16 | 富士通株式会社 | 将数据分为多段部分数据来分发的系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1665539B1 (en) * | 2003-10-06 | 2013-04-10 | Digital Fountain, Inc. | Soft-Decision Decoding of Multi-Stage Chain Reaction Codes |
US9178535B2 (en) * | 2006-06-09 | 2015-11-03 | Digital Fountain, Inc. | Dynamic stream interleaving and sub-stream based delivery |
CN101207552B (zh) * | 2006-12-19 | 2012-01-11 | 株式会社Ntt都科摩 | 一种数据块的调度方法及网络节点 |
-
2009
- 2009-12-03 CN CN200910251379.2A patent/CN102088331B/zh active Active
-
2010
- 2010-10-27 JP JP2010240701A patent/JP5587735B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101174955A (zh) * | 2006-10-30 | 2008-05-07 | 华为技术有限公司 | 共享内容传输方法和系统以及内容源端、内容接收端 |
CN101222295A (zh) * | 2007-01-12 | 2008-07-16 | 富士通株式会社 | 将数据分为多段部分数据来分发的系统 |
Also Published As
Publication number | Publication date |
---|---|
JP5587735B2 (ja) | 2014-09-10 |
CN102088331A (zh) | 2011-06-08 |
JP2011120227A (ja) | 2011-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5788988B2 (ja) | 不均一誤り保護および一括ファイル配信サービスを提供するための汎用ファイル配信の方法 | |
CN101432969B (zh) | 前向纠错(fec)编码和流送 | |
US9350488B2 (en) | Content delivery system with allocation of source data and repair data among HTTP servers | |
CN102088331B (zh) | 一种数据传输方法及网络节点 | |
JP5112333B2 (ja) | メディアコンテナファイルの管理 | |
JP5795446B2 (ja) | Httpサーバの間でのソースデータおよび修復データの割り当てを伴うコンテンツ配送システム | |
CN101019326A (zh) | 文件下载和流系统 | |
CN104221315A (zh) | 通用对象传递及基于模板的文件传递 | |
WO2007064745A1 (en) | A method and apparatus for layered rateless coding | |
CN102804661B (zh) | 通信系统中的对象的块聚合 | |
CN101164269B (zh) | 用于提供线性擦除码的方法和装置 | |
CN101540778B (zh) | 一种数据传输的方法、装置和系统 | |
KR101967884B1 (ko) | 방송 및 통신 시스템에서 패킷 송/수신 장치 및 방법 | |
KR20070034532A (ko) | 확장형 컨벌루션 인코더 디바이스, 무선 시스템, 컨벌루션코드 확장 방법 | |
JP2007074413A (ja) | コンテンツ配信装置およびコンテンツ受信装置、ならびにコンテンツ配信システム、コンピュータプログラム | |
CN100452713C (zh) | 一种基于分布式编码存储的网络数据汇播传输方法 | |
WO2011039874A1 (ja) | データ送信装置、データ生成プログラムおよびデータ送受信方法 | |
KR101922205B1 (ko) | Lt 부호를 이용한 행렬 생성 방법과 그를 위한 부/복호화 장치 | |
JP2007274309A (ja) | 送信装置 | |
KR20190039490A (ko) | 방송 및 통신 시스템에서 패킷 송/수신 장치 및 방법 | |
CN102064909A (zh) | 信道质量指示信息的发送方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |