CN103209435B - 基于拥塞控制的无线多跳网多播方法 - Google Patents
基于拥塞控制的无线多跳网多播方法 Download PDFInfo
- Publication number
- CN103209435B CN103209435B CN201310083974.6A CN201310083974A CN103209435B CN 103209435 B CN103209435 B CN 103209435B CN 201310083974 A CN201310083974 A CN 201310083974A CN 103209435 B CN103209435 B CN 103209435B
- Authority
- CN
- China
- Prior art keywords
- node
- encoded packets
- information
- receiving
- bag
- 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.)
- Expired - Fee Related
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于拥塞控制的无线多跳网多播方法,包括mesh网络的构建及维护、网络状态的获取及更新方法、核心节点与发送端之间的协调和中间节点及接收端的处理等步骤;本发明所设计的基于拥塞控制的无线多跳网多播方法能够自适应选择发送参数、协调发送速率,尽可能缓解由于无线环境下的多播所产生的数据包冲突,提高网络的整体可靠性与吞吐量。
Description
技术领域
本发明涉及一种基于拥塞控制的无线多跳网多播方法,属于无线网络技术领域。
背景技术
无线多跳网是近年来兴起的一种新型网络结构,处于这种网络中的节点除了具有数据包的发送和接收功能外还负责网络的组织、维护以及网络中数据包的路由。典型的无线多跳网络包括无线传感网、无线自组网等。由于多跳以及无线信道的固有特性,无线多跳网中节点的拓扑结构始终处于动态变化中,尤其在移动场景中(如移动自组网),这种动态变化的拓扑给数据包的多播带来了很大挑战,如何在无线多跳网中实现数据包的多播分发已经成为近年来的研究热点。
一般而言,利用构造多播树的方法可以实现有效的多播,如MAODV,但是,由于构造以及维护多播树需要耗费的大量的网络资源,尤其在无线环境中,这种资源的耗费在很大程度上抑制了网络整体性能的提升,甚至降低网络性能。特别是在多个多播组共存的情况下,这种性能下降趋势尤为明显。基于网格(mesh)结构的无线多跳网多播路由协议虽然规避了复杂的网络维护机制,典型的如PUMA,但是其在数据分组投递时的盲目性,使网络的总体开销大大增加,同时节点的能耗也随之增大。这两种多播路由机制都无法达到或者逼近最大流最小割定理所确定的网络最大传输容量。
2000,R.Alshwede提出的网络编码理论,推翻了传统路由机制所采用的数据分组存储转发模式。通过允许中间节点对数据分组进行编码操作,网络编码大大提高了网络的吞吐量,并能达到理论的最大传输容量。但是,由于网络拓扑的动态变化,确定编码参数的网络编码并不能很好的适应当前网络状况,反而会使网络中的数据包传输性能显著恶化。除此以外,如果发送节点缺少对编码包发送速率的控制机制,在恶化的网络性能情况下,始终保持恒定的发送速率会使网络中的数据包冲突显著增多,从而出现恶性循环。相对于无编码操作的多播机制,传统的网络编码还带来了额外的缓存数据分组的延时,限制了它在对实时性有一定要求的业务中的应用。
基于以上讨论,我们需要一种能够根据当前网络状况,自适应选择发送节点数据包发送速率即编码参数的机制,用以适应动态的网络环境。同时这种网络应该能够满足业务对可靠性、吞吐量以及实时性的要求。
发明内容
本发明所要解决的技术问题是提供一种能够自适应选择发送参数、协调发送速率,尽可能缓解由于无线环境下的多播所产生的数据包冲突,提高网络的整体可靠性与吞吐量的基于拥塞控制的无线多跳网多播方法。
本发明采用下列技术方案解决上述技术问题:本发明设计了一种基于拥塞控制的无线多跳网多播方法,包括如下具体步骤:
步骤(1):构建数据分发所需的mesh型网络,所述mesh型网络中包括发送节点、接收节点、中间节点和核心节点,并对构建的mesh型网络进行功能性维护;
步骤(2):在步骤(1)构建的mesh型网络中,发送节点周期性发送网络状态探测包来获取mesh网络的各项状况信息,并对获取的各项状况信息进行评估,并将评估结果转换为参数的形式;
步骤(3):发送节点根据接收到的评估结果自适应选择网络编码的编码参数,并动态调整编码参数,同时,发送节点根据核心节点所提供网络冲突情况改变发送窗口大小,并将处于发送窗口中的数据包编码后传输至中间节点;
步骤(4):所述中间节点对接收到的编码包进行二次编码操作,并将二次编码操作后的编码包发送至接收节点,接收节点在接收到足够多的编码包时,通过编码的逆操作恢复出原始数据包。
作为本发明的一种优化方法:所述步骤(1)包括如下具体处理:
步骤(11):在网络初始状态下,将最先申明加入多播组的接收节点将自己标记为核心节点;
步骤(12):核心节点构造MA控制包,核心节点按照自身信息填充MA控制包各字段的控制信息,从而构造一个MA控制包,初始状态下,核心节点构造的MA控制包具有如下内容:MA序号为0,核心节点ID即为本身节点号,到核心节点跳数为0,父节点ID为本身节点号,mesh节点标志为True,节点位置坐标为本身坐标,核心节点将构造完成的MA控制包广播至网络中,核心节点的所有邻居节点将收到该MA控制包,其中,MA序号定义为全局性序号;
步骤(13):邻居节点作为接收节点接收到MA控制包后解析其中所包含的控制信息,若该接收节点是第一次收到MA控制包,则按照该MA控制包所包含的控制信息构建邻居节点信息表,邻居节点信息表记录了该接收节点所有邻居节点的ID、核心节点节点号、该接收节点的所有邻居节点距离核心节点跳数、所有邻居节点的mesh节点标志是否为True和所有邻居节点的位置坐标,并转而执行步骤(16);若该接收节点不是第一次收到MA控制包,继续执行步骤(14);
步骤(14):判断收到的MA控制包是否有效:通过该MA控制包所包含的MA序号判断该MA控制包是否过时,对于同一邻居节点发送过来的MA控制包,拥有最大MA序号的认为是有效的,并继续执行步骤(15);否则,直接丢弃该MA控制包并转而执行步骤(13);
步骤(15):利用本次所收到的MA控制包中的控制信息更新现存的邻居节点信息表,即用本次接收到的MA控制包中的控制字段覆盖现存的邻居节点信息表中的对应内容;
步骤(16):步骤(13)中的接收节点从自己的邻居节点信息表中选择距离核心节点跳数最少的一个邻居节点作为自己的父节点,若出现跳数相同情况,则以坐标位置计算出的离自身物理距离较近的邻居节点作为父节点,该节点本身距离核心节点的跳数为所选择父节点距离核心节点跳数值加1,若该节点也准备加入多播组,则置mesh节点标志位为True,否则,检索整个邻居节点信息表,寻找是否出现以该节点作为父节点,mesh节点标志为True并且距离核心节点跳数大于该节点的邻居节点,若在邻居节点信息表中发现同时符合该三个条件的节点,则认为该节点有一个子mesh节点,此时该节点作为子mesh节点的父节点,也将自己标记为mesh节点,否则,mesh节点标志为False,在这里我们将非接收节点的mesh节点称为mesh网络中的中间节点,最后依据以上讨论获得的信息,该节点构造出一个新的MA控制包,并广播给自己的邻居节点,各邻居节点按照步骤(11)至步骤(16)的方法进行处理,从而完成了mesh型网络的功能性维护。
作为本发明的一种优化方法:所述步骤(2)包括如下具体步骤:
步骤(21):发送节点缓存的状态信息拥有一个时戳,记录了上一次获取网络状态信息的时间点,发送节点在本地缓存中检查上一次获得的网络状态信息上的时戳,如果时戳所记录的时间点与当前时间间隔超过To,则转向步骤(22);否则,直接将所检查到的网络状态信息输出,其中,To定义为发送节点所缓存的网络状态信息的过时时间;
步骤(22):发送节点发送状态请求控制包Squery到步骤(1)中构建的mesh网络中去,以请求其反馈发送节点所需的网络状态信息,Squery包含一个时戳字段,记录发送节点发送该控制包时的时间点,mesh网络中的所有中间节点对该控制包进行转发,而接收节点对该控制包Squery进行响应,具体包括如下处理:
步骤(221):接收节点收到控制包Squery后,首先判定自己是否是核心节点,如果不是核心节点则转至步骤(222);否则,转至步骤(223);
步骤(222):接收节点根据控制包Squery中的时戳信息计算接收到该控制包时的延时ti,同时将该延时信息ti通过Sreport控制消息发送至核心节点,Sreport控制消息包含上述延时信息ti外还拥有一个标记接收节点序号的字段,用以区分不同的接收节点状态信息;
步骤(223):核心节点从本地缓存中检索接收节点状态信息,如果该核心节点所维护的网络中的所有接收节点均通过Sreport反馈了其节点状态信息,即mesh网络中的接收节点数目与收到的不同节点序号的Sreport控制信息的个数相同,则转至步骤(225);否则,顺序执行步骤(224);
步骤(224):核心节进入等待状态,等待一段时间后转至步骤(212),其中,等待时间为发送节点连续发送两个编码包的时间间隔;
步骤(225):核心节点通过所获取的各接收节点的状态ti,i∈M,通过如下处理选取一个反馈参考点:
a:核心节点通过所获取的信息计算各接收节点收到发送节点发送的Squery控制信息的平均延时,即E(ti;i∈M);
b:以该平均值为起点,向ti增大或者减小的方向进行搜索,第一次遇到的值即作为反馈参考延时,其所对应的节点r即选为反馈参考点;
c:核心节点通过发送一个简单通知信息至所选择的反馈参考点,以通知其被选择成为反馈参考点;
步骤(23):将核心节点所确定的反馈参考延时信息tR,通过Supdate控制包反馈到发送节点,Supdate控制包除了包含参考延时信息tR外,还包含mesh网络的接收节点的平均邻居节点个数其计算公式为:由于核心节点维护着整个mesh网络,通过其拥有的各接收节点的位置信息(xi,yi);i∈M,计算获得S的值,最终,核心节点反馈给核心节点的信息包括参考延时信息tR和mesh网络的接收节点的平均邻居节点个数其中,S定义为覆盖所有接收节点的最小面积。
作为本发明的一种优化方法:所述步骤(3)包括如下具体处理:
步骤(301):通过参数来确定最佳编码长度L;
步骤(302):发送节点根据核心节点反馈的mesh网络状态调整发送窗口大小,并通过mesh网络反馈自身信息供发送节点调整发送速率,具体包括如下处理:
步骤(3021):发送节点初始状态下设置发送窗口W大小为4,并对处于窗口内的数据包进行编码发送;
步骤(3022):由步骤(225)所选择的反馈参考点在成功恢复出某一数据块的所有原始数据包后,计算出从发送节点发出这些数据包到反馈参考点恢复出这些数据包的延时,即用成功恢复出原始数据包时的时间减去收到关于这个数据块的第一个编码包的时间;
步骤(3023):构造Sreport控制包,将计算出的延时通过该控制包汇报给核心节点,通过该最优路径将Sreport控制包投递至核心节点;
步骤(3024):核心节点接收到反馈参考点发送过来的Sreport控制包后,将该控制包通过发送节点到达核心节点的最优路径的反向路径反馈给发送节点;
步骤(3025):发送节点接收到核心节点发送过来的Sreport控制包后重新计算发送窗口W的大小,具体计算过程如下:
A:将Sreport控制包从核心节点到达发送节点的延时加上Sreport控制包中记录的参考反馈点成功解码一个数据块的延时在本发明定义为mesh网络中的往返时间,记作RTT;
B:令 其中RTTbase为发送节点按照步骤A)计算出来的历史最小RTT,初始状态下RTTbase等于发送节点收到的第一个反馈时所计算出来的RTT,因此,发送节点在第一次收到反馈时无需重新计算发送窗口W的大小;
C:若diff≤0,则RTTbase=RTT;若diff<1,则令W=W++;若diff>3,则令W=W--;其余情况下W保持不变;
步骤(3026):利用步骤(3025)计算出的W值调整发送窗口的大小,此外,发送窗口的调整过程将被周期性地触发以实现窗口能够根据网络状况实时调整;
步骤(303):发送参数以及发送窗口选择完毕后,发送节点将利用所选参数组织数据包的编码发送,具体包括如下处理:
步骤(3031):读取待发送数据,并对数据进行分组打包,依次赋予每个数据包一个序号和其所属的数据块编号,数据块编号通过数据包序号模编码长度L获得,将所获得的数据块编号和数据包序号放入包头,令IDcurrent等于当前处理的数据包所属的数据块的编号;
步骤(3032):将获得数据包存入发送节点本地的待编码队列;
步骤(304):对步骤(303)构造的待编码队列中的数据包进行网络编码操作,具体步骤如下:
步骤(3041):检索本地待发送队列,查找是否有数据块编号等于IDcurrent的编码包,若不存在继续执行步骤3042),反之转至步骤3043);
步骤(3042):随机生成一个有限域中的数e0,设p0为当前数据包,则编码包C0=e0·p0;
步骤(3043):假设本地待编码队列中存在n个数据块编号为IDcurrent的编码包:
PT={p0,p1,p2,...,pn}
随机生成一个有限域中的n维随机向量E={e0,e1,e2,...,en},用随机向量与数据包进行线性组合即可得到编码包C=E·P;
步骤(3044):参与编码的随机向量称为编码向量,将编码向量加入到所得的编码包的包头;
步骤(305):判断发送窗口是否就绪,具体判断过程如下:
步骤(3051):计算IDupper=W+IDack,初始状态下IDack的值为-1,意味着尚未收到任何数据块的反馈消息;
步骤(3052):当IDcurrent≤IDupper时,说明发送节点存在可供数据块IDcurrent发送使用的窗口,即发送窗口就绪;若发送窗口尚未就绪,将步骤(304)获得的编码包存入待发送队列,然后回到步骤(303)继续读取待发送数据,待编码队列有一个最大长度限制,当发送窗口长时间不能就绪,待编码队列达到最大长度限制时,发送节点将不再读取待发送数据,而是进入等待发送窗口就绪状态;
步骤(306):将步骤(304)所获得的编码包以及待发送队列中的所有编码包发送到mesh网络中去,同时删除待发送队列和待编码队列中的对应编码包和数据包。
作为本发明的一种优化方法:所述步骤(4)包括如下具体处理:
步骤(400):接收节点检查收到的步骤(306)中的编码包的编码向量,确定编码长度L,L为1时转至步骤(404);否则,继续执行步骤(401);
步骤(401):该节点从本地缓存中找出数据块编号和所收到的编码包一致的所有编码包的编码向量,若所收到编码包的编码向量与找出的本地缓存中的所有相关编码向量线性无关,则认为该收到的编码包包含新信息,并继续执行步骤(402);若检查结果表明新收到的编码包不包含任何新信息,则直接丢弃,等待接收下一个编码包,重复执行本步骤;
步骤(402):将该编码包存入接收节点的本地缓存中;
步骤(403):判断接收到的编码包的序号是否为偶数,若为偶数继续执行步骤(404);否则直接结束,等待接收下一个编码包,重复执行本步骤;
步骤(404):将本地缓存中数据块编号和所收到的编码包一致的所有编码包进行二次编码,用一组对应维度的有限域中的随机向量将每个编码包进行线性组合并将参与编码的随机向量加入到该编码包的包头中;
步骤(405):将编码包发送到mesh网络中去,mesh网络中的接收节点接收该编码包;
步骤(406):若该节点不是接收节点,则直接结束操作;如果该节点是接收节点则继续执行步骤(407);
步骤(407):找出上述接收节点的本地缓存中数据块编号和所收到的编码包一致的所有编码包,连同所收到的编码包,将他们的编码向量组成编码矩阵;
步骤(408):在这些编码包中找出原始数据包信息量最大的一个,定义一个编码包的原始数据包信息量为参与该编码包编码过程的原始数据包个数;
步骤(409):若步骤(407)确定的编码矩阵的秩大于步骤(408)获得的最大原始数据报信息量,则确定出现解码机会,并继续执行步骤(410);否则该接收节点继续等待接收下一个编码包并转而执行步骤(407);
步骤(410):通过高斯消元法和公式P=E-1·C从编码包中恢复出原始数据包,其中,C定义为参与解码过程的编码包所组成的向量,E定义为这些编码包包头中所包含的编码向量组成的编码矩阵,P即为恢复出的原始数据包。
本发明与现有技术相比具有如下优点:
1.本发明能够根据当前网络对于发送节点所分发的数据包的接收状况,动态调整发送窗口的大小,减小了无线环境下多播分发数据包所产生冲突,从而提高了数据包分发的成功率;
2.本发明在网络状态不足以支撑的场景下,这种退化可以避免盲目采用网络编码带来的性能恶化;
3.本发明采用部分网络编码技术,在提高吞吐量的同时将延时及解码复杂度限制在一个可以接受的范围内。
附图说明
图1为Mesh网络构建过程;
图2为网络状态信息查询过程;
图3为网络状态信息收集及反馈过程;
图4为核心节点与发送端的互动处理过程;
图5为发送端处理过程;
图6为中间及接收节点处理过程。
具体实施方式
下面结合附图对本发明做进一步的具体说明:
本发明设计了一种基于拥塞控制的无线多跳网多播方法,包括如下具体步骤:
步骤(1):构建数据分发所需的mesh型网络,所述mesh型网络中包括发送节点、接收节点、中间节点和核心节点,并对构建的mesh型网络进行功能性维护;
步骤(2):在步骤(1)构建的mesh型网络中,发送节点周期性发送网络状态探测包来获取mesh网络的各项状况信息,并对获取的各项状况信息进行评估,并将评估结果转换为参数的形式;
步骤(3):发送节点根据接收到的评估结果自适应选择网络编码的编码参数,并动态调整编码参数,同时,发送节点根据核心节点所提供网络冲突情况改变发送窗口大小,并将处于发送窗口中的数据包编码后传输至中间节点;
步骤(4):所述中间节点对接收到的编码包进行二次编码操作,并将二次编码操作后的编码包发送至接收端,接收端在接收到足够多的编码包时,通过编码的逆操作恢复出原始数据包。
作为本发明的一种优化方法:如图1所示,所述步骤(1)包括如下具体处理:
步骤(11):在网络初始状态下,将最先申明加入多播组的接收节点将自己标记为核心节点;
步骤(12):核心节点构造MA控制包,核心节点按照自身信息填充MA控制包各字段的控制信息,从而构造一个MA控制包,初始状态下,核心节点构造的MA控制包具有如下内容:MA序号为0,核心节点ID即为本身节点号,到核心节点跳数为0,父节点ID为本身节点号,mesh节点标志为True,节点位置坐标为本身坐标,核心节点将构造完成的MA控制包广播至网络中,核心节点的所有邻居节点将收到该MA控制包,其中,MA序号定义为全局性序号;
步骤(13):邻居节点作为接收节点接收到MA控制包后解析其中所包含的控制信息,若该接收节点是第一次收到MA控制包,则按照该MA控制包所包含的控制信息构建邻居节点信息表,邻居节点信息表记录了该接收节点所有邻居节点的ID、核心节点节点号、该接收节点的所有邻居节点距离核心节点跳数、所有邻居节点的mesh节点标志是否为True和所有邻居节点的位置坐标,并转而执行步骤(16);若该接收节点不是第一次收到MA控制包,继续执行步骤(14);
步骤(14):判断收到的MA控制包是否有效:通过该MA控制包所包含的MA序号判断该MA控制包是否过时,对于同一邻居节点发送过来的MA控制包,拥有最大MA序号的认为是有效的,并继续执行步骤(15);否则,直接丢弃该MA控制包并转而执行步骤(13);
步骤(15):利用本次所收到的MA控制包中的控制信息更新现存的邻居节点信息表,即用本次接收到的MA控制包中的控制字段覆盖现存的邻居节点信息表中的对应内容;
步骤(16):步骤(13)中的接收节点从自己的邻居节点信息表中选择距离核心节点跳数最少的一个邻居节点作为自己的父节点,若出现跳数相同情况,则以坐标位置计算出的离自身物理距离较近的邻居节点作为父节点,该节点本身距离核心节点的跳数为所选择父节点距离核心节点跳数值加1,若该节点也准备加入多播组,则置mesh节点标志位为True,否则,检索整个邻居节点信息表,寻找是否出现以该节点作为父节点,mesh节点标志为True并且距离核心节点跳数大于该节点的邻居节点,若在邻居节点信息表中发现同时符合该三个条件的节点,则认为该节点有一个子mesh节点,此时该节点作为子mesh节点的父节点,也将自己标记为mesh节点,否则,mesh节点标志为False,在这里我们将非接收节点的mesh节点称为mesh网络中的中间节点,最后依据以上讨论获得的信息,该节点构造出一个新的MA控制包,并广播给自己的邻居节点,各邻居节点按照步骤(11)至步骤(16)的方法进行处理,从而完成了mesh型网络的功能性维护。
作为本发明的一种优化方法:如图2所示,所述步骤(2)包括如下具体步骤:
步骤(21):发送节点缓存的状态信息拥有一个时戳,记录了上一次获取网络状态信息的时间点,发送节点在本地缓存中检查上一次获得的网络状态信息上的时戳,如果时戳所记录的时间点与当前时间间隔超过To,则转向步骤(22);否则,直接将所检查到的网络状态信息输出,其中,To定义为发送节点所缓存的网络状态信息的过时时间;
步骤(22):发送节点发送状态请求控制包Squery到步骤(1)中构建的mesh网络中去,以请求其反馈发送节点所需的网络状态信息,Squery包含一个时戳字段,记录发送节点发送该控制包时的时间点,mesh网络中的所有中间节点对该控制包进行转发,而接收节点对该控制包Squery进行响应,如图3所示,具体包括如下处理:
步骤(221):接收节点收到控制包Squery后,首先判定自己是否是核心节点,如果不是核心节点则转至步骤(222);否则,转至步骤(223);
步骤(222):接收节点根据控制包Squery中的时戳信息计算接收到该控制包时的延时ti,同时将该延时信息ti通过Sreport控制消息发送至核心节点,Sreport控制消息包含上述延时信息ti外还拥有一个标记接收节点序号的字段,用以区分不同的接收节点状态信息;
步骤(223):核心节点从本地缓存中检索接收节点状态信息,如果该核心节点所维护的网络中的所有接收节点均通过Sreport反馈了其节点状态信息,即mesh网络中的接收节点数目与收到的不同节点序号的Sreport控制信息的个数相同,则转至步骤(225);否则,顺序执行步骤(224);
步骤(224):核心节进入等待状态,等待一段时间后转至步骤(212),其中,等待时间为发送节点连续发送两个编码包的时间间隔;
步骤(225):核心节点通过所获取的各接收节点的状态ti,i∈M,通过如下处理选取一个反馈参考点:
a:核心节点通过所获取的信息计算各接收节点收到发送节点发送的Squery控制信息的平均延时,即E(ti;i∈M);
b:以该平均值为起点,向ti增大或者减小的方向进行搜索,第一次遇到的值即作为反馈参考延时,其所对应的节点r即选为反馈参考点;
c:核心节点通过发送一个简单通知信息至所选择的反馈参考点,以通知其被选择成为反馈参考点;
步骤(23):将核心节点所确定的反馈参考延时信息tR,通过Supdate控制包反馈到发送节点,Supdate控制包除了包含参考延时信息tR外,还包含mesh网络的接收节点的平均邻居节点个数其计算公式为:由于核心节点维护着整个mesh网络,通过其拥有的各接收节点的位置信息(xi,yi);i∈M,计算获得S的值,最终,核心节点反馈给核心节点的信息包括参考延时信息tR和mesh网络的接收节点的平均邻居节点个数其中,S定义为覆盖所有接收节点的最小面积。
作为本发明的一种优化方法:所述步骤(3)包括如下具体处理:
步骤(301):通过参数来确定最佳编码长度L;
步骤(302):发送节点根据核心节点反馈的mesh网络状态调整发送窗口大小,并通过mesh网络反馈自身信息供发送节点调整发送速率,具体包括如下处理:
步骤(3021):发送节点初始状态下设置发送窗口W大小为4,并对处于窗口内的数据包进行编码发送;
步骤(3022):由步骤(225)所选择的反馈参考点在成功恢复出某一数据块的所有原始数据包后,计算出从发送节点发出这些数据包到反馈参考点恢复出这些数据包的延时,即用成功恢复出原始数据包时的时间减去收到关于这个数据块的第一个编码包的时间;
步骤(3023):构造Sreport控制包,将计算出的延时通过该控制包汇报给核心节点,通过该最优路径将Sreport控制包投递至核心节点;
步骤(3024):核心节点接收到反馈参考点发送过来的Sreport控制包后,将该控制包通过发送节点到达核心节点的最优路径的反向路径反馈给发送节点;
步骤(3025):发送节点接收到核心节点发送过来的Sreport控制包后重新计算发送窗口W的大小,具体计算过程如下:
A:将Sreport控制包从核心节点到达发送节点的延时加上Sreport控制包中记录的参考反馈点成功解码一个数据块的延时在本发明定义为mesh网络中的往返时间,记作RTT;
B:令 其中RTTbase为发送节点按照步骤A)计算出来的历史最小RTT,初始状态下RTTbase等于发送节点收到的第一个反馈时所计算出来的RTT,因此,发送节点在第一次收到反馈时无需重新计算发送窗口W的大小;
C:若diff≤0,则RTTbase=RTT;若diff<1,则令W=W++;若diff>3,则令W=W--;其余情况下W保持不变;
步骤(3026):利用步骤(3025)计算出的W值调整发送窗口的大小,此外,如图4所示,发送窗口的调整过程将被周期性地触发以实现窗口能够根据网络状况实时调整;
步骤(303):发送参数以及发送窗口选择完毕后,发送节点将利用所选参数组织数据包的编码发送,如图5所示,具体包括如下处理:
步骤(3031):读取待发送数据,并对数据进行分组打包,依次赋予每个数据包一个序号和其所属的数据块编号,数据块编号通过数据包序号模编码长度L获得,将所获得的数据块编号和数据包序号放入包头,令IDcurrent等于当前处理的数据包所属的数据块的编号;
步骤(3032):将获得数据包存入发送节点本地的待编码队列;
步骤(304):对步骤(303)构造的待编码队列中的数据包进行网络编码操作,具体步骤如下:
步骤(3041):检索本地待发送队列,查找是否有数据块编号等于IDcurrent的编码包,若不存在继续执行步骤3042),反之转至步骤3043);
步骤(3042):随机生成一个有限域中的数e0,设p0为当前数据包,则编码包C0=e0·p0;
步骤(3043):假设本地待编码队列中存在n个数据块编号为IDcurrent的编码包:
PT={p0,p1,p2,...,pn}
随机生成一个有限域中的n维随机向量E={e0,e1,e2,...,en},用随机向量与数据包进行线性组合即可得到编码包C=E·P;
步骤(3044):参与编码的随机向量称为编码向量,将编码向量加入到所得的编码包的包头;
步骤(305):判断发送窗口是否就绪,具体判断过程如下:
步骤(3051):计算IDupper=W+IDack,初始状态下IDack的值为-1,意味着尚未收到任何数据块的反馈消息;
步骤(3052):当IDcurrent≤IDupper时,说明发送节点存在可供数据块IDcurrent发送使用的窗口,即发送窗口就绪;若发送窗口尚未就绪,将步骤(304)获得的编码包存入待发送队列,然后回到步骤(303)继续读取待发送数据,待编码队列有一个最大长度限制,当发送窗口长时间不能就绪,待编码队列达到最大长度限制时,发送节点将不再读取待发送数据,而是进入等待发送窗口就绪状态;
步骤(306):将步骤(304)所获得的编码包以及待发送队列中的所有编码包发送到mesh网络中去,同时删除待发送队列和待编码队列中的对应编码包和数据包。
作为本发明的一种优化方法:如图6所示,所述步骤(4)包括如下具体处理:
步骤(400):接收节点检查收到的步骤(306)中的编码包的编码向量,确定编码长度L,L为1时转至步骤(404);否则,继续执行步骤(401);
步骤(401):接收节点从本地缓存中找出数据块编号和所收到的编码包一致的所有编码包的编码向量,若所收到编码包的编码向量与找出的本地缓存中的所有相关编码向量线性无关,则认为该收到的编码包包含新信息,并继续执行步骤(402);若检查结果表明新收到的编码包不包含任何新信息,则直接丢弃,等待接收下一个编码包,重复执行本步骤;
步骤(402):将该编码包存入接收节点的本地缓存中;
步骤(403):判断接收到的编码包的序号是否为偶数,若为偶数继续执行步骤(404);否则直接结束,等待接收下一个编码包,重复执行本步骤;
步骤(404):将本地缓存中数据块编号和所收到的编码包一致的所有编码包进行二次编码,用一组对应维度的有限域中的随机向量将每个编码包进行线性组合并将参与编码的随机向量加入到该编码包的包头中;
步骤(405):将编码包发送到mesh网络中去,mesh网络中的接收节点接收该编码包;
步骤(406):若该节点不是接收节点,则直接结束操作;如果该节点是接收节点则继续执行步骤(407);
步骤(407):找出上述接收节点的本地缓存中数据块编号和所收到的编码包一致的所有编码包,连同所收到的编码包,将他们的编码向量组成编码矩阵;
步骤(408):在这些编码包中找出原始数据包信息量最大的一个,定义一个编码包的原始数据包信息量为参与该编码包编码过程的原始数据包个数;
步骤(409):若步骤(407)确定的编码矩阵的秩大于步骤(408)获得的最大原始数据报信息量,则确定出现解码机会,并继续执行步骤(410);否则该接收节点继续等待接收下一个编码包并转而执行步骤(407);
步骤(410):通过高斯消元法和公式P=E-1·C从编码包中恢复出原始数据包,其中,C定义为参与解码过程的编码包所组成的向量,E定义为这些编码包包头中所包含的编码向量组成的编码矩阵,P即为恢复出的原始数据包。
Claims (1)
1.一种基于拥塞控制的无线多跳网多播方法,其特征在于,包括如下具体步骤:
步骤(1):构建数据分发所需的mesh型网络,所述mesh型网络中包括发送节点、接收节点、中间节点和核心节点,并对构建的mesh型网络进行功能性维护,具体包括如下处理:
步骤(11):在网络初始状态下,将最先申明加入多播组的接收节点标记为核心节点;
步骤(12):核心节点构造MA控制包,核心节点按照自身信息填充MA控制包各字段的控制信息,从而构造一个MA控制包,初始状态下,核心节点构造的MA控制包具有如下内容:MA序号为0,核心节点ID即为本身节点号,到核心节点跳数为0,父节点ID为本身节点号,mesh节点标志为True,节点位置坐标为本身坐标,核心节点将构造完成的MA控制包广播至网络中,核心节点的所有邻居节点将收到该MA控制包,其中,MA序号定义为全局性序号;
步骤(13):邻居节点作为接收节点接收到MA控制包后解析其中所包含的控制信息,若该接收节点是第一次收到MA控制包,则按照该MA控制包所包含的控制信息构建邻居节点信息表,邻居节点信息表记录了该接收节点所有邻居节点的ID、核心节点节点号、该接收节点的所有邻居节点距离核心节点跳数、所有邻居节点的mesh节点标志是否为True和所有邻居节点的位置坐标,并转而执行步骤(16);若该接收节点不是第一次收到MA控制包,继续执行步骤(14);
步骤(14):判断收到的MA控制包是否有效:通过该MA控制包所包含的MA序号判断该MA控制包是否过时,对于同一邻居节点发送过来的MA控制包,拥有最大MA序号的认为是有效的,并继续执行步骤(15);否则,直接丢弃该MA控制包并转而执行步骤(13);
步骤(15):利用本次所收到的MA控制包中的控制信息更新现存的邻居节点信息表,即用本次接收到的MA控制包中的控制字段覆盖现存的邻居节点信息表中的对应内容;
步骤(16):步骤(13)中的接收节点从自己的邻居节点信息表中选择距离核心节点跳数最少的一个邻居节点作为自己的父节点,若出现跳数相同情况,则以坐标位置计算出的离自身物理距离较近的邻居节点作为父节点,该节点本身距离核心节点的跳数为所选择父节点距离核心节点跳数值加1,若该节点也准备加入多播组,则置mesh节点标志位为True,否则,检索整个邻居节点信息表,寻找是否出现以该节点作为父节点,mesh节点标志为True并且距离核心节点跳数大于该节点的邻居节点,若在邻居节点信息表中发现同时符合该三个条件的节点,则认为该节点有一个子mesh节点,此时该节点作为子mesh节点的父节点,也将自己标记为mesh节点,否则,mesh节点标志为False,在这里我们将非接收节点的mesh节点称为mesh网络中的中间节点,最后依据以上讨论获得的信息,该节点构造出一个新的MA控制包,并广播给自己的邻居节点,各邻居节点按照步骤(11)至步骤(16)的方法进行处理,从而完成了mesh型网络的功能性维护;
步骤(2):在步骤(1)构建的mesh型网络中,发送节点周期性发送网络状态探测包来获取mesh网络的各项状况信息,并对获取的各项状况信息进行评估,并将评估结果转换为参数的形式,具体包括如下处理:
步骤(21):发送节点缓存的状态信息拥有一个时戳,记录了上一次获取网络状态信息的时间点,发送节点在本地缓存中检查上一次获得的网络状态信息上的时戳,如果时戳所记录的时间点与当前时间间隔超过To,则转向步骤(22);否则,直接将所检查到的网络状态信息输出,其中,To定义为发送节点所缓存的网络状态信息的过时时间;
步骤(22):发送节点发送状态请求控制包Squery到步骤(1)中构建的mesh网络中去,以请求其反馈发送节点所需的网络状态信息,Squery包含一个时戳字段,记录发送节点发送该控制包时的时间点,mesh网络中的所有中间节点对该控制包进行转发,而接收节点对该控制包Squery进行响应,具体包括如下处理:
步骤(221):接收节点收到控制包Squery后,首先判定自己是否是核心节点,如果不是核心节点则转至步骤(222);否则,转至步骤(223);
步骤(222):接收节点根据控制包Squery中的时戳信息计算接收到该控制包时的延时ti,同时将该延时信息ti通过Sreport控制消息发送至核心节点,Sreport控制消息包含上述延时信息ti外还拥有一个标记接收节点序号的字段,用以区分不同的接收节点状态信息;
步骤(223):核心节点从本地缓存中检索接收节点状态信息,如果该核心节点所维护的网络中的所有接收节点均通过Sreport反馈了其节点状态信息,即mesh网络中的接收节点数目与收到的不同节点序号的Sreport控制信息的个数相同,则转至步骤(225);否则,顺序执行步骤(224);
步骤(224):核心节进入等待状态,等待一段时间后转至步骤(223),其中,等待时间为发送节点连续发送两个编码包的时间间隔;
步骤(225):核心节点通过所获取的各接收节点的延时信息ti,通过如下处理选取一个反馈参考点:
a:核心节点通过所获取的信息计算各接收节点收到发送节点发送的Squery控制信息的平均延时,即E(ti;i∈M);
b:以该平均值为起点,向ti增大或者减小的方向进行搜索,第一次遇到的值即作为反馈参考延时,其所对应的节点r即选为反馈参考点;
c:核心节点通过发送一个简单通知信息至所选择的反馈参考点,以通知其被选择成为反馈参考点;
步骤(23):将核心节点所确定的反馈参考延时信息tR,通过Supdate控制包反馈到发送节点,Supdate控制包除了包含参考延时信息tR外,还包含mesh网络的接收节点的平均邻居节点个数其计算公式为:由于核心节点维护着整个mesh网络,通过其拥有的各接收节点的位置信息(xi,yi);i∈M,计算获得S的值,最终,核心节点反馈给发送节点的信息包括参考延时信息tR和mesh网络的接收节点的平均邻居节点个数其中,S定义为覆盖所有接收节点的最小面积;
步骤(3):发送节点根据接收到的评估结果自适应选择网络编码的编码参数,并动态调整编码参数,同时,发送节点根据核心节点所提供网络冲突情况改变发送窗口大小,并将处于发送窗口中的数据包编码后传输至中间节点,具体包括如下处理:
步骤(301):通过参数来确定最佳编码长度L;
步骤(302):发送节点根据核心节点反馈的mesh网络状态调整发送窗口大小,并通过mesh网络反馈自身信息供发送节点调整发送速率,具体包括如下处理:
步骤(3021):发送节点初始状态下设置发送窗口W大小为4,并对处于窗口内的数据包进行编码发送;
步骤(3022):由步骤(225)所选择的反馈参考点在成功恢复出某一数据块的所有原始数据包后,计算出从发送节点发出这些数据包到反馈参考点恢复出这些数据包的延时,即用成功恢复出原始数据包时的时间减去收到关于这个数据块的第一个编码包的时间;
步骤(3023):构造Sreport控制包,将计算出的延时通过该控制包汇报给核心节点,通过最优路径将Sreport控制包投递至核心节点;
步骤(3024):核心节点接收到反馈参考点发送过来的Sreport控制包后,将该控制包通过发送节点到达核心节点的最优路径的反向路径反馈给发送节点;
步骤(3025):发送节点接收到核心节点发送过来的Sreport控制包后重新计算发送窗口W的大小,具体计算过程如下:
A:将Sreport控制包从核心节点到达发送节点的延时加上Sreport控制包中记录的参考反馈点成功解码一个数据块的延时定义为mesh网络中的往返时间,记作RTT;
B:令其中RTTbase为发送节点按照步骤A)计算出来的历史最小RTT,初始状态下RTTbase等于发送节点收到的第一个反馈时所计算出来的RTT,因此,发送节点在第一次收到反馈时无需重新计算发送窗口W的大小;
C:若diff≤0,则RTTbase=RTT;若diff<1,则令W=W++;若diff>3,则令W=W--;其余情况下W保持不变;
步骤(3026):利用步骤(3025)计算出的W值调整发送窗口的大小,此外,发送窗口的调整过程将被周期性地触发以实现窗口能够根据网络状况实时调整;
步骤(303):发送参数以及发送窗口选择完毕后,发送节点将利用所选参数组织数据包的编码发送,具体包括如下处理:
步骤(3031):读取待发送数据,并对数据进行分组打包,依次赋予每个数据包一个序号和其所属的数据块编号,数据块编号通过数据包序号模编码长度L获得,将所获得的数据块编号和数据包序号放入包头,令IDcurrent等于当前处理的数据包所属的数据块的编号;
步骤(3032):将获得数据包存入发送节点本地的待编码队列;
步骤(304):对步骤(303)构造的待编码队列中的数据包进行网络编码操作,具体步骤如下:
步骤(3041):检索本地待发送队列,查找是否有数据块编号等于IDcurrent的编码包,若不存在继续执行步骤3042),反之转至步骤3043);
步骤(3042):随机生成一个有限域中的数e0,设p0为当前数据包,则编码包C0=e0·p0;
步骤(3043):假设本地待编码队列中存在n个数据块编号为IDcurrent的编码包:
PT={p0,p1,p2,...,pn}
随机生成一个有限域中的n维随机向量E={e0,e1,e2,...,en},用随机向量与数据包进行线性组合即可得到编码包C=E·P;
步骤(3044):参与编码的随机向量称为编码向量,将编码向量加入到所得的编码包的包头;
步骤(305):判断发送窗口是否就绪,具体判断过程如下:
步骤(3051):计算IDupper=W+IDack,初始状态下IDack的值为-1,意味着尚未收到任何数据块的反馈消息;
步骤(3052):当IDcurrent≤IDupper时,说明发送节点存在可供数据块IDcurrent发送使用的窗口,即发送窗口就绪;若发送窗口尚未就绪,将步骤(304)获得的编码包存入待发送队列,然后回到步骤(303)继续读取待发送数据,待编码队列有一个最大长度限制,当发送窗口长时间不能就绪,待编码队列达到最大长度限制时,发送节点将不再读取待发送数据,而是进入等待发送窗口就绪状态;
步骤(306):将步骤(304)所获得的编码包以及待发送队列中的所有编码包发送到mesh网络中去,同时删除待发送队列和待编码队列中的对应编码包和数据包;
步骤(4):所述中间节点对接收到的编码包进行二次编码操作,并将二次编码操作后的编码包发送至接收节点,接收节点在接收到足够多的编码包时,通过编码的逆操作恢复出原始数据包,具体包括如下处理:
步骤(400):接收节点检查收到的步骤(306)中的编码包的编码向量,确定编码长度L,L为1时转至步骤(404);否则,继续执行步骤(401);
步骤(401):接收节点从本地缓存中找出数据块编号和所收到的编码包一致的所有编码包的编码向量,若所收到编码包的编码向量与找出的本地缓存中的所有相关编码向量线性无关,则认为该收到的编码包包含新信息,并继续执行步骤(402);若检查结果表明新收到的编码包不包含任何新信息,则直接丢弃,等待接收下一个编码包,重复执行本步骤;
步骤(402):将该编码包存入接收节点的本地缓存中;
步骤(403):判断接收到的编码包的序号是否为偶数,若为偶数继续执行步骤(404);否则直接结束,等待接收下一个编码包,重复执行本步骤;
步骤(404):将本地缓存中数据块编号和所收到的编码包一致的所有编码包进行二次编码,用一组对应维度的有限域中的随机向量将每个编码包进行线性组合并将参与编码的随机向量加入到该编码包的包头中;
步骤(405):将编码包发送到mesh网络中去,mesh网络中的接收节点接收该编码包;
步骤(406):若接收该编码包的节点不是接收节点,则直接结束操作;如果接收该编码包的节点是接收节点,则继续执行步骤(407);
步骤(407):找出上述接收节点的本地缓存中数据块编号和所收到的编码包一致的所有编码包,连同所收到的编码包,将他们的编码向量组成编码矩阵;
步骤(408):在这些编码包中找出原始数据包信息量最大的一个,定义一个编码包的原始数据包信息量为参与该编码包编码过程的原始数据包个数;
步骤(409):若步骤(407)确定的编码矩阵的秩大于步骤(408)获得的最大原始数据包信息量,则确定出现解码机会,并继续执行步骤(410);否则该接收节点继续等待接收下一个编码包并转而执行步骤(407);
步骤(410):通过高斯消元法和公式P=E-1·C从编码包中恢复出原始数据包,其中,C定义为参与解码过程的编码包所组成的向量,E定义为这些编码包包头中所包含的编码向量组成的编码矩阵,P即为恢复出的原始数据包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310083974.6A CN103209435B (zh) | 2013-03-15 | 2013-03-15 | 基于拥塞控制的无线多跳网多播方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310083974.6A CN103209435B (zh) | 2013-03-15 | 2013-03-15 | 基于拥塞控制的无线多跳网多播方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103209435A CN103209435A (zh) | 2013-07-17 |
CN103209435B true CN103209435B (zh) | 2015-07-08 |
Family
ID=48756489
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310083974.6A Expired - Fee Related CN103209435B (zh) | 2013-03-15 | 2013-03-15 | 基于拥塞控制的无线多跳网多播方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103209435B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104955120B (zh) * | 2015-05-19 | 2018-08-21 | 河海大学 | 基于部分网络编码的无线自组网干扰感知实时多播方法 |
CN105939526A (zh) * | 2015-11-17 | 2016-09-14 | 深圳大学 | 一种无线传感器网络拥塞的控制方法及系统 |
CN105791399B (zh) * | 2016-02-29 | 2018-02-09 | 郑家亮 | 多中继互联网大数据推送方法和系统 |
CN105744489B (zh) * | 2016-03-31 | 2018-01-16 | 安阳师范学院 | 蜂窝‑vanet异构网络的多播速率优化方法 |
CN109104262B (zh) * | 2018-07-03 | 2021-12-10 | 深圳市智慧海洋科技有限公司 | 一种水声无线可靠通信方法 |
CN109889450B (zh) * | 2019-03-13 | 2021-12-21 | 西南交通大学 | 组播速率控制方法以及组播传输设备 |
CN110650087A (zh) * | 2019-10-09 | 2020-01-03 | 四川灵通电讯有限公司 | 栅格网络及应用该栅格网络的数据转发式可靠传输方法 |
CN113891172B (zh) * | 2021-09-02 | 2022-10-04 | 西北工业大学 | 一种适于无线Mesh网络的基于RTT的自适应码率控制方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102438207A (zh) * | 2011-12-12 | 2012-05-02 | 河海大学 | 一种无线多跳网中的实时多播方法 |
-
2013
- 2013-03-15 CN CN201310083974.6A patent/CN103209435B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102438207A (zh) * | 2011-12-12 | 2012-05-02 | 河海大学 | 一种无线多跳网中的实时多播方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103209435A (zh) | 2013-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103209435B (zh) | 基于拥塞控制的无线多跳网多播方法 | |
Rathi et al. | A review on routing protocols for application in wireless sensor networks | |
CN102291448B (zh) | 移动自组织网络中基于地理位置的ip地址自动分配方法 | |
CN105704678B (zh) | 移动自组织网络中基于邻居成功广播率的广播方法 | |
CN102148756A (zh) | 一种基于6LoWPAN邻居发现的树状路由方法 | |
US10257718B2 (en) | Method for configuring a network comprising several nodes, a method for transmitting data in said network, and corresponding equipment and computer program | |
CN103796271A (zh) | 一种适用于树型无线传感网的IPv6路由器冗余方法 | |
CN108462983B (zh) | 基于改进蚁群aodv协议的多机器人通信组网方法 | |
Ahmed | A fault-tolerant, energy-efficient routing protocol for wireless sensor networks | |
CN103037436B (zh) | 一种基于HWMP的网络编码感知无线Mesh路由协议 | |
Subhashree et al. | Modified LEACH: A QoS-aware clustering algorithm for wireless sensor networks | |
CN105872986B (zh) | 移动Ad Hoc网络中基于节点成功广播率和能量均衡的广播方法 | |
Eslaminejad et al. | Classification of Energy-Efficient Routing Protocols for Wireless Sensor Networks. | |
Basarkod et al. | Node movement stability and congestion aware anycast routing in mobile ad hoc networks | |
Su et al. | An efficient multi-source multicast routing protocol in mobile ad hoc networks | |
Menon | Optimized opportunistic routing in highly dynamic ad hoc networks | |
Babulal et al. | Cross layer energy efficient routing (XLE2R) for prolonging lifetime of wireless sensor networks | |
Ali-Fedila et al. | Performance evaluation of probabilistic broadcast in low-power and lossy networks | |
Rabarijaona et al. | Hierarchical mesh routing implementation for indoor data collection | |
Khaoua et al. | Gossip-based interest forwarding in NDN over MANETs | |
Sirdeshpande et al. | Lifetime Maximization Using Modified Leach Protocol for Energy Efficient Routing In Wireless Sensor Networks | |
Ren et al. | An effective hybrid routing algorithm for opportunistic networks | |
Al-Turjman et al. | Energy-Aware Routing Protocol for Nanosensor Networks | |
Dhage et al. | An improved method for scalability issue in wireless sensor networks | |
Chandra et al. | Modified Leach Algorithm In Wireless Sensor Network |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150708 Termination date: 20180315 |
|
CF01 | Termination of patent right due to non-payment of annual fee |