提高基于随机网络编码的多播传输效率的方法及节点转让专利

申请号 : CN200710138079.4

文献号 : CN101365150B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 涂晓东刘晗冯莱利牛长喜张庚王少勇

申请人 : 华为技术有限公司电子科技大学

摘要 :

本发明公开了提高基于随机网络编码的多播传输效率的方法和源节点、宿节点。源节点接收各宿节点对一代多播分组进行解码的解码结果信令,所述解码结果信令为成功解码时的解码成功信令或者不能成功解码时的非解码成功信令;源节点根据所述解码结果信令,调整所述多播分组的代发送持续宽度。本发明使得源节点可以及时得知多播传输的网络状况,从而对多播分组的代发送持续宽度及时进行调整,从而提高了多播传输效率。

权利要求 :

1.一种提高基于随机网络编码的多播传输效率的方法,其特征在于,包括:源节点接收各宿节点对一代多播分组进行解码的解码结果信令,所述解码结果信令为成功解码时的解码成功信令或者不能成功解码时的非解码成功信令;

源节点根据所述解码结果信令,调整所述多播分组的代发送持续宽度,

所述代发送持续宽度为代发送持续时长或代发送持续数目。

2.如权利要求1所述的方法,其特征在于,所述源节点接收解码成功信令之前进一步包括:宿节点从一条入向链路接收到多播分组,计算该入向链路接收该多播分组所在代的多播分组的平均接收速率;

且,当宿节点对一代多播分组成功解码时,宿节点计算自身所有入向链路接收该代多播分组的平均接收速率和,将该平均接收速率和携带在解码成功信令中发送给源节点。

3.如权利要求2所述的方法,其特征在于,

所述源节点调整所述多播分组的代发送持续宽度为:当源节点确定已收齐所有宿节点发来的针对一代多播分组的解码成功信令时,则根据各解码成功信令中的平均接收速率和调整代发送持续宽度。

4.如权利要求2所述的方法,其特征在于,所述代发送持续宽度以时长表示,所述源节点调整多播分组的代发送持续宽度包括:源节点计算Δt’=d*l/v+k*(l/H),

其中,Δt’为调整后的代发送持续宽度;d为每代原始数据块的数目;l为每个多播分组的长度;v为各解码成功信令中的平均接收速率和中的最小值;H为源节点的所有出向链路的速率总和;k为常数,且k≥0,k的作用是平衡系统的吞吐率和实时性之间的矛盾,当k=0时,系统的吞吐率最大,k每增大1,源节点在发送每代多播分组时将多发送一个多播分组。

5.如权利要求1所述的方法,其特征在于,所述源节点接收非解码成功信令之前进一步包括:宿节点确定不能对一代多播分组成功解码,计算成功解码该代多播分组还需的编码向量,将该成功解码还需的编码向量携带在非解码成功信令中发送给源节点。

6.如权利要求5所述的方法,其特征在于,

所述源节点调整所述多播分组的代发送持续宽度为:当源节点确定已收齐所有宿节点发来的针对一代多播分组的解码结果信令时,则根据各非解码成功信令中的成功解码还需的编码向量调整代发送持续宽度。

7.如权利要求5所述的方法,其特征在于,所述代发送持续宽度以时长表示,所述源节点调整多播分组的代发送持续宽度包括:源节点计算Δt’=Δt*(d/(d-n))+k*(l/H),

其中,Δt’为调整后的代发送持续宽度;Δt为当前的代发送持续宽度,d为每代原始数据块的数目;n为各非解码成功信令中携带的成功解码还需的编码向量的最大数目,l为每个多播分组的长度;H为源节点的所有出向链路的速率总和;k为常数,且k≥0,k的作用是平衡系统的吞吐率和实时性之间的矛盾,当k=0时,系统的吞吐率最大,k每增大1,源节点在发送每代多播分组时将多发送一个多播分组。

8.如权利要求5所述的方法,其特征在于,所述代发送持续宽度以数目表示,所述源节点调整多播分组的代发送持续宽度包括:源节点计算D=D+Max(Rm,,i)或D=D*Max(d/(d-Rm,,i));

其中,D为代发送持续宽度;Rm,,i表示第i个宿节点发来的针对第m代多播分组的非解码成功信令中携带的解码成功还需的编码向量的数目;d为原始数据块的数目;Max()表示取最大值。

9.如权利要求1所述的方法,其特征在于,所述源节点接收解码成功信令之前进一步包括:宿节点接收到多播分组,计算自身已接收到该多播分组所在代的多播分组的数目,且在确定对一代多播分组成功解码时,将该宿节点已接收该代多播分组的数目携带在解码成功信令中发送给源节点。

10.如权利要求9所述的方法,其特征在于,

所述源节点调整多播分组的代发送持续宽度为:当源节点确定已收齐所有宿节点发来的针对一代多播分组的解码成功信令时,根据各解码成功信令中携带的已接收该代多播分组的数目调整所述多播分组的代发送持续宽度。

11.如权利要求9所述的方法,其特征在于,所述代发送持续宽度以数目表示,所述源节点调整多播分组的代发送持续宽度包括:源节点将各解码成功信令中携带的已接收该代多播分组的数目的最大值作为调整后的代发送持续宽度。

12.如权利要求1所述的方法,其特征在于,所述源节点接收非解码成功信令之前进一步包括:宿节点接收到多播分组,计算自身已接收到该多播分组所在代的多播分组的数目;

当宿节点不能对一代多播分组成功解码时,计算成功解码该代多播分组还需的编码向量,将该成功解码还需的编码向量和已接收该代多播分组的数目携带在非解码成功信令中发送给源节点。

13.如权利要求12所述的方法,其特征在于,

