单跳网络中基于异步时间片的邻居发现方法

文档序号:7813775阅读:335来源:国知局
单跳网络中基于异步时间片的邻居发现方法
【专利摘要】一种节点数已知单跳网络中基于异步时间片的邻居发现方法,所述网络中每个节点包括报文发送模块、报文接收模块和邻居发现主模块,其中所述报文发送模块用于不同报文的组装,报文分为DISCOVERY报文和SUCCESS报文;所述报文接收模块用于接收报文;所述邻居发现主模块分为时间片管理模块、邻居信息模块、节点信息模块。在网络间时间片异步时,对于网络节点n已知的情形,设置当前节点的报文发送模块中发送概率λ是1/(2κ(n-b)),其中κ设置为固定的时间段τ和一个反馈时间段σ之和,同时时间片管理模块设置侦听时间段为Exp(1/λ)。经过本发明方案的处理,可以使得上述邻居发现方法的运行复杂度为Θ(n)。
【专利说明】单跳网络中基于异步时间片的邻居发现方法

【技术领域】
[0001] 本发明涉及无线通信【技术领域】,尤其涉及一种节点数已知单跳网络中基于异步时 间片的邻居发现方法。

【背景技术】
[0002] 无线自组织网络(Wirelessadhocnetworks)是由大量的静止或移动的节点以 自组织单跳或者多跳方式构成的无线网络,它不需要固定通信设备的支持,各节点之间自 行组网。例如,立即部署时,节点不知道它的通信范围内有哪些节点,需要先发现邻居节点, 然后才能和被发现的节点进行通信。邻居发现是无线自组织网络初始化中不可缺少的第一 步,MAC(mediaaccesscontrol),路由协议以及拓扑控制算法都需要知道邻居信息,才能 有效工作。
[0003] 邻居发现方法可分为两类:随机邻居发现和确定邻居发现。在随机邻居发现中, 每个节点传输的次数是随机的,并在一定时间内以极大概率发现所有邻居。在确定邻居发 现中,每个节点按照事先确定的策略进行传输,并在一定时间内以概率1发现所有邻居。然 而,在分布式环境下,确定性往往是以增加运行时间为代价的,由于确定邻居发现存在上述 缺点和不足,我们选择随机邻居发现作为参考提出我们的方法。
[0004] 目前,邻居发现方法面临着如下问题:
[0005] (1)邻居发现需要处理冲突,也就是既要保证冲突的可能性降到最低同时也要保 证用的时间是最少;
[0006] (2)在许多实际情况下,由于网络节点总数未知,进一步加大了算法处理冲突的难 度;
[0007] (3)当全局时钟未知的情况下,要求节点能够异步工作同时能有效的发现所有邻 居;
[0008] (4)在异步条件下,节点可能在不同时间开始邻居发现,可能会错过其它节点传输 数据;
[0009] (5)当邻居个数未知时,节点不知何时终止邻居发现。
[0010] 由于传统的邻居发现方法面临着上述5个问题,需要提出一个能有效解决这些问 题的邻居发现方法。
[0011] 在当前申请的方案中考虑如下的网络模型:
[0012] 用G= (V,E)表示一个单跳无线网络,其中V是n个节点的集合,五c=F2是G中 无向边的集合。节点i和节点j之间存在一条边是指节点j和节点i相互在对方的传输范 围内。节点i和节点j存在一条边,节点j和节点i也存在一条边,即如果(i,j)eE,则 (j,i)eE,并且(i,j)和(j,i)表示同一条边。
[0013] 对单跳无线网络G,作如下假设:
[0014] (1)节点ID是唯一的,即任意两个节点的ID不相同,ID可以设置为节点的MAC地 址或者节点的位置;
[0015] (2)半双工收发器模型,每个节点都有一个接收器和发送器,节点可以发送或接收 报文,但不能同时工作;
[0016] (3)冲突模型,当两个或者更多节点同时发送报文的时候会产生冲突,节点能够侦 听冲突。
[0017] (4)不考虑报文丢失的情况,S卩如果没有冲突发生,那么一个节点发送的报文一定 被另外的节点接收。
[0018] n个节点部署在一个区域中且不知道网络G的信息,定义节点i在时间t内从节点 j收到一条或多条信息,则称节点i在时间t内发现节点j。
[0019] 我们将在上述网络模型和条件下阐述本发明的技术方案。


