发明名称 一种基于消息延时条件传输的移动无线传感器网络节点身份保护方法
摘要 本发明公开了一种基于消息延时条件传输的移动无线传感器网络节点身份保护方法。该节点身份保护方法基于对邻居节点的统计和分析,实现了移动无线传感器网络中源节点Ni对消息Mi={MDATAi,MTIMEi}的分段打包、延时传输和延时转发。通过本发明的方法,在消息Mi={MDATAi,MTIMEi}的传输过程中,接收该消息Mi={MDATAi,MTIMEi}的普通节点Nj将无法定位消息Mi={MDATAi,MTIMEi}的发送地和接收地,也不能获得消息Mi={MDATAi,MTIMEi}的传输路径,因此该方法有效地对移动无线传感器网络中收发消息的节点进行了身份保护。
申请公布号 CN101557608B 申请公布日期 2011.05.04
申请号 CN200910083789.0 申请日期 2009.05.14
申请人 北京航空航天大学 发明人 芦效峰;陈佳;蒲菊华;刘伟;熊璋
分类号 H04W28/06(2009.01)I;H04W28/14(2009.01)I;H04W84/18(2009.01)I 主分类号 H04W28/06(2009.01)I
代理机构 北京永创新实专利事务所 11121 代理人 周长琪
主权项 1.一种基于消息延时条件传输的移动无线传感器网络节点身份保护方法,其特征在于对于节点身份的保护包括有下列处理步骤:步骤一、源节点N<sub>i</sub>和目的节点N<sub>t</sub>的确定将所需传输的消息M<sub>i</sub>人工输入给移动无线传感器网络中的任意一个节点,该节点记为源节点N<sub>i</sub>;同时人工向网络中除源节点N<sub>i</sub>以外的任意一个节点输入先验信息M_TRA<sub>i</sub>,对能够接收到该先验信息M_TRA<sub>i</sub>的节点记为目的节点N<sub>t</sub>;在移动无线传感器网络中,除源节点N<sub>i</sub>和目的节点N<sub>t</sub>以外的节点记为普通节点N<sub>j</sub>;步骤二、源节点N<sub>i</sub>采用基于邻居节点统计的自适应消息分段方法对消息M<sub>i</sub>进行分段打包;自适应消息分段方法的处理步骤如下所述:步骤2-1:源节点N<sub>i</sub>对接收到的消息M<sub>i</sub>={MDATA<sub>i</sub>,MTIME<sub>i</sub>}进行存储,其中,MDATA<sub>i</sub>表示消息内容,MTIME<sub>i</sub>表示消息失效时间;步骤2-2:初始化源节点N<sub>i</sub>用于自适应消息分段方法的各项参数F={Nb<sub>w</sub>,NNUM,NEW_NNUM,LOOP_NUM},Nb<sub>w</sub>表示第一邻居节点表单,NNUM表示邻居节点次数,NEW_NNUM表示邻居节点个数,LOOP_NUM表示源节点当前循环次数;步骤2-3:源节点N<sub>i</sub>向邻居节点广播的源节点广播NDM,邻居节点接收到该源节点广播NDM后向源节点N<sub>i</sub>反馈响应NDM_ACK;步骤2-4:源节点N<sub>i</sub>在设置时间段T内对邻居节点响应NDM_ACK进行统计,获得当前消息分段打包参数;步骤2-5:源节点N<sub>i</sub>判断当前循环次数LOOP_NUM是否超过统计循环次数w,若超过,则执行步骤2-6,若没有超过则将LOOP_NUM加1,并返回至步骤2-3;步骤2-6:依据统计循环次数w在设置时间段T内,对邻居节点次数NNUM与邻居节点个数NEW_NNUM的统计,获得消息发送周期<maths num="0001"><![CDATA[<math><mrow><mi>SEND</mi><mo>_</mo><mi>TI</mi><msub><mi>ME</mi><mi>i</mi></msub><mo>=</mo><mfrac><mi>NNUM</mi><mrow><mi>NEW</mi><mo>_</mo><mi>NNUM</mi></mrow></mfrac><mo>&times;</mo><mi>T</mi><mo>;</mo></mrow></math>]]></maths>步骤2-7:依据邻居节点次数NNUM和统计循环次数w的比值,获得平均邻居节点数<img file="FSB00000415762300021.GIF" wi="588" he="136" />步骤2-8:源节点N<sub>i</sub>将消息分段打包源节点N<sub>i</sub>采用平均分配方法将消息M<sub>i</sub>中的消息内容MDATA<sub>i</sub>分成k段,然后分别打包;每个数据包SEG_PACKET由如下项组成:<tables num="0001"><table><tgroup cols="6"><colspec colname="c001" colwidth="6%" /><colspec colname="c002" colwidth="15%" /><colspec colname="c003" colwidth="22%" /><colspec colname="c004" colwidth="13%" /><colspec colname="c005" colwidth="21%" /><colspec colname="c006" colwidth="23%" /><tbody><row><entry morerows="1">  k</entry><entry morerows="1">  SEG_ID</entry><entry morerows="1">  SEG_DATA<sub>i</sub></entry><entry morerows="1">  MTIME<sub>i</sub></entry><entry morerows="1">  SEND_TIME<sub>i</sub></entry><entry morerows="1">  NNUM_AVG<sub>i</sub></entry></row></tbody></tgroup></table></tables>k表示段数,SEG_ID表示数据段的ID,SEG_DATA<sub>i</sub>表示本段的消息内容,MTIME<sub>i</sub>表示消息的失效时间,SEND_TIME<sub>i</sub>表示消息的发送周期,NNUM_AVG<sub>i</sub>表示平均邻居节点个数;步骤三、源节点N<sub>i</sub>采用基于邻居节点动态分析的消息延时传输方法对数据段SEG_PACKET进行延时传输,延时传输步骤为;步骤3-1:初始化源节点N<sub>i</sub>用于消息延时传输方法的各项参数P={Nb<sub>k</sub>,LOOP_NUM},Nb<sub>k</sub>表示消息延时传输时的邻居节点表单,LOOP_NUM表示源节点当前循环次数;步骤3-2:源节点N<sub>i</sub>向邻居节点广播源节点广播NDM,邻居节点接收到该源节点广播NDM后向源节点N<sub>i</sub>反馈响应NDM_ACK;步骤3-3:源节点N<sub>i</sub>在设置时间段T内对邻居节点响应NDM_ACK进行统计,获得当前消息传输参数;源节点N<sub>i</sub>从存储在缓存里的邻居节点响应NDM_ACK中提取出各个邻居节点的ID,如果ID和消息延时传输时的邻居节点表单Nb<sub>k</sub>中所有的节点ID不相同时,将ID添加到消息延时传输时的邻居节点表单Nb<sub>k</sub>的第LOOP_NUM行中;提取并比较所有NDM_ACK中的邻居节点ID,如果有邻居节点ID与Nb<sub>k</sub>中已有的节点ID相同,则返回至步骤3-2中;如果所有的邻居节点ID与Nb<sub>k</sub>中已有的节点ID都不相同,则执行步骤3-4;步骤3-4:源节点N<sub>i</sub>判断发现的邻居节点次数NNUM是否达到平均邻居节点数NNUM_AVG<sub>i</sub>;如果NNUM大于等于NNUM_AVG<sub>i</sub>,则执行步骤3-5;如果NNUM小于NNUM_AVG<sub>i</sub>,则返回至步骤3-2;步骤3-5:源节点N<sub>i</sub>从源节点数据等待队列中,按照FIFO原则取出一段数据进行发送,每段数据只发送一次;步骤3-6:判断是否所有的数据段都发送完毕;比较LOOP_NUM和k,如果LOOP_NUM≥k,则所有的数据段都已经发送完毕;否则将LOOP_NUM加1,返回步骤3-2中,继续数据段的发送;步骤四、普通节点N<sub>j</sub>采用基于邻居节点动态分析的消息延时转发方法对数据段SEG_PACKET进行转发,数据段经过一跳或多跳后,到达目的节点N<sub>t</sub>,消息延时转发步骤为;步骤4-1:初始化普通节点N<sub>j</sub>的第一邻居节点表单Nb<sub>w</sub>和循环次数LOOP_NUM;步骤4-2:普通节点N<sub>j</sub>监听邻居节点广播的邻居广播NDM,如果监听到邻居广播NDM,执行步骤4-3;否则,跳转至步骤4-5;步骤4-3:普通节点N<sub>j</sub>反馈NDM_ACK,并将邻居节点次数NNUM置0;步骤4-4:在消息发送周期SEND_TIME<sub>i</sub>内普通节点N<sub>j</sub>接收由邻居节点发送的数据帧,并将接收到的数据帧存储至缓存中,然后跳转步骤4-6;如果没有接收到邻居节点发送的数据帧,则执行步骤4-5;步骤4-5:普通节点N<sub>j</sub>的数据等待队列中是否有等待发送的数据段,如果有则跳转步骤4-8,如果没有等待发送的数据段,则返回步骤4-2;步骤4-6:判断是否第一次接收该数据帧;从缓存里的数据帧中提取出数据段的SEG_ID,和普通节点N<sub>j</sub>中存储的所有数据段SEG_ID做比较;如果该数据段的SEG_ID为新ID,则存储此SEG_ID并执行步骤4-7;否则返回步骤4-2;步骤4-7:将数据帧送入具有FIFO结构的数据等待队列,排队等待发送;该数据等待队列只存储节点接收后需要转发的数据帧;而步骤二中分段打包后的数据不可以存入普通节点的数据等待队列中进行发送;步骤4-8:普通节点N<sub>j</sub>向邻居节点广播的普通节点广播NDM;步骤4-9:在消息发送周期SEND_TIME<sub>i</sub>内,普通节点N<sub>j</sub>对邻居节点响应NDM_ACK进行统计;普通节点N<sub>j</sub>将接收到的邻居节点响应NDM_ACK存入节点的缓存;源节点N<sub>i</sub>每接收到一条NDM_ACK,则邻居节点次数NNUM加1;普通节点N<sub>j</sub>从存储在缓存里的邻居节点响应NDM_ACK中提取出各个邻居节点的ID,如果ID和第一邻居节点表单Nb<sub>w</sub>中所有的节点ID不相同时,将ID添加到第一邻居节点表单Nb<sub>w</sub>的第LOOP_NUM行中;提取并比较所有NDM_ACK中的邻居节点ID,如果有邻居节点ID与Nb<sub>w</sub>中已有的节点ID相同,则返回步骤4-2;如果所有的邻居节点ID与Nb<sub>w</sub>中已有的节点ID都不相同,则执行步骤4-10;步骤4-10:普通节点N<sub>j</sub>判断发现的邻居节点次数NNUM是否达到平均邻居节点数NNUM_AVG<sub>i</sub>;如果NNUM大于等于NNUM_AVG<sub>i</sub>,则执行下一步;否则返回步骤4-2;步骤4-11:普通节点N<sub>j</sub>发送一段数据;普通节点N<sub>j</sub>从数据等待队列中,按照FIFO原则取出一段数据进行发送;每段数据只发送一次;然后将LOOP_NUM加1,并和w比较,如果LOOP_NUM大于等于w,则将LOOP_NUM和Nb<sub>w</sub>清零;步骤五、目的节点N<sub>t</sub>对消息的使用目的节点N<sub>t</sub>对接收到的消息M<sub>i</sub>={MDATA<sub>i</sub>,MTIME<sub>i</sub>}中的所有数据段,拾取出各个数据段的内容SEG_DATA<sub>i</sub>并按先后顺序排列,然后使用先验信息M_TRA<sub>i</sub>获得消息M<sub>i</sub>={MDATA<sub>i</sub>,MTIME<sub>i</sub>}中的MDATA<sub>i</sub>。
地址 100083 北京市海淀区学院路37号