所述源节点调整多播分组的代发送持续宽度为:当源节点确定已收齐所有宿节点发来的针对一代多播分组的解码结果信令时,根据各非解码成功信令中携带的成功解码还需的编码向量和已接收该代多播分组的数目调整代发送持续宽度。

14.如权利要求12所述的方法,其特征在于,所述代发送持续宽度以数目表示,所述源节点调整多播分组的代发送持续宽度包括:源节点计算D=D*Max((Nm,i+Rm,,i)/Nm,i);

其中,D为代发送持续宽度;Rm,,i表示第i个宿节点发来的针对第m代多播分组的非解码成功信令中携带的解码成功还需的编码向量的数目;Nm,i表示第i个宿节点发来的针对第m代多播分组的非解码成功信令中携带的已接收该代多播分组的数目;d为原始数据块的数目;Max()表示取最大值。

15.如权利要求1所述的方法,其特征在于,所述源节点调整多播分组的代发送持续宽度之后进一步包括:源节点记录正在发送的多播分组所属代的下一代的代标识;

所述源节点调整多播分组的代发送持续宽度包括:源节点根据宿节点发来的与所记录的代标识对应的解码结果信令,调整多播分组的代发送持续宽度。

16.一种提高基于随机网络编码的传输效率的源节点,其特征在于,该源节点包括:解码结果信令接收模块,接收各宿节点对一代多播分组进行解码的解码结果信令,所述解码结果信令为成功解码时的解码成功信令或者不能成功解码时的非解码成功信令,将解码结果信令发送给代发送持续宽度调整模块;

代发送持续宽度调整模块,根据解码结果信令接收模块发来的解码结果信令,调整多播分组的代发送持续宽度,所述代发送持续宽度为代发送持续时长或代发送持续数目。

17.如权利要求16所述的源节点,其特征在于,所述源节点进一步包括:调整代标识记录模块,用于记录调整代发送持续宽度所针对的代标识;

所述代发送持续宽度调整模块在确定已收齐宿节点发来的针对调整代标识记录模块中记录的代标识对应代的多播分组的解码结果信令后,根据该代标识对应的解码结果信令,调整多播分组的代发送持续宽度,调整完毕,获取当前正在发送的多播分组的代标识,根据该代标识确定将要发送的下一代多播分组的代标识,将该下一代的代标识记录在调整代标识记录模块中。

18.一种提高基于随机网络编码的传输效率的宿节点,其特征在于,该宿节点包括:平均接收速率计算模块,计算所在宿节点的所在入向链路接收每一代多播分组的平均接收速率;

解码模块,在对一代多播分组成功解码时,从所在宿节点的各入向链路的平均接收速率计算模块中取出各平均接收速率,将各平均接收速率相加,将所得和值携带在解码成功信令中发送给源节点。

19.如权利要求18所述的宿节点,其特征在于,该宿节点进一步包括:缺失编码向量计算模块,接收解码模块发来的代标识,计算成功解码与该代标识对应代的多播分组还需的编码向量,将该编码向量发送给解码模块;

且,解码模块在不能对一代多播分组成功解码时,将该代多播分组的代标识发送给缺失编码向量计算模块,接收缺失编码向量计算模块发来的编码向量,将该编码向量携带在非解码成功信令中发送给源节点。

20.一种提高基于随机网络编码的传输效率的宿节点,其特征在于,该宿节点包括:代分组接收数目计数模块,对所在宿节点接收每一代多播分组的数目进行计数;

解码模块,在对一代多播分组成功解码时,从所在宿节点的代分组接收数目计数模块中取出已接收该代多播分组的数目,将该数目携带在解码成功信令中发送给源节点。

21.如权利要求20所述的宿节点,其特征在于,该宿节点进一步包括:缺失编码向量计算模块,接收解码模块发来的代标识,计算成功解码与该代标识对应代的多播分组还需的编码向量,将该编码向量发送给解码模块;

且,解码模块在不能对一代多播分组成功解码时,从所在宿节点的代分组接收数目计数模块中取出已接收该代多播分组的数目,并将该代多播分组的代标识发送给缺失编码向量计算模块,接收缺失编码向量计算模块发来的编码向量,将该编码向量和所述已接收该代多播分组的数目携带在非解码成功信令中发送给源节点。

说明书 :

提高基于随机网络编码的多播传输效率的方法及节点

技术领域

[0001] 本发明涉及网络编码技术领域,具体涉及提高基于随机网络编码的多播传输效率的方法及源节点和宿节点。

背景技术