【发明内容】

[0020] 本发明设计了一种基于反馈信息运行时间是? (n)的单跳网络邻居发现方法,适 用于无线自组织网络中的网络节点进行邻居发现。网络节点能够侦听冲突,即能够区分一 个空闲的时间片和一个有冲突的时间片。本方法解决了标准冲突信道模型下邻居发现面临 的上述问题。
[0021] 无线自组织网络中的一个节点包括报文发送模块、报文接收模块和邻居发现主模 块。报文发送模块用于不同报文的组装,报文分为DISCOVERY报文和SUCCESS报文。报文 接收模块用于接收报文。邻居发现主模块分为时间片管理模块、邻居信息模块、节点信息模 块,其中,时间片管理模块用于把邻居发现过程的分为若干个时间片,在某个具体的时间片 中,由邻居发现主模块协调报文发送模块和报文接收模块处理报文;邻居信息模块维护邻 居节点列表和已发现邻居节点个数,其中邻居节点列表包括已发现邻居节点地址和被发现 标识两个字段;节点信息模块维护自身信息,包括是否已被所有邻居发现的标志flag和节 点自身地址。
[0022] 基于反馈信息运行时间是? (n)的单跳网络邻居发现方法分为两种:基本邻居 发现方法适用于节点间时间片是同步的情况,而异步的邻居发现方法适用于节点间时间片 异步的情况。
[0023] -种节点数已知单跳网络中基于异步时间片的邻居发现方法,包括如下几个步 骤:
[0024] (1)时间片管理模块设置一个侦听时间段t,其中时间t服从均值为1/入的指数 分布,A=1A2k(n-b)),在侦听时间段内,节点不发送DISCOVERY报文,只接收DISCOVERY 报文并发送反馈SUCCESS报文,;
[0025] (2)在侦听时间段t内执行如下操作:节点报文接收模块侦听DISCOVERY报文,如 果成功接收DISCOVERY报文,说明发现了某一个邻居节点,则通过报文发送模块发送反馈 SUCCESS报文,如果没有成功接收DISCOVERY报文,则说明由于冲突或者概率因素没有任何 邻居节点发出DISCOVERY报文,继续进行邻居发现过程;
[0026] (3)当侦听时间段结束以后,未被邻居发现节点通过报文发送模块按照概率1/ (2k(n-b))发送DISCOVERY报文,如果反馈时间段内成功接收SUCCESS,当前节点在成功发 现某一个邻居节点的同时也成功被该邻居节点发现,如果没有成功接收SUCCESS报文,说 明当前节点没有被所有邻居节点发现,即至少存在一个邻居节点没有发现当前节点,则继 续进行邻居发现过程;
[0027] (4)不断执行上述步骤直到所有节点成功发现所有邻居节点同时也被所有邻居节 点发现。
[0028] 可以证明,上述异步邻居发现方法的运行时间仍为?(n)。

【专利附图】

【附图说明】
[0029] 图1示出了单跳网络下邻居发现系统示意图;
[0030] 图2示出了节点间时间片是异步的情况下,单跳网络下基于反馈信息的异步邻居 发现方法流程图;
[0031] 图3示出了DISCOVERY报文和SUCCESS报文的具体格式;
[0032] 图4示出了单跳网络下基于反馈信息的异步邻居发现方法的时序图。

