[0081] 下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
[0082] 图1为本发明所述的地址配置流程示意图。
[0083] 图2为本发明所述建立邻居表流程示意图。
[0084] 图3为本发明所述的计算消息延迟流程示意图。
[0085] 图4为本发明所述网络稳定情况下的数据通信流程示意图。
[0086] 图5为本发明所述网络不稳定情况下的数据通信流程示意图。具体实施方式:
[0087] 本发明提供了一种低延迟的机会网络实现方法,所述网络通过本发明所提供的实现方法可快速获取网络数据,缩短路由延迟,降低数据包丢失率,提高服务质量,本发明可应用于道路路况监测、环境监测等领域,具有广泛的应用前景。
[0088] 图1为本发明所述的地址配置流程示意图。所述机会网络包括移动节点,每个移动节点配置Y个接口,Y为大于1的正整数,每个接口由一个接口ID k唯一标识,k取值1~Y,接口ID为k的接口简写为接口k;每个接口支持一种协议,移动节点的每个接口与邻居移动节点支持相同协议的接口链路相连;每个移动节点将性能最好的接口设置为默认接口;
[0089] 一个移动节点的每个接口配置一个地址,该地址由i比特的横坐标,i比特的纵坐标和j比特的内部ID构成;
[0090] 机会网络中的每个移动节点具有Y个接口,移动节点启动后,执行下述过程为每个接口获取地址:
[0091] 步骤101:开始;
[0092] 步骤102:移动节点创建Y个不同的随机数,每个随机数的长度为j比特,移动节点创建一个随机数集合,该集合由Y个不同的随机数构成;移动节点从默认接口发送一个地址2i+j
消息,该地址消息的源地址为0,目的地址为广播地址,即广播地址的值为2 -1,负载为时间戳和随机数集合;移动节点设置一个时钟;
[0093] 步骤103:如果移动节点检测到时钟衰减为0,则执行步骤105,否则执行步骤104;
[0094] 步骤104:移动节点收到地址消息后,保存该地址消息并从其默认接口转发给地址消息;如果该移动节点发送的地址消息负载中的随机数集合中至少有一个随机数与接收到的地址消息负载中的随机数集合中的随机数相同,并且接收到的地址消息的时间戳早于移动节点发送的地址消息的时间戳,则该移动节点重新创建满足条件1的Y个不同的随机数,每个随机数的长度为j比特,移动节点创建一个随机数集合,该集合由Y个不同的随机数构成;该移动节点从默认接口发送一个地址消息,该地址消息的源地址为0,目的地址为广播地址,负载为时间戳和随机数集合,该移动节点停止上一次设置的时钟并重新设置一个时钟,执行步骤103;
[0095] 条件1:Y个不同的随机数与该移动节点保存的所有地址消息负载中的随机数集合中的任何一个随机数都不同;
[0096] 步骤105:检测到时钟衰减为0的移动节点查看最后发送的地址消息,设置一个参数z,参数z的初始值为1;
[0097] 步骤106:如果参数z的值大于Y,则执行步骤108,否则执行步骤107;
[0098] 步骤107:检测到时钟衰减为0的移动节点将最后发送的地址消息负载中的随机数集合中的第z个元素标记为接口ID为z的接口的地址的内部ID,然后该移动节点将自己当前的地理横坐标和地理纵坐标与接口ID为z的接口的地址的内部ID相结合构建成一个地址,并将该地址标记为接口ID为z的接口的地址;该移动节点将参数z递增1,执行步骤106;
[0099] 步骤108:结束。
[0100] 图2为本发明所述建立邻居表流程示意图。一个移动节点的每个接口的地址的内部ID保持不变,如果该移动节点的地理坐标发生变化,则每个接口的地址的地理横坐标和地理纵坐标为该移动节点当前的地理横坐标和地理纵坐标;
[0101] 移动节点为每个接口配置地址后,通过每个接口定期发送信标消息,信标消息的源地址为发送该信标消息的接口的地址;
[0102] 移动节点为每个接口维护一个邻居表,邻居表的表名为该接口的接口ID;一个邻居表项包括地址域和生命周期域;移动节点启动后,为每个接口创建一个邻居表,该邻居表的表名为该接口的接口ID,邻居表为空;移动节点从接口k2接收到信标消息后,查看表名为k2的邻居表,并通过下述过程构建表名为k2的邻居表;
[0103] 步骤201:开始;
[0104] 步骤202:移动节点查看表名为k2的邻居表,如果存在一个地址域的内部ID等于接收到的信标消息源地址的内部ID的邻居表项,则执行步骤203,否则执行步骤204;
[0105] 步骤203:移动节点选择地址域的内部ID等于接收到的信标消息源地址的内部ID的邻居表项,将该邻居表项的地址域更新为接收到的信标消息的源地址,将生命周期设置为最大值,执行步骤205;
[0106] 步骤204:移动节点在表名为k2的邻居表中创建一个邻居表项,将该邻居表项的地址域为接收到的信标消息的源地址,生命周期为最大值;
[0107] 步骤205:结束;
[0108] 如果移动节点检测到表名为k2的邻居表中的一个邻居表项的生命周期衰减为0,则将该邻居表项从表名为k2的邻居表中删除。
[0109] 图3为本发明所述的计算消息延迟流程示意图。一个移动节点有Y接口,该移动节点为每个接口维护一个发送队列用于缓存等待转发的消息;一个移动节点创建或者接收到一个消息m后,如果该消息的比特长度为gm,那么该移动节点通过下述过程计算发送消息m的一跳延迟:
[0110] 步骤301:开始;
[0111] 步骤302:移动节点设置一个参数e,参数e的初始值为0;
[0112] 步骤303:移动节点将参数e递增1,如果变量e大于Y,则执行步骤305,否则执行步骤304;
[0113] 步骤304:移动节点通过公式(1)计算通过接口e发送消息m的一跳延迟te,在公式(1)中,be为接口e的带宽,ge为接口e的发送队列中的所有消息的总比特长度,执行步骤303;
[0114] te=(gm+ge)/be 公式(1),
[0115] 步骤305:结束。
[0116] 图4为本发明所述网络稳定情况下的数据通信流程示意图。如果所述机会网络物理环境比较稳定且移动节点密度较大的情况下,如果移动节点M1的通信要求为消息的一跳延迟不大于参数T,参数T的值由移动节点M1设置,那么移动节点M1通过下述过程实现与移动节点M2的通信:
[0117] 步骤401:开始;
[0118] 步骤402:移动节点M1构建一个请求消息,该请求消息的源地址为移动节点M1的默认接口的地址,目的地址为移动节点M2的默认接口的地址,负载为移动节点M2的默认接口的地址和参数T;移动节点M1查看自己的Y个接口,移动节点M1执行步骤301~305计算每个接口发送请求消息的一跳延迟;对于符合条件2的每个接口,移动节点M1执行下述操作:移动节点M1选择表名为该接口的接口ID的邻居表,移动节点M1计算该邻居表的每个移动邻居表项中的地址域的地理坐标与请求消息负载中的地址的地理坐标的距离;移动节点M1对符合条件2的所有接口执行上述操作之后,选择符合条件3的邻居表项E1,将请求消息的目的地址更新为邻居表项E1的地址域值,从包含邻居表项E1的邻居表表名所标识的接口发送请求消息;
[0119] 条件2:通过该接口发送请求消息的一跳延迟不大于参数T;
[0120] 条件3:该邻居表项的地址域的地理坐标与请求消息负载中的地址的地理坐标的距离最小,并且通过包含该邻居表项的邻居表表名所标识的接口转发请求消息具有最小的一跳延迟;
[0121] 步骤403:如果移动节点M2接收到请求消息,则执行步骤405,否则执行步骤404;
[0122] 步骤404:接收到请求消息的移动节点查看自己的Y个接口,并执行步骤301~305计算每个接口发送接收到的请求消息的一跳延迟;对于符合条件2的每个接口,该移动节点执行下述操作:移动节点选择表名为该接口的接口ID的邻居表,计算该邻居表中每个移动邻居表项中的地址域的地理坐标与接收到的请求消息负载中的地址的地理坐标的距离;该移动节点对符合条件2的所有接口执行上述操作之后,选择符合条件3的邻居表项E2,将接收到的请求消息的目的地址更新为邻居表项E2的地址域值,从包含邻居表项E2的邻居表表名所标识的接口发送请求消息;执行步骤403;
[0123] 步骤405:移动节点M2接收到请求消息后,移动节点M2构建一个响应消息,该响应消息的源地址为接收到的请求消息负载中的地址,目的地址为接收到的请求消息的源地址,负载为接收到的请求消息的源地址、参数T和响应数据C;移动节点M2查看自己的Y个接口,并执行步骤301~305计算每个接口发送响应消息的一跳延迟;如果至少存在一个符合条件4的接口,则执行步骤406,否则执行步骤407;
[0124] 条件4:通过该接口发送响应消息的一跳延迟不大于参数T;
[0125] 步骤406:对于符合条件4的每个接口,移动节点M2执行下述操作:移动节点M2选择表名为该接口的接口ID的邻居表,计算该邻居表中每个移动邻居表项中的地址域的地理坐标与响应消息负载中的地址的地理坐标的距离;移动节点M2对符合条件4的所有接口执行上述操作之后,选择符合条件5的邻居表项E3,将响应消息的目的地址更新为邻居表项E3的地址域值,从包含邻居表项E3的邻居表表名所标识的接口发送响应消息,执行步骤410;
[0126] 条件5:该邻居表项的地址域的地理坐标与响应消息负载中的地址的地理坐标的距离最小,并且通过包含该邻居表项的邻居表表名所标识的接口转发响应消息的一跳延迟最小;
[0127] 步骤407:移动节点M2将响应数据C平均分为Y个数据块,对于每个数据块,移动节点M2构建一个响应消息,该响应消息的源地址为接收到的请求消息负载中的地址,目的地址为接收到的请求消息的源地址,负载为接收到的请求消息的源地址,参数T和该数据块;移动节点M2构建Y个响应消息后,创建一个消息集合,该集合由构建的Y个响应消息构成;
[0128] 步骤408:移动节点M2查看消息集合,如果消息集合为空,则执行步骤410,否则执行步骤409;
[0129] 步骤409:移动节点M2从消息集合中随机选取一个响应消息,然后查看自己的Y个接口,执行步骤301~305计算每个接口发送该响应消息的一跳延迟;对于符合条件4的每个接口,移动节点M2执行下述操作:移动节点M2选择表名为该接口的接口ID的邻居表,计算该邻居表中每个移动邻居表项中的地址域的地理坐标与响应消息负载中的地址的地理坐标的距离;移动节点M2对符合条件4的所有接口执行上述操作之后,选择符合条件5的邻居表项E4,将响应消息的目的地址更新为邻居表项E4的地址域值,从包含邻居表项E4的邻居表表名所标识的接口发送响应消息;移动节点M2从消息集合中删除选取的响应消息,执行步骤408;
[0130] 步骤410:如果移动节点M1接收到响应消息,则执行步骤412,否则执行步骤411;
[0131] 步骤411:接收到响应消息的移动节点查看自己的Y个接口,并执行步骤301~305计算每个接口发送接收到的响应消息的一跳延迟;对于符合条件4的每个接口,该移动节点执行下述操作:移动节点选择表名为该接口的接口ID的邻居表,计算该邻居表中每个移动邻居表项中的地址域的地理坐标与接收到的响应消息负载中的地址的地理坐标的距离;该移动节点对符合条件4的所有接口执行上述操作之后,选择符合条件5的邻居表项E5,将接收到的响应消息的目的地址更新为邻居表项E5的地址域值,从包含邻居表项E5的邻居表表名所标识的接口发送更新的响应消息,执行步骤410;
[0132] 步骤412:移动节点M1接收到响应消息后,保存响应消息中的响应数据;如果移动节点M1接收到完成的响应数据C,则执行步骤413,否则执行步骤410;
[0133] 步骤413:结束。
[0134] 图5为本发明所述网络不稳定情况下的数据通信流程示意图。如果所述机会网络物理环境不稳定且移动节点密度较小,如果移动节点M1的通信要求为消息的一跳延迟不大于参数T,参数T的值由移动节点M1设置,那么移动节点M1通过下述过程实现与移动节点M2的通信:
[0135] 步骤501:开始;
[0136] 步骤502:移动节点M1创建一个序列号n,并构建一个请求消息,该请求消息的源地址为移动节点M1的默认接口的地址,目的地址为移动节点M2的默认接口的地址,负载为移动节点M2的默认接口的地址、序列号n和参数T;移动节点M1查看自己的Y个接口,移动节点M1执行步骤301~305计算每个接口发送请求消息的一跳延迟;对于符合条件2的每个接口,移动节点M1执行下述操作:移动节点M1选择表名为该接口的接口ID的邻居表,移动节点M1计算该邻居表的每个移动邻居表项中的地址域的地理坐标与请求消息负载中的地址的地理坐标的距离,移动节点M1从该邻居表中选择符合条件6的邻居表项,将请求消息的目的地址更新为该邻居表项的地址域值,从该邻居表表名所标识的接口发送请求消息;
[0137] 条件6:该邻居表项的地址域的地理坐标与请求消息负载中的地址的地理坐标的距离最小;
[0138] 步骤503:如果移动节点M2接收到请求消息,则执行步骤507,否则执行步骤504;
[0139] 步骤504:接收到请求消息的移动节点如果已经接收到具有相同序列号的请求消息,则执行步骤505,否则执行步骤506;
[0140] 步骤505:接收到请求消息的移动节点丢弃该请求消息,执行步骤514;
[0141] 步骤506:接收到请求消息的移动节点查看自己的Y个接口,并执行步骤301~305计算每个接口发送请求消息的一跳延迟;对于符合条件2的每个接口,该移动节点执行下述操作:移动节点选择表名为该接口的接口ID的邻居表,计算该邻居表的每个移动邻居表项中的地址域的地理坐标与接收到的请求消息负载中的地址的地理坐标的距离,移动节点从该邻居表中选择符合条件6的邻居表项,将请求消息的目的地址更新为该符合条件6的邻居表项的地址域值,从该邻居表表名所标识的接口发送请求消息,执行步骤503;
[0142] 步骤507:移动节点M2接收到请求消息,如果移动节点M2已经接收到具有相同序列号的请求消息,则执行步骤508,否则执行步骤509;
[0143] 步骤508:移动节点M2丢弃接收到请求消息,执行步骤514;
[0144] 步骤509:移动节点M2创建一个序列号n1,并构建一个响应消息,该响应消息的源地址为接收到的请求消息负载中的地址,目的地址为接收到的请求消息的源地址,负载为接收到的请求消息的源地址、参数T、序列号n1和响应数据C;移动节点M2查看自己的Y个接口,并执行步骤301~305计算每个接口发送响应消息的一跳延迟;如果至少存在一个符合条件4的接口,则执行步骤510,否则执行步骤511;
[0145] 步骤510:对于符合条件4的每个接口,移动节点M2执行下述操作:移动节点M2选择表名为该接口的接口ID的邻居表,计算该邻居表的每个移动邻居表项中的地址域的地理坐标与构建的响应消息负载中的地址的地理坐标的距离,移动节点从该邻居表中选择符合条件7的邻居表项,将响应消息的目的地址更新为该符合条件7的邻居表项的地址域值,从该邻居表表名所标识的接口发送请求消息,执行步骤514;
[0146] 条件7:该邻居表项的地址域的地理坐标与响应消息负载中的地址的地理坐标的距离最小;
[0147] 步骤511:移动节点M2将响应数据C平均分为Y个数据块,对于每个数据块,移动节点M2创建一个序列号并构建一个响应消息,该响应消息的源地址为接收到的请求消息负载中的地址,目的地址为接收到的请求消息的源地址,负载为接收到的请求消息的源地址、参数T、构建的序列号和该数据块;移动节点M2构建Y个响应消息后,创建一个消息集合,该集合由构建的Y个响应消息构成;
[0148] 步骤512:移动节点M2查看消息集合,如果消息集合为空,则执行步骤514,否则执行步骤513;
[0149] 步骤513:移动节点M2从消息集合中随机选取一个响应消息,查看自己的Y个接口,执行步骤301~305计算每个接口发送该响应消息的一跳延迟;对于符合条件4的每个接口,移动节点M2执行下述操作:移动节点M2选择表名为该接口的接口ID的邻居表,计算该邻居表中每个移动邻居表项中的地址域的地理坐标与响应消息负载中的地址的地理坐标的距离,从该邻居表中选择符合条件7的邻居表项,将选择的响应消息的目的地址更新为符合条件7的邻居表项的地址域值,从该邻居表表名所标识的接口发送选取的响应消息;移动节点M2从消息集合中删除选取的响应消息,执行步骤512;
[0150] 步骤514:如果移动节点M1接收到响应消息,则执行步骤518,否则执行步骤515;
[0151] 步骤515:接收到响应消息的移动节点如果已经接收到具有相同序列号的响应消息,则执行步骤516,否则执行步骤517;
[0152] 步骤516:接收到响应消息的移动节点丢弃接收到的响应消息,执行步骤521;
[0153] 步骤517:接收到响应消息的移动节点查看自己的Y个接口,并执行步骤301~305计算每个接口发送接收到的响应消息的一跳延迟;对于符合条件4的每个接口,该移动节点执行下述操作:移动节点选择表名为该接口的接口ID的邻居表,计算该邻居表中每个移动邻居表项中的地址域的地理坐标与接收到的响应消息负载中的地址的地理坐标的距离,从该邻居表中选择符合条件7的邻居表项,将接收到的响应消息的目的地址更新为该邻居表项的地址域值,从该邻居表表名所标识的接口发送更新的响应消息;执行步骤514;
[0154] 步骤518:移动节点M1接收到响应消息,如果移动节点M1已经接收到具有相同序列号的响应消息,则执行步骤519,否则执行步骤520;
[0155] 步骤519:移动节点M1丢弃接收到的响应消息,执行步骤521;
[0156] 步骤520:移动节点M1保存接收到的响应消息中的响应数据;
[0157] 步骤521:如果移动节点M1接收到完成的响应数据C,则执行步骤522,否则执行步骤514;
[0158] 步骤522:结束。
[0159] 实施例1
[0160] 基于表1的仿真参数,本实施例模拟了本发明中的低延迟的机会网络实现方法,性能分析如下:当网络性能比较稳定时,移动节点获取数据的延迟较低,当网络性能稳定性比较差时,移动节点获取数据的延迟较大;网络获取数据的平均延迟为1.2s。
[0161] 表1仿真参数
[0162]
[0163] 本发明提供了一种低延迟的机会网络实现方法的思路,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部份均可用现有技术加以实现。