[0002] 所谓网络编码,就是指让网络中的节点不光拥有存储转发数据分组的能力,还能够对信息进行编码操作,从而能够大幅度提高网络在执行多播应用时的吞吐率和带宽利用率。
[0003] 图1给出了一个通过网络编码改善网络吞吐率的网络拓扑图,如图1所示,假设图中所有线路的传输速率均为1bit/单位时间,而节点S要利用该网络同时向节点Y和节点Z多播信息。假设某一单位时间内,S向T和U分别发出比特b1和b2,如果每个节点都只有存储转发功能,则节点W只能从b1和b2中选择一个传给节点X,显然节点Y和节点Z无法同时收全b1和b2,网络提供给节点S到节点Y和Z的多播速率小于2bit/单位时间。而如果在该网络的节点中引入编码功能,即让节点W将b1和b2作异或运算的结果传给节点X,再由X将该结果分别传给Y和Z,则节点Y可以通过该结果和自己从节点T收到的比特求解出节点S发送给U的比特。而节点Z也可以通过类似的方式收到S发给T的比特。从而使S向Y和Z多播的速率达到了2bit/单位时间。
[0004] 现有技术已经证明:任何网络中,假设在进行单播时源到各接收点{T1,T2,...,Tn}的最大速率分别为{MF1,MF2,...,MFn},则该源必定能够以min{MFm(m=1,2,...,n)}的速率同时对所有接收节点进行多播,将min{MFm(m=1,2,...,n)}称为源节点到所有宿节点的最大流中的最小值。而从图1可以看到,若节点不具备编码功能,该速率min{MFm}=2bit/单位时间通常是无法达到的,而只有引入了网络编码,该速率才可以达到。现有技术还证明:如果网络中的节点具有数据编码的能力,则无论在何种拓扑的网络中进行多播,理论上的min{MFm}都是可以达到的。
[0005] 网络编码技术分为随机网络编码和确定性网络编码两个分支。随机网络编码是指网络中所有链路的编码向量都是随时间变化的,即每个节点在得到一次发送机会后都随机地对已经收到的数据进行编码操作并且发送出去。
[0006] 使用随机网络编码的网络中使用了“代”的概念,即:将数据源需要多播到宿节点的所有原始数据块分为若干组,除最后一组,每组含有相等数量的原始数据块。在整个多播过程中,节点的编码操作都只在属于同一组的原始数据块及它们进行线性组合后生成的新数据块之间进行。称一组原始数据块和由它们线性组合生成的全部新数据块组成的集合为一代。可见,整个多播过程中的编码操作都是在属于同一代的数据块之间进行的。
[0007] 根据以上描述给出现有的基于随机网络编码的多播流程图,如图2所示,其具体步骤如下:
[0008] 步骤201:在多播过程开始之前,在现有网络的基础上计算出一个多播过程使用的逻辑子拓扑。
[0009] 步骤202:预先设定一个每代多播分组的代发送持续总数或者代发送持续时长。
[0010] 代发送持续总数指的是,源节点发送每代多播分组的数目称为代发送持续总数。例如:若代发送持续总数为D,则源节点持续发送D数目的当前代多播分组后,将转入下一代多播分组的发送过程。
[0011] 代发送持续时长指的是,源节点发送每代多播分组的持续时长称为代发送持续时长。例如:若代发送持续时长为Δt,则源节点持续发送Δt时长的当前代多播分组后,将转入下一代多播分组的发送过程。
[0012] 本步骤中设定的代发送持续总数为d*(H/h),代发送持续时长为d*l/h。其中,d为每代原始数据块的个数,H为源节点所有出向链路的速率总和,l为每个多播分组的长度,h为源节点到宿节点的最大流中的最小值,该值在构造多播拓扑的过程中可计算得到。
[0013] 步骤203:多播逻辑子拓扑中的源节点确定将要发送一个多播分组,根据当前代多播分组的已发送数目和预先设定的代发送持续总数,或者根据当前代多播分组的已发送持续时长和预先设定的代发送持续时长,判断是否应进入新的当前代,若是,执行步骤204;否则,执行步骤205。
[0014] 具体地,若当前代多播分组的已发送数目小于预先设定的代发送持续总数,或者,当前代多播分组的已发送持续时长小于预先设定的代发送持续时长,则源节点继续进行当前代多播分组的发送过程;否则,源节点开始下一代多播分组的发送过程。
[0015] 步骤204:源节点将当前代的下一代作为新的当前代。
[0016] 步骤205:源节点随机生成一个d维向量,计算该d维向量·表示本代所有待发原始数据块的原始数据向量,将得到的数据块封装入分组,将该数据块的代编号和生成的d维编码向量填入分组头部后,将该分组发送出去。
[0017] 假设该子拓扑中源节点到所有宿节点最大流中的最小值是h块/单位时间,则源节点向外发送数据的速率是h块/单位时间。
[0018] 多播分组的格式如图3所示,主要由分组头部和分组内容组成,其中,分组头部包括:代编号和编码向量如:向量元素1、向量元素2、...、向量元素d,分组内容即:数据块。
[0019] 步骤206:中间节点收到多播分组,判断该多播分组是否携带了新信息,若是,执行步骤207;否则,执行步骤208。
[0020] 判断该分组是否携带了新信息的具体过程为:假设在收到该分组前,该中间节点共收到了a个与该分组属于同一代的分组,其中,共有b(b≤d)个分组头部中封装的编码向量是线性无关的,则收到该分组之后,该分组头部中的编码向量和原有分组头部中的向量共a+1个,如果该a+1个向量中有b+1个向量线性无关,则称该分组携带了新信息。
[0021] 步骤207:中间节点将该分组保存到缓存空间中,转至步骤209。
[0022] 步骤208:中间节点丢弃将该分组,执行步骤209。
[0023] 步骤209:中间节点的一条出向链路获得一个发送机会,中间节点将缓存空间中的所有当前代的分组所封装的数据块进行一次随机线性组合,生成一个数据块,并将各分组头部中的编码向量进行相同的随机线性组合,得到一个新的编码向量,将该生成的数据块封装入一个分组,将当前代的代编号和得到的新编码向量填入该分组头部,然后将该分组从有发送机会的链路发送出去。
[0024] 中间节点收到第一个属于当前代的下一代的分组时,清空缓存中的当前代分组,进入下一代分组的发送过程,即:此后下一代变为新的当前代,以后若再收到原当前代的分组,直接丢弃,不再处理。
[0025] 步骤210:宿节点收到中间节点发来的携带代编号的多播分组,根据已保存的与该代编号对应的所有分组中的编码向量和该分组中的编码向量,判断是否能对该代编号对应代的多播分组解码成功,若是,对该代的分组进行解码,将得到的原始数据块发送给上层实体;否则,继续等待下一个多播分组。
[0026] 具体地,若宿节点已收到的与该代编号对应代的多播分组中,包含d个线性无关的编码向量,则宿节点确定能够对该代多播分组解码成功。
[0027] 可以看出,源节点在判断是否应转入新当前代分组的发送时,是根据由源节点到各宿节点的最大流中的最小值计算得到的代发送持续总数或者代发送持续时长判断的。实际上,源节点持续发送多少个每代多播分组后或者持续发送多少时长的每代多播分组后,再转入下一代多播分组的发送,是决定系统性能的一个重要因素。若持续发送的每代多播分组数过多,会造成带宽的浪费,而持续发送的每代多播分组数过少则会造成系统的可靠性下降,甚至造成宿节点无法正确解码。而,在多播分组传输过程中,网络情况是不断变化的,网络中源节点到各宿节点的最大流中的最小值也要随之发生变化,此时源节点应该调整代发送持续总数。而现有技术中,一旦根据构造多播逻辑子拓扑中得到的源节点到各宿节点的最大流中的最小值确定代持续发送总数或代持续发送时长后,代持续发送总数或代持续发送时长将不再改变,这就无法适应网络变化,降低了多播传输效率。

