一种无线多跳网中的实时多播方法转让专利

申请号 : CN201110412250.2

文献号 : CN102438207B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 谭国平倪新洋季敏李岳衡

申请人 : 河海大学

摘要 :

本发明公开了一种无线多跳网中的实时多播方法,包括以下步骤:构建mesh网络及网络状态评估,自适应选择最佳编码机制及编码参数,核心节点编码操作,中间节点处理,接收节点处理。本发明所设计的无线多跳网中的实时多播方法适用于移动自组网中的实时多播业务,能够根据当前网络状况自适应选择最佳编码机制及参数,提高网络的可靠性和吞吐量,同时降低网络的整体能耗并能满足业务的实时性要求。

权利要求 :

1.一种无线多跳网中的实时多播方法,其特征在于,包括以下步骤:步骤(1):利用多播通告控制包将网络初始化为mesh网络;

步骤(2):评估当前的网络状况,获得所需的所有网络参数;

步骤(3):根据当前的网络状况以及业务的实时性要求,自适应选择采用网络编码或前向纠错编码机制,同时动态调整编码参数;当编码区域中的节点密度满足执行网络编码的最低条件限制 时,选用网络编码作为编码机制,ρ表示编码区域中节点密度,Ra定义为节点信号覆盖半径的大小;当编码区域内的节点密度不满足执行网络编码的最低条件限制时,采用前向纠错编码作为编码机制;

步骤(4):采用核心节点对实时业务数据流进行分组打包,根据所选择的编码机制及编码参数,对各个分组块进行编码操作,随后将所得的编码包多播发送出去;

步骤(5):中间节点收到编码包后,判断编码包所采用的编码机制,对不同机制产生的编码包分别进行处理并转发;

步骤(6):接收端接收到足够多的编码包,恢复出实时业务数据流的原始数据包。

2.根据权利要求1所述的无线多跳网中的实时多播方法,其特征在于,所述步骤(1)具体包括如下处理步骤:步骤(11):mesh网络将所有接收节点作为mesh成员,组成多播组的接收端;

步骤(12):核心节点根据所拥有的接收节点的位置信息,选择处于相对中心位置的接收节点作为新的核心节点,以新的核心节点位置为中心,覆盖所有接收节点的最小圆形区域作为编码区域,该编码区域内的节点参与编码过程;

步骤(13):发送端通过最优路径将实时业务数据流转发至新核心节点;

步骤(14):在多播通告控制包中扩展一个记录节点地理位置的字段,各接收节点从位置服务系统中获得自己的位置信息,并将位置信息记录进该字段从而生成新的控制包,然后通过到达核心节点的最优路径将该控制包单播至核心节点。

3.根据权利要求2所述的无线多跳网中的实时多播方法,其特征在于,所述步骤(2)具体包括如下处理步骤:步骤(21):根据所述步骤(14)中多播组中的各接收节点的位置信息以及所述步骤(12)中确定编码区域的准则得到编码区域的半径大小i∈M∩i≠0,其中(xi,yi);i∈M定义为多播组中接收节点的地理位置坐标,当i等于0时表示核心节点坐标;

步骤(22):根据编码区域的半径R以及多播组中节点的个数N,得出该编码区域中节点密度步骤(23):根据公式 得到每个节点所拥有的平均邻居节点数,其中Ra定义为节点信号覆盖半径的大小。

4.根据权利要求1所述的无线多跳网中的实时多播方法,其特征在于,所述步骤(3)具体包括如下处理步骤:步骤(31):获取网络状态Td,Tl,ρ,Nnb以及实时业务所要求的最大延迟Tmax和实时业务的数据包发送间隔Ts,其中Td定义为节点间的一跳延迟,Tl定义为发送端到核心节点的平均链路延迟,ρ表示编码区域中节点密度,Nnb定义为平均邻居节点数;

步骤(32):判断编码区域内的节点密度是否满足执行网络编码的最低条件限制,并进行如下处理:步骤(321):当编码区域中的节点密度满足执行网络编码的最低条件限制 时,选用网络编码作为编码机制;Ra定义为节点信号覆盖半径的大小;

步骤a,对于不同密度下的网络环境采用不同的编码长度,即根据不同的平均邻居节点数Nnb,选择最佳编码长度L;

步骤b,判断实时业务的最大允许延迟Tmax是否能够满足执行编码长度为L的网络编码所需的最低延迟开销,判断公式为 其中 为核心节点到达编码区域边缘节点所需的最少跳数;

步骤c,根据网络状态及业务的最大允许延迟,选择编码长度为L的网络编码作为编码机制;

步骤(322):当编码区域内的节点密度不满足执行网络编码的最低条件限制时,根据网络状态及业务的最大允许延迟,选择前向纠错编码作为编码机制;

步骤d,确定前向纠错编码的编码参数k和r:

