发明名称 一种异构无线传感网地址自动配置方法
摘要 本发明提供了一种适用于异构无线传感器网络的IPv6地址自动配置方法。在所述方法中,将网络设备实体分为四种:IPv6接入点,骨干传感器节点,普通传感器节点和孤立传感器节点。当申请地址的节点为骨干节点时,采用邻居代理结合伙伴系统的方式获得IPv6地址。当申请地址的节点为普通节点时,采用邻居代理方式分配其IPv6地址。本发明提供地址分配、节点离开、地址回收功能。这些功能由骨干节点IPv6地址获取、普通节点IPv6地址获取、骨干节点离开地址回收、普通节点离开地址回收、IPv6地址块迁移、IPv6地址按需全局回收共六个子方法构成。通过运用本方法,可以为传感网中每个节点分配一个全球唯一的IPv6地址,实现传感网与外部IPv6网络的点到点通信。
申请公布号 CN102404719A 申请公布日期 2012.04.04
申请号 CN201110441160.6 申请日期 2011.12.26
申请人 南京邮电大学 发明人 徐佳;王汝传;孙力娟;黄海平;肖甫;沙超;蒋凌云;沐虹霞
分类号 H04W8/26(2009.01)I;H04W84/18(2009.01)I;H04L29/12(2006.01)I 主分类号 H04W8/26(2009.01)I
代理机构 南京经纬专利商标代理有限公司 32200 代理人 叶连生
主权项 一种异构无线传感网地址自动配置方法,其特征在于在所述方法中,异构无线传感器网络中的每个传感器节点可获取全球唯一的IPv6地址,节点通过IPv6地址实现彼此的通信以及与IPv6互联网的通信;该方法提供地址分配、节点离开、地址回收功能,这些功能由骨干节点IPv6地址获取、普通节点IPv6地址获取、骨干节点离开地址回收、普通节点离开地址回收、IPv6地址块迁移、IPv6地址按需全局回收六个子方法构成;骨干节点获取IPv6地址的流程如下:步骤301,骨干节点B设置广播剩余次数r;步骤302,骨干节点B使用临时地址在一跳范围内广播加入消息,设置定时器BJoin_Timer,设为t3秒;步骤303,邻居节点X收到加入消息后,发送一个回复消息给骨干节点B,回复消息使用骨干节点B的临时地址作为目的地址,并包含节点类型信息;其中,接入点的节点类型与骨干节点相同;步骤304,骨干节点B等待来自邻居的回复消息若,BJoin_Timer到时,进行步骤305,否则进行步骤307;步骤305,骨干节点B将广播次数减1;步骤306,如广播次数小于等于0,进行步骤321,否则,进行步骤302;步骤307,骨干节点B收到回复消息,暂存所有收到的回复包,直到BJoin_Timer超时;步骤308,骨干节点B检查所有BJoin_Timer内收到的回复包中的节点类型信息,如果存在来自骨干节点的回复,则进行步骤309,否则进行步骤310;步骤309,骨干节点B向邻居骨干节点X1发送确认消息;如果有两个以上的骨干节点回复,则选择第一个回复的骨干节点,进行步骤311;步骤310,骨干节点B向邻居普通节点X2发送确认消息,如果有两个以上的普通节点回复,则选择第一个回复的普通节点,进行步骤315;步骤311,骨干节点X1收到确认消息,X1检查自身的IPv6地址表,如果有多个IPv6地址块,则进行步骤312,否则进行步骤313;步骤312,骨干节点X1随机选择其中一个地址块,将地址块信息和自己最新版本的IPv6地址表发送给骨干节点B,进行步骤314;步骤313,骨干节点X1将自身IPv6地址池一分为二,选取其中一个子集,将地址块信息和自己最新版本的IPv6地址分配表发送给骨干节点B;步骤314,骨干节点B收到地址块后,将该地址块的第一个IPv6地址作为自身IPv6地址,剩余的IPv6地址列表保存在本地;骨干节点B将收到的最新IPv6地址分配表保存在本地,发送确认消息给骨干节点X1,进行步骤321;步骤315,普通节点X2收到骨干节点B的确认消息,将节点B的临时地址存储在本地; 步骤316,普通节点X2发送一个请求消息到普通节点X2的领导节点L;步骤317,领导节点L检查自身的IPv6地址表,如果有多个IPv6地址块,则进行步骤318,否则进行步骤319;步骤318,领导节点L随机选择其中一个地址块,将地址块信息和自己最新版本的IPv6地址表发送给普通节点X2,进行步骤320;步骤319,领导节点L将自身IPv6地址池一分为二,选取其中一个子集,将地址块信息和自己最新版本的IPv6地址分配表发送给普通节点X2;步骤320,普通节点X2收到领导节点L发来的IPv6地址块和最新版本的IPv6地址分配表发送给骨干节点B;骨干节点B收到地址块后,将该地址块的第一个IPv6地址作为自身IPv6地址,剩余的IPv6地址列表保存在本地;骨干节点B将收到的最新IPv6地址分配表保存在本地,发送确认消息给普通节点X2,步骤321,地址分配过程结束;普通节点获取IPv6地址的流程如下:步骤401,普通节点N设置广播剩余次数m;步骤402,普通节点N使用临时地址广播加入消息,设置定时器NJoin_Timer,设为t4秒;步骤403,邻居节点X收到加入消息后,发送一个回复消息给普通节点N,回复消息使用普通节点N的临时地址作为目的地址,并包含节点类型信息;其中,接入点的节点类型与骨干节点相同;步骤404,普通节点N等待来自邻居的回复消息,若NJoin_Timer超时,进行步骤405,否则进行步骤407;步骤405,普通节点N将广播次数减1;步骤406,若广播次数小于等于0,进行步骤417;否则,进行步骤402;步骤407,普通节点N收到回复消息,暂存所有收到的回复包,直到NJoin_Timer超时;步骤408,普通节点N检查所有NJoin_Timer内收到的回复包中的节点类型信息,如果存在来自骨干节点的回复,则进行步骤409,否则进行步骤412;步骤409,普通节点N向邻居骨干节点X1发送确认消息;如果有两个以上的骨干节点回复,则选择第一个回复的骨干节点;步骤410,骨干节点X1收到来自普通节点N的确认消息,骨干节点X1选择一个目前没有被使用的IPv6地址发送给普通节点N,骨干节点X1更新自身IPv6地址分配表;步骤411,普通节点N收到骨干节点X1为其分配的IPv6地址,将该地址作为自身IPv6地址,标记骨干节点X1为其领导节点,并向骨干节点发送确认消息,进行步骤417;步骤412,普通节点N向邻居普通节点X2发送确认消息,如果有两个以上的普通节点回复,则选择第一个回复的普通节点;步骤413,普通节点X2收到来自普通节点N的确认消息,将节点N的临时地址存储在本地,普通节点X2发送一个请求消息到普通节点X2的领导节点L;步骤414,领导节点L选择一个目前没有被使用的IPv6地址发送给普通节点X2,领导节点L更新自身IPv6地址分配表;步骤415,普通节点X2收到来自领导节点L的IPv6地址,将该地址发送给普通节点N;步骤416,普通节点N收到领导节点L为其分配的IPv6地址,将该地址作为自身IPv6地址,标记领导节点L为其领导节点,并向普通节点X2发送确认消息,进行步骤417;步骤417,地址分配过程结束;所述上述步骤313骨干节点X1,步骤319领导节点L,步骤410骨干节点X1,步骤414领导节点L,在没有有效地址可供分配时,需要执行IPv6地址块迁移过程,为方便起见,将上述骨干节点X1或领导节点L统一表示为骨干节点X;IPv6地址块迁移的流程如下:步骤501,骨干节点X设置地址块请求广播当前剩余次数n;步骤502,骨干节点X广播地址块请求消息到其邻居节点,广播跳数为(6‑n)跳,广播当前剩余次数减1,启动定时器Block_Timer,定时时间设为t5毫秒;步骤503,收到地址块请求消息的邻居节点如果是骨干节点Y,则进行步骤505,否则进行步504;步骤504,节点丢弃该请求消息;步骤505,如果骨干节点Y如果有多个IPv6地址块,则进行步骤506,否则进行步骤507;步骤506,骨干节点Y随机选择其中一个地址块,将地址块信息发送给骨干节点X,进行步骤508;步骤507,骨干节点Y将自身IPv6地址池一分为二,选取其中一个地址块,将该地址块信息回复给骨干节点X;步骤508,骨干节点X等待回复消息,若Block_Timer未超时,进行步骤511,否则,进行步骤509;步骤509,如当前剩余广播次数大于0,进行步骤502,否则,进行步骤510;步骤510,骨干节点X停止广播,发送地址分配失败消息到加入节点,或通过加入节点的邻居普通节点发送到加入节点;步骤511,地址迁移过程结束;普通节点离开地址回收流程如下:步骤601,普通节点N根据离开的紧迫程度设置一个最长回收时间定时器Depart_Timer,设为t6_1秒;步骤602,普通节点N设置回收周期定时器Retrieve_Timer,设置为t6_2毫秒,发送一个离开请求到其领导节点L;步骤603,领导节点L收到离开请求,将该请求中的源端IPv6地址回收,合入IPv6地址池中;步骤604,领导节点L发送地址回收确认消息到普通节点N;步骤605,普通节点N等待地址回收确认消息,如果Depart_Timer超时,进行步骤607,否则进行步骤606;步骤606,如果普通节点N在Retrieve_Timer超时前收到领导节点L确认消息,进行步骤607,否则进行步骤602;步骤607,地址回收过程结束;骨干节点离开时的IPv6地址回收流程如下:步骤701,骨干节点B根据离开的紧迫程度设置一个最长回收时间定时器Depart_Timer,设为t7_1秒,骨干节点B通过路由表查找距离自己最近的骨干节点,如果跳数相同,选择IPv6地址小的骨干节点,设该骨干节点为X;步骤702,骨干节点B设置回收周期定时器Retrieve_Timer,设置为t7_2毫秒,骨干节点B向骨干节点X发送一个离开请求消息;步骤703,骨干节点X收到骨干节点B的离开请求消息后发送一个回复消息到骨干节点B;步骤704,骨干节点B收到回复消息后,将自己的IPv6地址池和IPv6地址分配表信息发送给骨干节点X;步骤705,骨干节点X将骨干节点B的IPv6地址池并入自身IPv6地址池,骨干节点X将骨干节点B的IPv6地址分配表存储在本地,骨干节点X发送地址回收确认消息到骨干节点B,骨干节点X向以骨干节点B的IPv6地址分配表中的地址为目的地址的普通节点集{N1,N2…Nn}发送领导节点变更消息;步骤706,收到领导节点变更消息的普通节点集合{N1,N2…Nn}将自身的领导节点变更为骨干节点X,并发送领导节点变更确认消息到骨干节点X;步骤707,骨干节点X收到领导节点变更确认消息,将骨干节点B的IPv6地址分配表中相应表项更新到自身IPv6地址分配表中;步骤708,骨干节点B等待来自骨干节点X的地址回收确认消息,如果Depart_Timer超时,进行步骤710,否则进行步骤709;步骤709,如果骨干节点B在Retrieve_Timer超时前收到来自骨干节点X的地址回收确认消息,则进行步骤710,否则进行步骤702;步骤710,地址回收过程结束;所述步骤510中收到地址分配失败消息的加入节点发起IPv6地址按需全局回收过程,IPv6地址按需全局回收流程如下:步骤801,节点X发送一个接入点范围内的地址全局回收广播消息;步骤802,普通节点N收到地址全局回收广播后,发送一个声明消息到其领导节点L,启动定时器Normal_Ack_Timer,设置为t8_1秒;步骤803,骨干节点B收到地址回收广播后,启动定时器Leader_Retrieve_Timer,设置为t8_2秒;步骤804,骨干节点B接收普通节点集{N1,N2…Nn}发送来的声明消息,更新自身的IPv6地址分配表,骨干节点B将IPv6地址分配表中未被更新的地址并入可分配IPv6地址池;步骤805,如果Leader_Retrieve_Timer未超时,进行步骤804,否则进行步骤806;步骤806,骨干节点B向普通节点集{N1,N2…Nn}发送地址回收确认消息;步骤807,普通节点N等待地址回收确认消息,如果Normal_Ack_Timer超时,则进行步骤808,否则进行步骤812;步骤808,普通节点N通过查找路由表,寻找除领导节点外的最近的骨干节点,如果跳数相同,则选择IPv6地址小的并未被选择过的骨干节点,设该骨干节点为X,普通节点N启动定时器Leader_Query_Timer,向骨干节点X发送声明消息;步骤809,骨干节点X收到来自普通节点N的声明消息后,将普通节点N的IPv6地址并入自身IPv6地址池,更新自身IPv6地址分配表,骨干节点X发送回复消息到普通节点N;步骤810,普通节点N收到回复消息后,将骨干节点X设置为领导节点;步骤811,普通节点N等待来自骨干节点X的回复消息,如果Leader_Query_Timer超时,则进行步骤808,否则进行步骤812;步骤812,地址按需全局回收过程结束。
地址 210046 江苏省南京市新模范马路66号