【具体实施方式】
[0033] 下面结合实施例对本发明的技术方案进行具体说明。
[0034] 邻居发现方法是针对整个网络中的全部节点部署实施的方案,即所有节点运行同 样的程序,包括同步邻居发现方法及异步邻居发现方法,对于同步邻居发现方法又分为网 络节点总数已知和未知两种情形,下面将主要对网络节点总数已知的网络中基于异步时 间片对网络邻居进行发现的方法进行描述。
[0035] 网络节点总数n已知的异步邻居发现方法
[0036] 网络中每个节点执行的异步邻居方法(n已知)如图2所示,主要包括以下几个步 骤:
[0037] 步骤301:在邻居信息模块中初始化已发现邻居节点个数b= 0,初始化邻居节点 列表NbrList,在节点信息模块中设置标志flag= 0,跳转步骤302。
[0038] 所述邻居节点列表NbrList主要包括两个字段:已发现邻居节点MAC地址和当前 节点是否被该邻居节点发现标识。已发现邻居节点MAC地址用来记录当前节点已经发现 的邻居节点;当前节点是否被该邻居节点发现标识与已发现邻居节点MAC地址是一一对应 的,代表当前节点是否被对应邻居节点发现,置1代表被发现,置〇代表没有被发现。所述标 志flag是用来判断当前节点是否被邻居节点列表中所有邻居节点发现,假设邻居节点列 表中记录了m个MAC地址(MAQ,MAC2,. . .,MACm),表示当前节点已经发现m个邻居节点,对 应m个被发现标识(BDpBD2,. . .BDm),表示当前节点是否被这m个邻居节点发现,那么flag =BDi八BD2 八? ? ?八BDm,当且仅当BDi=BD2 =? ? ?=BDm = 1 时flag= 1,否则flag= 0〇
[0039] 步骤302:判断flag= 1并且b=n-1是否为真,如果是则结束邻居发现过程,否 则跳转步骤303。
[0040] 所述b= n-1代表当前节点已经发现所有邻居节点,此时邻居节点列表中已经存 在n-1个邻居节点地址,那么此时flag=1代表当前节点已经被n-1个邻居节点发现,因 此flag=1并且b= n-1为真时能够表示当前节点已经发现所有邻居节点同时被所有邻居 节点发现,可以作为判断邻居发现过程结束的条件。如果flag=1并且b= n-1不为真, 则跳转步骤303继续进行下面的邻居发现过程。
[0041] 步骤303:设置当前节点的报文发送模块中发送概率A是1A2k(n-b)),其中K 设置为固定的时间段T和一个反馈时间段0之和,同时时间片管理模块设置侦听时间段 为Exp(1/入),跳转步骤304。
[0042] 所述时间段t表示当前节点发送DISCOVERY报文消耗的时长,反馈时间段〇表 示当前节点等待并接收SUCCESS报文消耗的时长。侦听时间段是专门为当前节点设置的等 待接收DISCOVERY报文并发送反馈SUCCESS报文时间段,在侦听时间段内,当前节点可能接 收到多个邻居节点发送的DISCOVERY报文。
[0043] 步骤304:判断当前节点是否在侦听时间段内并且b不等于n-1,如果是则跳转到 步骤305,否则跳转到步骤310。
[0044] 判断是否处于侦听时间段的目的是:如果在侦听时间段内,则当前节点侦听其他 邻居节点可能发出的DISCOVERY报文,如果不在侦听间隔内,则以概率1A2k(n-b))发送 DISCOVERY报文。b不等于n-1条件表示当前节点没有发现所有的邻居节点,仍需要继续侦 听未被其发现邻居节点发送的DISCOVERY报文,如果达到b= n-1条件表示已经发现所有 邻居节点,当前节点不再需要接收任何DISCOVERY报文。
[0045] 步骤305 :当前节点的报文接收模块侦听DISCOVERY报文,跳转步骤306。
[0046] 步骤306:判断当前节点是否成功接收DISCOVERY报文,如果是则跳转到步骤307, 否则跳转到步骤304。
[0047] 所述成功接收DISCOVERY报文代表当前节点已经成功发现某一个邻居节点,需要 跳转步骤307发送反馈SUCCESS报文;而接收DISCOVERY报文失败代表没有成功发现任何 邻居节点,失败的原因主要有两种情况:第一,报文冲突导致无法接收DISCOVERY报文;第 二,由于概率作用邻居节点没有发送任何DISCOVERY报文。报文冲突分为多个DISCOVERY 报文冲突、DISCOVERY报文和SUCCESS报文冲突、和多个SUCCESS报文冲突三种情况,不管 哪种冲突情况发生,当前节点都需要跳转步骤304继续侦听DISCOVERY报文。
[0048] 步骤307:当前节点的报文发送模块发送反馈SUCCESS报文,跳转步骤308。
[0049] 所述反馈SUCCESS报文是用来告诉邻居节点:当前节点收到了其发来的 DISCOVERY报文,并将自己的地址告诉对方,方便对方发现自己。
[0050] 步骤308:判断已经收到的DISCOVERY报文的源节点MAC地址是否已经存在于邻 居节点列表中,如果是则跳转到步骤304,否则跳转步骤309。
[0051] 如果已经收到的DISCOVERY报文的源节点MAC地址已经存在于邻居节点列表中, 说明当前节点已经发现了该源节点,当前的DISCOVERY报文本来不是发送给当前节点的, 但是真正需要接收DISCOVERY报文的节点没有处于侦听时间段内,从而导致处于侦听时间 段内的当前节点收到了DISC0VERY报文,对于这种情况当前节点丢弃当前DISC0VERY报文 返回步骤304,继续侦听需要的DISCOVERY报文。如果已经收到的DISCOVERY报文的源节点 MAC地址没有存在于邻居节点列表中,表示当前节点没有发现该源节点,则跳转步骤309将 其加入邻居节点列表。
[0052] 步骤309 :当前节点把已经收到的DISCOVERY报文的源节点MAC地址加入到邻居 节点列表中,设置已发现邻居节点个数b= b+1,跳转到步骤304。
[0053] 源节点MAC地址加入到邻居节点列表后,并没有将其对应的被发现标识置1,原因 是虽然当前节点发现了该源节点,但是并没有被该源节点发现(该源节点没有发现当前节 点)。
[0054] 步骤310 :判断当前节点flag是否等于零,如果是则跳转步骤311,否则跳转步骤 302。
[0055] 如果flag= 0表示当前节点还没有被所有邻居节点发现,需要跳转步骤311继续 发送DISCOVERY报文;如果flag= 1则表示当前节点已经被邻居节点列表中记录的节点发 现,需要跳转步骤302判断邻居节点列表中是否已经记录了所有n-1个邻居节点,从而决定 是否继续邻居发现过程。
[0056] 步骤311 :当前节点以概率X发送DISCOVERY报文,跳转步骤312。
[0057] 步骤312 :判断报文接收模块在反馈时间段内是否成功收到SUCCESS报文,如果是 则跳转步骤313,否则跳转步骤311。
[0058] 所述成功接收SUCCESS报文代表某一个邻居节点成功收到了当前节点发送的 DISCOVERY报文并发送了反馈SUCCESS报文,这意味着当前节点被该邻居节点发现了,同时 由于SUCCESS报文中也包含了该邻居节点的MAC地址,那么当前节点通过SUCCESS报文也 发现了该邻居节点,因此需要跳转步骤313将该邻居节点加入邻居节点列表,同时设置已 被发现标识。如果接收SUCCESS报文失败,则需要跳转步骤311继续发送DISCOVERY报 文。SUCCESS报文接收失败有三种情况:第一、之前DISCOVERY报文就没有发送成功,所以没 有返回SUCCESS报文;第二、多个SUCCESS报文发生冲突;第三、SUCCESS报文和DISCOVERY 报文发生冲突。不管哪种原因造成的SUCCESS报文接收失败,都要跳转步骤311重新发送 DISCOVERY 报文。
[0059] 步骤313:判断已接收SUCCESS报文的源节点MAC地址是否已经存在于邻居节点 列表中,如果是则跳转步骤315,否则跳转步骤314。
[0060] 如果已接收SUCCESS报文的源节点MAC地址已经存在于邻居节点列表中,代表当 前节点已经发现该源节点,需要跳转步骤315进一步判断当前节点是否被该源节点发现。 如果已接收SUCCESS报文的源节点MAC地址没有存在于邻居节点列表中,那么说明当前节 点没有发现该源节点同时也没有被该源节点发现,因此需要跳转步骤314,把该源节点加入 邻居节点列表,并设置相应的被发现标识。
[0061] 步骤314:把已收到SUCCESS报文的源节点MAC地址加入邻居节点列表,同时将该 地址对应的被发现标识设置为1,跳转步骤302。
[0062] 步骤315:判断邻居节点列表中已存在的MAC地址对应的被发现标识是否等于1, 如果等于1则跳转步骤302,否则跳转步骤316。
[0063] 如果邻居节点列表中已存在的MAC地址对应的被发现标识等于1,代表当前节点 与MAC地址代表的邻居节点相互发现了,则跳转步骤302判断是否继续进行邻居发现过程; 如果邻居节点列表中已存在的MAC地址对应的被发现标识不等于1,说明当前节点已经发 现MAC地址代表的邻居节点,但是并没有被该邻居节点发现,因此需要跳转步骤316将已存 在的MAC地址对应的被发现标识置为1。
[0064] 步骤316:把邻居节点列表中已存在的MAC地址对应的被发现标识设置为1,跳转 步骤302。
[0065]图4以六个节点为例,展示了单跳网络下基于反馈信息的异步邻居发现方法的 时间线示意图,每个节点的时间段分为三个部分:第一,侦听DISCOVERY报文并发送反馈 SUCCESS报文阶段;第二,发送DISCOVERY报文阶段;第三,侦听并接收反馈SUCCESS报文阶 段。图中展示了以下几种情况:①DISCOVERY报文发送冲突,即节点Ml、M2和M3同时发送 报文的时间段;②空闲阶段,没有报文传输的时间段;③DISCOVERY报文和SUCCESS报文 冲突,节点Ml收到节点M5发送的DISCOVERY报文后,节点Ml发送反馈SUCCESS报文与M3 发送的DISCOVERY报文冲突;④DISCOVERY报文成功接收同时SUCCESS报文也成功接收, 即节点M2成功接收邻居节点Ml的DISCOVERY报文,同时节点M2发送的反馈SUCCESS报 文也成功被邻居节点Ml接收;⑤SUCCESS报文冲突,即节点M5和M6收到节点M2发送的 DISCOVERY报文后,同时发送反馈SUCCESS报文。
[0066] 下面我们证明异步邻居发现方法的运行复杂度也为? (n)。
[0067] 证明:
[0068] 节点在连续的成功传输时间段k=t+ 〇中,节点仍然保持接收状态的间隔时间 服从均值为A的指数分布。[9]中的分析可以扩展到无向天线模型中,为了使邻居发现率 达到最大,入取值如下:

【权利要求】
1. 一种节点数已知单跳网络中基于异步时间片的邻居发现方法,所述网络中节点总数 η已知,节点间时间片为异步,其中每个节点包括报文发送模块、报文接收模块和邻居发现 主模块,其中所述报文发送模块用于不同报文的组装,报文分为DISCOVERY报文和SUCCESS 报文;所述报文接收模块用于接收报文;所述邻居发现主模块分为时间片管理模块、邻居 信息模块、节点信息模块;所述方法包括: 步骤301 :在邻居信息模块中初始化已发现邻居节点个数b = 0,初始化邻居节点列表 NbrList,在节点信息模块中设置标志flag = 0,执行步骤302 ; 步骤302 :判断当前节点是否已经被所有邻居节点发现同时已经发现所有邻居节点, 如果是则结束邻居发现过程,否则跳转到步骤303 ; 步骤303:设置当前节点的报文发送模块中发送概率λ是(η-b)),其中κ设 置为固定的时间段τ和一个反馈时间段〇之和,同时时间片管理模块设置侦听时间段为 Εχρ(1/λ ),执行步骤 304 ; 步骤304 :判断当前节点是否在侦听时间段内并且b不等于η-1,如果是则跳转到步骤 305,否则跳转到步骤310 ; 步骤305 :当前节点的报文接收模块侦听DISCOVERY报文,执行步骤306 ; 步骤306 :判断当前节点的报文接收模块是否成功收到DISCOVERY报文,如果是则跳转 到步骤307,否则跳转到步骤304 ; 步骤307 :当前节点的报文发送模块发送SUCCESS报文,执行步骤308 ; 步骤308 :判断已收到DISCOVERY报文的源节点MAC地址是否已经存在于邻居节点列 表NbrList中,如果是则跳转步骤304,否则跳转步骤309。 步骤309 :当前节点把已收到DISCOVERY报文的源节点MAC地址加入邻居节点列表 NbrList中,设置已发现邻居节点个数b = b+Ι,之后跳转步骤304,继续判断是否在侦听时 间段内。 步骤310 :判断当前节点的标志flag是否等于零,如果等于零,跳转到步骤311,否则跳 转到步骤302 ; 步骤311:当前节点报文发送模块以概率λ发送DISCOVERY报文,跳转步骤312; 步骤312 :判断当前节点报文接收模块在反馈时间段内是否成功收到SUCCESS报文,如 果是则跳转到步骤313,否则跳转到步骤311。 步骤313 :判断已接收SUCCESS报文的源节点MAC地址是否已经存在于邻居节点列表 NbrList中,如果是则跳转步骤315,否则跳转步骤314。 步骤314 :把已收到SUCCESS报文的源节点MAC地址加入邻居节点列表NbrList中,同 时将该地址对应的被发现标识置为1,跳转步骤302。 步骤315 :判断邻居节点列表NbrList中已存在MAC地址对应的被发现标识是否为1, 如果是则跳转步骤302,否则跳转步骤316 ; 步骤316 :把邻居节点列表NbrList中已存在MAC地址对应的被发现标识置为1,跳转 步骤302。
2. 如权利要求1所述的方法,其中所述时间片管理模块用于把邻居发现过程的分为若 干个时间片,在某个具体的时间片,由邻居发现主模块协调报文发送模块和报文接收模块 处理报文;邻居信息模块维护邻居节点列表和已发现邻居节点个数,邻居节点列表中包括 已发现邻居节点MC地址和当前节点是否被该邻居节点发现标识两个字段;节点信息模块 维护自身信息,包括是否已被邻居节点列表中所有邻居发现的标志flag和节点自身地址。
3. 如权利要求1所述的方法,其中步骤303中,时间段τ表示当前节点发送DISCOVERY 报文消耗的时长,反馈时间段σ表示当前节点等待并接收SUCCESS报文消耗的时长。侦听 时间段是专门为当前节点设置的等待接收DISCOVERY报文并发送反馈SUCCESS报文时间 段,在侦听时间段内,当前节点可能接收到多个邻居节点发送的DISCOVERY报文。
4. 如权利要求1所述的方法,其中步骤312中,SUCCESS报文接收失败有三种情况:1) 之前DISCOVERY报文就没有发送成功,所以没有返回SUCCESS报文;或2)多个SUCCESS报 文发生冲突;或3) SUCCESS报文和DISCOVERY报文发生冲突;无论哪种情况发生,都要跳转 步骤311重新发送DISCOVERY报文。
【文档编号】H04L1/16GK104320816SQ201410454128
【公开日】2015年1月28日 申请日期:2014年9月5日 优先权日:2014年9月5日
【发明者】朱沿旭, 左超, 尚国强, 王坚, 李超, 王黎明, 曹廷友, 贾佳 申请人:总装备部工程设计研究总院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1