确定k和r的原则是:在允许的时间内,尽可能地增大k,剩余的时间生成r个冗余编码包,并进行如下处理:步骤e,r<0,则将k-1,并转至步骤d;

步骤f,r>0,所得k,r即确定为最佳编码参数。

5.根据权利要求1所述的无线多跳网中的实时多播方法,其特征在于,所述步骤(4)根据步骤(3)采用网络编码或前向纠错编码机制分别进行如下处理步骤:在网络编码机制下,核心节点接收来自发送端的实时业务数据流,按照时间先后顺序将数据包存入FIFO队列;

步骤(411):根据所确定的编码长度L,对FIFO队列中的数据包进行分组打包操作——每L个数据包组成一个分组块,并为每个分组块编号;

步骤(412):判断某一分组块中是否收满L个数据包:若收满,则对该分组块进行网络编码操作,否则继续等待接收来自发送端的数据包;

步骤(413):核心节点按照FIFO队列中的顺序对分组块进行随机线性编码,即在有限T域中生成一组随机系数,对分组块中的各个数据包进行线性组合;设P={p0,p1,p2,...,pL}为某一分组块中的初始数据包,E={e0,e1,e2,...,eL}为编码矩阵,其中ei;i=0,1,2,...,L是有限域中的L维随机向量,则编码包C=E·P;

步骤(414):将编码向量ei置于对应编码包的包头中,连同编码包一起发送到多播组中的所有接收节点:在前向纠错编码机制下,接收来自发送端的实时业务数据流,按照时间先后顺序将数据包存入FIFO队列;

步骤(421):根据所确定的编码参数k,对FIFO队列中的数据包进行分组打包操作——每k个数据包组成一个分组块,并为每个分组块编号;

步骤(422):核心节点依次对每组信息数据包进行编码操作,产生r个冗余信息包,采用的编码算法为系统删除码;

步骤(423):依次将每组k个信息数据包和对应的r个冗余信息包发送到多播组中的所有接收节点。

6.根据权利要求1所述的无线多跳网中的实时多播方法,其特征在于,所述步骤(5)分别根据编码包包头中是否含有编码向量,判断收到的编码包为网络编码的编码包还是前向纠错的编码包,具体包括如下处理步骤:当编码包为前向纠错编码包的,无需执行任何操作,直接将编码包多播发送;

当编码包为网络编码包的,根据包头中的资源请求标志位,判断该编码包是否是执行资源请求;步骤如下:步骤(51):从本地节点缓存中找出与新收到的编码包具有相同分组块号的编码包,记这些编码包的编码向量组成的编码矩阵为A,并进行如下处理;

步骤(511):将新收到编码包的包头中所包含的编码向量加入矩阵A后,A的秩增加,则该新编码包含有新的信息,将该含有新信息的编码包存入本地缓存;

步骤(512):将新收到编码包的包头中所包含的编码向量加入矩阵A后,A的秩不变,则该新编码不含有新的信息,直接丢弃该编码包;

步骤(52):资源请求编码包中的编码向量为发出该请求的节点所拥有的某分组块编码矩阵的零空间向量,根据零空间向量特性,从节点本地缓存中找出编码向量和该零空间向量非正交的编码包,将所获得的编码包传入多播发送模块;

步骤(53):二次编码操作的过程与网络编码过程类似,将步骤(51)从节点本地缓存中找出的相关编码包和新收到的编码包进行网络编码操作生成一个新的编码包,并将此次的编码向量连同生成的编码包一同传入多播发送模块;

步骤(54):将获得的编码包发送到多播组的所有接收节点。

7.根据权利要求1所述的无线多跳网中的实时多播方法,其特征在于,所述步骤(6)具体根据编码包包头中是否含有编码向量,判断收到的编码包为网络编码的编码包还是前向纠错的编码包,进行如下处理:步骤(61):当编码包为网络编码包的,转至步骤(63);

步骤(62):当编码包为前向纠错编码包的,将其存入节点缓存,并进行下列操作:步骤(621):当缓存中属于某一分组块的编码包个数大于等于k时,执行FEC解码操作;

步骤(622):当缓存中属于某一分组块的编码包个数小于k时,继续等待;成功解码后,将已解码过的编码包从本地缓存中删除;

步骤(63):根据包头中的资源请求标志位,判断该编码包是否是执行资源请求;

步骤(64):从本地节点缓存中找出与新收到的编码包具有相同分组块号的编码包,判断编码包是否含有新信息,并在每个分组块的第一个编码包到来时,为该分组块设置一个时长为TsL的定时器,记这些编码包的编码向量组成的编码矩阵为A,并进行如下处理;

步骤(641):将新收到编码包的包头中所包含的编码向量加入矩阵A后,A的秩增加,则该新编码包含有新的信息,将该含有新信息的编码包存入本地缓存;

