专利摘要
本发明提供了一种移动自组网的数据通信方法,所述移动自组网由节点构成;移动自组网中通信的数据由名称唯一标识;一个节点由地址唯一标识,地址可以是MAC地址;移动自组网中通信的消息由消息类型唯一标识;本发明所要解决的技术问题是针对现有技术的不足,提供了一种移动自组网的数据通信方法。本发明能够有效提高获取服务数据的成功率,提高了服务质量,本发明可应用于环境监测、医疗健康等领域,具有广泛的应用前景。
权利要求
1.一种移动自组网的数据通信方法,其特征在于,所述移动自组网由节点构成;移动自组网中通信的数据由名称唯一标识;一个节点由地址唯一标识,地址是MAC地址;移动自组网中通信的消息由消息类型唯一标识,消息类型的值和消息名称的对应关系如下表所示:
如果一个节点能够提供一种数据,则该节点称为该数据的提供者;一个节点保存一个邻居表,一个邻居表项包含地址、坐标、能量、速度和生命周期;一个邻居消息包含消息类型、地址、坐标、能量和速度;移动自组网内的节点N1定期执行下述操作:
步骤101:开始;
步骤102:节点N1发送邻居消息,该邻居消息中,消息类型的值为1,坐标为节点N1的坐标,地址为节点N1的地址,速度为节点N1当前的速度,能量为节点N1当前的能量;
步骤103:其他节点接收到邻居消息后查看自己的邻居表,如果存在一个邻居表项,该邻居表项的地址等于该邻居消息的地址,该节点则将该邻居表项的速度、坐标和能量更新为该邻居消息的速度、坐标和能量,将生命周期设置为最大值;否则,该节点创建一个邻居表项,该邻居表项的地址等于该邻居消息的地址,速度、坐标和能量分别为该邻居消息的速度、坐标和能量,将生命周期设置为最大值;
步骤104:结束;
每个节点保存一个提供者表,一个提供者表项包含地址、名称、坐标、能量和生命周期;一个发布消息包含消息类型、名称、源地址、目的地址、坐标和能量;节点N1的坐标为(x1,y1),能提供数据DA1,数据DA1由名称NA1标识,节点N1定期执行下述操作:
步骤201:开始;
步骤202:节点N1针对每个邻居表项执行下述操作:节点N1构建一个发布消息,该发布消息的消息类型的值为2,坐标、源地址和能量分别为节点N1的坐标、地址和能量,发布消息的名称为NA1,发布消息的目的地址设置为该邻居表项的地址,节点N1发送该发布消息;
步骤203:其他节点接收到该发布消息后查看提供者表,如果存在一个提供者表项,该提供者表项的地址等于该发布消息的源地址,且名称等于该发布消息的名称且生命周期大于阈值TH1,则执行步骤210,否则执行步骤204;
步骤204:接收到该发布消息的节点查看提供者表,如果存在一个提供者表项,该提供者表项的地址等于该发布消息的源地址,且名称等于该发布消息的名称,则执行步骤205,否则执行步骤206;
步骤205:接收到该发布消息的节点选择一个提供者表项,该提供者表项的地址等于该发布消息的源地址且名称等于该发布消息的名称,将该提供者表项的坐标和能量更新为该发布消息的坐标和能量,将生命周期设置为最大值,执行步骤207;
步骤206:接收到该发布消息的节点创建一个提供者表项,该提供者表项的地址等于该发布消息的源地址,名称等于该发布消息的名称,坐标和能量分别为该发布消息的坐标和能量,将生命周期设置为最大值;
步骤207:接收到该发布消息的节点查看自己的地址是否与该发布消息的目的地址相同,如果是,则执行步骤208,否则执行步骤210;
步骤208:接收到该发布消息的节点查看是否存在一个邻居表项,该邻居表项的坐标与发布消息坐标之间的距离大于自己的坐标与发布消息坐标之间的距离,如果是,则执行步骤209,否则执行步骤210;
步骤209:接收到该发布消息的节点选择所有符合条件1的邻居表项,针对每个选中的邻居表项,该节点利用公式(1)计算该邻居表项的权值w1,其中,e1为该邻居表项的能量域值,(x2,y2)为该邻居表项的坐标;该节点选择权值w1最大的邻居表项,将该发布消息的目的地址设置为该邻居表项的地址,发送该发布消息,执行步骤203;
条件1:该邻居表项的坐标与发布消息坐标之间的距离大于接收到该发布消息的节点坐标与发布消息坐标之间的距离;
步骤210:结束。
2.根据权利要求1所述的一种移动自组网的数据通信方法,其特征在于,每个节点保存一个路径表,一个路径表项包含名称和地址;
每个节点保存一个缓存表,一个缓存表项包含名称、数据值和生命周期;
每个查询消息包含消息类型、名称、源地址、目的地址、最终地址、最终坐标、节点地址和节点能量;
每个响应消息包含消息类型、名称、目的地址、节点地址、节点能量和负载;
节点N2的坐标为(x3,y3),数据DA1由名称NA1标识,如果数据DA1的点击率低于预设值,节点N2则通过下述过程获取数据DA1:
步骤301:开始;
步骤302:节点N2查看提供者表,针对每个提供者表项利用公式(2)计算该提供者表项的权值w2,其中e2为该提供者表项的能量值,(x4,y4)为该提供者表项的坐标;节点N2选择一个权值w2最大的提供者表项,构建一个查询消息,该查询消息的消息类型的值为3,名称为NA1,源地址为节点N2的地址,目的地址为0,最终地址和最终坐标分别等于该提供者表项的地址和坐标,节点地址和节点能量为0;节点N2查看是否存在一个邻居表项,该邻居表项的地址等于该查询消息的最终地址,如果存在,则执行步骤303,否则执行步骤304;
步骤303:节点N2选择一个邻居表项,该邻居表项的地址等于该查询消息的最终地址,将构建的查询消息的目的地址设置为该邻居表项的地址,节点N2发送该查询消息,执行步骤305;
步骤304:节点N2选择所有邻居表项,针对每个邻居表项,节点N2利用公式(3)计算该邻居表项的权值w3,其中,e3为该邻居表项的能量值,(x0,y0)为该查询消息的最终坐标,(x5,y5)为该邻居表项的坐标,v1为节点N2的速度,v2为该邻居表项的速度;节点N2选择权值w3最大的邻居表项,将该查询消息的目的地址设置为该邻居表项的地址,发送该查询消息;
步骤305:其他节点接收到该查询消息;如果该节点的地址等于该查询消息的最终地址,则执行步骤315,否则执行步骤306;
步骤306:接收到该查询消息的节点判断自己的地址是否等于该查询消息的目的地址,如果是,则执行步骤307,否则执行步骤323;
步骤307:接收到该查询消息的节点查看自己的能量是否大于该查询消息的节点能量值,如果是,则执行步骤308,否则执行步骤309;
步骤308:接收到该查询消息的节点将该查询消息的节点能量和节点地址值更新为自己的能量值和地址;
步骤309:接收到该查询消息的节点查看缓冲表,如果存在一个缓存表项,该缓存表项的名称等于该查询消息的名称,则执行步骤310,否则执行步骤311;
步骤310:接收到该查询消息的节点选中一个缓存表项,该缓存表项的名称等于该查询消息的名称,发送一个数据消息,该数据消息的消息类型的值为4,名称等于该查询消息的名称,目的地址为该查询消息的源地址,节点地址和节点能量等于该查询消息的节点地址和节点能量,负载为选中的缓存表项的数据值,执行步骤316;
步骤311:接收到该查询消息的节点查看路径表,如果存在一个路径表项,该路径表项的名称等于该查询消息的名称,地址等于该查询消息的源地址,则执行步骤316,否则执行步骤312;
步骤312:接收到该查询消息的节点创建一个路径表项,该路径表项的名称等于该查询消息的名称,地址等于该查询消息的源地址,将该查询消息的源地址更新为自己的地址;该节点查看是否存在一个邻居表项,该邻居表项的地址等于该查询消息的最终地址,如果是,则执行步骤313,否则执行步骤314;
步骤313:接收到该查询消息的节点选择一个邻居表项,该邻居表项的地址等于该查询消息的最终地址,将该查询消息的目的地址设置为该邻居表项的地址,发送该查询消息,执行步骤305;
步骤314:接收到该查询消息的节点选择所有符合条件2的邻居表项,针对每个选中的邻居表项,该节点利用公式(4)计算该邻居表项的权值w4,其中,e4为该邻居表项的能量值,(x6,y6)为该节点的坐标,(x7,y7)为该邻居表项的坐标,v3为该节点的速度,v4为该邻居表项的速度;该节点选择权值w4最大的邻居表项,将该查询消息的目的地址设置为该邻居表项的地址,发送该查询消息,执行步骤305;
条件2:该邻居表项的坐标与该查询消息最终坐标之间的距离小于接收到该查询消息的节点坐标与该查询消息最终坐标之间的距离;
步骤315:接收到该查询消息的节点选中一个缓存表项,该缓存表项的名称等于该查询消息的名称,发送一个数据消息,该数据消息的消息类型的值为4,名称等于该查询消息的名称,目的地址为该查询消息的源地址,节点地址和节点能量等于该查询消息的节点地址和节点能量,负载为选中的缓存表项的数据值;
步骤316:节点接收到该数据消息,如果该节点的地址等于该数据消息的节点地址,则执行步骤317,否则执行步骤318;
步骤317:接收到该数据消息的节点将该数据消息的节点地址和节点能量设置为0,查看是否存在一个缓存表项,该缓存表项的名称等于该数据消息的名称;如果是,则将该缓存表项的生命周期设置为最大值,否则,创建一个缓存表项,该缓存表项的名称等于该数据消息的名称,数据值为该数据消息负载中的数据,生命周期设置为最大值;
步骤318:接收到该数据消息的节点查看自己的地址是否等于该数据消息的目的地址,如果是,则执行步骤319,否则执行步骤323;
步骤319:如果接收到该数据消息的节点想获取该数据消息名称所标识的数据,则执行步骤320,否则执行步骤321;
步骤320:接收到该数据消息的节点创建一个缓存表项,该缓存表项的名称等于该数据消息的名称,数据值为该数据消息负载中的数据,生命周期设置为最大值;
步骤321:接收到该数据消息的节点选择所有名称等于该数据消息名称的路径表项,如果选中的路径表项数量为0,则执行步骤323,否则执行步骤322;
步骤322:接收到该数据消息的节点选择所有名称等于该数据消息名称的路径表项,针对每个选中的路径表项,该节点执行下述操作:将该数据消息的目的地址更新为该路径表项的地址,转发该数据消息,删除该路径表项,执行步骤316;
步骤323:结束。
3.根据权利要求2所述的一种移动自组网的数据通信方法,其特征在于,每个请求消息包含消息类型、名称、源地址、目的地址、最终地址、最终坐标、节点地址和节点能量;
节点N2的坐标为(x3,y3),数据DA1由名称NA1标识,如果数据DA1的点击率大于预设值,节点N2则通过下述过程获取数据DA1:
步骤401:开始;
步骤402:节点N2查看提供者表,针对每个提供者表项利用公式(2)计算该提供者表项的权值w2;节点N2选择一个权值w2最大的提供者表项,构建一个请求消息,该请求消息的消息类型的值为5,名称为NA1,源地址为节点N2的地址,目的地址为0,最终地址和最终坐标分别等于该提供者表项的地址和坐标,节点地址和节点能量为0;节点N2查看是否存在一个邻居表项,该邻居表项的地址等于该请求消息的最终地址,如果存在,则执行步骤403,否则执行步骤404;
步骤403:节点N2选择一个邻居表项,该邻居表项的地址等于该请求消息的最终地址,将构建的请求消息的目的地址设置为该邻居表项的地址,发送该请求消息,执行步骤405;
步骤404:节点N2选择所有邻居表项,针对每个邻居表项,节点N2利用公式(3)计算该邻居表项的权值w3,选择权值w3最大的邻居表项,将该请求消息的目的地址设置为该邻居表项的地址,发送该请求消息;
步骤405:节点接收到该请求消息;如果该节点的地址等于该请求消息的最终地址,则执行步骤415,否则执行步骤406;
步骤406:接收到该请求消息的节点判断自己的地址是否等于该请求消息的目的地址,如果是,则执行步骤407,否则执行步骤423;
步骤407:接收到该请求消息的节点查看自己的能量是否大于该请求消息的节点能量值,如果大于,则执行步骤408,否则执行步骤409;
步骤408:接收到该请求消息的节点将该请求消息的节点能量和节点地址值更新为自己的能量值和地址;
步骤409:接收到该请求消息的节点查看缓冲表;如果存在一个缓存表项,该缓存表项的名称等于该请求消息的名称,则执行步骤410,否则执行步骤411;
步骤410:接收到该请求消息的节点选中一个缓存表项,该缓存表项的名称等于该请求消息的名称,发送一个数据消息,该数据消息的消息类型的值为4,名称等于该请求消息的名称,目的地址为该请求消息的源地址,节点地址和节点能量等于该请求消息的节点地址和节点能量,负载为选中的缓存表项的数据值,执行步骤416;
步骤411:接收到该请求消息的节点查看路径表,如果存在一个路径表项,该路径表项的名称等于该请求消息的名称,地址等于该请求消息的源地址,则执行步骤416,否则执行步骤412;
步骤412:接收到该请求消息的节点创建一个路径表项,该路径表项的名称等于该请求消息的名称,地址等于该请求消息的源地址,将该请求消息的源地址更新为自己的地址;该节点查看是否存在一个提供者表项,该提供者表项的坐标与自己的坐标之间的距离小于该请求消息最终坐标与自己的坐标之间的距离,如果存在,则该节点则将该请求消息的最终坐标和最终地址更新为该提供者表项的坐标和地址,否则,该请求消息的最终坐标和最终地址保持不变;该节点查看是否存在一个邻居表项,该邻居表项的地址等于该请求消息的最终地址,如果存在,则执行步骤413,否则执行步骤414;
步骤413:接收到该请求消息的节点选择一个邻居表项,该邻居表项的地址等于该请求消息的最终地址,将该请求消息的目的地址设置为该邻居表项的地址,发送该请求消息,执行步骤405;
步骤414:接收到该请求消息的节点选择所有符合条件3的邻居表项,针对每个选中的邻居表项,该节点利用公式(5)计算该邻居表项的权值w5,其中,e5为该邻居表项的能量值,(x10,y10)为该请求消息的最终坐标,(x8,y8)为该节点的坐标,(x9,y9)为该邻居表项的坐标,v5为该节点的速度,v6为该邻居表项的速度;该节点选择权值w5最大的邻居表项,将该请求消息的目的地址设置为该邻居表项的地址,发送该请求消息,执行步骤405;
条件3:该邻居表项的坐标与该请求消息最终坐标之间的距离小于接收到该请求消息的节点坐标与该请求消息最终坐标之间的距离;
步骤415:接收到该请求消息的节点选中一个缓存表项,该缓存表项的名称等于该请求消息的名称,发送一个数据消息,该数据消息的消息类型的值为4,名称等于该请求消息的名称,目的地址为该请求消息的源地址,节点地址和节点能量等于该请求消息的节点地址和节点能量,负载为选中的缓存表项的数据值;
步骤416:节点接收到该数据消息,如果该节点的地址等于该数据消息的节点地址,则执行步骤417,否则执行步骤418;
步骤417:接收到该数据消息的节点将该数据消息的节点地址和节点能量设置为0,查看是否存在一个缓存表项,该缓存表项的名称等于该数据消息的名称;如果是,则将该缓存表项的生命周期设置为最大值,否则,创建一个缓存表项,该缓存表项的名称等于该数据消息的名称,数据值为该数据消息负载中的数据,生命周期设置为最大值;
步骤418:接收到该数据消息的节点查看自己的地址是否等于该数据消息的目的地址,如果是,则执行步骤419,否则执行步骤423;
步骤419:如果接收到该数据消息的节点想获取该数据消息名称所标识的数据,则执行步骤420,否则执行步骤421;
步骤420:接收到该数据消息的节点创建一个缓存表项,该缓存表项的名称等于该数据消息的名称,数据值为该数据消息负载中的数据,生命周期设置为最大值;
步骤421:接收到该数据消息的节点选择所有名称等于该数据消息名称的路径表项,如果选中的路径表项数量为0,则执行步骤423,否则执行步骤422;
步骤422:接收到该数据消息的节点选择所有名称等于该数据消息名称的路径表项,针对每个选中的路径表项,该节点执行下述操作:将该数据消息的目的地址更新为该路径表项的地址,转发该数据消息,删除该路径表项,执行步骤416;
步骤423:结束。
说明书
技术领域
本发明涉及一种通信方法,尤其涉及的是一种移动自组网的数据通信方法。
背景技术
移动自组网是一种新的服务模式。近年来,很多研究工作致力于移动自组网,以便用户人能够快速获取网络服务。随着网络技术的发展,移动自组网会成为未来提供服务的一种模式。
目前,移动自组网的数据通信成功率都比较低,降低了网络服务性能。因此,如何降低移动自组网提供服务的延迟和代价成为近年来研究的热点问题。
发明内容
发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供了一种移动自组网的数据通信方法。本发明通过单播取代广播的方式来实现数据通信,同时选择能量足够大的节点构成的最短路径实现数据通信,从而有效提高了网络服务性能。
技术方案:本发明公开了一种移动自组网的数据通信方法,所述移动自组网由节点构成;移动自组网中通信的数据由名称唯一标识;一个节点由地址唯一标识,地址可以是MAC地址;移动自组网中通信的消息由消息类型唯一标识,消息类型的值和消息名称的对应关系如下表所示:
如果一个节点能够提供一种数据,则该节点称为该数据的提供者;一个节点保存一个邻居表,一个邻居表项包含地址、坐标、能量、速度和生命周期,生命周期取值范围为500ms到1000ms;一个邻居消息包含消息类型、地址、坐标、能量和速度;移动自组网内的节点N1定期执行下述操作:
步骤101:开始;
步骤102:节点N1发送邻居消息,该邻居消息中,消息类型的值为1,坐标为节点N1的坐标,地址为节点N1的地址,速度为节点N1当前的速度,能量为节点N1当前的能量,即剩余的电量;
步骤103:其他节点接收到邻居消息后查看自己的邻居表,如果存在一个邻居表项,该邻居表项的地址等于该邻居消息的地址,该节点则将该邻居表项的速度、坐标和能量更新为该邻居消息的速度、坐标和能量,将生命周期设置为最大值;否则,该节点创建一个邻居表项,该邻居表项的地址等于该邻居消息的地址,速度、坐标和能量分别为该邻居消息的速度、坐标和能量,将生命周期设置为最大值;
步骤104:结束。
此节点通过上述过程建立邻居表,能够获取邻居节点的速度,坐标以及当前可用电量,从而能够选择能量比较充足的节点作为下一跳节点,从而确保数据通信能够正常执行,避免由于电量不足而引起的通信失败。节点的能量比较充足是指其能量大于初始能量的70%。
本发明所述方法中,每个节点保存一个提供者表,一个提供者表项包含地址、名称、坐标、能量和生命周期;一个发布消息包含消息类型、名称、源地址、目的地址、坐标和能量;节点N1的坐标为(x1,y1),能提供数据DA1,数据DA1由名称NA1标识,节点N1定期执行下述操作:
步骤201:开始;
步骤202:节点N1针对每个邻居表项执行下述操作:节点N1构建一个发布消息,该发布消息的消息类型的值为2,坐标、源地址和能量分别为节点N1的坐标、地址和能量,发布消息的名称为NA1,发布消息的目的地址设置为该邻居表项的地址,节点N1发送该发布消息;
步骤203:其他节点接收到该发布消息后查看提供者表,如果存在一个提供者表项,该提供者表项的地址等于该发布消息的源地址,且名称等于该发布消息的名称且生命周期大于阈值TH1,TH1设置为最大生命周期的90%,则执行步骤210,否则执行步骤204;
步骤204:接收到该发布消息的节点查看提供者表,如果存在一个提供者表项,该提供者表项的地址等于该发布消息的源地址,且名称等于该发布消息的名称,则执行步骤205,否则执行步骤206;
步骤205:接收到该发布消息的节点选择一个提供者表项,该提供者表项的地址等于该发布消息的源地址且名称等于该发布消息的名称,将该提供者表项的坐标和能量更新为该发布消息的坐标和能量,将生命周期设置为最大值,执行步骤207;
步骤206:接收到该发布消息的节点创建一个提供者表项,该提供者表项的地址等于该发布消息的源地址,名称等于该发布消息的名称,坐标和能量分别为该发布消息的坐标和能量,将生命周期设置为最大值;
步骤207:接收到该发布消息的节点查看自己的地址是否与该发布消息的目的地址相同,如果是,则执行步骤208,否则执行步骤210;
步骤208:接收到该发布消息的节点查看是否存在一个邻居表项,该邻居表项的坐标与发布消息坐标之间的距离大于自己的坐标与发布消息坐标之间的距离,如果是,则执行步骤209,否则执行步骤210;
步骤209:接收到该发布消息的节点选择所有符合条件1的邻居表项,针对每个选中的邻居表项,该节点利用公式(1)计算该邻居表项的权值w1,其中,e1为该邻居表项的能量域值,(x2,y2)为该邻居表项的坐标;该节点选择权值w1最大的邻居表项,将该发布消息的目的地址设置为该邻居表项的地址,发送该发布消息,执行步骤203;
条件1:该邻居表项的坐标与发布消息坐标之间的距离大于接收到该发布消息的节点坐标与发布消息坐标之间的距离;
步骤210:结束。
节点通过上述过程建立提供者表,这样节点可以根据提供者表项种的坐标和能量阈值选择最优的提供者提供数据,从而降低数据通信延迟和代价;上述过程通过生命周期来确保每个提供者信息的正确性和实时性,从而确保了数据通信的成功率。
本发明所述方法中,每个节点保存一个路径表,一个路径表项包含名称和地址;
每个节点保存一个缓存表,一个缓存表项包含名称、数据值和生命周期;
每个查询消息包含消息类型、名称、源地址、目的地址、最终地址、最终坐标、节点地址和节点能量;
每个响应消息包含消息类型、名称、目的地址、节点地址、节点能量和负载;
节点N2的坐标为(x3,y3),数据DA1由名称NA1标识,如果数据DA1的点击率低于预设值,例如小于总点击量的3%,总点击量指节点访问所有数据的总次数,节点N2则通过下述过程获取数据DA1:
步骤301:开始;
步骤302:节点N2查看提供者表,针对每个提供者表项利用公式(2)计算该提供者表项的权值w2,其中e2为该提供者表项的能量值,(x4,y4)为该提供者表项的坐标;节点N2选择一个权值w2最大的提供者表项,构建一个查询消息,该查询消息的消息类型的值为3,名称为NA1,源地址为节点N2的地址,目的地址为0,最终地址和最终坐标分别等于该提供者表项的地址和坐标,节点地址和节点能量为0;节点N2查看是否存在一个邻居表项,该邻居表项的地址等于该查询消息的最终地址,如果存在,则执行步骤303,否则执行步骤304;
步骤303:节点N2选择一个邻居表项,该邻居表项的地址等于该查询消息的最终地址,将构建的查询消息的目的地址设置为该邻居表项的地址,节点N2发送该查询消息,执行步骤305;
步骤304:节点N2选择所有邻居表项,针对每个邻居表项,节点N2利用公式(3)计算该邻居表项的权值w3,其中,e3为该邻居表项的能量值,(x0,y0)为该查询消息的最终坐标,(x5,y5)为该邻居表项的坐标,v1为节点N2的速度,v2为该邻居表项的速度;节点N2选择权值w3最大的邻居表项,将该查询消息的目的地址设置为该邻居表项的地址,发送该查询消息;
步骤305:其他节点接收到该查询消息;如果该节点的地址等于该查询消息的最终地址,则执行步骤315,否则执行步骤306;
步骤306:接收到该查询消息的节点判断自己的地址是否等于该查询消息的目的地址,如果是,则执行步骤307,否则执行步骤323;
步骤307:接收到该查询消息的节点查看自己的能量是否大于该查询消息的节点能量值,如果是,则执行步骤308,否则执行步骤309;
步骤308:接收到该查询消息的节点将该查询消息的节点能量和节点地址值更新为自己的能量值和地址;
步骤309:接收到该查询消息的节点查看缓冲表,如果存在一个缓存表项,该缓存表项的名称等于该查询消息的名称,则执行步骤310,否则执行步骤311;
步骤310:接收到该查询消息的节点选中一个缓存表项,该缓存表项的名称等于该查询消息的名称,发送一个数据消息,该数据消息的消息类型的值为4,名称等于该查询消息的名称,目的地址为该查询消息的源地址,节点地址和节点能量等于该查询消息的节点地址和节点能量,负载为选中的缓存表项的数据值,执行步骤316;
步骤311:接收到该查询消息的节点查看路径表,如果存在一个路径表项,该路径表项的名称等于该查询消息的名称,地址等于该查询消息的源地址,则执行步骤316,否则执行步骤312;
步骤312:接收到该查询消息的节点创建一个路径表项,该路径表项的名称等于该查询消息的名称,地址等于该查询消息的源地址,将该查询消息的源地址更新为自己的地址;该节点查看是否存在一个邻居表项,该邻居表项的地址等于该查询消息的最终地址,如果是,则执行步骤313,否则执行步骤314;
步骤313:接收到该查询消息的节点选择一个邻居表项,该邻居表项的地址等于该查询消息的最终地址,将该查询消息的目的地址设置为该邻居表项的地址,发送该查询消息,执行步骤305;
步骤314:接收到该查询消息的节点选择所有符合条件2的邻居表项,针对每个选中的邻居表项,该节点利用公式(4)计算该邻居表项的权值w4,其中,e4为该邻居表项的能量值,(x6,y6)为该节点的坐标,(x7,y7)为该邻居表项的坐标,v3为该节点的速度,v4为该邻居表项的速度;该节点选择权值w4最大的邻居表项,将该查询消息的目的地址设置为该邻居表项的地址,发送该查询消息,执行步骤305;
条件2:该邻居表项的坐标与该查询消息最终坐标之间的距离小于接收到该查询消息的节点坐标与该查询消息最终坐标之间的距离;
步骤315:接收到该查询消息的节点选中一个缓存表项,该缓存表项的名称等于该查询消息的名称,发送一个数据消息,该数据消息的消息类型的值为4,名称等于该查询消息的名称,目的地址为该查询消息的源地址,节点地址和节点能量等于该查询消息的节点地址和节点能量,负载为选中的缓存表项的数据值;
步骤316:节点接收到该数据消息,如果该节点的地址等于该数据消息的节点地址,则执行步骤317,否则执行步骤318;
步骤317:接收到该数据消息的节点将该数据消息的节点地址和节点能量设置为0,查看是否存在一个缓存表项,该缓存表项的名称等于该数据消息的名称;如果是,则将该缓存表项的生命周期设置为最大值,否则,创建一个缓存表项,该缓存表项的名称等于该数据消息的名称,数据值为该数据消息负载中的数据,生命周期设置为最大值;
步骤318:接收到该数据消息的节点查看自己的地址是否等于该数据消息的目的地址,如果是,则执行步骤319,否则执行步骤323;
步骤319:如果接收到该数据消息的节点想获取该数据消息名称所标识的数据,则执行步骤320,否则执行步骤321;
步骤320:接收到该数据消息的节点创建一个缓存表项,该缓存表项的名称等于该数据消息的名称,数据值为该数据消息负载中的数据,生命周期设置为最大值;
步骤321:接收到该数据消息的节点选择所有名称等于该数据消息名称的路径表项,如果选中的路径表项数量为0,则执行步骤323,否则执行步骤322;
步骤322:接收到该数据消息的节点选择所有名称等于该数据消息名称的路径表项,针对每个选中的路径表项,该节点执行下述操作:将该数据消息的目的地址更新为该路径表项的地址,转发该数据消息,删除该路径表项,执行步骤316;
步骤323:结束。
节点通过上述过程获取数据,由于上述过程通过邻居节点的权值来选择下一跳节点,建立到达目的节点的最优路由路径,从而降低了数据通信延迟和代价;此外,由于选择的提供者和邻居节点的能量都足够实现数据通信,从而避免了由于电量不足而引起的通信失败,确保了数据通信的成功率。
本发明所述方法中,每个请求消息包含消息类型、名称、源地址、目的地址、最终地址、最终坐标、节点地址和节点能量;
节点N2的坐标为(x3,y3),数据DA1由名称NA1标识,如果数据DA1的点击率大于预设值,例如大于或者等于总点击量的3%,节点N2则通过下述过程获取数据DA1:
步骤401:开始;
步骤402:节点N2查看提供者表,针对每个提供者表项利用公式(2)计算该提供者表项的权值w2;节点N2选择一个权值w2最大的提供者表项,构建一个请求消息,该请求消息的消息类型的值为5,名称为NA1,源地址为节点N2的地址,目的地址为0,最终地址和最终坐标分别等于该提供者表项的地址和坐标,节点地址和节点能量为0;节点N2查看是否存在一个邻居表项,该邻居表项的地址等于该请求消息的最终地址,如果存在,则执行步骤403,否则执行步骤404;
步骤403:节点N2选择一个邻居表项,该邻居表项的地址等于该请求消息的最终地址,将构建的请求消息的目的地址设置为该邻居表项的地址,发送该请求消息,执行步骤405;
步骤404:节点N2选择所有邻居表项,针对每个邻居表项,节点N2利用公式(3)计算该邻居表项的权值w3,选择权值w3最大的邻居表项,将该请求消息的目的地址设置为该邻居表项的地址,发送该请求消息;
步骤405:节点接收到该请求消息;如果该节点的地址等于该请求消息的最终地址,则执行步骤415,否则执行步骤406;
步骤406:接收到该请求消息的节点判断自己的地址是否等于该请求消息的目的地址,如果是,则执行步骤407,否则执行步骤423;
步骤407:接收到该请求消息的节点查看自己的能量是否大于该请求消息的节点能量值,如果大于,则执行步骤408,否则执行步骤409;
步骤408:接收到该请求消息的节点将该请求消息的节点能量和节点地址值更新为自己的能量值和地址;
步骤409:接收到该请求消息的节点查看缓冲表;如果存在一个缓存表项,该缓存表项的名称等于该请求消息的名称,则执行步骤410,否则执行步骤411;
步骤410:接收到该请求消息的节点选中一个缓存表项,该缓存表项的名称等于该请求消息的名称,发送一个数据消息,该数据消息的消息类型的值为4,名称等于该请求消息的名称,目的地址为该请求消息的源地址,节点地址和节点能量等于该请求消息的节点地址和节点能量,负载为选中的缓存表项的数据值,执行步骤416;
步骤411:接收到该请求消息的节点查看路径表,如果存在一个路径表项,该路径表项的名称等于该请求消息的名称,地址等于该请求消息的源地址,则执行步骤416,否则执行步骤412;
步骤412:接收到该请求消息的节点创建一个路径表项,该路径表项的名称等于该请求消息的名称,地址等于该请求消息的源地址,将该请求消息的源地址更新为自己的地址;该节点查看是否存在一个提供者表项,该提供者表项的坐标与自己的坐标之间的距离小于该请求消息最终坐标与自己的坐标之间的距离,如果存在,则该节点则将该请求消息的最终坐标和最终地址更新为该提供者表项的坐标和地址,否则,该请求消息的最终坐标和最终地址保持不变;该节点查看是否存在一个邻居表项,该邻居表项的地址等于该请求消息的最终地址,如果存在,则执行步骤413,否则执行步骤414;
步骤413:接收到该请求消息的节点选择一个邻居表项,该邻居表项的地址等于该请求消息的最终地址,将该请求消息的目的地址设置为该邻居表项的地址,发送该请求消息,执行步骤405;
步骤414:接收到该请求消息的节点选择所有符合条件3的邻居表项,针对每个选中的邻居表项,该节点利用公式(5)计算该邻居表项的权值w5,其中,e5为该邻居表项的能量值,(x10,y10)为该请求消息的最终坐标,(x8,y8)为该节点的坐标,(x9,y9)为该邻居表项的坐标,v5为该节点的速度,v6为该邻居表项的速度;该节点选择权值w5最大的邻居表项,将该请求消息的目的地址设置为该邻居表项的地址,发送该请求消息,执行步骤405;
条件3:该邻居表项的坐标与该请求消息最终坐标之间的距离小于接收到该请求消息的节点坐标与该请求消息最终坐标之间的距离;
步骤415:接收到该请求消息的节点选中一个缓存表项,该缓存表项的名称等于该请求消息的名称,发送一个数据消息,该数据消息的消息类型的值为4,名称等于该请求消息的名称,目的地址为该请求消息的源地址,节点地址和节点能量等于该请求消息的节点地址和节点能量,负载为选中的缓存表项的数据值;
步骤416:节点接收到该数据消息,如果该节点的地址等于该数据消息的节点地址,则执行步骤417,否则执行步骤418;
步骤417:接收到该数据消息的节点将该数据消息的节点地址和节点能量设置为0,查看是否存在一个缓存表项,该缓存表项的名称等于该数据消息的名称;如果是,则将该缓存表项的生命周期设置为最大值,否则,创建一个缓存表项,该缓存表项的名称等于该数据消息的名称,数据值为该数据消息负载中的数据,生命周期设置为最大值;
步骤418:接收到该数据消息的节点查看自己的地址是否等于该数据消息的目的地址,如果是,则执行步骤419,否则执行步骤423;
步骤419:如果接收到该数据消息的节点想获取该数据消息名称所标识的数据,则执行步骤420,否则执行步骤421;
步骤420:接收到该数据消息的节点创建一个缓存表项,该缓存表项的名称等于该数据消息的名称,数据值为该数据消息负载中的数据,生命周期设置为最大值;;
步骤421:接收到该数据消息的节点选择所有名称等于该数据消息名称的路径表项,如果选中的路径表项数量为0,则执行步骤423,否则执行步骤422;
步骤422:接收到该数据消息的节点选择所有名称等于该数据消息名称的路径表项,针对每个选中的路径表项,该节点执行下述操作:将该数据消息的目的地址更新为该路径表项的地址,转发该数据消息,删除该路径表项,执行步骤416;
步骤423:结束。
节点通过上述过程获取数据,由于上述过程通过邻居节点的权值来选择下一跳节点,建立到达目的节点的最优路由路径,从而降低了数据通信延迟和代价;此外,由于选择的提供者和邻居节点的能量都足够实现数据通信,从而避免了由于电量不足而引起的通信失败,确保了数据通信的成功率。
有益效果:本发明所要解决的技术问题是针对现有技术的不足,提供了一种移动自组网的数据通信方法。本发明能够有效提高获取服务数据的成功率,提高了服务质量,本发明可应用于环境监测、医疗健康等领域,具有广泛的应用前景。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
图1为本发明所述的建立邻居表流程示意图。
图2为本发明所述的发布数据流程示意图。
图3为本发明所述的数据通信流程示意图。
图4为本发明所述的获取数据流程示意图。
具体实施方式:
本发明所要解决的技术问题是针对现有技术的不足,提供了一种移动自组网的数据通信方法。本发明能够有效提高获取服务数据的成功率,提高了服务质量,本发明可应用于环境监测、医疗健康等领域,具有广泛的应用前景。
图1为本发明所述的建立邻居表流程示意图。所述移动自组网由节点构成;移动自组网中通信的数据由名称唯一标识;一个节点由地址唯一标识,地址可以是MAC地址;移动自组网中通信的消息由消息类型唯一标识,消息类型的值和消息名称的对应关系如下表所示:
如果一个节点能够提供一种数据,则该节点称为该数据的提供者;一个节点保存一个邻居表,一个邻居表项包含地址、坐标、能量、速度和生命周期,生命周期取值范围设置为500ms至1000ms;一个邻居消息包含消息类型、地址、坐标、能量和速度;移动自组网内的节点N1定期执行下述操作:
步骤101:开始;
步骤102:节点N1发送邻居消息,该邻居消息中,消息类型的值为1,坐标为节点N1的坐标,地址为节点N1的地址,速度为节点N1当前的速度,能量为节点N1当前的能量,即剩余的电量;
步骤103:其他节点接收到邻居消息后查看自己的邻居表,如果存在一个邻居表项,该邻居表项的地址等于该邻居消息的地址,该节点则将该邻居表项的速度、坐标和能量更新为该邻居消息的速度、坐标和能量,将生命周期设置为最大值;否则,该节点创建一个邻居表项,该邻居表项的地址等于该邻居消息的地址,速度、坐标和能量分别为该邻居消息的速度、坐标和能量,将生命周期设置为最大值;
步骤104:结束。
此节点通过上述过程建立邻居表,能够获取邻居节点的速度,坐标以及当前可用电量,从而能够选择能量比较充足的节点作为下一跳节点,从而确保数据通信能够正常执行,避免由于电量不足而引起的通信失败。节点的能量比较充足是指其能量大于初始能量的70%。
图2为本发明所述的发布数据流程示意图。每个节点保存一个提供者表,一个提供者表项包含地址、名称、坐标、能量和生命周期;一个发布消息包含消息类型、名称、源地址、目的地址、坐标和能量;节点N1的坐标为(x1,y1),能提供数据DA1,数据DA1由名称NA1标识,节点N1定期执行下述操作:
步骤201:开始;
步骤202:节点N1针对每个邻居表项执行下述操作:节点N1构建一个发布消息,该发布消息的消息类型的值为2,坐标、源地址和能量分别为节点N1的坐标、地址和能量,发布消息的名称为NA1,发布消息的目的地址设置为该邻居表项的地址,节点N1发送该发布消息;
步骤203:其他节点接收到该发布消息后查看提供者表,如果存在一个提供者表项,该提供者表项的地址等于该发布消息的源地址,且名称等于该发布消息的名称且生命周期大于阈值TH1,则执行步骤210,否则执行步骤204;
步骤204:接收到该发布消息的节点查看提供者表,如果存在一个提供者表项,该提供者表项的地址等于该发布消息的源地址,且名称等于该发布消息的名称,则执行步骤205,否则执行步骤206;
步骤205:接收到该发布消息的节点选择一个提供者表项,该提供者表项的地址等于该发布消息的源地址且名称等于该发布消息的名称,将该提供者表项的坐标和能量更新为该发布消息的坐标和能量,将生命周期设置为最大值,执行步骤207;
步骤206:接收到该发布消息的节点创建一个提供者表项,该提供者表项的地址等于该发布消息的源地址,名称等于该发布消息的名称,坐标和能量分别为该发布消息的坐标和能量,将生命周期设置为最大值;
步骤207:接收到该发布消息的节点查看自己的地址是否与该发布消息的目的地址相同,如果是,则执行步骤208,否则执行步骤210;
步骤208:接收到该发布消息的节点查看是否存在一个邻居表项,该邻居表项的坐标与发布消息坐标之间的距离大于自己的坐标与发布消息坐标之间的距离,如果是,则执行步骤209,否则执行步骤210;
步骤209:接收到该发布消息的节点选择所有符合条件1的邻居表项,针对每个选中的邻居表项,该节点利用公式(1)计算该邻居表项的权值w1,其中,e1为该邻居表项的能量域值,(x2,y2)为该邻居表项的坐标;该节点选择权值w1最大的邻居表项,将该发布消息的目的地址设置为该邻居表项的地址,发送该发布消息,执行步骤203;
条件1:该邻居表项的坐标与发布消息坐标之间的距离大于接收到该发布消息的节点坐标与发布消息坐标之间的距离;
步骤210:结束。
节点通过上述过程建立提供者表,这样节点可以根据提供者表项中的坐标和能量阈值选择最优的提供者提供数据,从而降低数据通信延迟和代价;上述过程通过生命周期来确保每个提供者信息的正确性和实时性,从而确保了数据通信的成功率。
图3为本发明所述的数据通信流程示意图。每个节点保存一个路径表,一个路径表项包含名称和地址;
每个节点保存一个缓存表,一个缓存表项包含名称、数据值和生命周期;
每个查询消息包含消息类型、名称、源地址、目的地址、最终地址、最终坐标、节点地址和节点能量;
每个响应消息包含消息类型、名称、目的地址、节点地址、节点能量和负载;
节点N2的坐标为(x3,y3),数据DA1由名称NA1标识,如果数据DA1的点击率低于预设值,例如小于总点击量的3%,节点N2则通过下述过程获取数据DA1:
步骤301:开始;
步骤302:节点N2查看提供者表,针对每个提供者表项利用公式(2)计算该提供者表项的权值w2,其中e2为该提供者表项的能量值,(x4,y4)为该提供者表项的坐标;节点N2选择一个权值w2最大的提供者表项,构建一个查询消息,该查询消息的消息类型的值为3,名称为NA1,源地址为节点N2的地址,目的地址为0,最终地址和最终坐标分别等于该提供者表项的地址和坐标,节点地址和节点能量为0;节点N2查看是否存在一个邻居表项,该邻居表项的地址等于该查询消息的最终地址,如果存在,则执行步骤303,否则执行步骤304;
步骤303:节点N2选择一个邻居表项,该邻居表项的地址等于该查询消息的最终地址,将构建的查询消息的目的地址设置为该邻居表项的地址,节点N2发送该查询消息,执行步骤305;
步骤304:节点N2选择所有邻居表项,针对每个邻居表项,节点N2利用公式(3)计算该邻居表项的权值w3,其中,e3为该邻居表项的能量值,(x0,y0)为该查询消息的最终坐标,(x5,y5)为该邻居表项的坐标,v1为节点N2的速度,v2为该邻居表项的速度;节点N2选择权值w3最大的邻居表项,将该查询消息的目的地址设置为该邻居表项的地址,发送该查询消息;
步骤305:其他节点接收到该查询消息;如果该节点的地址等于该查询消息的最终地址,则执行步骤315,否则执行步骤306;
步骤306:接收到该查询消息的节点判断自己的地址是否等于该查询消息的目的地址,如果是,则执行步骤307,否则执行步骤323;
步骤307:接收到该查询消息的节点查看自己的能量是否大于该查询消息的节点能量值,如果是,则执行步骤308,否则执行步骤309;
步骤308:接收到该查询消息的节点将该查询消息的节点能量和节点地址值更新为自己的能量值和地址;
步骤309:接收到该查询消息的节点查看缓冲表,如果存在一个缓存表项,该缓存表项的名称等于该查询消息的名称,则执行步骤310,否则执行步骤311;
步骤310:接收到该查询消息的节点选中一个缓存表项,该缓存表项的名称等于该查询消息的名称,发送一个数据消息,该数据消息的消息类型的值为4,名称等于该查询消息的名称,目的地址为该查询消息的源地址,节点地址和节点能量等于该查询消息的节点地址和节点能量,负载为选中的缓存表项的数据值,执行步骤316;
步骤311:接收到该查询消息的节点查看路径表,如果存在一个路径表项,该路径表项的名称等于该查询消息的名称,地址等于该查询消息的源地址,则执行步骤316,否则执行步骤312;
步骤312:接收到该查询消息的节点创建一个路径表项,该路径表项的名称等于该查询消息的名称,地址等于该查询消息的源地址,将该查询消息的源地址更新为自己的地址;该节点查看是否存在一个邻居表项,该邻居表项的地址等于该查询消息的最终地址,如果是,则执行步骤313,否则执行步骤314;
步骤313:接收到该查询消息的节点选择一个邻居表项,该邻居表项的地址等于该查询消息的最终地址,将该查询消息的目的地址设置为该邻居表项的地址,发送该查询消息,执行步骤305;
步骤314:接收到该查询消息的节点选择所有符合条件2的邻居表项,针对每个选中的邻居表项,该节点利用公式(4)计算该邻居表项的权值w4,其中,e4为该邻居表项的能量值,(x6,y6)为该节点的坐标,(x7,y7)为该邻居表项的坐标,v3为该节点的速度,v4为该邻居表项的速度;该节点选择权值w4最大的邻居表项,将该查询消息的目的地址设置为该邻居表项的地址,发送该查询消息,执行步骤305;
条件2:该邻居表项的坐标与该查询消息最终坐标之间的距离小于接收到该查询消息的节点坐标与该查询消息最终坐标之间的距离;
步骤315:接收到该查询消息的节点选中一个缓存表项,该缓存表项的名称等于该查询消息的名称,发送一个数据消息,该数据消息的消息类型的值为4,名称等于该查询消息的名称,目的地址为该查询消息的源地址,节点地址和节点能量等于该查询消息的节点地址和节点能量,负载为选中的缓存表项的数据值;
步骤316:节点接收到该数据消息,如果该节点的地址等于该数据消息的节点地址,则执行步骤317,否则执行步骤318;
步骤317:接收到该数据消息的节点将该数据消息的节点地址和节点能量设置为0,查看是否存在一个缓存表项,该缓存表项的名称等于该数据消息的名称;如果是,则将该缓存表项的生命周期设置为最大值,否则,创建一个缓存表项,该缓存表项的名称等于该数据消息的名称,数据值为该数据消息负载中的数据,生命周期设置为最大值;
步骤318:接收到该数据消息的节点查看自己的地址是否等于该数据消息的目的地址,如果是,则执行步骤319,否则执行步骤323;
步骤319:如果接收到该数据消息的节点想获取该数据消息名称所标识的数据,则执行步骤320,否则执行步骤321;
步骤320:接收到该数据消息的节点创建一个缓存表项,该缓存表项的名称等于该数据消息的名称,数据值为该数据消息负载中的数据,生命周期设置为最大值;
步骤321:接收到该数据消息的节点选择所有名称等于该数据消息名称的路径表项,如果选中的路径表项数量为0,则执行步骤323,否则执行步骤322;
步骤322:接收到该数据消息的节点选择所有名称等于该数据消息名称的路径表项,针对每个选中的路径表项,该节点执行下述操作:将该数据消息的目的地址更新为该路径表项的地址,转发该数据消息,删除该路径表项,执行步骤316;
步骤323:结束。
节点通过上述过程获取数据,由于上述过程通过邻居节点的权值来选择下一跳节点,建立到达目的节点的最优路由路径,从而降低了数据通信延迟和代价;此外,由于选择的提供者和邻居节点的能量都足够实现数据通信,从而避免了由于电量不足而引起的通信失败,确保了数据通信的成功率。
图4为本发明所述的获取数据流程示意图。每个请求消息包含消息类型、名称、源地址、目的地址、最终地址、最终坐标、节点地址和节点能量;
节点N2的坐标为(x3,y3),数据DA1由名称NA1标识,如果数据DA1的点击率大于预设值,例如大于或者等于总点击量的3%,节点N2则通过下述过程获取数据DA1:
步骤401:开始;
步骤402:节点N2查看提供者表,针对每个提供者表项利用公式(2)计算该提供者表项的权值w2;节点N2选择一个权值w2最大的提供者表项,构建一个请求消息,该请求消息的消息类型的值为5,名称为NA1,源地址为节点N2的地址,目的地址为0,最终地址和最终坐标分别等于该提供者表项的地址和坐标,节点地址和节点能量为0;节点N2查看是否存在一个邻居表项,该邻居表项的地址等于该请求消息的最终地址,如果存在,则执行步骤403,否则执行步骤404;
步骤403:节点N2选择一个邻居表项,该邻居表项的地址等于该请求消息的最终地址,将构建的请求消息的目的地址设置为该邻居表项的地址,发送该请求消息,执行步骤405;
步骤404:节点N2选择所有邻居表项,针对每个邻居表项,节点N2利用公式(3)计算该邻居表项的权值w3,选择权值w3最大的邻居表项,将该请求消息的目的地址设置为该邻居表项的地址,发送该请求消息;
步骤405:节点接收到该请求消息;如果该节点的地址等于该请求消息的最终地址,则执行步骤415,否则执行步骤406;
步骤406:接收到该请求消息的节点判断自己的地址是否等于该请求消息的目的地址,如果是,则执行步骤407,否则执行步骤423;
步骤407:接收到该请求消息的节点查看自己的能量是否大于该请求消息的节点能量值,如果大于,则执行步骤408,否则执行步骤409;
步骤408:接收到该请求消息的节点将该请求消息的节点能量和节点地址值更新为自己的能量值和地址;
步骤409:接收到该请求消息的节点查看缓冲表;如果存在一个缓存表项,该缓存表项的名称等于该请求消息的名称,则执行步骤410,否则执行步骤411;
步骤410:接收到该请求消息的节点选中一个缓存表项,该缓存表项的名称等于该请求消息的名称,发送一个数据消息,该数据消息的消息类型的值为4,名称等于该请求消息的名称,目的地址为该请求消息的源地址,节点地址和节点能量等于该请求消息的节点地址和节点能量,负载为选中的缓存表项的数据值,执行步骤416;
步骤411:接收到该请求消息的节点查看路径表,如果存在一个路径表项,该路径表项的名称等于该请求消息的名称,地址等于该请求消息的源地址,则执行步骤416,否则执行步骤412;
步骤412:接收到该请求消息的节点创建一个路径表项,该路径表项的名称等于该请求消息的名称,地址等于该请求消息的源地址,将该请求消息的源地址更新为自己的地址;该节点查看是否存在一个提供者表项,该提供者表项的坐标与自己的坐标之间的距离小于该请求消息最终坐标与自己的坐标之间的距离,如果存在,则该节点则将该请求消息的最终坐标和最终地址更新为该提供者表项的坐标和地址,否则,该请求消息的最终坐标和最终地址保持不变;该节点查看是否存在一个邻居表项,该邻居表项的地址等于该请求消息的最终地址,如果存在,则执行步骤413,否则执行步骤414;
步骤413:接收到该请求消息的节点选择一个邻居表项,该邻居表项的地址等于该请求消息的最终地址,将该请求消息的目的地址设置为该邻居表项的地址,发送该请求消息,执行步骤405;
步骤414:接收到该请求消息的节点选择所有符合条件3的邻居表项,针对每个选中的邻居表项,该节点利用公式(5)计算该邻居表项的权值w5,其中,e5为该邻居表项的能量值,(x10,y10)为该请求消息的最终坐标,(x8,y8)为该节点的坐标,(x9,y9)为该邻居表项的坐标,v5为该节点的速度,v6为该邻居表项的速度;该节点选择权值w5最大的邻居表项,将该请求消息的目的地址设置为该邻居表项的地址,发送该请求消息,执行步骤405;
条件3:该邻居表项的坐标与该请求消息最终坐标之间的距离小于接收到该请求消息的节点坐标与该请求消息最终坐标之间的距离;
步骤415:接收到该请求消息的节点选中一个缓存表项,该缓存表项的名称等于该请求消息的名称,发送一个数据消息,该数据消息的消息类型的值为4,名称等于该请求消息的名称,目的地址为该请求消息的源地址,节点地址和节点能量等于该请求消息的节点地址和节点能量,负载为选中的缓存表项的数据值;
步骤416:节点接收到该数据消息,如果该节点的地址等于该数据消息的节点地址,则执行步骤417,否则执行步骤418;
步骤417:接收到该数据消息的节点将该数据消息的节点地址和节点能量设置为0,查看是否存在一个缓存表项,该缓存表项的名称等于该数据消息的名称;如果是,则将该缓存表项的生命周期设置为最大值,否则,创建一个缓存表项,该缓存表项的名称等于该数据消息的名称,数据值为该数据消息负载中的数据,生命周期设置为最大值;
步骤418:接收到该数据消息的节点查看自己的地址是否等于该数据消息的目的地址,如果是,则执行步骤419,否则执行步骤423;
步骤419:如果接收到该数据消息的节点想获取该数据消息名称所标识的数据,则执行步骤420,否则执行步骤421;
步骤420:接收到该数据消息的节点创建一个缓存表项,该缓存表项的名称等于该数据消息的名称,数据值为该数据消息负载中的数据,生命周期设置为最大值;
步骤421:接收到该数据消息的节点选择所有名称等于该数据消息名称的路径表项,如果选中的路径表项数量为0,则执行步骤423,否则执行步骤422;
步骤422:接收到该数据消息的节点选择所有名称等于该数据消息名称的路径表项,针对每个选中的路径表项,该节点执行下述操作:将该数据消息的目的地址更新为该路径表项的地址,转发该数据消息,删除该路径表项,执行步骤416;
步骤423:结束。
节点通过上述过程获取数据,由于上述过程通过邻居节点的权值来选择下一跳节点,建立到达目的节点的最优路由路径,从而降低了数据通信延迟和代价;此外,由于选择的提供者和邻居节点的能量都足够实现数据通信,从而避免了由于电量不足而引起的通信失败,确保了数据通信的成功率。
实施例1
基于表1的仿真参数,本实施例模拟了本发明中的一种移动自组网的数据通信方法,网络启动后,每个节点执行步骤101-104建立邻居表,这样,节点可以通过建立邻居表获取每个邻居节点的当前坐标,地址,速度,能量,生命周期,例如坐标为(120,31),地址为0x00:01:6C:06:A6:29,速度为15km/h,能量为500kJ,生命周期为500ms;如果节点能提供一种数据,该数据可以为视频或者图片,则执行步骤201-210执行发布数据操作,在该过程中,节点首先构建一个发布消息,该消息的消息类型值为2,坐标、源地址和能量分别为该节点的坐标、地址和能量,例如该节点的坐标为(121,30),地址为0x 00:01:6C:06:A7:3A,能量为450kJ,其他节点接收到该发布消息后,通过步骤203-206来创建或者更新该节点所对应的提供者表项,该在提供者表项中,地址为0x 00:01:6C:06:A7:3A,坐标为(121,30),能量为450kJ,生命周期为最大值500ms。如果接收到该发布消息的节点为目的节点,则根据公式(1)计算每个邻居表项的权值,例如,如果一个邻居表项的能量域值等于400kJ,坐标为(120,30),则权值等于400kJ·m,然后选择权值最大的邻居表项的地址所标识的节点作为下一跳节点,这样做的优势在于同时考虑了邻居节点的能量以及发布消息所经历的路径长度,从而达到路径最优以及提高提供者有效性的效果。如果节点访问点击率较低的数据,则通过执行步骤301-323获取该数据,在该过程中,节点首先根据公式(2)计算每个提供者表项的权值,例如,如果一个提供者表项的能量域值等于400kJ,坐标为(120,30),该节点的坐标为(122,30),则权值等于200kJ/m,然后选择从权值最大的提供者表项的地址所标识的节点获取数据,这样做的优势在于同时考虑了提供者的能量以及该节点与该提供者之间的距离,从而避免提供者由于能量不足而无法提供数据的情况,也达到降低数据路径最优的效果,然后该节点构建一个查询消息,该消息的消息类型值为3,源地址为该节点的地址,例如0x 00:01:6C:AB:C4:B1,最终地址和最终坐标分别等于权值最大的提供者表项的地址和坐标,例如,0x 00:01:AC:A1:43:D2和(120,30),然后根据步骤303-315将查询消息路由到提供者,提供者返回一个数据消息,该数据消息通过步骤316-323路由到每一个请求数据的节点。如果节点访问点击率较高的数据,则通过执行步骤401-423获取该数据,在该过程中,节点首先根据公式(2)计算每个提供者表项的权值,例如,如果一个提供者表项的能量域值等于400kJ,坐标为(118,30),该节点的坐标为(122,30),则权值等于100kJ/m,然后选择从权值最大的提供者表项的地址所标识的节点获取数据,这样做的优势在于同时考虑了提供者的能量以及该节点与该提供者之间的距离,从而避免提供者由于能量不足而无法提供数据的情况,也达到降低数据路径最优的效果,然后该节点构建一个请求消息,该消息的消息类型值为5,源地址为该节点的地址,例如0x 00:01:6C:AB:C4:B1,最终地址和最终坐标分别等于权值最大的提供者表项的地址和坐标,例如,0x 00:01:7A:6B:84:0和(118,30),然后根据步骤403-415将查询消息路由到距离最近的提供者,提供者返回一个数据消息,该数据消息通过步骤416-423路由到每一个请求数据的节点。该移动自组网的数据通信方法的性能分析如下:当节点移动速度增加时,网络性能下降,数据通信成功率降低,当节点移动速度降低时,网络性能增强,数据通信成功率提高,数据通信的平均成功率为96.7%。
表1仿真参数
一种移动自组网的数据通信方法专利购买费用说明
Q:办理专利转让的流程及所需资料
A:专利权人变更需要办理著录项目变更手续,有代理机构的,变更手续应当由代理机构办理。
1:专利变更应当使用专利局统一制作的“著录项目变更申报书”提出。
2:按规定缴纳著录项目变更手续费。
3:同时提交相关证明文件原件。
4:专利权转移的,变更后的专利权人委托新专利代理机构的,应当提交变更后的全体专利申请人签字或者盖章的委托书。
Q:专利著录项目变更费用如何缴交
A:(1)直接到国家知识产权局受理大厅收费窗口缴纳,(2)通过代办处缴纳,(3)通过邮局或者银行汇款,更多缴纳方式
Q:专利转让变更,多久能出结果
A:著录项目变更请求书递交后,一般1-2个月左右就会收到通知,国家知识产权局会下达《转让手续合格通知书》。
动态评分
0.0