提高基于随机网络编码的多播传输效率的方法及装置的制作方法

文档序号:7654537阅读:169来源:国知局
专利名称:提高基于随机网络编码的多播传输效率的方法及装置的制作方法
技术领域
本发明涉及网络编码技术领域,具体涉及一种提高基于随机网络编码的 多播传输效率的方法及装置。
背景技术
所谓网络编码,就是指让网络中的节点不光拥有存储转发数据分组的能 力,还能够对信息进行编码操作,从而能够大幅度提高网络在执行多播应用 时的吞吐率和带宽利用率。图1给出了一个通过网络编码改善网络吞吐率的网络拓朴图,如图l所示,假设图中所有线路的传输速率均为lbit/单位时间,而节点S要利用该网 络同时向节点Y和节点Z多播信息。假设某一单位时间内,S向T和U分 别发出比特b!和b2,如果每个节点都只有存储转发功能,则节点W只能从 b,和b2中选择一 个传给节点X,显然节点Y和节点Z无法同时收全b!和b2 , 网络提供给节点S到节点Y和Z的多播速率小于2bit/单位时间。而如果在 该网络的节点中引入编码功能,即让节点W将b,和b2作异或运算的结果传 给节点X,再由X将该结果分别传给Y和Z,则节点Y可以通过该结果和 自己从节点T收到的比特求解出节点S发送给U的比特。而节点Z也可以 通过类似的方式收到S发给T的比特。从而使S向Y和Z多播的速率达到 了 2bit/单位时间。现有技术已经证明任何网络中,假设在进行单播时源到各接收点 {丁1,丁2,...,丁11}的最大速率分别为(MFi,MF2,…,MFn),则该源必定能够以 min{MFm(m=l,2,...,n) }的速率同时对所有接收节点进行多播,将min{MFm (m=l,2,...,n) }称为源节点到所有宿节点的最大流中的最小值。而从图l可以看到,若节点不具备编码功能,该速率min(MFm"2bit/单位时间通常是无 法达到的,而只有引入了网络编码,该速率才可以达到。根据网络中的节点的编码向量分配方法的不同,网络编码技术产生了随 机网络编码和确定性网络编码两个分支。随机网络编码是指网络中所有链路 的编码向量都是随时间变化的,即每个节点在得到 一 次发送机会后都随机地 对已经收到的数据进行编码操作并且发送出去。使用随机网络编码的网络中使用了 "代"的概念,即将数据源需要多 播到宿节点的所有原始数据块分为若干组,除最后一组,每组含有相等数量 的原始数据块。在整个多播过程中,节点的编码操作都只在属于同一组的原 始数据块及它们进行线性组合后生成的新数据块之间进行。称一组原始数据 块和由它们线性组合生成的全部新数据块组成的集合为一代。图2给出了现有的基于随机网络编码的多播流程图,如图2所示,其具 体步骤如下步骤201:在多播过程开始之前,在现有网络的基础上计算出一个多播 过程使用的逻辑子拓朴。步骤202:预先设定分组发送速度调整周期TO和冗余分组门限NO,且 每个中间节点和每个宿节点分别维护一个冗余分组计时器t和冗余分组计数 器n,并初始化t=0, n=0。步骤203:子拓朴中的源节点在每次要发送一个数据块时,随机生成一 个d维向量,计算该d维向量.表示本代所有待发原始数据块的原始数据向 量,然后将计算得到的数据块封装入分组,将该数据块的代编号和生成的d 维编码向量填入分组头部后,将该分组发送出去。假设该子拓朴中源节点到所有宿节点最大流中的最小值是A块/单位时间,则源节点向外发送数据的速率是/7块/单位时间。多播分组的格式如图3所示,主要由分组头部和分组内容组成,其中,分组头部包括代编号和编码向量如向量元素1、向量元素2.....向量元素d,分组内容即数据块。步骤204:中间节点收到多播分组,判断该分组是否携带了新信息即 该分组是否会使得线性空间增大,若是,执行步骤205;否则,执行步骤206。 判断该分组是否携带了新信息的具体过程为假设在收到该分组前,该 中间节点共收到了 "个与该分组属于同一代的分组,其中,共有6(6《d) 个分组头部中封装的编码向量是线性无关的,则收到该分组之后,该分组头 部中的编码向量和原有分组头部中的向量共a+l个,如果该a+l个向量中有 6+1个向量线性无关,则称该分组携带了新信息。步骤205:中间节点将该分组保存到緩存空间中,转至步骤212。 中间节点丟弃该分组,令n=n+l 。中间节点判断t^TO是否成立,若是,执行步骤208;否则,步骤206: 步骤207:执行步骤212。 步骤208:执行步骤211。 步骤209: 步骤210V=V-VS,其中Vs为调整步长 步骤211: 步骤212:中间节点判断n^NO是否成立,若是,执行步骤209;否则,中间节点向发来该分组的上游节点发送减少发送速度信令。 上游节点收到该减少发送速度信令后,调整分组发送速度 V'为调整后的分组发送速度,V为调整前的分组发送速率, 转至步骤212。 中间节点令t二O, n=0。中间节点的 一条出向链路获得一个发送机会,中间节点将緩 存空间中的所有当前代的分组所封装的数据块进行一次随机线性组合,生成 一个数据块,并将各分组头部中的编码向量进行相同的随机线性组合,得到 一个新的编码向量,将该生成的数据块封装入一个分组,将当前代的代编号 和得到的新编码向量填入该分组头部,然后将该分组以自身当前的分组发送 速率从有发送机会的出向链路发送出去。中间节点收到第 一 个属于当前代的下 一 代的分组时,清空緩存中的当前 代分组,进入下一代分组的发送过程,即此后下一代变为新的当前代,以 后若再收到原当前代的分组,直接丟弃,不再处理。步骤213:宿节点收到中间节点发来的多播分组,根据已保存的当前代 的分组中的编码向量和该分组中的编码向量,判断是否能解码成功,若是, 对当前代的分组进行解码,将得到的原始数据块发送给上层实体;否则,继 续等待下一个多播分组。对于每个宿节点来说,在步骤213中当收到中间节点发来的多播分组 后,也要如中间节点一样先执行步骤204 211所述的过程,且在确定分组携 带了新信息后,判断是否能够解码成功。从图2所示实施例可以看出,为了减少子拓朴中的冗余信息的发送,采 取了以下措施当一个节点发现自己在一段时间内总是收到从某个上游节点 发来的不带有新信息的分组时,则确定该上游节点应该减小分组的发送速 度,于是向该上游节点发送减小发送速率的信令。上游节点在收到由某个下 游节点发送来的减小发送速率信令后,开始逐渐减小向该下游节点发送分组 的速率,直到不再收到减小发送速率的信令为止。可以看出上游节点只能被动地根据下游节点的信令,作出减少分组发 送速率的动作,在上游节点调整到合适的发送速率之前,节点间会传送相当 数量不携带新信息的分组,从而出向链路上会有大量的带宽被不必要地浪费 掉,同时也降低了多播传输效率。另外,现有技术中,为了解决原当前代与新当前代交换的过程中存在的 带宽浪费现象,提出将多代分组看作一组分组进行处理的方案,以让中间节 点将多代分组看作同一代分组来操作,从而通过减少代交换次数以减小带宽 浪费。但是,该方案要求中间节点的缓存空间中同时存储多代的分组,严重 增加了节点的緩存开销。发明内容本发明实施例提供一种提高基于随机编码网络的多播传输效率的方法及装置,以减少多播逻辑子拓朴中冗余信息的传送,提高多播效率。本发明实施例的技术方案是这样实现的一种提高基于随机网络编码的多播传输效率的方法,包括多播逻辑子拓朴中的下游节点向自身的上游节点发送自身已收到的数据块信息,上游节点接收并保存该数据块信息;所述上游节点获得发送机会,根据已保存的下游节点的数据块信息和自 身已收到的数据块信息,通过网络编码构造携带新信息的多播分组,将该多 播分组发送给下游节点。一种提高基于随机网络编码的多播传输效率的装置,包括分组接收模块,接收上游节点发来的多播分组,将已收到的分组所指示 的数据块信息发送给上游节点,将该分组存储在分组緩存模块中;下游节点数据緩存模块,存储下游节点发来的数据块信息;分组緩存模块,存储自身节点收到的多播分组;分组发送模块,在获得一个发送机会时,向线性组合模块发送组合指示, 将线性组合模块发来的向量和数据块封装入多播分组,将该多播分组从有发 送机会的出向链路发送给下游节点;线性组合模块,接收组合指示,从分组緩存模块获取当前代的所有多播 分组,从下游节点数据緩存模块获取下游节点已收到的数据块信息,根据获 取的所有多播分组和数据块信息,生成将为下游节点提供新信息的数据块, 生成与该数据块对应的向量,将生成的数据块和向量发送给分组发送模块。与现有技术相比,本发明实施例中,下游节点将自身已收到的数据块信 息发送给上游节点,这样上游节点在要向下游节点发送多播分组时,就可根 据下游节点发来的数据块信息,确定该多播分组是否将为下游节点提供新信 息,减少了不携带新信息的多播分组在多播逻辑子拓朴中的传送,从而减少 了带宽的浪费,并提高了多播效率。


图1为现有的网络编码对网络吞吐率改善的网络拓朴示意图; 图2为现有的基于随机网络编码的多播流程图;图3为基于随机网络编码的多播分组的结构示意图; 图4-1和4-2为本发明实施例一提供的提高基于随机网络编码的多播传 输效率的流程图;图5-1和5-2为本发明实施例二提供的提高基于随机网络编码的多播传 输效率的流程图;图6为本发明实施例提供的提高基于随机网络编码的多播传输效率的 装置组成图。
具体实施方式
下面结合附图及具体实施例对本发明再作进 一 步详细的说明。为方便描述起见,首先给出本发明实施例所使用的主要技术用语的定义当前代节点正在处理的分组所属的代称为当前代。编码向量通知信令当节点收到上游节点发来的携带新信息的多播分组时,节点将该分组携带的编码向量携带在该编码向量通知信令中发送给所有 上游节点;节点在向下游节点发送数据前,根据所有下游节点发来的编码向 量通知信令中提供的编码向量,判断待发送数据是否将为下游节点提供新信 息。向量緩存空间节点为自己的每一个下游节点维护一个向量緩存空间。 节点通过下游节点发来的编码向量通知信令获知每个下游节点已收到的数 据块对应的编码向量,并将该编码向量保存在为该下游节点维护的向量緩存 空间中。分组緩存空间节点为自己的每一个上游节点维护一个分组緩存空间。 当节点收到某个上游节点发来的携带新信息的多播分组后,将该多播分组保 存在为该上游节点维护的分组緩存空间中。结束(End)信令源节点在发送完所有的原始数据后,通过该结束信 令通知全网多播过程结束。解码成功信令宿节点成功解码某代数据后向源节点反馈该解码成功信令。信息量不足信令宿节点如果在完成原当前代向新当前代转换时,仍然 没有成功解码原当前代的数据,则向源节点发送该信息量不足信令。图4为本发明实施例一提供的提高基于随机网络编码的多播传输效率 的流程图,如图4所示,其具体步骤如下步骤401:在多播过程开始前,在现有网络的基础上计算出一个多播过 程使用的逻辑子拓朴,并将计算结果发送给该子拓朴中的各节点,以通知各 节点其上游节点和下游节点、以及发送多播分组所使用的多播速率。构造多播过程使用的逻辑子拓朴的过程与现有技术相同,可以由路由 器,或者源节点,或者p2p多播过程中的服务器,或者其它拥有整个网络的 拓朴信息的节点利用现有技术计算得到。步骤402:源节点将上层实体发来的数据块分代。由于每代的原始数据块的数量越多,网络中的链路带宽和时延抖动对网 络吞吐率的不利影响越小,但编码向量在多播分组中占用的开销也越大,因 此,必须根据网络环境合理选择每代的原始数据块的数目。在一般的IP网 络中,每代的原始数据块以35个左右为宜,此时可以适应一般情况下的网 络状态变化,而编码向量在多播分组中所占的开销约为2%。步骤403:源节点检测到一条出向链路有发送机会,判断是否要转入下 一代多播分组的发送,若是,执行步骤404;否则,执行步骤405。源节点可预先设定每代分组的持续发送总数,当已发送的当前代的多播 分组的数目小于该持续发送总数时,确定继续进行当前代分组的发送;当已 发送的当前代的多播分组的数目等于该持续发送总数时,确定要转入下一代 分组的发送。或者,源节点也可预先设定每代分组的持续发送时长,当发送当前代分 组已持续的时长小于该持续发送时长时,确定继续进行当前代分组的发送; 当发送当前代分组已持续的时长等于该持续发送时长时,确定要转入下一代分组的发送。本实施例中,当源节点判定要转入下一代多播分组的发送后,进一步判断当前代是否为最后一代,若是,将结束(END)信令多播到自身的所有出 向链路上,结束本次多播过程;否则,执行步骤404。步骤404:源节点将当前代的下 一代作为新的当前代。步骤405:源节点随机生成一个d维编码向量,然后将该d维编码向量 与当前代的d个待发送原始数据块进行矩阵相乘,将相乘得到的数据块封装 入多播分组,然后将当前代的代编号以及该d维编码向量填入多播分组头部 后,将该多播分组从有发送机会的出向链路发送出去。这里,d为原始数据块的数目,d为自然数。多播分组的格式如图3所示。步骤406:中间节点收到多播分组,且该多播分组携带的代编号 > 当前 代的代编号,判断该多播分组是否携带了新信息,若是,执行步骤407;否 则,丢弃该多播分组,转至步骤409。这里,当前代指的是中间节点正在进行的多播分组发送过程中的多播分 组所属的代。中间节点收到第一个属于第一代的多播分组之后,将第 一代作为当前 代,此后,可通过如下方法确定当前代的代编号更改当中间节点的当前代 为第m代,且该中间节点的所有入向链路都已收到第m+l代的多播分组时, 或者某条入向链路已收到第m+2代的多播分组时,中间节点将当前代的下 一代作为新的当前代。若中间节点收到代编号 < 当前代编号的多播分组,会直接将该多播分组 丟弃。中间节点判断该多播分组是否携带了新信息的过程与现有技术相同, 即若中间节点在收到该多播分组前,已收到了 a个与该多播分组属于同一 代的多播分组,则若该a+l个多播分组头部中的a+l个编码向量线性无关, 则确定该多播分组携带了新信息。15步骤407:中间节点根据该多播分组的代编号,将该多播分组保存到与 该代编号对应的分组緩存空间中,并生成一个编码向量通知信令,在该信令 中填入该多播分组的编码向量和代编号,将该信令广播到自己所有的上游节点。中间节点为代编号 > 当前代编号的每个代分配一个分组缓存空间,用于 保存已收到的各代的多播分组。且,当中间节点确定当前代的代编号已更新 即已开始转入新当前代的多播分组的发送后,将属于原当前代的多播分组 全部从分组緩存空间中清除。在本步骤中,中间节点也可不将多播分组的编码向量填入编码向量通知 信令,而将该多播分组中的数据块所对应的原始数据块标识填入该信令,该 原始数据块标识可根据各原始数据块所对应的编码向量和该多播分组中的 编码向量推导得知,例如当步骤405中随机生成的d维编码向量与d个原 始数据块进行矩阵相乘时,设定按照d个原始数据块在该d个原始数据块构 成的矩阵中的行位置,分别将位于第1行的原始数据块称为原始数据1、位于第2行的原始数据块称为原始数据块2.....依此类推。这样,若多播分组中的编码向量为(1, 0, 1, 0,...),则可得知该多播分组中的数据块 所对应的原始数据块标识为1和3。另外,中间节点也可根据已收到的多 播分组中的编码向量,确定成功解码还需的编码向量或原始数据块标识,将 该成功解码还需的编码向量或原始数据块标识填入编码向量通知信令,例 如设原始数据块的个数为d个,中间节点已收到的多播分组中的编码向量 为e个,则中间节点可通过矩阵运算,构造出d-e个编码向量,该d-e个编 码向量与所述e个编码向量线性无关。步骤408:中间节点的上游节点收到该编码向量通知信令,将该信令中 的编码向量放入自身为该中间节点维护的、且与该信令中的代编号对应的向 量緩存空间中。每个中间节点为自身的每个下游节点分别维护 一 个向量緩存空间,用于 存储该下游节点发来的各代的编码向量。当中间节点的上游节点确定当前代的代编号已更新即已开始转入新当 前代的多播分组的发送后,将为自身的所有下游节点维护的、属于原当前代 的编码向量全部从向量緩存空间中清除。另外,中间节点在所有入向链路都已收到结束信令后,或者在收到第一 个结束信令预定时长后,会将分组緩存空间和向量緩存空间清空,并将结束 信令多播到所有出向链路,并在确认所有下游节点已经收到该结束信令后退出当前多播过程。步骤409:中间节点的出向链路获得一个发送机会,中间节点将自身分 组緩存空间中的、所有属于当前代的多播分组头部中的编码向量进行一次随 机线性组合,生成一个新的向量,称该向量为待判向量。步骤410:中间节点通过自身为下游节点维护的、当前代的向量緩存空 间中保存的编码向量,判断该待判向量对应的待发送数据块是否将为下游节 点提供新信息,若是,执行步骤412;否则,执行步骤411。设该中间节点为下游节点维护的、当前代的向量緩存空间中已保存了 a 个编码向量,该a个编码向量线性无关,则若该待判向量加入该a个编码向 量后,该a+l个编码向量线性无关,则确定该待判向量对应的待发送数据块 将为下游节点提供新信息。可以看出,在整个判断待发送数据块是否将为下游节点提供新信息的过 程中,参与运算的都只是编码向量而非数据,而编码向量的长度一般只有多播分组总数据量的2%,所以判断过程并不会明显增加计算负担,提高了带宽利用率。由于中间节点发送多播分组可通过单播方式也可通过多播方式,当通过 单播方式时,中间节点在构造多播分组时,只需考虑为单播的下游节点提供 新信息即可。而当通过多播方式时,中间节点在构造多播分组时,则希望该 多播分组能够为尽可能多的多播的下游节点提供新信息,当然最好能为多播 的所有下游节点都能提供新信息。在实际应用中,中间节点通常可预先设定 一个百分比,将多播的下游节点总数乘以该百分比,向下取整后得到一个数目,只要该待判向量对应的待发送多播分组能够为多播的下游节点中的所述 数目的下游节点同时提供新信息,就认为满足发送条件。步骤411:中间节点确定不满足发送条件,重新对所有当前代的多播分 组中的编码向量进行随机线性组合,直到确定随机线性组合得到的待判向量 对应的待发送数据块将为下游节点提供新信息时,执行步骤412。在步骤409 411中,中间节点也可根据自身为下游节点维护的、当前代 的向量緩存空间中保存的编码向量,构造出若干个与自身已保存的编码向量 线性无关的编码向量,根据构造出的编码向量分析能够为下游节点带来新信 息的多播分组对应的编码向量所应满足的规则,根据该规则,对自身分组緩 存空间中的、当前代的所有多播分组中的编码向量进行线性组合,直至得到 一个满足该规则的编码向量,则可确定该编码向量对应的多播分组将为下游 节点提供新信息。例如中间节点根据构造出的编码向量分析出根据下游 节点已收到的多播分组已能够成功解码原始数据块1和2,则确定在构造能 够为下游节点带来新信息的多播分组对应的编码向量时,只需考虑该编码向 量是否能够成功解码原始数据块1和2之外的原始数据块即可。这样,可以 省略判断构造的编码向量对应的待发送数据块是否将为下游节点提供新信 息的步骤。步骤412:中间节点确定满足发送条件,采用与生成待判向量相同的线 性组合方法,对已收到的当前代的多播分组中的数据块进行线性组合,生成 待判向量对应的待发送数据块,将该待发送数据块封装入一个多播分组,在 该多播分组的头部填入当前代的代编号和该待判向量,将该多播分组从有发 送机会的出向链路发送出去。步骤413:宿节点收到代编号> 当前代编号的多播分组,判断该多播分 组是否携带了新信息,若是,执行步骤414;否则,丢弃该多播分组,继续 等待下一个多播分组,本流程结束。宿节点确定当前代的代编号的过程以及确定当前代的代编号更改的过 程与步骤406中所述中间节点相同。若宿节点收到代编号 < 当前代编号的多播分组,会直接将该多播分组丟弃。步骤414:宿节点将该多播分组保存到与该多播分组中的代编号对应的 分组緩存空间中,生成一个编码向量通知信令,在该信令中填入该多播分组 的编码向量和代编号,将该信令广播到自己所有的上游节点。可以看出,步骤414与步骤407类似。同样,与步骤408类似,宿节点 的上游节点收到该编码向量通知信令,将该信令中的编码向量放入自身为该 宿节点维护的、与该信令中的代编号对应的向量緩存空间中。步骤415:宿节点对与该多播分组中的代编号对应的、分组緩存空间中 的所有多播分组中的数据块进行解码,判断是否解码成功,若是,执行步骤 416;否则,执行步骤417。步骤416:宿节点向源节点返回携带代编号的解码成功信令,将解码得 到的原始数据块传送给上层实体,并将緩存空间中保存的与该多播分组中的 代编号对应的所有多播分组删除,继续等待下一个多播分组,本流程结束。与步骤416对应,本实施例中,源节点也可根据如下方法确定是否开始 发送下一代分组当源节点收到宿节点返回的解码成功信令后,也可根据该信令中携带的 代编号,判断是否已经收齐所有宿节点发来的携带该代编号的解码成功信 令,若是,则确定当前代分组发送过程结束,开始发送下一代多播分组;否 则,继续等待下一个携带该代编号的解码成功信令。步骤417:宿节点判断当前是否满足信息量不足信令发送条件,若是, 执行步骤418;否则,继续等待下一个多播分组,本流程结束。若宿节点的当前代为第m代,而所有的入向链路都开始收到第m+l代 的分组,或者某条入向链路已经收到了第m+2代的分组,当前代数据块仍 不能够正确解码,则宿节点确定满足信息量不足信令发送条件。步骤418:宿节点将成功解码缺失信息携带在信息量不足信令中发送给 源节点,该信令同时携带代编号。具体地,若宿节点已收到的当前代的多播分组中,包含f个线性无关的编码向量,则宿节点需生成d-f个编码向量,使得该d-f个编码向量与已收 到的f个编码向量即共d个编码向量线性无关,宿节点可将该d-f个编码 向量或已收到所述f个编码向量携带在信息量不足信令中发送给源节点。步骤419:源节点收到宿节点发来的信息量不足信令后,根据该信令中 携带的代编号以及成功解码缺失信息,对代编号对应代的原始数据块进行线 性组合,将得到的数据块封装入多播分组,并以相同的线性组合方法,对原 始数据块对应的编码向量进行线性组合,将得到的编码向量填入多播分组头 部,并添加代编号头后通过单播路由机制发送至所述发来信息量不足信令的 宿节点。例如若信息量不足信令中携带了 d-f个解码成功还需的编码向量,则 源节点将该d-f个编码向量分别与信息量不足信令中携带的代编号对应的d 个原始数据块进行矩阵相乘,将每次相乘得到的数据块封装入一个多播分 组,将得到的d-f个多播分组通过单播路由机制发送至所述发来信息量不足 信令的宿节点。网络中的所有节点收到该以单播方式传送的多播分组后,将该多播分组 作为传输优先级最高的多播分组来发送。步骤420:宿节点收到通过单播路由机制发来的多播分组后,将该多播 分组放入与该多播分组中的代编号对应的分组緩存空间,然后根据该多播分 组头部中的代编号,从分组緩存空间中读取与该代编号对应的多播分组中的 所有编码向量,根据该读取的编码向量与该收到的多播分组头部中的编码向 量,判断是否能够解码成功,若是,则向源节点发送携带代编号的解码成功 信令,继续等待下一个多播分组;否则,继续等待源节点发来的多播分组。在本发明实施例中,在宿节点确定已进入新当前代的分组发送过程而对 原当前代的解码仍不成功后,也可通过如下方法获取成功解码还需的数据首先,每个中间节点在确定已进入新当前代的分组发送过程后,仍在预 定时长内暂存储原当前代的分组;然后,宿节点确定已进入新当前代的分组发送过程而对原当前代的解码仍不成功后,将成功解码缺失信息和原当前代 代编号携带在信息量不足信令中,将该信令由下而上逐级反馈给各中间节 点,当中间节点收到宿节点发来的信息量不足信令后,根据该信令中的成功 解码缺失信息,判断自身是否能够提供成功解码还需的数据,若能,则对自 身保存的原当前代的所有多播分组进行线性组合,将得到的数据块封装入多 播分组,然后对各数据块对应的编码向量进行相同的线性组合,将得到的新 编码向量和代编号封装入多播分组头部,然后将该多播分组发送给宿节点,同时,停止该信息量不足信令的传送。若所有中间节点都未保存与所述信息 量不足信令中的缺失信息对应的多播分组,则该信令将被传送给源节点,由 源节点构造与该缺失信息对应的多播分组,并将该多播分组传送给宿节点。图4所示实施例给出的是,中间节点和宿节点只要收到携带新信息的多 播分组,就将该多播分组中的编码向量通过编码向量通知信令发送给上游节 点。在实际应用中,为了减少信令开销,中间节点或宿节点也可每隔一段时 间,向上游节点发送一次自身在该段时间内收到的、携带新信息的多播分組 中的编码向量。在图4所示实施例中,每个中间节点或宿节点在收到 一个携带了新信息 的多播分组后,都要将该多播分组的编码向量通过编码向量通知信令发送给 上游节点,以便上游节点在发送多播分组时,根据自身緩存的所有下游节点 的编码向量,判断待发送多播分组是否将为下游节点提供新信息。该处理过 程在网络状况不稳定时,可以避免冗余多播分组的传送,提高带宽利用率, 但是,编码向量通知信令的频繁发送也会增加网络开销。对于多播分组长度 较短,链路状况不稳定的网络,则可以采用以下方法减少编码向量通知信令 带来的网络开销图5为本发明实施例二提供的提高基于随机网络编码的多播传输效率 的流程图,如图5所示,其具体步骤如下 步骤501与步骤401相同。步骤502:每个中间节点为自身的每个下游节点分别设置一个状态标志位,且将该状态标志位初始化为0;同时,每个中间节点和每个宿节点分别 为自身的每个上游节点分别设置一个状态标志位,且将该状态标志位初始化 为0。当中间节点确定已完成从原当前代到新当前代的转换时,该中间节点要 将自身为每个下游节点和每个上游节点设置的状态标志位置0;当宿节点确 定已完成从原当前代到新当前代的转换时,也要将自身为每个上游节点设置 的状态标志位置0。步骤503 506与步骤402 405相同。步骤507:中间节点收到代编号> 当前代编号的多播分组,判断该多播 分组是否携带了新信息,若是,执行步骤508;否则,执行步骤511。步骤508:中间节点根据该多播分组的代编号,将该多播分组保存到与 该代编号对应的分组緩存空间中。步骤509:中间节点判断发送该多播分组的上游节点的状态标志位是否 为1,若是,执行步骤510;否则,转至步骤514。步骤510:中间节点将该多播分组头部中的编码向量和代编号通过编码 向量通知信令发送给上游节点,转至步骤514。上游节点收到该编码向量和代编号后,将该编码向量保存到自身为所述 中间节点维护的、与该代编号对应的向量缓存空间中。步骤511:中间节点丢弃该多播分组,并判断自身保存的该上游节点的 状态标志位是否为O,若是,执行步骤512;否则,转至步骤514。步骤512:中间节点生成一个编码向量通知信令,在该信令中填入自身 已收到的当前代的所有多播分组的编码向量和代编号,将该信令发送给发来 该多播分组的上游节点,同时将自身保存的该上游节点的状态标志位置1。步骤513:中间节点的上游节点收到该编码向量通知信令,将该信令中 的编码向量放入自身为该中间节点维护的、且与该信令中的代编号对应的向 量緩存空间中,同时将自身保存的该下游节点的状态标志位置1。步骤514:中间节点的一条出向链路获得一个发送机会,中间节点将自身緩存空间中的、所有属于当前代的多播分组头部中的编码向量进行一次随 机线性组合,生成一个新的向量,称该向量为待判向量。步骤515:中间节点判断自身保存的与该出向链路对应的下游节点的状 态标志位是否为0,若是,执行步骤518;否则,执行步骤516。 步骤516~518与步骤410~412相同。步骤519:宿节点收到代编号> 当前代编号的多播分组,判断该多播分 组是否携带了新信息,若是,执行步骤520;否则,执行步骤523。步骤520:宿节点根据该多播分组的代编号,将该多播分组保存到与该 代编号对应的分组緩存空间中。步骤521:宿节点判断发送该多播分组的上游节点的状态标志位是否为 1,若是,执行步骤522;否则,转至步骤526。步骤522:宿节点将该多播分组头部中的编码向量和代编号通过编码向 量通知信令发送给上游节点,转至步骤526。上游节点收到该编码向量和代编号后,将该编码向量保存到自身为所述 中间节点维护的、与该代编号对应的向量緩存空间中。步骤523:宿节点丟弃该多播分组,并判断自身保存的该上游节点的状 态标志位是否为O,若是,执行步骤524;否则,继续等待下一个多播分组, 本流程结束。步骤524:宿节点生成一个编码向量通知信令,在该信令中填入自身已 收到的当前代的所有多播分组的编码向量和代编号,将该信令发送给发来该 多播分组的上游节点,同时将自身保存的该上游节点的状态标志位置1。步骤525:宿节点的上游节点收到该编码向量通知信令,将该信令中的 编码向量放入自身为该宿节点维护的、且与该信令中的代编号对应的向量緩 存空间中,同时将自身保存的该宿节点的状态标志位置1。步骤526 - 531与步骤415 ~420相同。图6为本发明实施例提供的提高基于随机网络编码的多播传输效率的 装置组成图,如图6所示,其主要包括分组接收模块61、向量緩存模块62、分组緩存模块63、分组发送模块64和线性组合模块65,其中分组接收模块61:用于接收上游节点发来的代编号> 当前代编号的多 播分组,根据该多播分组头部中的代编号,在分组緩存模块63中查找与该 代编号对应的多播分组头部中的编码向量,根据查找到的所有编码向量以及 该多播分组头部中的编码向量,判断该多播分组是否携带了新信息,若是, 将该多播分组存储到分组緩存模块63中,将该多播分组头部中的编码向量 和代编号通过编码向量通知信令发送给所有上游节点;否则,丢弃该多播分 组。向量緩存模块62:用于存储下游节点发来的编码向量通知信令中的编 码向量和代编号。分组緩存模块63:用于存储分组接收模块61发来的自身节点收到的携 带新信息的多播分组。分组发送模块64:用于在确定有一条出向链路获得一个发送机会时, 向线性组合模块65发送组合指示,接收线性组合模块65发来的向量和数据 块,将该数据块封装入多播分组,将该向量和当前代编码封装入多播分组头 部,将该封装好的多播分组从所述出向链路发送给下游节点。线性组合模块65:用于在收到分组发送模块64发来的组合指示后,从 分组緩存模块63获取当前代的所有多播分组中的编码向量,对该获取的所 有编码向量进行随机线性组合,生成一个待判向量,从向量缓存模块62中 获取有发送机会的出向链路对应的下游节点的、与当前代标识对应的所有编 码向量,根据获取的所有编码向量,判断该待判向量对应的待发送多播分组 是否将为下游节点提供新信息,若是,采用与生成该待判向量相同的线性组 合方法,对分组緩存模块63中緩存的当前代的所有多播分组中的数据块进 行线性组合,将生成的数据块和该待判向量发送给分组发送模块64;否则, 继续对自身节点当前代的所有编码向量进行随机线性组合,直至所生成的待 判向量对应的待发送多播分组将为下游节点提供新信息时,采用与生成该待 判向量相同的线性组合方法,对分组緩存模块63中緩存的当前代的所有多播分组中的数据块进行线性组合,将生成的数据块和该待判向量发送给分组 发送模块64。本发明实施例提供的装置还可进一步包括状态标志设置模块66:用 于为自身的每个上游节点和每个下游节点分别设置一个状态标志位,并在多 播开始时、以及自身节点完成从原当前代到新当前代的转换时,将所有状态 才示志^f立置为0。同时,分组接收模块61在判定上游节点发来的多播分组携带了新信息 时,向状态标志设置模块66查询该上游节点的状态标志位,若为1,则将 该多播分组头部中的编码向量和代编号通过编码向量通知信令发送给该上 游节点;否则,不将该多播分组头部中的编码向量和代编号发送给该上游节 点。在判定上游节点发来的多播分组不携带新信息时,向状态标志设置模块 66查询该上游节点的状态标志位,若为0,则将状态标志设置模块66中存 储的该上游节点的状态标志位置为1,并丟弃该多播分组,同时从分组緩存 模块63中获取与该多播分组头部中的代编号对应的所有多播分组头部中的 编码向量和代编号,将获取的所有编码向量和代编号通过编码向量通知信令 发送给所述上游节点;若为1,直接丟弃该多播分组。同时,分组发送模块64还可在确定有一条出向链路获得一个发送机会 时,向状态标志查询模块66查询获得该出向链路指向的下游节点的状态标 志位,并将查询得到的状态标志位与线性组合指示一起发送给线性组合模块 65。线性组合模块65接收分组发送模块64发来的状态标志位,并在生成待 判向量后,判断分组发送模块64发来的状态标志位是否为0,若是,釆用 与生成该待判向量相同的线性组合方法,对分组緩存模块63中緩存的当前 代的所有多播分组中的数据块进行线性组合,将生成的数据块和该待判向量 发送给多播分组发送模块64;否则,判断该待判向量对应的待发送多播分 组是否将为下游节点提供新信息。另外,本发明实施例提供的装置还可包括结束处理模块67,用于在自身的所有入向链路都已收到上游节点发来的结束信令后,或者自身收到第一个结束信令预定时长后,向分组緩存模块63和向量緩存模块62发送清除指令,同时将该结束信令多播到自身的所有出向链路,并在确认收到自身所 有下游节点发来的结束确认信令后退出该多播过程。同时,所述分组缓存模块63在收到所述清除指令后,清除自身缓存的 所有多播分组。所述向量緩存模块62在收到所述清除指令后,清除自身緩存的所有编 码向量。另外,本发明实施例提供的装置还可进一步包括解码模块68:接收 分组接收模块61发来的多播分组,从分组緩存模块63中取出与该多播分组 携带的代编号对应的所有多播分组中的编码向量,根据该取出的编码向量以 及该多播分组中的编码向量,判断是否能够成功解码,若是,从分组緩存模 块63中取出与该多播分组携带的代编号对应的所有多播分组,对取出的所 有多播分组以及分组接收模块61发来的多播分组中的数据块进行解码,将 解码得到的原始数据块发送给上层实体,并向源节点返回携带代编号的解码 成功信令;否则,当前是否已完成分组接收模块61发来的多播分组携带的 代编号所对应代向下一代的转换,若是,将成功解码缺失信息和所述代编号 携带在信息量不足信令中发送给源节点,接收源节点发来的携带所述代编号 的多播分组,根据该多播分组以及从分组緩存模块63取出的与所述代编号 对应的所有多播分组,对该代的数据块进行解码。在实际应用中,分组接收模块61也可在判定多播分组携带了新信息之 后,将成功解码还需的编码向量发送给向量緩存模块62保存。向量緩存模块62也可以原始数据块信息存储模块62代替,原始数据块 信息存储模块62中保存的是下游节点发来的代编号和已收到的多播分组所 指示的原始数据块标识。此时,分组接收模块61在判定多播分组携带了信 息之后,要将该多播分组所指示的原始数据块标识发送给原始数据块信息存 储模块62。26向量緩存模块62和原始数据块信息存储模块62都可称为下游节点数据 缓存模块。
需要指出的是,本发明实施例中涉及到的所有运算可都在8bit的Galois
内进行。
从图4所示实施例可以看出,下游节点在确定收到的多播分组携带新信 息时,将该多播分组的编码向量和代编号发送给所有上游节点,这样上游节 点在要向下游节点发送多播分组时,就可根据下游节点已发来的编码向量, 得到该多播分组是否将为下游节点提供新信息,避免了不携带新信息的多播 分组在多播逻辑子拓朴中的传送,减少了带宽的浪费,并提高了多播效率。
同时,本发明实施例在确定所有入向链路都收到新当前代的多播分组、 或者, 一条入向链路已收到新当前代的下一代的多播分组时,确定已完成原 当前代向新当前代的转换,不需增加节点开销。
另外,本发明实施例中,当宿节点不能正确解码时,将成功解码缺失信 息返回给源节点,源节点根据该信息构造成功解码还需的数据块,然后将该 数据块携带在多播分组中通过单播路由发送给宿节点,避免了冗余数据块的 发送,且提高了解码成功率。
以上所述仅为本发明的过程及方法实施例,并不用以限制本发明,凡在 本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在 本发明的保护范围之内。
2权利要求
1、一种提高基于随机网络编码的多播传输效率的方法,其特征在于,包括多播逻辑子拓扑中的下游节点向自身的上游节点发送自身已收到的数据块信息,上游节点接收并保存该数据块信息;所述上游节点获得发送机会,根据已保存的下游节点的数据块信息和自身已收到的数据块信息,通过网络编码构造携带新信息的多播分组,将该多播分组发送给下游节点。
2、 如权利要求l所述的方法,其特征在于,所述下游节点向自身的上游节 点发送自身已收到的数据块信息为下游节点向自身的所有上游节点发送自身 已收到的数据块信息。
3、 如权利要求1或2所述的方法,其特征在于,所述下游节点向自身的上 游节点发送自身已收到的数据块信息之前进一步包括下游节点接收上游节点 发来的多播分组,检测到该多播分组携带了新信息;所述下游节点向自身的上游节点发送自身已收到的数据块信息为下游节 点向上游节点发送该携带新信息的多播分组所指示的数据块信息。
4、 如权利要求l所述的方法,其特征在于,所述下游节点向上游节点发送 的数据块信息为下游节点已收到的所有多播分组中的线性无关的编码向量;或者,下游节点已收到的多播分组所指示的原始数据块信息; 或者,下游节点根据已收到的所有多播分组中的编码向量,所确定的成功 解码还需的编码向量或原始数据块信息。
5、 如权利要求1或4所述的方法,其特征在于,所述上游节点构造携带新 信息的多播分组包括A、上游节点将自身保存的所有属于当前代的多播分组头部中的编码向量 进行线性组合,生成一个待判向量,根据自身保存的下游节点已收到的数据块 信息,判断该待判向量对应的待发送多播分组是否将为下游节点提供新信息, 若是,执行步骤B;否则,返回执行生成待判向量的动作;B、根据与生成待判向量相同的线性组合方法,对自身保存的所有属于当 前代的多播分组中的数据块进行线性组合,生成一个数据块,将该数据块、所 述待判向量以及当前代标识封装入多播分组。
6、 如权利要求l所述的方法,其特征在于,所述中间节点构造携带新信息 的多播分组包括中间节点根据自身多于一个下游节点的已收到的数据块信息、 以及自身已收到的数据块信息,构造一个能够为多于一个下游节点提供新信息 的多播分组。
7、 如权利要求l所述的方法,其特征在于,所述下游节点向自身的上游节点发送自身已收到的数据块信息之前进一步包括多播逻辑子拓朴中的中间节点预先为自身的每个上游节点和下游节点设置一个状态标志,将该状态标志初始化为无冗余标志;多播逻辑子拓朴中的宿节 点为自身的每个上游节点设置一个状态标志,将该状态标志初始化为无冗余标志;所述上游节点获得发送机会之前进一步包括所述下游节点收到上游节点 发来的不携带新信息的多播分组,判断自身为该上游节点设置的状态标志是否 指示无冗余,若否,直接丢弃该多播分组;若是,将该状态标志置为有冗余标 志,并丟弃该多播分组,同时将自身已保存的与该多播分组中的代标识对应的 所有数据块信息发送给所述上游节点,所述上游节点收到该数据块信息,将所 述下游节点的状态标志置为有冗余标志。
8、 如权利要求7所述的方法,其特征在于,所述下游节点向自身的上游节 点发送自身已收到的数据块信息之前进一步包括所述下游节点接收上游节点发来的多播分组,且检测到该多播分组携带了 新信息,判断自身为所述上游节点设置的状态标志是否指示无冗余,若否,将 该多播分组指示的数据块信息发送给所述上游节点;若是,不将该多播分组指 示的数据块信息发送给所述上游节点。
9、 如权利要求7所述的方法,其特征在于,所述上游节点获得发送机会之 后、构造携带新信息的多播分组之前进一歩包括上游节点判断自身保存的、所述获得发送机会的出向链路指向的下游节点的状态标志是否指示无冗余,若是,任意构造一个多播分组,将该多播分组发送给所述下游节点;否则,构造 携带新信息的多播分组。
10、 如权利要求7或8或9所述的方法,其特征在于,所述多播逻辑子拓 朴中的中间节点预先为自身的每个上游节点和下游节点设置一个状态标志之后 进一步包括中间节点确定自身已完成原当前代向新当前代的转换,将为每个上游节点 和下游节点设置的状态标志都重置为无冗余标志;所述多播逻辑子拓朴中的宿节点为自身的每个上游节点设置一个状态标志 之后进一步包括宿节点确定自身已完成原当前代向新当前代的转换,将为每个上游节点设 置的状态标志都重置为无冗余标志。
11、 如权利要求1所述的方法,其特征在于,所述方法进一步包括多播 逻辑子拓朴中的宿节点接收到多播分组,确定该多播分组中的代标识对应代的多播分组发送过程已经结束,且对该代的数据块解码不成功,则将成功解码缺 失信息和代标识通过控制信令发送给源节点;源节点收到所述控制信令,根据所述成功解码缺失信息对所述代标识对应 代的原始数据块进行线性组合,将得到的数据块封装入多播分组后通过单播路 由发送给宿节点,宿节点根据该多播分组以及自身已保存的多播分组进行解码。
12、 如权利要求l所述的方法,其特征在于,所述方法进一步包括中间 节点确定当前代的多播分组发送过程已经结束,暂存该当前代的多播分组;所述方法进一步包括多播逻辑子拓朴中的宿节点接收到多播分组,确定 该多播分组中的代标识对应代的多播分组发送过程已经结束,且对该代的数据 块解码不成功,则将成功解码缺失信息和代标识通过控制信令由下而上逐级反 馈给各中间节点;中间节点收到所述控制信令,根据所述成功解码缺失信息对自身暂存的所 述代标识对应代的原始数据块进行线性组合,将得到的数据块封装入多播分组后通过单播路由发送给宿节点,宿节点根据该多播分组以及自身已保存的多播 分组进行解码。
13、 如权利要求l所述的方法,其特征在于,所述上游节点保存该编码向 量和代标识之后进一步包括上游节点确定自身已完成原当前代向新当前代的转换,将当前代标识对应 的编码向量删除。
14、 如权利要求13所述的方法,其特征在于,所述上游节点通过以下步骤 确定自身已完成原当前代向新当前代的转换上游节点确定自身的所有入向链路都已收到新当前代的多播分组,或者确 定自身的一条入向链路已收到新当前代的下一代的多播分组。
15、 一种提高基于随机网络编码的多播传输效率的装置,其特征在于, 包括分组接收模块,接收上游节点发来的多播分组,将已收到的分组所指示 的数据块信息发送给上游节点,将该分组存储在分组緩存模块中; 下游节点数据緩存模块,存储下游节点发来的数据块信息; 分组緩存模块,存储自身节点收到的多播分组;分组发送模块,在获得一个发送机会时,向线性组合模块发送组合指示, 将线性组合模块发来的向量和数据块封装入多播分组,将该多播分组从有发 送机会的出向链路发送给下游节点;线性組合模块,接收组合指示,从分组緩存模块获取当前代的所有多播 分组,从下游节点数据緩存模块获取下游节点已收到的数据块信息,根据获 取的所有多播分组和数据块信息,生成将为下游节点提供新信息的数据块, 生成与该数据块对应的向量,将生成的数据块和向量发送给分组发送模块。
16、 如权利要求15所述的装置,其特征在于,进一步包括状态标志 设置模块,为自身的每个上游节点和每个下游节点分别设置一个状态标志, 并在多播开始时、以及自身节点完成从原当前代到新当前代的转换时,将所 有状态标志置为无冗余标志;所述分组接收模块进一步,接收上游节点发来的不携带新信息的多播分 组,向状态标志设置模块查询该上游节点的状态标志,若指示无冗余,则将 状态标志设置模块中该上游节点的状态标志置为有冗余标志,并丟弃该多播 分组,同时从分组緩存模块中获取与该多播分组头部中的代编号对应的所有 多播分组,将该多播分组所指示的数据块信息通过控制信令发送给所述上游节点;若指示有冗余,直接丢弃该多播分组。
17、 如权利要求16所述的装置,其特征在于,所迷分组接收模块接收 到上游节点发来的携带新信息的多播分组时,进一步向状态标志设置模块查 询该上游节点的状态标志,若该状态标志指示有冗余,则将该多播分组所指 示的数据块信息通过控制信令发送给该上游节点。
18、 如权利要求16所述的装置,其特征在于,所述分组发送模块在获 得一个发送机会时,进一步向状态标志设置模块查询获得该发送机会的出向 链路指向的下游节点的状态标志,并将查询得到的无冗余或有冗余标志指示 与线性组合指示一起发送给线性组合模块,所述线性组合模块在从分组緩存模块获取当前代的所有多播分组,从下 游节点数据缓存模块中获取下游节点已收到的当前代的所有数据块信息,若 确定分组发送模块发来无冗余指示,则根据获取的所有多播分组和数据块信 息,任意生成一个数据块,并生成与该数据块对应的向量,将生成的数据块 和向量发送给分组发送模块;若确定分组发送模块发来有冗余指示,则生成 携带新信息的数据块。
19、 如权利要求15所述的装置,其特征在于,进一步包括结束处理 模块,在自身的所有入向链路都已收到上游节点发来的结束信令后,或者自 身收到第一个结束信令预定时长后,向分组緩存模块和下游节点数据緩存模 块发送清除指令,同时将该结束信令多播到自身的所有出向链路,并在确认 收到自身所有下游节点发来的结束确认信令后退出该多播过程;所述分组緩存模块在收到所述清除指令后,清除自身緩存的所有多播分组;所述下游节点数据緩存模块在收到所述清除指令后,清除自身緩存的所 有数据块信息。
20、如权利要求15所述的装置,其特征在于,进一步包括解码模块,在 接收到多播分组后,从分组緩存模块中取出与该多播分组所在代的所有编码向 量,根据该取出的编码向量以及该多播分组中的编码向量,在检测到不能成功 解码且已完成该多播分组所在代向下一代的转换时,将成功解码缺失信息和该 多播分组的代标识携带在信息量不足信令中发送给源节点,根据源节点发来的 多播分组,对该代数据块解码。
全文摘要
本发明公开了一种提高基于随机网络编码的多播传输效率的方法,包括多播逻辑子拓扑中的下游节点向自身的上游节点发送自身已收到的数据块信息,上游节点接收并保存该数据块信息;所述上游节点获得发送机会,根据已保存的下游节点的数据块信息和自身已收到的数据块信息,通过网络编码构造携带新信息的多播分组,将该多播分组发送给下游节点。本发明还公开了一种提高基于随机网络编码的多播传输效率的装置,包括分组接收模块、下游节点数据缓存模块、分组缓存模块、分组发送模块和线性组合模块。本发明避免了带宽的浪费,提高了多播效率。
文档编号H04L12/56GK101325540SQ20071011110
公开日2008年12月17日 申请日期2007年6月11日 优先权日2007年6月11日
发明者冯莱利, 晗 刘, 庚 张, 涂晓东, 牛长喜, 王少勇 申请人:华为技术有限公司;电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1