步骤(642):将新收到编码包的包头中所包含的编码向量加入矩阵A后,A的秩不变,则该新编码不含有新的信息,直接丢弃该编码包;

步骤(65):资源请求编码包中的编码向量为发出该请求的节点所拥有的某分组块编码矩阵的零空间向量,根据零空间向量特性,从节点本地缓存中找出编码向量和该零空间向量非正交的编码包,将所获得的编码包传入多播发送模块;

步骤(66):根据节点本地缓存中关于某一分组块的编码包个数,判断是否能够恢复出初始数据包,并进行如下操作:-1

步骤(661):网络编码的解码过程为编码的逆过程,原始数据包P=E ·C;采用高斯消去法执行该解码过程,解码成功完成后,将已解码的编码包保存一段时间,直到编码包生存时间超时,以响应周围节点的冗余编码包资源请求;

步骤(662):在无法成功解码的情况下,检查此时是否有步骤(64)所设置的分组块定时器超时,并进行如下操作:当步骤(64)所设置的分组块定时器超时,根据节点本地缓存已有的编码包构造出冗余资源请求编码包;首先根据下式获取超时分组块编码矩阵的零空间向量nTA·n=0;rank(A)

再将超时分组块的编码包进行二次编码,除了将此次编码的编码向量加入包头外,将所获得的零空间向量n也一同存入包头中,最后将所得的编码包传入多播发送模块;

当步骤(64)所设置的分组块定时器未超时,就执行二次编码,向下游节点传递编码包;

步骤(67):将获得的编码包发送到多播组的所有接收节点。

说明书 :

一种无线多跳网中的实时多播方法

技术领域

[0001] 本发明涉及一种无线多跳网中的实时多播方法,通过联合前向纠错与网络编码,以提高网络的可靠性和吞吐量,同时降低网络的整体能耗并满足业务的实时性要求。

背景技术

[0002] 移动自组网具有网络拓扑动态变化、传输链路不稳定、节点能量受限等特点。如何在移动自组网中实现实时多播已经成为近年来的研究热点。一般而言,通过构造多播树的方法可以实现较为有效的多播,如MAODV。但是,由于多播树较为复杂的结构,以及维护多播树所耗费的大量网络资源在很大程度上影响了网络性能的提升,甚至降低网络性能。特别是在多个多播组共存的情况下,这种性能下降的趋势尤为明显。基于网格(mesh)结构的无线自组网多播路由协议虽然规避了复杂的网络维护机制,典型的如PUMA,但是其在数据分组投递时的盲目性,使网络的总体开销大大增加,同时节点的能耗也随之增大。这两种多播路由机制都无法达到或者逼近最大流最小割定理所确定的网络最大传输容量。
[0003] R.Alshwede提出的网络编码理论,推翻了传统路由机制所采用的对数据分组的存储转发模式,通过允许中间节点对数据分组进行编码操作,大大提高了网络的吞吐量,并能达到理论的最大传输容量。但是,由于网络拓扑的动态变化,并不能保证当前网络状况能很好的满足网络编码的要求,特别是节点密度要求。在节点密度相对较大的环境下,网络编码才能充分发挥优势。另外,一般的网络编码机制都在整个网络范围内进行编码操作,例如Park等提出的一种基于随机线性网络编码的多播路由协议:CodeCast。它在整个网络范围内进行编码操作,实现了在较少的控制和延迟开销下获得较大的网络吞吐量。虽然这种大范围的编码机制可以提高接收节点恢复出原始数据包的成功率,但是,当接收节点数相对于网络规模而言较小时,这种机制在相当大程度上浪费了有限的网络资源。相对于无编码操作的多播机制,网络编码还带来了额外的缓存数据分组的延时,限制了它在实时业务中的应用。尽管如此,网络编码在提升网络性能、降低网络能耗等方面还是有着巨大的优势。

发明内容

