节点数未知单跳网络中基于同步时间片的邻居发现方法
【专利摘要】一种节点数未知单跳网络中基于同步时间片的邻居发现方法,所述网络中每个节点包括报文发送模块、报文接收模块和邻居发现主模块,其中所述报文发送模块用于不同报文的组装,报文分为DISCOVERY报文和SUCCESS报文;所述报文接收模块用于接收报文;所述邻居发现主模块分为时间片管理模块、邻居信息模块、节点信息模块。在网络节点间时间片同步时,对于网络节点总数n未知的情形,将运行时间分为多个阶段,第r个阶段持续2r+1e个时间片,每个时间片又分为两个子时间片,设置节点报文发送模块发送概率是1/(2r-b)。经过本发明方案的处理,可以使得上述邻居发现方法的运行复杂度为Θ(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个节点的集合,fcK2是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] -种单跳网络下基于反馈信息运行时间是? (n)的基本邻居发现方法,网络节点 总数n是已知的,而且节点时间片是同步的,包括以下步骤:
[0024] (1)网络节点邻居发现主模块把每个时间片分为两个部分;在第一个子时间片 内,未被邻居发现节点(即flag标志为0)通过报文发送模块以概率lAn-b)随机发送 DISCOVERY报文,n是网络中节点总数,b是已经发现的邻居节点个数,b由邻居信息模块获 得;随着已发现邻居节点个数b的增加,未被邻居发现节点发送DISCOVERY报文的概率逐渐 增大,以此提高未被邻居发现节点被发现的概率。
[0025] (2)在每个时间片的第一个子时间片内,如果当前节点报文接收模块成功接收到 DISCOVERY报文(在同一个子时间片内当前节点只能成功接收一条DISCOVERY报文),则当 前节点向DISCOVERY报文的源节点发送SUCCESS报文,说明当前节点成功发现源节点。
[0026] (3)在每个时间片的第二个子时间片内,如果当前节点的报文接收模块不空闲 (成功接收到一条SUCCESS报文或者侦听到有冲突发生),则说明当前节点成功被邻居节点 发现。
[0027] 网络节点时间片同步而网络节点总数n未知时,邻居发现方法与网络节点n已知 时的方法类似,不同的是邻居发现主模块把时间分为多个阶段,每个阶段维持2rte个时间 片,每个阶段内网络节点执行与n已知时的方法相同的步骤,不同的是节点发送DISCOVERY 报文的概率按照lAf-b)计算。
【专利附图】
【附图说明】
[0028] 图1示出了单跳网络下邻居发现系统示意图;
[0029] 图2-1示出了节点间时间片是同步的情况下,网络节点总数n已知时单跳网络下 基于反馈信息的基本邻居发现方法流程图;
[0030] 图2-2示出了节点间时间片是同步的情况下,网络节点总数n未知时单跳网络下 基于反馈信息的基本邻居发现方法流程图;
[0031] 图3示出了DISCOVERY报文和SUCCESS报文的具体格式。
【具体实施方式】
[0032] 下面结合实施例对本发明的技术方案进行具体说明。
[0033] 邻居发现方法是针对整个网络中的全部节点部署实施的方案,即所有节点运行同 样的程序,包括同步邻居发现方法及异步邻居发现方法,对于同步邻居发现方法又分为网 络节点总数已知和未知两种情形,下面将分别进行描述。
[0034] 1、网络节点总数n已知的同步邻居发现方法
[0035] 如图2-1所示,为单跳网络下基于反馈信息运行时间是?(n)的基本邻居发现方 法(网络节点总数n已知),包括以下几个步骤:
[0036] 步骤101:在邻居信息模块中初始化已发现邻居节点个数b= 0,初始化邻居节点 列表NbrList,在节点信息模块中设置标志flag= 0。
[0037] 步骤102:判断flag= 1并且b=n-1是否为真,如果是则结束邻居发现过程,否 则跳转到步骤103。flag= 1代表当前节点已经被邻居节点发现,b=n-1代表当前节点 已经成功发现所有邻居节点。
[0038] 步骤103:设置节点报文发送模块发送概率是lAn-b)。
[0039] 步骤104:判断当前节点的标志flag是否等于零,等于零表示当前节点未被邻居 节点发现,不等于零表示该节点已被邻居节点发现,如果节点未被邻居发现则跳转到步骤 105,否则跳转到步骤108。
[0040] 如果当前节点未被邻居节点发现,则当前节点才会进入发送DISCOVERY报文的步 骤(步骤105);否则,当前节点进入接收来自邻居节点DISCOVERY报文的步骤(步骤108)。
[0041] 步骤105:当前节点时间片管理模块把当前时间片分为两个子时间片,并且控 制报文发送模块在第一个子时间片内按照lAn-b)的概率发送DISCOVERY报文,如果 DISCOVERY报文发送成功则跳转步骤106,否则跳转步骤108;
[0042]DISCOVERY报文发送成功意味着当前时间片的第一个子时间片内只有当前节点 发送DISCOVERY报文,其它邻居节点接收DISCOVERY报文,当前节点进入等待邻居节点发 送反馈SUCCESS报文的步骤(步骤106)DISCOVERY报文发送不成功代表两种情况:第 一,由于概率的作用,当前节点没有发送DISCOVERY报文,此时当前节点进入接收邻居节点 DISCOVERY报文的步骤(步骤108);第二,当前节点与邻居节点同时发送DISCOVERY报文, 造成冲突发生,此时当前节点和邻居节点同时进入接收DISCOVERY报文的步骤(步骤108)。 [0043]步骤106:判断当前节点报文接收模块在当前时间片的第二个子时间片内信道是 否空闲,如果是空闲的,即跳转到步骤102,否则意味着当前节点成功接收到一个邻居节点 的SUCCESS报文或者多个邻居节点的SUCCESS报文产生了冲突,即当前节点被一个或者多 个邻居节点发现,跳转到步骤107。
[0044] 步骤107:当前节点已被邻居发现,不再发送DISCOVERY报文,设置节点信息模块 中的标志flag= 1,跳转到步骤102。
[0045] 步骤108:判断当前节点是否成功收到其它邻居节点在当前时间片的第一个子时 间片内发送的DISCOVERY报文,如果成功接收了DISCOVERY报文,则跳转到步骤109,否则跳 转到步骤102判断是否继续进行邻居发现过程。当前节点没有成功接收DISCOVERY报文代 表两种情况:第一,没有任何节点发送DISCOVERY报文;第二,两个或者两个以上邻居节点 同时发送DISCOVERY报文导致冲突发生。
[0046] 步骤109:在当前时间片的第二个子时间片内当前节点通过报文发送模块发送反 馈SUCCESS报文,同时将已接收到DISCOVERY报文的源节点MAC地址加入到邻居节点列表 NbrList中,设置已发现邻居节点个数b=b+1,并返回到步骤102判断是否继续进行邻居 发现过程。
[0047] 2、网络节点总数n未知的同步邻居发现方法
[0048] 如图2-2所示,为单跳网络下基于反馈信息运行时间是? (n)的基本邻居发现方 法(网络节点总数n未知),包括以下几个步骤:
[0049] 步骤201:在邻居信息模块中初始化已发现邻居节点个数b= 0,初始化节点邻居 列表NbrList,在节点信息模块中设置标志flag= 0。
[0050] 步骤202:当前节点的时间片管理模块把运行时间分为多个阶段,其中第r个阶段 持续2rte个时间片,设置r的初值为1。
[0051] 步骤203:判断当前节点是否已经被邻居节点发现(flag= 1代表当前节点已经 被邻居节点发现)同时已经成功发现所有邻居节点,如果是则结束邻居发现过程,否则跳 转到步骤204。
[0052] 判断当前节点是否已经成功发现所有邻居节点的方法是:在一个给定的时间段 内,当前节点的报文发现模块没有收到任何DISCOVERY报文,则说明当前节点已经成功发 现所有邻居节点。所述"给定的时间段"可以定义为:如果节点的报文发送时间为t,则给定 的时间段可以是at(a= 2, 3, ? ? ?,n)。
[0053] 利用"给定时间段"判断的机理为,同步情况下当前节点的n-1个邻居节点发送 DISCOVERY报文的概率分别为pl,p2,…,pn-1,那么给定at时间内所有邻居节点都没有发 送DISCOVERY报文的概率是p= (1-pl) * (l-p2) *--? * (1-pn-l),也就是如果保证at时间段 内P极小,那就是说在at时间段内,所有邻居节点同时不发报文的事件是小概率事件,那么 如果出现所有邻居节点都没有发送报文的情况,说明邻居节点确实没有发送Discovery报 文(邻居节点都已经被发现了)。
[0054] 步骤204:判断第r个阶段是否结束,即判断第个r阶段持续的2rte个时间片是 否结束,如果结束,跳转到步骤212,否则跳转到步骤205。
[0055] 步骤205 :设置节点报文发送模块发送概率是1A2Md)。
[0056] 步骤206 :判断当前节点的标志flag是否等于零,等于零表示当前节点未被邻居 节点发现,不等于零表示该节点已被邻居节点发现,如果节点未被邻居发现并且则跳转到 步骤207,否则跳转到步骤208。
[0057] 如果当前节点未被邻居发现,我们要按照概率发送报文,否则,节点的报文接收模 块接收来自其它节点的报文。
[0058] 步骤207 :当前节点时间片管理模块把当前阶段当前时间片分为两个子时间片, 并且控制报文发送模块在第一个子时间片内以概率lAf-b)发送DISCOVERY报文用来进 行邻居发现,如果成功发送DISCOVERY报文则跳转步骤210,否则跳转步骤208。
[0059] DISCOVERY报文发送成功意味着当前阶段当前时间片的第一个子时间片内只有当 前节点发送DISCOVERY报文,其它邻居节点接收DISCOVERY报文,当前节点进入等待邻居节 点发送反馈SUCCESS报文的步骤(步骤210) ;DISC0VERY报文发送不成功代表两种情况:第 一,由于概率的作用,当前节点没有发送DISCOVERY报文,此时当前节点进入接收邻居节点 DISCOVERY报文的步骤(步骤210);第二,当前节点与邻居节点同时发送DISCOVERY报文, 造成冲突发生,此时当前节点和邻居节点同时进入接收DISCOVERY报文的步骤(步骤208)。
[0060] 步骤210 :报文接收模块在当前阶段当前时间片的第二个子时间片内信道是否空 闲,如果是空闲的,则跳转到步骤204,否则意味着当前节点成功接收到了一个邻居节点发 送的SUCCESS报文或者多个邻居节点发送的SUCCESS报文产生了冲突,即当前节点被一个 或者多个邻居节点发现,跳转到步骤211。
[0061] 步骤211 :当前节点已被邻居节点发现,不再发送DISC0VERY报文,设置节点信息 模块中的标志flag= 1,跳转到步骤204。
[0062] 步骤208 :判断当前节点是否成功收到其它邻居节点在当前阶段当前时间片的第 一个子时间片内发送的DISCOVERY报文,如果成功接收了DISCOVERY报文,则跳转到步骤 209,否则跳转到步骤204继续判断r阶段是否结束。当前节点没有成功接收DISCOVERY报 文代表两种情况:第一,没有任何节点发送DISCOVERY报文;第二,两个或者两个以上邻居 节点同时发送DISCOVERY报文导致冲突发生。
[0063] 步骤209 :在当前阶段当前时间片的第二个子时间片内当前节点通过报文发送 模块发送反馈报文SUCCESS,同时将已接收到DISCOVERY报文的源节点MAC地址加入到邻居 节点列表NbrList中,设置已发现邻居节点个数b=b+1,并返回到步骤204。
[0064] 步骤212 :设置阶段r=r+1,跳转步骤203再次进行邻居发现是否完毕的判断及 其后续各步骤。
[0065] 从以上步骤中可以看出我们的邻居发现方法的核心思想是:把每个时间片分为两 个子时间片,在第一个子时间片内节点(假设节点i)按概率发送报文DISCOVERY,然后在第 二个子时间片节点i接收邻居节点发送的反馈SUCCESS报文,这时可能会产生冲突,节点i 的接收模块根据信道是否空闲来判断它是否被邻居发现:如果信道是非空闲的则说明节点 i成功接收一个邻居节点发送的反馈SUCCESS报文,或者多个邻居节点的反馈SUCCESS报文 造成了冲突,即节点i在第一个子时间片内发送的DISCOVERY报文成功被邻居节点接收,即 节点i被邻居节点发现了。然后逐渐增大网络中其它未发现的节点发送报文的概率,继续 邻居发现过程,直至每个节点发现所有邻居(每个节点被所有邻居发现)。
[0066] 为了说明我们的基本邻居发现方法更加高效,下面分别证明了在网络节点总数n 已知和未知的情况下,在此提及的基本邻居发现方法的运行复杂度为? (n)。
[0067] 1)网络节点总数n已知:
[0068] 为了方便描述,我们用W表示每个节点发现它所有n-1邻居的时间。我们把邻居 发现分成多个阶段,其中第m个阶段的持续时间为Wm,0 <m<n-1,Wm从第m个邻居被发现 开始,到第m+1邻居被发现结束。因此y 因为在第n-1个阶段,只有 一个邻居没被发现,这时只包括一个时间片。一般地,在第m个阶段,有n-m个节点未被发 现,每个节点发送报文的概率为lAn-m)。该阶段报文被成功接收的概率pm为:
【权利要求】
1. 一种节点数未知单跳网络中基于同步时间片的邻居发现方法,所述网络中节点总数 η未知,节点间时间片为同步,其中每个节点包括报文发送模块、报文接收模块和邻居发现 主模块,其中所述报文发送模块用于不同报文的组装,报文分为DISCOVERY报文和SUCCESS 报文;所述报文接收模块用于接收报文;所述邻居发现主模块分为时间片管理模块、邻居 信息模块、节点信息模块;所述方法包括: 步骤201 :在邻居信息模块中初始化已发现邻居节点个数b = 0,初始化邻居节点列表 NbrList,在节点信息模块中设置标志flag = 0,执行步骤202 ; 步骤202 :当前节点的时间片管理模块把运行时间分为多个阶段,其中第r个阶段持续 2、个时间片,设置r的初值为1,执行步骤203。 步骤203 :判断当前节点是否已经被邻居节点发现同时已经发现所有邻居节点,如果 是则结束邻居发现过程,否则跳转到步骤204 ; 步骤204 :判断第r个阶段是否结束,如果结束,跳转到步骤212,否则跳转到步骤205 ; 步骤205 :设置当前节点报文发送模块发送概率是lA2^b),执行步骤206 ; 步骤206 :判断当前节点的标志flag是否等于零,等于零表示当前节点未被邻居节点 发现,不等于零表示该节点已被邻居节点发现,如果当前节点未被邻居节点发现则跳转到 步骤207,否则跳转到步骤208 ; 步骤207 :当前节点时间片管理模块把当前阶段的当前时间片分为两个子时间片,并 且控制报文发送模块在第一个子时间片内以概率lAZ-b)发送DISCOVERY报文用来进行 邻居发现,如果成功发送DISCOVERY报文则跳转步骤210,否则跳转步骤208 ; 步骤210:判断当前节点报文接收模块在当前阶段当前时间片的第二个子时间片内信 道是否空闲,如果不是空闲的,则跳转到步骤211,否则跳转到步骤204; 步骤211 :当前节点已被邻居发现,不再发送DISCOVERY报文,设置节点信息模块中的 标志flag = 1,跳转到步骤204 ; 步骤208 :判断当前节点是否成功收到其它邻居节点在当前阶段当前时间片的第一个 子时间片内发送的DISCOVERY报文,如果成功接收了 DISCOVERY报文,则跳转到步骤209,否 则跳转到步骤204。 步骤209 :在当前阶段当前时间片的第二个子时间片内当前节点通过报文发送模块发 送反馈报文SUCCESS,同时将已接收到DISCOVERY报文的源节点MAC地址加入到邻居节点列 表NbrList中,设置已发现邻居节点个数b = b+1,并返回到步骤204 ; 步骤212 :设置阶段r = r+Ι,跳转步骤203。
2. 如权利要求1所述的方法,其特征在于,其中所述所述时间片管理模块用于把邻居 发现过程的分为若干个时间片,在某个具体的时间片,由邻居发现主模块协调报文发送模 块和报文接收模块处理报文;邻居信息模块维护邻居节点列表和已发现邻居节点个数,邻 居节点列表包括已发现邻居节点MAC地址一个字段;节点信息模块维护自身信息,包括是 否已被邻居节点发现的标志flag和节点自身地址。
3. 如权利要求1所述的方法,其特征在于,步骤203中判断当前节点是否已经成功发现 所有邻居节点的方法是:在一个给定的时间段内,当前节点的报文发现模块没有收到任何 DISCOVERY报文,则说明当前节点已经成功发现所有邻居节点,所述给定的时间段定义为: 如果节点的报文发送时间为t,则给定的时间段可以是at (a = 2, 3, ...,η)。
4.如权利要求1所述的方法,其特征在于,步骤207中所述DISCOVERY报文发送成功 表明当前阶段当前时间片的第一个子时间片内只有当前节点发送DISCOVERY报文,其它 邻居节点接收DISCOVERY报文,当前节点进入等待邻居节点发送反馈SUCCESS报文的步 骤(步骤210);所述DISCOVERY报文发送不成功表明,由于概率的作用当前节点没有发送 DISCOVERY报文,此时当前节点进入接收邻居节点DISCOVERY报文的步骤(步骤210);或者 当前节点与邻居节点同时发送DISCOVERY报文,造成冲突发生,此时当前节点和邻居节点 同时进入接收DISCOVERY报文的步骤(步骤208)。
【文档编号】H04W84/18GK104320769SQ201410454114
【公开日】2015年1月28日 申请日期:2014年9月5日 优先权日:2014年9月5日
【发明者】左超, 朱沿旭, 尚国强, 王坚, 李超, 王黎明, 曹廷友, 贾佳, 周雳 申请人:总装备部工程设计研究总院