发明内容

[0028] 本发明实施例提供提高基于随机编码网络的多播传输效率的方法及源节点和宿节点,以提高多播传输效率。
[0029] 本发明实施例的技术方案是这样实现的:
[0030] 一种提高基于随机网络编码的多播传输效率的方法,包括:
[0031] 源节点接收各宿节点对一代多播分组进行解码的解码结果信令,所述解码结果信令为成功解码时的解码成功信令或者不能成功解码时的非解码成功信令;
[0032] 源节点根据所述解码结果信令,调整所述多播分组的代发送持续宽度;
[0033] 源节点按照调整后的代发送持续宽度,发送后续代的多播分组。
[0034] 一种提高基于随机网络编码的传输效率的源节点,该源节点包括:
[0035] 解码结果信令接收模块,接收各宿节点对一代多播分组进行解码的解码结果信令,所述解码结果信令为成功解码时的解码成功信令或者不能成功解码时的非解码成功信令,将解码结果信令发送给代发送持续宽度调整模块;
[0036] 代发送持续宽度调整模块,根据解码结果信令接收模块发来的解码结果信令,调整多播分组的代发送持续宽度,根据调整后的代发送持续宽度,进行下一代多播分组的发送。
[0037] 一种提高基于随机网络编码的传输效率的宿节点,该宿节点包括:
[0038] 平均接收速率计算模块,计算所在宿节点的所在入向链路接收每一代多播分组的平均接收速率;
[0039] 解码模块,在对一代多播分组成功解码时,从所在宿节点的各入向链路的平均接收速率计算模块中取出各平均接收速率,将各平均接收速率相加,将所得和值携带在解码成功信令中发送给源节点。
[0040] 一种提高基于随机网络编码的传输效率的宿节点,该宿节点包括:
[0041] 代分组接收数目计数模块,对所在宿节点接收每一代多播分组的数目进行计数;
[0042] 解码模块,在对一代多播分组成功解码时,从所在宿节点的代分组接收数目计数模块中取出已接收该代多播分组的数目,将该数目携带在解码成功信令中发送给源节点。
[0043] 与现有技术相比,本发明实施例中,宿节点在对一代多播分组解码成功时,将解码成功信令反馈给源节点;当未能对一代多播分组成功解码时,则将非解码成功信令反馈给源节点,使得源节点可以及时得知多播传输的网络状况,从而对多播分组的代发送持续宽度及时进行调整,从而提高了多播传输效率。

附图说明

[0044] 图1为现有的网络编码对网络吞吐率改善的网络拓扑示意图;
[0045] 图2为现有的基于随机网络编码的多播流程图;
[0046] 图3为现有的基于随机网络编码的多播分组的结构示意图;
[0047] 图4为本发明实施例一提供的提高基于随机网络编码的多播传输效率的流程图;
[0048] 图5为本发明实施例二提供的提高基于随机网络编码的多播传输效率的流程图;
[0049] 图6为本发明实施例一提供的提高基于随机网络编码的多播传输效率的系统组成图;
[0050] 图7为本发明实施例三提供的提高基于随机网络编码的多播传输效率的流程图;
[0051] 图8为本发明实施例四提供的提高基于随机网络编码的多播传输效率的流程图;
[0052] 图9为本发明实施例三提供的提高基于随机网络编码的多播传输效率的系统组成图。

具体实施方式