[0004] 本发明所要解决的技术问题是提供一种能够根据移动自组网的当前网络状态,以及业务的实时性要求,自适应地选择最佳编码机制,有效利用网络中的有限资源,最大化网络吞吐量,并保证高可靠性的无线多跳网中的实时多播方法。
[0005] 为了解决上述的技术问题,本发明所设计的一种无线多跳网中的实时多播方法,包括以下步骤:
[0006] 步骤(1):利用多播通告(Multicast Announcement)控制包将网络初始化为mesh网络;
[0007] 步骤(2):评估当前的网络状况,获得所需的所有网络参数;
[0008] 步骤(3):根据当前的网络状况以及业务的实时性要求,自适应选择采用网络编码或前向纠错编码机制,同时动态调整编码参数;
[0009] 步骤(4):采用核心节点对实时业务数据流进行分组打包,根据所选择的编码机制及编码参数,对各个分组块进行编码操作,随后将所得的编码包多播发送出去;
[0010] 步骤(5):中间节点收到编码包后,判断编码包所采用的编码机制,对不同机制产生的编码包分别进行处理并转发;
[0011] 步骤(6):接收端接收到足够多的编码包,恢复出实时业务数据流的原始数据包。
[0012] 进一步的,本发明的无线多跳网中的实时多播方法,步骤(1)具体包括如下处理步骤:
[0013] 步骤(11):mesh网络将所有接收节点作为mesh成员,组成多播组的接收端;
[0014] 步骤(12):核心节点根据所拥有的接收节点的位置信息,选择处于相对中心位置的接收节点作为新的核心节点,以新的核心节点位置为中心,覆盖所有接收节点的最小圆形区域作为编码区域,该编码区域内的节点参与编码过程;
[0015] 步骤(13):发送端通过最优路径将实时业务数据流转发至新核心节点;
[0016] 步骤(14):在多播通告(Multicast Announcement)控制包中扩展一个记录节点地理位置的字段,各接收节点从位置服务系统中获得自己的位置信息,并将位置信息记录进该字段从而生成新的控制包,然后通过到达核心节点的最优路径将该控制包单播至核心节点。
[0017] 进一步的,本发明的无线多跳网中的实时多播方法,所述步骤(2)具体包括如下处理步骤:
[0018] 步骤(21):根据所述步骤(14)中多播组中的各接收节点的位置信息以及所述步骤(12)中确定编码区域的准则得到编码区域的半径大小i∈M∩i≠0,其中(xi,yi);i∈M定义为多播组中接收节点的地理位置坐标,当i等于0时表示核心节点坐标;
[0019] 步骤(22):根据编码区域的半径R以及多播组中节点的个数N,得出该编码区域中节点密度
[0020] 步骤(23):根据公式 得到每个节点所拥有的平均邻居节点数,其中Ra定义为节点信号覆盖半径的大小。
[0021] 进一步的,本发明的无线多跳网中的实时多播方法,所述步骤(3)具体包括如下处理步骤:
[0022] 步骤(31):获取网络状态Td,Tl,ρ,Nnb以及实时业务所要求的最大延迟Tmax和实时业务的数据包发送间隔Ts,其中Td定义为节点间的一跳延迟,Tl定义为发送端到核心节点的平均链路延迟,ρ表示编码区域中节点密度,Nnb定义为平均邻居节点数;
[0023] 步骤(32):判断编码区域内的节点密度是否满足执行网络编码的最低条件限制,并进行如下处理:
[0024] 步骤(321):当编码区域中的节点密度满足执行网络编码的最低条件限制时,选用网络编码作为编码机制;Ra定义为节点信号覆盖半径的大小;
[0025] 步骤a,对于不同密度下的网络环境采用不同的编码长度,即根据不同的平均邻居节点数Nnb,选择最佳编码长度L;
[0026] 步骤b,判断实时业务的最大允许延迟Tmax是否能够满足执行编码长度为L的网络编码所需的最低延迟开销,判断公式为 其中 为核心节点到达编码区域边缘节点所需的最少跳数;
[0027] 步骤c,根据网络状态及业务的最大允许延迟,选择编码长度为L的网络编码作为编码机制;
[0028] 步骤(322):当编码区域内的节点密度不满足执行网络编码的最低条件限制时,根据网络状态及业务的最大允许延迟,选择前向纠错编码作为编码机制;
[0029] 步骤d,确定前向纠错编码的编码参数k和r:
[0030]
[0031] 确定k和r的原则是:在允许的时间内,尽可能地增大k,剩余的时间生成r个冗余编码包,并进行如下处理:
[0032] 步骤e,r<0,则将k-1,并转至步骤d;
[0033] 步骤f,r>0,所得k,r即确定为最佳编码参数。
[0034] 进一步的,本发明的无线多跳网中的实时多播方法,所述步骤(4)根据步骤(3)采用网络编码或前向纠错编码机制分别进行如下处理步骤:
[0035] 在网络编码机制下,核心节点接收来自发送端的实时业务数据流,按照时间先后顺序将数据包存入FIFO队列;
[0036] 步骤(411):根据所确定的编码长度L,对FIFO队列中的数据包进行分组打包操作——每L个数据包组成一个分组块,并为每个分组块编号;
[0037] 步骤(412):判断某一分组块中是否收满L个数据包:若收满,则对该分组块进行网络编码操作,否则继续等待接收来自发送端的数据包;
[0038] 步骤(413):核心节点按照FIFO队列中的顺序对分组块进行随机线性编码,即T在有限域中生成一组随机系数,对分组块中的各个数据包进行线性组合;设P ={p0,p1,p2,...,pL}为某一分组块中的初始数据包,E={e0,e1,e2,...,eL}为编码矩阵,其中ei;i=0,1,2,...,L是有限域中的L维随机向量,则编码包C=E·P;
[0039] 步骤(414):将编码向量ei置于对应编码包的包头中,连同编码包一起发送到多播组中的所有接收节点:
[0040] 在前向纠错编码机制下,接收来自发送端的实时业务数据流,按照时间先后顺序将数据包存入FIFO队列;
[0041] 步骤(421):根据所确定的编码参数k,对FIFO队列中的数据包进行分组打包操作——每k个数据包组成一个分组块,并为每个分组块编号;
[0042] 步骤(422):核心节点依次对每组信息数据包进行编码操作,产生r个冗余信息包,采用的编码算法为系统删除码;
[0043] 步骤(423):依次将每组k个信息数据包和对应的r个冗余信息包发送到多播组中的所有接收节点。
[0044] 进一步的,本发明的无线多跳网中的实时多播方法,所述步骤(5)分别根据编码包包头中是否含有编码向量,判断收到的编码包为网络编码的编码包还是前向纠错的编码包,具体包括如下处理步骤:
[0045] 当编码包为前向纠错编码包的,无需执行任何操作,直接将编码包多播发送;
[0046] 当编码包为网络编码包的,根据包头中的资源请求标志位,判断该编码包是否是执行资源请求;步骤如下:
[0047] 步骤(51):从本地节点缓存中找出与新收到的编码包具有相同分组块号的编码包,记这些编码包的编码向量组成的编码矩阵为A,并进行如下处理;
[0048] 步骤(511):将新收到编码包的包头中所包含的编码向量加入矩阵A后,A的秩增加,则该新编码包含有新的信息,将该含有新信息的编码包存入本地缓存;
[0049] 步骤(512):将新收到编码包的包头中所包含的编码向量加入矩阵A后,A的秩不变,则该新编码不含有新的信息,直接丢弃该编码包;
[0050] 步骤(52):资源请求编码包中的编码向量为发出该请求的节点所拥有的某分组块编码矩阵的零空间向量,根据零空间向量特性,从节点本地缓存中找出编码向量和该零空间向量非正交的编码包,将所获得的编码包传入多播发送模块;
[0051] 步骤(53):二次编码操作的过程与网络编码过程类似,将步骤(51)从节点本地缓存中找出的相关编码包和新收到的编码包进行网络编码操作生成一个新的编码包,并将此次的编码向量连同生成的编码包一同传入多播发送模块;
[0052] 步骤(54):将获得的编码包发送到多播组的所有接收节点。
[0053] 进一步的,本发明的无线多跳网中的实时多播方法,所述步骤(6)具体根据编码包包头中是否含有编码向量,判断收到的编码包为网络编码的编码包还是前向纠错的编码包,进行如下处理:
[0054] 步骤(61):当编码包为网络编码包的,转至步骤(63);
[0055] 步骤(62):当编码包为前向纠错编码包的,将其存入节点缓存,并进行下列操作:
[0056] 步骤(621):当缓存中属于某一分组块的编码包个数大于等于k时,执行FEC解码操作;
[0057] 步骤(622):当缓存中属于某一分组块的编码包个数小于k时,继续等待;成功解码后,将已解码过的编码包从本地缓存中删除;
[0058] 步骤(63):根据包头中的资源请求标志位,判断该编码包是否是执行资源请求;
[0059] 步骤(64):从本地节点缓存中找出与新收到的编码包具有相同分组块号的编码包,判断编码包是否含有新信息,并在每个分组块的第一个编码包到来时,为该分组块设置一个时长为TsL的定时器,记这些编码包的编码向量组成的编码矩阵为A,并进行如下处理;
[0060] 步骤(641):将新收到编码包的包头中所包含的编码向量加入矩阵A后,A的秩增加,则该新编码包含有新的信息,将该含有新信息的编码包存入本地缓存;
[0061] 步骤(642):将新收到编码包的包头中所包含的编码向量加入矩阵A后,A的秩不变,则该新编码不含有新的信息,直接丢弃该编码包;
[0062] 步骤(65):资源请求编码包中的编码向量为发出该请求的节点所拥有的某分组块编码矩阵的零空间向量,根据零空间向量特性,从节点本地缓存中找出编码向量和该零空间向量非正交的编码包,将所获得的编码包传入多播发送模块;
[0063] 步骤(66):根据节点本地缓存中关于某一分组块的编码包个数,判断是否能够恢复出初始数据包,并进行如下操作:
[0064] 步骤(661):网络编码的解码过程为编码的逆过程,原始数据包P=E-1·C;采用高斯消去法执行该解码过程,解码成功完成后,将已解码的编码包保存一段时间,直到编码包生存时间超时,以响应周围节点的冗余编码包资源请求;
[0065] 步骤(662):在无法成功解码的情况下,检查此时是否有步骤(64)所设置的分组块定时器超时,并进行如下操作:
[0066] 当步骤(64)所设置的分组块定时器超时,根据节点本地缓存已有的编码包构造出冗余资源请求编码包;首先根据下式获取超时分组块编码矩阵的零空间向量n[0067] A·nT=0;rank(A)<L;其中A定义为超时分组块的编码矩阵;
[0068] 再将超时分组块的编码包进行二次编码,除了将此次编码的编码向量加入包头外,将所获得的零空间向量n也一同存入包头中,最后将所得的编码包传入多播发送模块;
[0069] 当步骤(64)所设置的分组块定时器未超时,就执行二次编码,向下游节点传递编码包;
[0070] 步骤(67):将获得的编码包发送到多播组的所有接收节点。
[0071] 本发明所设计的无线多跳网的实时多播方法,联合了网络编码和前向纠错编码的机制,适用于移动自组网中的实时多播业务,能够根据当前网络状况自适应选择最佳编码机制及参数,提高网络的可靠性和吞吐量,同时降低网络的整体能耗并能满足业务的实时性要求。
[0072] 本发明和现有技术相比,提出了一种无线多跳网中联合前向纠错与网络编码的实时多播方法,具有以下显著优势:
[0073] 1.根据当前网络状况及网络所承载业务的实时性要求,自适应选择最佳的编码机制及参数,避免了单纯采用某种机制在网络拓扑动态变化的情况下造成的性能波动。
[0074] 2.能够将编码区域限制在一个合适的区域内,避免了无关区域内的网络资源的浪费,从而提高有限的网络资源的利用率,并降低了网络整体能耗。
[0075] 3.采用网络编码技术,减少了数据包的转发次数,提高了网络的可靠性和吞吐量,降低了节点能耗。