[0053] 下面结合附图及具体实施例对本发明再作进一步详细的说明。
[0054] 为方便描述起见,首先给出本发明实施例所使用的主要技术用语的定义:
[0055] 数据量记录器:宿节点为自己的每一条入向链路维护一个数据量记录器,用于记录该链路所收到的每一代多播分组的长度C代编号。该长度用于与计时器记录的每一代多播分组的接收时长T代编号一起,估算该链路接收每代多播分组时源节点到该宿节点的平均最大流V代编号。
[0056] 计时器:宿节点为自己的每一条入向链路维护一个计时器,用于记录该链路接收每代多播分组所用的时长T代编号。该时长用于与数据量记录器中记录的该链路所收到的该代多播分组的长度C代编号一起,来估算该链路接收每代多播分组时源节点到该宿节点的平均最大流V代编号。
[0057] 平均接收速率记录器:宿节点为自己的每一条入向链路维护一个平均接收速率记录器,该记录器中以V代编号的形式存储着该链路接收每代多播分组期间的平均接收速率,其中,V代编号=C代编号/T代编号。
[0058] 解码成功信令:宿节点对某代多播分组成功解码后,向源节点反馈解码成功信令。
[0059] 信息量不足信令:宿节点若在完成原当前代向新当前代转换时,仍然未对原当前代多播分组成功解码,则向源节点发送指示未解码成功的信息量不足信令。
[0060] 图4为本发明实施例一提供的提高基于随机网络编码的多播传输效率的流程图,如图4所示,其具体步骤如下:
[0061] 步骤401:源节点在自身维护一个时钟,设时钟的初始值为0,并初始化代发送持续时长Δt=d*l/h。
[0062] 其中,l为每个多播分组的长度,h为多播逻辑子拓扑中源节点到所有宿节点的最大流中的最小值。
[0063] 本步骤中,源节点也可不维护一个时钟,而维护一个计数器,且在开始发送每一代多播分组前,将该计数器初始化为0,此后源节点每发送一个多播分组,计数器的值加1,且源节点初始化代发送持续总数为d*(H/h),其中,H为源节点所有出向链路的速率总和。
[0064] 步骤402:宿节点为自身的每条入向链路分别维护一个数据量记录器、一个计时器和一个平均接收速率记录器,并设定数据量记录器的初始值Cm=0,计时器的初始值Tm=0,平均接收速率记录器的初始值Vm=0,其中,m表示代编号,初始化m=1。
[0065] 步骤403:源节点发送当前代的第一个多播分组,启动时钟。
[0066] 步骤404:宿节点从一条入向链路收到一个多播分组,根据该多播分组中的代编号m,判断该入向链路的接收速率记录器中是否已保存Vm,若是,执行步骤405;否则,执行步骤406。
[0067] 步骤405:宿节点在接收完该多播分组时,将数据量记录器中已保存的Cm加上该多播分组的长度,以得到的和值替换Cm,然后计算该替换后的Cm与计时器的计时值Tm相除后的值Vm,以该Vm值替换平均接收速率记录器中已保存的Vm的值,转至步骤407。
[0068] 步骤406:宿节点重新启动计时器开始计时,当该多播分组接收完毕时,记录该多播分组的长度Cm,计算Vm=Cm/Tm,其中,Tm为计时器的计时值,将该Vm记录在该入向链路的平均接收速率记录器中,然后将所述Cm记录在该入向链路的数据量记录器中。
[0069] 步骤407:宿节点判断是否能够对该多播分组所在代m成功解码,若是,执行步骤408;否则,执行步骤409。
[0070] 步骤408:宿节点从自身的每条入向链路的平均接收速率记录器中分别取出Vm,将取出的所有Vm相加,将所得的和值放入解码成功信令,将该信令通过单播路由机制传送到源节点,并从每条入向链路的平均接收速率记录器中清除Vm,从每条入向链路的数据量记录器中清除Cm,转至步骤412。
[0071] 步骤409:宿节点判断自身是否已完成第m代到第m+1代的转换,若是,执行步骤410;否则,执行步骤411。
[0072] 若宿节点的所有入向链路都收到了第m+1代多播分组,或者已有一条入向链路收到了第m+2代多播分组,则宿节点确定自身已完成第m代到第m+1代的转换。
[0073] 步骤410:宿节点根据已接收到的所有第m代的多播分组中的编码向量,计算成功解码还需的编码向量,将计算得到的编码向量携带在信息量不足信令中发送给源节点,并从每条入向链路的平均接收速率记录器中清除Vm,从每条入向链路的数据量记录器中清除Cm,转至步骤412。
[0074] 步骤411:宿节点等待下一个多播分组,转至步骤404。
[0075] 步骤412:源节点接收到宿节点发来的控制信令,判断该信令为解码成功信令还是信息量不足信令,若为解码成功信令,执行步骤414;若为信息量不足信令,执行步骤413。
[0076] 步骤413:源节点根据信息量不足信令中携带的代编号,从自身取出与该代编号对应的原始数据块,然后将该信息量不足信令中携带的解码成功还需的编码向量与原始数据块分别相乘,将得到的每个数据块放入一个多播分组,将各多播分组通过单播路由机制发送给宿节点。
[0077] 步骤414:源节点判断是否已收齐所有宿节点发来的第m代的控制信令:解码成功信令或信息量不足信令,若是,执行步骤416;否则,执行步骤415。
[0078] 步骤415:源节点继续等待下一个控制信令,转至步骤412。
[0079] 步骤416:源节点判断是否所有宿节点发来的控制信令都为解码成功信令,若是,执行步骤417;否则,执行步骤418。
[0080] 步骤417:源节点调整代发送持续时长:Δt’=d*l/v+k*(l/H),转至步骤419。
[0081] 其中,Δt’为调整后的代发送持续时长;d为每代原始数据块的数目;l为每个多播分组的长度,其单位与Cm相同;v为各解码成功信令中所包含的Vm的最小值;H为源节点的所有出向链路的速率总和;k为常数,且k≥0,k的作用是平衡系统的吞吐率和实时性之间的矛盾,当k=0时,系统的吞吐率最大,k每增大1,源节点在发送每代多播分组时将多发送一个多播分组。
[0082] 若步骤401中,源节点对代发送持续总数进行了初始化,则本步骤中,源节点在调整完代发送持续时长后,可进一步计算Δe’=「H*Δt’/l」,其中,Δe’为调整后的代发送持续总数,「」为向上取整运算符。
[0083] 步骤418:源节点调整代发送持续时长:Δt’=Δt*(d/(d-n))+k*(l/H)。
[0084] 其中,Δt为当前代发送持续时长,n为各信息量不足信令中所包含的成功解码还需的编码向量的最大个数,其余各变量的含义与步骤417相同。
[0085] 同样,若步骤401中,源节点对代发送持续总数进行了初始化,则本步骤中,源节点在调整完代发送持续时长后,可进一步计算Δe’=「H*Δt’/l」,其中,Δe’为调整后的代发送持续总数,「」为向上取整运算符。
[0086] 步骤419:源节点检测到时钟值等于Δt,则确定当前代多播分组发送过程结束,令Δt=Δt’;并在发送当前代的下一代即:新当前代的第一个多播分组时,重新启动时钟,转至步骤404。
[0087] 若步骤401中,源节点对代发送持续总数进行了初始化,则本步骤为:源节点检测到计数器值等于调整前的代发送持续总数Δe,则确定当前代多播分组发送过程结束,令Δe=Δe’;并在发送当前代的下一代即:新当前代的第一个多播分组时,重新启动计数器,转至步骤404。
[0088] 在网络传输时延较大或者源节点到宿节点距离较远的多播逻辑子拓扑中,很可能出现源节点根据第q代控制信令进行代发送持续时长Δt的调整后,已经在进行第q+k(k>1)代分组的发送过程了。这样,在收到第q+k代控制信令前,源节点还将收到第q+1到第q+k-1代的控制信令,而显然这些控制信令不能反映调整后的宿节点的接收情况,因此不能根据这些控制信令进行代发送持续时长的调整。以下给出本发明实现动态调整发送持续时长的实施例二:
[0089] 图5为本发明实施例二提供的提高基于随机网络编码的多播传输效率的流程图,如图5所示,其具体步骤如下:
[0090] 步骤501~511与步骤401~411相同。
[0091] 步骤512:源节点收到宿节点发来的控制信令,判断该控制信令是否为信息量不足信令,若是,执行步骤513;否则,执行步骤514。
[0092] 步骤513:源节点将该信息量不足信令中携带的解码成功还需的编码向量与原始数据块分别相乘,将得到的每个数据块放入一个多播分组,将各多播分组通过单播路由机制发送给宿节点。
[0093] 步骤514:源节点判断该控制信令中的代编号是否与自身已记录的代编号n相同,若是,执行步骤515;否则,继续等待下一个控制信令,转至步骤512。
[0094] 步骤515:源节点判断是否已收齐所有宿节点发来的与已记录的代编号n对应的控制信令,若是,执行步骤517;否则,执行步骤516。
[0095] 步骤516:源节点继续等待下一个控制信令,转至步骤512。
[0096] 步骤517:源节点判断是否所有控制信令都为解码成功信令,若是,执行步骤518;否则,执行步骤519。
[0097] 步骤518:源节点调整代发送持续时长:Δt’=d*l/v+k*(l/H),并更新n=p+1,转至步骤520。
[0098] 其中,Δt’的计算公式中的各变量的含义与步骤417相同,p为源节点正在发送的多播分组所属代的代编号。
[0099] 步骤519:源节点调整代发送持续时长:Δt’=Δt*(d/(d-n))+k*(l/H),并更新n=p+1。
[0100] 其中,Δt’的计算公式中的各变量的含义与步骤418相同,p为源节点正在发送的多播分组所属代的代编号。
[0101] 步骤520:源节点检测到时钟值等于Δt,则确定当前代多播分组发送过程结束,令Δt=Δt’;并在发送当前代的下一代即:新当前代的第一个多播分组时,重新启动时钟,转至步骤504。
[0102] 图6为本发明实施例一提供的提高基于随机网络编码的多播传输效率的系统组成图,如图6所示,其主要包括:宿节点和源节点,其中:
[0103] 宿节点包括:平均接收速率计算模块61、解码模块62和缺失编码向量计算模块63,一个宿节点的一条入向链路对应一个平均接收速率计算模块61,每个宿节点具有一个解码模块62和一个缺失编码向量计算模块63,各模块的功能具体如下:
[0104] 平均接收速率计算模块61:计算所在入向链路接收每一代多播分组的平均接收速率。
[0105] 解码模块62:接收到多播分组,判断是否能够对该多播分组成功解码,若是,则从与所在宿节点的各入向链路对应的各平均接收速率计算模块61中获取所在宿节点的每条入向链路接收该代多播分组的平均接收速率,将各平均接收速率相加得到该宿节点接收该代多播分组的平均接收速率,将该宿节点接收该代多播分组的平均接收速率发送给源节点;否则,判断是否已完成从该多播分组所在代到下一代的转换,若已完成,则将该多播分组所在代的代编号发送给缺失编码向量计算模块63,接收缺失编码向量计算模块63发来的成功解码该代多播分组还需的编码向量,将该编码向量携带在信息量不足信令中发送给源节点;若未完成,则继续等待该代的下一个多播分组。
[0106] 缺失编码向量计算模块63:用于在接收到解码模块62发来的代编号后,根据所在宿节点已接收到的与该代编号对应的多播分组,计算成功解码该代多播分组还需的编码向量,将该编码向量发送给解码模块62。
[0107] 源节点包括:解码结果信令接收模块64和代发送持续时长调整模块65,其中:
[0108] 解码结果信令接收模块64:接收各宿节点发来的解码成功信令和信息量不足信令,将该解码成功信令或信息量不足信令发送给代发送持续时长调整模块65。
[0109] 代发送持续时长调整模块65:接收解码结果信令接收模块64发来的解码成功信令和信息量不足信令,当确定已经收齐宿节点发来的针对一代多播分组的解码结果信令:解码成功信令和/或信息量不足信令后,判断宿节点发来的针对该代多播分组的解码结果信令是否都为解码成功信令,若是,根据各解码成功信令中的各宿节点的平均接收速率,调整当前代发送持续时长;否则,根据各信息量不足信令中的成功解码还需的编码向量的个数,调整当前代发送持续时长。根据调整后的代发送持续时长,进行下一代多播分组的发送。
[0110] 代发送持续时长调整模块65也可以代发送持续总数调整模块代替,代发送持续总数调整模块用于,接收解码结果信令接收模块64发来的解码成功信令或信息量不足信令,当确定已经收齐宿节点发来的针对一代多播分组的解码结果信令:解码成功信令或信息量不足信令后,判断宿节点发来的针对该代多播分组的解码结果信令是否都为解码成功信令,若是,根据各解码成功信令中的各宿节点的平均接收速率,调整当前代发送持续总数;否则,根据各信息量不足信令中的成功解码还需的编码向量的个数,调整当前代发送持续总数。根据调整后的代发送持续总数,进行下一代多播分组的发送。
[0111] 如图6所示,平均接收速率计算模块61主要包括:分组长度记录模块611、接收时长计时模块612和平均接收速率确定模块613,其中:
[0112] 分组长度记录模块611:用于记录所在入向链路接收到的每一代多播分组的长度。
[0113] 接收时长计时模块612:用于对所在入向链路接收每一代多播分组所花费的时长进行计时.
[0114] 平均接收速率确定模块613:每接收完一代的一个多播分组时,计算分组长度记录模块611中的该代多播分组长度与接收时长计时模块612中的该代多播分组的计时值的商,以该商值更新自身保存的该代多播分组的平均接收速率值。
[0115] 如图6所示,源节点还可包括:调整代编号记录模块66,用于记录调整代发送持续时长所针对的多播分组的代编号。
[0116] 且,代发送持续时长调整模块65在调整完当前代发送持续时长后,获取当前正在发送的多播分组的代编号,确定将要发送的下一代多播分组的代编号,将该下一代的代编号记录在调整代编号记录模块66中。
[0117] 且,代发送持续时长调整模块65在确定已收齐宿节点发来的针对调整代编号记录模块66中记录的代编号的多播分组的解码结果信令:解码成功信令和/或信息量不足信令后,根据与该代编号对应的解码结果信令调整与该代编号对应代的代发送持续时长。
[0118] 图7为本发明实施例三提供的提高基于随机网络编码的多播传输效率的流程图,如图7所示,其具体步骤如下:
[0119] 步骤701:源节点初始化代发送持续总数为D=d*(H/h)。
[0120] 步骤702:宿节点为接收到的每一代多播分组分别维护一个代接收分组数目计数器Nm,i,并初始化Nm,i=0。
[0121] 其中,m为代编号,i为宿节点编号。
[0122] 步骤703:源节点确定要发送多播分组,判断已发送的当前代的多播分组数目是否小于D,若是,执行步骤705;否则,执行步骤704。
[0123] 步骤704:源节点将当前代的下一代作为新的当前代。
[0124] 步骤705:源节点构造多播分组,并发送出去。
[0125] 步骤706:宿节点i从一条入向链路收到一个多播分组,根据该多播分组中携带的代编号m,将自身为第m代多播分组维护的Nm,i调整为:Nm,i=Nm,i+1。
[0126] 步骤707:宿节点i判断是否能够对该多播分组所在代m成功解码,若是,执行步骤708;否则,执行步骤709。
[0127] 步骤708:宿节点i将携带Nm,i的解码成功信令传送到源节点,转至步骤712。
[0128] 步骤709:宿节点i判断自身是否已完成第m代到第m+1代的转换,若是,执行步骤710;否则,执行步骤711。
[0129] 步骤710:宿节点i根据已接收到的所有第m代的多播分组中的编码向量,计算成功解码还需的编码向量,将计算得到的编码向量和Nm,i携带在信息量不足信令中发送给源节点,转至步骤712。
[0130] 步骤711:宿节点i等待下一个多播分组,转至步骤706。
[0131] 步骤712:源节点接收到宿节点i发来的控制信令,判断该信令为解码成功信令还是信息量不足信令,若为解码成功信令,执行步骤714;若为信息量不足信令,执行步骤713。
[0132] 步骤713:源节点根据信息量不足信令中携带的代编号,从自身取出与该代编号对应的原始数据块,然后将该信息量不足信令中携带的解码成功还需的编码向量与原始数据块分别相乘,将得到的每个数据块放入一个多播分组,将各多播分组通过单播路由机制发送给宿节点i。
[0133] 步骤714:源节点判断是否已收齐所有宿节点发来的第m代的控制信令:解码成功信令或信息量不足信令,若是,执行步骤716;否则,执行步骤715。
[0134] 步骤715:源节点继续等待下一个控制信令,转至步骤712。
[0135] 步骤716:源节点判断是否所有宿节点发来的控制信令都为解码成功信令,若是,执行步骤717;否则,执行步骤718。
[0136] 步骤717:源节点调整代发送持续总数:D=D-1或D=Max(Nm,i),本流程结束。
[0137] 其中,Max( )表示取最大值。
[0138] 步骤718:源节点调整代发送持续总数:D=D+Max(Rm,,i)或D=D*Max(d/(d-Rm,,i))或D=D*Max((Nm,i+Rm,,i)/Nm,i)。
[0139] 其中,Rm,,i表示第i个宿节点发来的携带代编号m的信息量不足信令中携带的解码成功还需的编码向量的数目。
[0140] 图8为本发明实施例四提供的提高基于随机网络编码的多播传输效率的流程图,如图8所示,其具体步骤如下:
[0141] 步骤801~811与步骤701~711相同。
[0142] 步骤812:源节点收到宿节点发来的控制信令,判断该控制信令是否为信息量不足信令,若是,执行步骤813;否则,执行步骤814。
[0143] 步骤813:源节点将该信息量不足信令中携带的解码成功还需的编码向量与原始数据块分别相乘,将得到的每个数据块放入一个多播分组,将各多播分组通过单播路由机制发送给宿节点。
[0144] 步骤814:源节点判断该控制信令中的代编号是否与自身已记录的代编号n相同,若是,执行步骤815;否则,执行步骤816。
[0145] 步骤815:源节点判断是否已收齐所有宿节点发来的与已记录的代编号n对应的控制信令,若是,执行步骤817;否则,执行步骤816。
[0146] 步骤816:源节点继续等待下一个控制信令,转至步骤812。
[0147] 步骤817:源节点判断是否所有控制信令都为解码成功信令,若是,执行步骤818;否则,执行步骤819。
[0148] 步骤818:源节点调整代发送持续总数:D=D-1或D=Max(Nm,i),本流程结束。
[0149] 其中,Max( )表示取最大值。
[0150] 步骤819:源节点调整代发送持续总数:D=D+Max(Rm,,i)或D=D*Max(d/(d-Rm,,i))或D=D*Max((Nm,i+Rm,,i)/Nm,i)。
[0151] 其中,Rm,,i表示第i个宿节点发来的携带代编号m的信息量不足信令中携带的解码成功还需的编码向量的数目。
[0152] 图9为本发明实施例三提供的提高基于随机网络编码的多播传输效率的系统组成图,如图9所示,其主要包括:宿节点和源节点,其中:
[0153] 宿节点包括:代分组接收数目计数模块91、解码模块92、缺失编码向量计算模块93,一个宿节点对应一个代分组接收数目计数模块91,每个宿节点具有一个解码模块92和一个缺失编码向量计算模块93,各模块的功能具体如下:
[0154] 代分组接收数目计数模块91:统计所在宿节点接收每一代多播分组的数目。
[0155] 解码模块92:接收到多播分组,判断是否能够对该多播分组成功解码,若是,则从所在宿节点的代分组接收数目计数模块91中获取所在宿节点接收该代多播分组的代分组接收数目,将该数目和代编号携带在解码成功信令中发送给源节点;否则,判断是否已完成从该多播分组所在代到下一代的转换,若已完成,则从所在宿节点的代分组接收数目计数模块91中获取所在宿节点接收该代多播分组的代分组接收数目,并向缺失编码向量计算模块93发送该代多播分组的代编号,接收缺失编码向量计算模块93发来的成功解码该代多播分组还需的编码向量,将该数目、该编码向量和代编号携带在信息量不足信令中发送给源节点;若未完成,则继续等待该代的下一个多播分组。
[0156] 缺失编码向量计算模块93:用于在接收到解码模块92发来的代编号后,根据所在宿节点已接收到的与该代编号对应的多播分组,计算成功解码该代多播分组还需的编码向量,将该编码向量发送给解码模块92。
[0157] 源节点包括:解码结果信令接收模块94和代发送持续总数调整模块95,其中:
[0158] 解码结果信令接收模块94:接收各宿节点发来的解码成功信令和信息量不足信令,将该解码成功信令或信息量不足信令发送给代发送持续总数调整模块95。
[0159] 代发送持续总数调整模块95:接收解码结果信令接收模块94发来的解码成功信令或信息量不足信令,当确定已经收齐宿节点发来的针对一代多播分组的解码结果信令:解码成功信令或信息量不足信令后,判断宿节点发来的针对该代多播分组的解码结果信令是否都为解码成功信令,若是,根据各解码成功信令中的各宿节点的该代分组接收数目,调整当前代发送持续总数;否则,根据各信息量不足信令中的成功解码还需的编码向量的个数和/或代分组接收数目,调整当前代发送持续总数。根据调整后的代发送持续总数,进行下一代多播分组的发送。
[0160] 另外,本实施例中的源节点还可包括:调整代编号记录模块96,用于记录调整代发送持续总数所针对的多播分组的代编号。
[0161] 且,代发送持续总数调整模块95在调整完当前代发送持续总数后,获取当前正在发送的多播分组的代编号,确定将要发送的下一代多播分组的代编号,将该下一代的代编号记录在调整代编号记录模块96中。
[0162] 且,代发送持续总数调整模块95在确定已收齐宿节点发来的针对调整代编号记录模块96中记录的代编号的多播分组的解码结果信令后,根据与该代编号对应的解码结果信令调整与该代编号对应代的代发送持续总数。
[0163] 从图4~6所示实施例可以看出,当所有宿节点能够对某一代的多播分组成功解码时,源节点根据各宿节点接收该代多播分组的最小接收速率,减少代发送持续时长,从而减少了冗余多播分组的发送;当只有部分宿节点或者没有任何宿节点能够对某一代多播分组成功解码时,源节点则根据不能成功解码的各宿节点发来的成功解码还需的最大编码向量的个数,增加代发送持续时长,从而提高了成功解码的概率,提高了多播传输可靠性。
[0164] 从图7~9所示实施例可以看出,当所有宿节点能够对某一代的多播分组成功解码时,源节点根据各宿节点接收该代多播分组的数目,减少代发送持续总数,从而减少了冗余多播分组的发送;当只有部分宿节点或者没有任何宿节点能够对某一代多播分组成功解码时,源节点则根据不能成功解码的各宿节点发来的成功解码还需的最大编码向量的个数和/或接收该代多播分组的数目,增加代发送持续时长,从而提高了成功解码的概率,提高了多播传输可靠性。
[0165] 本发明实施例中,将代发送持续时长和代发送持续数目可统称为代发送持续宽度。
[0166] 以上所述仅为本发明的过程及方法实施例,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。