附图说明

[0076] 图1是本发明的工作流程示意图。
[0077] 图2是自适应选择编码机制方法的示意图。
[0078] 图3是核心节点的编码操作示意图。
[0079] 图4是核心节点前向纠错编码操作示意图。
[0080] 图5是中间节点处理过程示意图。
[0081] 图6是接收节点处理过程示意图。
[0082] 图7是mesh网络中最优核心节点的选择示意图。

具体实施方式

[0083] 下面结合附图对本发明的技术方案做进一步的详细说明:
[0084] 如图1所示,本发明所设计的一种无线多跳网中的实时多播方法,其特征在于该方法包括以下步骤:
[0085] 步骤(1):利用Multicast Announcement控制包将网络初始化为mesh网络;
[0086] 步骤(2):评估当前的网络状况,获得所需的所有网络参数;
[0087] 步骤(3):根据当前的网络状况以及业务的实时性要求,自适应选择采用网络编码或前向纠错编码机制,并动态调整编码参数;
[0088] 步骤(4):核心节点对实时业务数据流进行分组打包,根据所选择的编码机制及编码参数,对各个分组块进行编码操作,随后将所得的编码包多播发送出去;
[0089] 步骤(5):中间节点收到编码包后,判断编码包所采用的编码机制,对不同机制产生的编码包分别进行处理并转发;
[0090] 步骤(6):接收端接收到足够多的编码包,恢复出实时业务数据流的原始数据包。
[0091] 作为本发明的一种优选方法,所述步骤(1)具体包括如下处理:
[0092] 步骤(11):mesh网络将所有接收节点作为mesh成员,组成多播组的接收端;
[0093] 如图7所示,核心节点将根据所拥有的接收节点位置信息,选择处于相对中心位置的接收节点作为新的核心节点,并将自身所拥有的网络信息(包括各接收节点位置信息和接收节点数目)通过最优路径单播给该新核心节点。至此,新核心节点将替代原来的核心节点负责网络的维护。接下来,规定以新核心节点位置为中心,覆盖所有接收节点的最小圆形区域作为编码区域。该区域内的节点将参与编码过程。新核心节点将接收由发送端转发过来的实时业务数据流,衡量实时业务的各项指标,其中包含发送端到核心节点的链路延迟、实时业务的数据速率。随着网络环境的变化,新核心节点选择-编码区域确定这一过程将持续进行,以保证编码区域为覆盖所有接收节点的最小圆形区域。
[0094] 步骤(12):核心节点根据所拥有的接收节点的位置信息,选择处于相对中心位置的接收节点作为新的核心节点,mesh网络规定以新的核心节点位置为中心,覆盖所有接收节点的最小圆形区域作为编码区域,该编码区域内的节点将参与编码过程;
[0095] 步骤(13):发送端通过最优路径将实时业务数据流转发至新核心节点;
[0096] 步骤(14):在Multicast Announcement控制包中扩展一个记录节点地理位置的字段,各接收节点从位置服务系统中获得自己的位置信息,并将位置信息记录进该字段从而生成新的控制包,然后通过到达核心节点的最优路径将该控制包单播至核心节点。
[0097] 表1:网络状态参数及实时业务性能指标的符号描述
[0098]
[0099] 作为本发明的一种优选方法,所述步骤(2)具体包括如下处理:
[0100] 步骤(21):根据所述步骤(14)中多播组中的各接收节点的位置信息以及所述步骤(12)中确定编码区域的准则可得编码区域的半径大小 ;i∈M∩i≠0,其中(xi,yi);i∈M定义为多播组中接收节点的地理位置坐标,当i等于0时表示核心节点坐标;
[0101] 步骤(22):根据编码区域的半径R以及多播组中节点的个数N,得出该编码区域中节点密度
[0102] 步骤(23):根据公式 得到每个节点所拥有的平均邻居节点数,其中Ra定义为节点信号覆盖半径的大小;
[0103] 如图2所示,作为本发明的一种优选方法,所述步骤(3)具体包括如下处理:
[0104] 步骤(31):获取网络状态Td,Tl,ρ,Nnb以及实时业务所要求的最大延迟Tmax和实时业务的数据包发送间隔Ts,其中Td定义为节点间的一跳延迟,Tl定义为发送端到核心节点的平均链路延迟,Nnb定义为平均邻居节点数;
[0105] 步骤(32):判断编码区域内的节点密度是否满足执行网络编码的最低条件限制,并进行如下处理:
[0106] 步骤(321):编码区域中的节点密度满足执行网络编码的最低条件限制时,选用网络编码作为编码机制;
[0107] 步骤(322):编码区域内的节点密度不满足执行网络编码的最低条件限制,采用前向纠错编码;
[0108] 步骤(33):对于不同密度下的网络环境采用不同的编码长度,即根据不同的Nnb选择最佳编码长度L;
[0109] 表2:不同密度网络中的最佳编码长度
[0110]平均邻居节点数Nnb 0~4 5~8 9~10 11~
编码长度L 1 2 4 8
[0111] 步骤(34):判断实时业务的最大允许延迟Tmax是否能够满足执行编码长度为L的网络编码所需的最低延迟开销,判断公式为 其中 为核心节点到达编码区域边缘节点所需的最少跳数;
[0112] 步骤(35):根据网络状态及业务的最大允许延迟,选择编码长度为L的网络编码作为编码机制。
[0113] 步骤(36):根据网络状态及业务的最大允许延迟,选择前向纠错编码作为编码机制。
[0114] 步骤(37):确定前向纠错编码的编码参数k和r:
[0115]
[0116] 确定k和r的原则是:在允许的时间内,尽可能地增大k,剩余的时间生成r个冗余编码包,并进行如下处理:
[0117] 步骤(371):r<0,则将k-1,并转至步骤(37);
[0118] 步骤(372):r>0,所得k,r即确定为最佳编码参数;
[0119] 如图3和图4所示,所述步骤(4)具体包括如下处理:
[0120] 步骤(41):核心节点接收来自发送端的实时业务数据流,进行如下操作:
[0121] 步骤(411):在网络编码机制下,核心节点接收来自发送端的实时业务数据流,按照时间先后顺序将数据包存入FIFO队列。
[0122] 步骤(412):根据所确定的编码长度L,对FIFO队列中的数据包进行分组打包操作——每L个数据包组成一个分组块,并为每个分组块编号。
[0123] 步骤(413):判断某一分组块中是否收满L个数据包。若收满,则对该分组块进行网络编码操作,否则继续等待接收来自发送端的数据包。
[0124] 步骤(414):核心节点按照FIFO队列中的顺序对分组块进行随机线性编码,即T在有限域中生成一组随机系数,对分组块中的各个数据包进行线性组合。设P ={p0,p1,p2,...,pL}为某一分组块中的初始数据包,E={e0,e1,e2,...,eL}为编码矩阵,其中ei;i=0,1,2,...,L是有限域中的L维随机向量,则编码包C=E·P。
[0125] 步骤(415):将编码向量ei置于对应编码包的包头中,连同编码包一起发送到多播组中的所有接收节点:
[0126] 步骤(421):在前向纠错编码机制下,接收来自发送端的实时业务数据流,按照时间先后顺序将数据包存入FIFO队列。
[0127] 步骤(422):根据所确定的编码参数k,对FIFO队列中的数据包进行分组打包操作——每k个数据包组成一个分组块,并为每个分组块编号。
[0128] 步骤(423):核心节点依次对每组信息数据包进行编码操作,产生r个冗余信息包,采用的编码算法为系统删除码,典型的有Reed-Solomon码。
[0129] 步骤(424):依次将每组k个信息数据包和对应的r个冗余信息包发送到多播组中的所有接收节点。
[0130] 如图5所示,作为本发明的一种优选方法,所述步骤(5)具体包括如下处理:
[0131] 步骤(51):根据编码包包头中是否含有编码向量,判断收到的编码包为网络编码的编码包还是前向纠错的编码包,进行如下处理:
[0132] 步骤(511):编码包为前向纠错编码包的,无需执行任何操作,直接将编码包多播发送;
[0133] 步骤(512):编码包为网络编码包的,根据包头中的资源请求标志位,判断该编码包是否是执行资源请求;
[0134] 步骤(513):从本地节点缓存中找出与新收到的编码包具有相同分组块号的编码包,记这些编码包的编码向量组成的编码矩阵为A,并进行如下处理;
[0135] 步骤(5131):将新收到编码包的包头中所包含的编码向量加入矩阵A后,A的秩增加,则该新编码包含有新的信息,将该含有新信息的编码包存入本地缓存。
[0136] 步骤(5132):将新收到编码包的包头中所包含的编码向量加入矩阵A后,A的秩不变,则该新编码不含有新的信息,直接丢弃该编码包;
[0137] 步骤(514):资源请求编码包中的编码向量为发出该请求的节点所拥有的某分组块编码矩阵的零空间向量,根据零空间向量特性,从节点本地缓存中找出编码向量和该零空间向量非正交的编码包,将所获得的编码包传入多播发送模块。
[0138] 步骤(515):二次编码操作的过程与网络编码过程类似,将步骤(513)从节点本地缓存中找出的相关编码包和新收到的编码包进行网络编码操作生成一个新的编码包,并将此次的编码向量连同生成的编码包一同传入多播发送模块。
[0139] 步骤(516):将获得的编码包发送到多播组的所有接收节点。
[0140] 如图6所示,作为本发明的一种优选方法,所述步骤(6)具体包括如下处理:
[0141] 步骤(61):根据编码包包头中是否含有编码向量,判断收到的编码包为网络编码的编码包还是前向纠错的编码包,进行如下处理:
[0142] 步骤(611):编码包为网络编码包的,转至步骤(613);
[0143] 步骤(612):编码包为前向纠错编码包的,将其存入节点缓存,并进行下列操作:
[0144] 步骤(6121):当缓存中属于某一分组块的编码包个数大于等于k时,执行FEC解码操作;
[0145] 步骤(6122):当缓存中属于某一分组块的编码包个数小于k时,继续等待。成功解码后,将已解码过的编码包从本地缓存中删除;
[0146] 步骤(613):根据包头中的资源请求标志位,判断该编码包是否是执行资源请求;
[0147] 步骤(614):从本地节点缓存中找出与新收到的编码包具有相同分组块号的编码包,判断编码包是否含有新信息,并在每个分组块的第一个编码包到来时,为该分组块设置一个时长为TsL的定时器,记这些编码包的编码向量组成的编码矩阵为A,并进行如下处理;
[0148] 步骤(6141):将新收到编码包的包头中所包含的编码向量加入矩阵A后,A的秩增加,则该新编码包含有新的信息,将该含有新信息的编码包存入本地缓存。
[0149] 步骤(6142):将新收到编码包的包头中所包含的编码向量加入矩阵A后,A的秩不变,则该新编码未含有新的信息,直接丢弃该编码包;
[0150] 步骤(615):资源请求编码包中的编码向量为发出该请求的节点所拥有的某分组块编码矩阵的零空间向量,根据零空间向量特性,从节点本地缓存中找出编码向量和该零空间向量非正交的编码包,将所获得的编码包传入多播发送模块;
[0151] 步骤(616):根据节点本地缓存中关于某一分组块的编码包个数,判断是否能够恢复出初始数据包,并进行如下操作:
[0152] 步骤(6161):网络编码的解码过程为编码的逆过程,原始数据包P=E-1·C;可采用高斯消去法执行该解码过程,解码成功完成后,将已解码的编码包保存一段时间,直到编码包生存时间超时,以响应周围节点的冗余编码包资源请求;
[0153] 步骤(6162):在无法成功解码的情况下,检查此时是否有步骤(614)所设置的分组块定时器超时,并进行如下操作:
[0154] 步骤(61621):步骤(614)所设置的分组块定时器超时,根据节点本地缓存已有的编码包构造出冗余资源请求编码包。首先根据下式获取超时分组块编码矩阵的零空间向量n
[0155] A·nT=0;rank(A)<L;其中A定义为超时分组块的编码矩阵
[0156] 再将超时分组块的编码包进行二次编码,除了将此次编码的编码向量加入包头外,将所获得的零空间向量n也一同存入包头中,最后将所得的编码包传入多播发送模块。
[0157] 步骤(61622):步骤(614)所设置的分组块定时器未超时,就按照步骤(515)所述,执行二次编码,以向下游节点传递编码包;
[0158] 步骤(617):将获得的编码包发送到多播组的所有接收节点。