一种下一代无线传感器网络路由的实现方法
技术领域
本发明涉及一种网络路由的实现方法,尤其涉及的是一种下一代无线传感器网络路由的实现方法。
背景技术
随着下一代互联网的不断成熟和发展,下一代无线传感器网络已成为未来发展的必然趋势。下一代无线传感器网络具有以下优势:
(1)IPv6是下一代互联网的协议标准,下一代无线传感器网络有助于推动无线传感器网络通信协议的标准化;
(2)IPv6的许多技术特点(如地址自动配置、移动性支持、安全性等)对大规模无线传感器网络的自组织管理提供了良好支持;
(3)互联网的组网方式可以供无线传感器网络充分借鉴,使其成为无线传感器网络的一种合理拓展。
目前实现下一代无线传感器网络的路由关键技术还不成熟,主要表现在以下方面:
(1)地址自动配置:地址自动配置是IPv6的一个重要技术特色,可以在无人干预的情况下为每个接口配置相应的IPv6地址。这一点与无线传感器网络自组织、自配置的设计目标非常吻合。但是,现有的IPv6地址自动配置方式在无线传感器网络中还存在一些问题,例如有状态地址配置会带来大量的控制消息开销、根据MAC地址生成IPv6地址的无状态地址配置对传感器节点间的路由寻址未带来任何方便,因此针对6LoWPAN无线传感器网络需要建立一种新的IPv6地址自动配置机制;
(2)路由方案:无线传感器网络与IPv6网络不同,在IPv6网络中,路由器与普通节点之间有数据链路层连接,可以通过一跳到达,而无线传感器节点具有路由器与普通节点双重身份,节点之间没有数据链路层连接,因此在无线传感器网络中需要建立一种新的路由方式实现IPv6节点与传感器节点之间的通信。
本发明提出了一种下一代无线传感器网络地址配置和路由实现方法以解决上述存在的问题。
发明内容
发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种下一代无线传感器网络路由的实现方法。
技术方案:本发明公开了一种下一代无线传感器网络路由的实现方法,其特征在于,所述无线传感器网络包括四类节点:接入路由器,簇首节点,簇内节点和新节点;一个无线传感器网络只包含一个接入路由器,并通过接入路由器接入互联网,簇首节点为获取IPv6地址的全功能节点,簇内节点为获取IPv6地址的部分功能节点,新节点为没有获取IPv6地址的全功能节点或者部分功能节点;如果一个新节点是全功能节点即全功能新节点,且在一个簇首节点的一跳范围内,且没有邻居新节点是部分功能节点即部分功能新节点,它则转入休眠状态。
一个无线传感器网络划分为两个以上的簇,其中,簇首节点为固定的全功能节点,簇内节点为可移动的部分功能节点;接入路由器和所有簇首节点构建成一个树状结构,做为地址树,地址树的根节点为接入路由器;地址树能够自动实现路由。
上述过程中,地址树可以自动实现路由,无需路由发现和建立过程,因此大幅度讲了路由代价和延迟,增加了通信质量。
无线传感器网络节点的IPv6地址由三部分组成,第一部分是全局路由前缀,一个无线传感器网络中所有节点的全局路由前缀都相同,所有节点的全局路由前缀的值等于同一个无线传感器网络中接入路由器的全局路由前缀;第二部分为簇ID,一个簇中所有簇内节点的簇ID都相同,其值等于相同簇簇首节点的簇ID;第三部分为簇内节点ID,其值在簇内具有唯一性;簇ID和簇内节点ID构成链路地址;接入路由器和簇首节点的簇内节点ID为0。
接入路由器和簇首节点的簇ID通过本发明的算法来获取,例如通过步骤101至115来获取簇ID。
簇ID划分为两个以上层次,k比特代表一个层次,一个簇ID的最大层次L如公式(1)所示:
其中i表示簇ID的比特长度。
当无线传感器网络启动时,执行地址配置初始化操作,全功能新节点获取具有全球唯一性的IPv6地址并转化为簇首节点,同时构成地址树;部分功能新节点获取具有全球唯一性的IPv6地址并转化为簇内节点,同时构成簇;初始状态下,所有节点均为新节点,并且采用MAC地址作为临时链路地址;在新节点配置链路地址之前,由临时链路地址来标识。
在无线传感器网络中,新节点在一跳范围内定期广播信标帧,新节点源地址为其临时链路地址;全功能新节点通过接收邻居全功能新节点广播的信标帧获取与邻居全功能新节点的角度和距离。
如果全功能新节点X与邻居全功能新节点Y的相对角度大于等于0度且小于等于180度,则全功能新节点X将邻居全功能新节点Y的权值设置为0;接入路由器与所有的邻居全功能新节点之间的相对角度均大于180且小于360。
如果接入路由器或者全功能新节点X与邻居全功能新节点Y1的相对角度αX-Y1大于180度且小于360度,距离为dX-Y1,接入路由器或者全功能新节点X与邻居全功能新节点Y2的相对角度αX-Y2大于180度且小于360度,距离为dX-Y2,那么接入路由器或者全功能新节点X通过下述算法来比较邻居全功能新节点Y1和邻居全功能新节点Y2的权重:
1)如果αX-Y1<αX-Y2,那么接入路由器或者全功能新节点X判定邻居全功能新节点Y1的权值大于邻居全功能新节点Y2;
2)如果αX-Y1=αX-Y2且dX-Y1>dX-Y2,那么接入路由器或者全功能新节点X判定邻居全功能新节点Y1的权值大于邻居全功能新节点Y2;
3)如果αX-Y1=αX-Y2且dX-Y1=dX-Y2,那么接入路由器或者全功能新节点X判定邻居全功能新节点Y1和邻居全功能新节点Y2的位置重叠,接入路由器或者全功能新节点X通知其中任意一个节点进入休眠状态。
本发明所述方法中,地址树中的每个节点保存一个簇ID层次表,该表包含L个表项,每个表项包括两个域:层次值l以及第l层已分配最大值cl,1≤l≤L,初始状态下,cl为0。
地址树初始化由接入路由器发起,地址树的建立过程包括如下步骤:
步骤101:开始;
步骤102:接入路由器将自己标记为根节点,其簇ID的最大层数簇ID为1,第1层已分配的最大值设置为1,然后向权值最大的邻居全功能新节点发送初始化消息,消息负载为接入路由器的簇ID的最大层数值l以及第l层已分配的最大值cl;如果有两个以上权值最大且相同的邻居全功能新节点,则随机选择一个权值最大的邻居全功能新节点;
步骤103:邻居全功能新节点收到初始化消息后,执行赋值操作cl=cl+1,同时将自己簇ID的第l层值设置为cl,将簇ID的前l-1层的值设置为初始化消息源地址的前l-1层的值,将自己标记为簇首节点,并用获得的簇ID更新自己簇ID层次表,将发送初始化消息的节点作为父节点,簇首节点一跳范围内的部分功能新节点收到簇首节点的信标帧后,将自己标记为簇内节点;
步骤104:判断簇首节点一跳范围内的全功能新节点的所有邻居部分功能新节点是否都转变为簇内节点,如果是,进行步骤105,否则进行步骤106;
步骤105:簇首节点一跳范围内的全功能新节点进入休眠状态;
步骤106:簇首节点判断是否有处于活跃状态且权值为非0的邻居全功能新节点,如果是,进行步骤107,否则进行步骤109;
步骤107:判断簇首节点的簇ID是否满足以下两个条件之一,如果是,进行步骤109,否则进行步骤108;
条件1:所在第l层等于L,且第L值已分配最大值为2k-1;
条件2:所在第l层小于L且第l+1层的已分配最大值为2k-1;
步骤108:簇首节点向处于活跃状态的权值最大的邻居全功能新节点发送初始化消息,消息负载为层数值l以及第l层已分配最大值cl,返回步骤103;
步骤109:簇首节点向父节点返回一个初始化确认消息,消息负载为簇首节点的簇ID的最大层次值l以及第l层已分配最大值cl,父节点根据初始化确认中的负载更新簇ID层次表;
步骤110:判断父节点是否为接入路由器,如果是,进行步骤114,否则进行步骤111;
步骤111:判断父节点是否有处于活跃状态的权值为非0的邻居全功能新节点,如果是,进行步骤112,否则进行步骤109;
步骤112:判断父节点的簇ID是否满足以下两个条件之一,如果是,进行步骤109,否则进行步骤113;
条件1:所在层l等于L且第L值已分配最大值为2k-1;
条件2:所在层l小于L且第l+1层的已分配最大值为2k-1;
步骤113:父节点向处于活跃状态的权值最大的邻居全功能新节点发送初始化消息,消息负载为层数值l以及第l层已分配最大值cl,返回步骤103;
步骤114:判断父节点是否有处于活跃状态的权值为非0的邻居全功能新节点,如果是,进行步骤112,否则进行步骤115;
步骤115:结束。
上述地址树建立过程中,在接入路由器和簇首节点获取地址的同时,也建立了地址树,通过地址树可以自动建立到达目的节点的路由路径,无需保存路由信息,也无需路由建立过程,因此提高了路由效率,减少了路有延迟,提高了通信质量。
在簇首节点获取簇ID后,簇首节点将簇ID与接入路由器的全局路由前缀相结合获得IPv6地址。
本发明所述方法中,簇首节点保存一个簇内节点ID分配集合,该集合用于记录本簇内已分配的簇内节点ID值。
簇首节点获取IPv6地址后,它的簇内节点通过下述步骤获取IPv6地址:
步骤201:开始;
步骤202:簇内节点随机产生一个簇内节点ID,并向簇首节点发送请求簇内节点ID消息,消息负载为产生的簇内节点ID,消息的源地址为临时地址;
步骤203:簇首节点收到请求簇内节点ID消息后,判断消息中的簇内节点ID是否被分配,如果是,进行步骤205,否则进行步骤204;
步骤204:簇首节点向簇内节点返回一个响应簇内节点ID消息,消息负载为空,同时将簇内节点的簇内节点ID加入到簇内节点ID分配集合中,进行步骤206;
步骤205:簇首节点选择一个没有分配的簇内节点ID并向簇内节点返回一个响应簇内节点ID消息,消息负载为分配的簇内节点ID,同时将分配给簇内节点的簇内节点ID加入到簇内节点ID分配集合中;
步骤206:簇内节点收到响应簇内节点ID消息后,判断消息负载是否为空,如果是,进行步骤207,否则进行步骤208;
步骤207:簇内节点将自己产生的簇内节点ID设置为自己的簇内节点ID,进行步骤209;
步骤208:簇内节点将负载中的簇内节点ID设置为自己的簇内节点ID;
步骤209:簇内节点将自己的簇内节点ID与簇首节点的簇ID以及全局路由前缀相结合形成自己的IPv6地址;
步骤210:结束。
上述过程中,每个簇的簇内节点获取地址的过程相互独立,因此多个簇的簇内节点可以并行获取地址且无需地址重复检测,因此大幅度缩短了地址配置代价和延迟。
本发明所述方法中,初始化结束后,簇首节点在一跳范围内广播信标帧,如果簇首节点的簇ID最大层次l小于L,那么信标帧负载为最大层次l、第l+1层已分配最大值cl+1,以及已分配簇内节点的个数,否则信标帧负载只包含已分配簇内节点的个数。
全功能新节点X加入无线传感器网络后,如果检测到其所有邻居部分功能节点都是簇内节点,则进入休眠状态;否则,全功能新节点X选择簇ID层次最小的邻居簇首节点Y获取IPv6地址,假设簇首节点Y的簇ID层次为l,且第l+1层簇ID的簇ID已分配最大值cl+1小于2k-1,则全功能新节点从邻居簇首节点Y获取地址的步骤如下:
步骤301:开始;
步骤302:全功能新节点X执行赋值操作cl+1=cl+1+1,将自己簇ID的第l+1层值设置为cl+1,将簇ID的前l层的值设置为簇首节点Y前l层的值,然后向簇首节点Y发送簇ID请求消息,消息负载为全功能新节点X的簇ID的最大层l+1以及第l+1层已分配最大值cl+1;
步骤303:簇首节点Y收到全功能新节点X的簇ID请求消息后,将簇ID层次表中第l+1层已分配最大值更新为cl+1,然后向全功能新节点X返回簇ID响应消息;
步骤304:全功能新节点X收到簇首节点Y的簇ID响应消息后,将自己标记为簇首节点,并用获得的簇ID更新簇ID层次表,将簇首节点Y作为父节点;
步骤305:结束。
上述过程中,全功能新节点从邻居节点获取地址并且加入了地址树,不仅降低了地址配置代价和延迟而且提高了地址树的健壮性。
如果簇首节点Y同时接收到多个负载内容相同的全功能新节点的簇ID请求消息,它只回复第一个接收到的簇ID请求消息。
本发明所述方法中,如果簇首节点能量低于预先设定的阈值(例如,阈值可以设定为初始能量的20%),则唤醒距离自己最近的全功能新节点,并向该全功能新节点发送一条失效消息,消息负载为自己的所有参数,然后转入休眠状态;全功能新节点收到簇首节点的失效消息后,采用簇首节点的IPv6并将自己标识为簇首节点,开始替代失效的簇首节点工作。
如果簇首节点X突然失效,其父节点F在设定时间(例如,设定时间可以设定为发送信标帧周期的两倍,即200ms)没有收到该簇首节点X的信标帧后,判断该簇首节点X失效;如果父节点F簇ID最大层次为l,那么父节点F根据其子节点的簇ID层次表来更新自己的簇ID层次表,更新步骤为:
步骤401:开始;
步骤402:父节点F将簇ID层次表中第l+1层的已分配最大值更新为所有子节点中第l+1层已分配最大值,将簇ID层次表中第l层的已分配最大值更新为所有子节点中第l层已分配最大值;
步骤403:父节点F判断所有子节点中第l层已分配最大值是否为0,如果是,进行步骤404,否则进行步骤405;
步骤404:父节点F将簇ID层次表中第l层的已分配最大值更新为自己的簇ID第l层的值;
步骤405:父节点F判断更新后的簇ID层次表中第l层已分配最大值是否与原来的值相同,如果是,进行步骤411,否则进行步骤406;
步骤406:父节点F向自己的父节点发送更新消息,消息负载为层次l以及第l层次的已分配最大值;
步骤407:当前父节点的父节点收到更新消息后,将簇ID层次表中第l层的已分配最大值更新为更新消息负载中的第l层的已分配最大值;
步骤408:当前的父节点判断自己是否为接入路由器,如果是,进行步骤411,否则进行步骤409;
步骤409:当前的父节点判断其簇ID最大层次是否为l,如果是进行步骤410,否则进行步骤411;
步骤410:当前的父节点向其父节点发送更新消息,消息负载为层次l以及第l层次的已分配最大值,进行步骤407;
步骤411:结束。
如果子节点没有收到父节点的信标帧,则认为父节点失效,将自己标记为全功能新节点,重新获取IPv6地址并转换为簇首节点。
如果簇内节点没有收到簇首节点的信标帧,则认为簇首节点失效,将自己标记为部分功能新节点,然后选择加入已分配簇内节点个数最少的簇首节点所在的簇,并重新获取地址并转换为簇内节点。
如果簇首节点没有收到簇内节点的信标帧,则认为簇内节点脱离本簇,将该簇内节点的簇内节点ID从已分配簇内节点ID集合中删除从而实现地址回收;簇内节点移动到新的簇后,放弃原来的IPv6地址,从新的簇首节点获取IPv6地址。
上述过程可以有效回收失效节点的地址,从而增加了地址配置的成功率,同时也确保了路由的正确性。
本发明所述方法中,簇首节点在一跳范围内广播信标帧,如果簇首节点的簇ID的最大层次值为L1,那么信标帧负载包括从1至L1层的已分配最大值。
簇首节点地址配置完成后,形成了以接入路由器为根节点的地址树;根据目的节点的链路地址,地址树自动建立到达目的节点的路由路径。
如果簇内节点M位于与接入路由器AR1相连的无线传感器网络中,簇内节点M的簇首节点为H,簇内节点M的簇ID的最大层次为L2,当IPv6节点向簇内节点M发送数据消息时,该数据消息到达簇内节点M的路由过程为:
步骤501:开始;
步骤502:目的地址为簇内节点M的数据消息首先到达接入路由器AR1,接入路由器AR1首先抽取簇内节点M的簇ID,如果簇内节点M的簇ID的第一层值m1位于其个子节点的簇ID的第一层值v1以及第一层已分配最大值c1之间,那么接入路由器AR1将数据包发送给该子节点;
步骤503:子节点收到数据消息后,首先抽取簇内节点M的簇ID,判断它的簇ID的第l层值vl是否等于簇内节点M的簇ID的第l层值ml且l等于L2,如果是,进行步骤507,否则进行步骤504;
步骤504:判断子节点的簇ID的第l层值vl等于M的簇ID的第l层值ml且l小于L2,如果是进行步骤505,否则进行步骤506;
步骤505:子节点执行赋值操作l=l+1;
步骤506:子节点将数据消息发送给它的一个子节点,该子节点满足:簇内节点M的簇ID的第l层值ml位于该子节点的簇ID的第l层值vl以及第l层已分配最大值cl之间,进行步骤503;
步骤507:该子节点即为簇首节点H,簇首节点H将数据消息转发给簇内节点M,簇内节点M将返回的数据消息发给簇首节点H,簇首节点H再将数据消息发送给其父节点,父节点再将数据消息发送给自己的父节点,最终,数据消息到达接入路由器AR1,接入路由器AR1将数据消息在IPv6网络中路由给目的IPv6节点;
步骤508:结束。
上述过程中,通过地址树可以自动实现路由,无需保存路由信息也无需路由发现过程,因此有效提高了路由效率,降低了路由延迟,提高了通信质量。
有益效果:本发明提供了一种下一代无线传感器网络路由的实现方法,在所述***中,下一代无线传感器网络中的节点拥有全球唯一的IPv6地址,能够与IPv6网络中的节点实现点到点通信,同时,地址配置的过程可以构建成地址树,通过地址树可以自动实现路由,无需存储路由数据也无需路由建立过程,因此提高了路由效率,降低了路由延迟,提高了通信质量。本发明扩展了无线传感器网络的应用空间,可将本发明应用于农业现代化、医疗及环境保护等多个领域。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
图1为本发明所述下一代无线传感器网络拓扑结构示意图。
图2为本发明所述无线传感器网络节点的IPv6地址示意图。
图3为本发明所述地址树初始化流程示意图。
图4为本发明所述簇内节点获取IPv6地址的流程示意图。
图5为本发明所述全功能新节点获取IPv6地址的流程示意图。
图6为本发明所述地址回收流程示意图。
图7为本发明所述路由过程流程示意图。
具体实施方式:
本发明提供了一种下一代无线传感器网络路由的实现方法,在所述***中,下一代无线传感器网络中的节点拥有全球唯一的IPv6地址,能够与IPv6网络中的节点实现点到点通信,同时,地址配置的过程可以构建成地址树,通过地址树可以自动实现路由,无需存储路由数据也无需路由建立过程,因此提高了路由效率,降低了路由延迟,提高了通信质量。本发明扩展了无线传感器网络的应用空间,可将本发明应用于农业现代化、医疗及环境保护等多个领域。
图1为本发明所述下一代无线传感器网络拓扑结构示意图。所述无线传感器网络包括四类节点:接入路由器1,簇首节点2,簇内节点3和新节点4;一个无线传感器网络只包含一个接入路由器1,并通过接入路由器1接入互联网,簇首节点2为获取IPv6地址的全功能节点,簇内节点3为获取IPv6地址的部分功能节点,新节点4为没有获取IPv6地址的全功能节点或者部分功能节点;如果一个新节点4是全功能节点即全功能新节点,且在一个簇首节点2的一跳范围内,且没有邻居新节点4是部分功能节点即部分功能新节点,它则转入休眠状态。
一个无线传感器网络划分为两个以上的簇5,其中,簇首节点2为固定的全功能节点,簇内节点3为可移动的部分功能节点;接入路由器1和所有簇首节点2构建成一个树状结构,做为地址树,地址树的根节点为接入路由器1;地址树能够自动实现路由。
上述过程中,地址树可以自动实现路由,无需路由发现和建立过程,因此大幅度讲了路由代价和延迟,增加了通信质量。
图2为本发明所述无线传感器网络节点的IPv6地址示意图。无线传感器网络节点的IPv6地址由三部分组成,第一部分是全局路由前缀,一个无线传感器网络中所有节点的全局路由前缀都相同,所有节点的全局路由前缀的值等于同一个无线传感器网络中接入路由器的全局路由前缀;第二部分为簇ID,一个簇中所有簇内节点的簇ID都相同,其值等于相同簇簇首节点的簇ID;第三部分为簇内节点ID,其值在簇内具有唯一性;簇ID和簇内节点ID构成链路地址;接入路由器和簇首节点的簇内节点ID为0。
接入路由器和簇首节点的簇ID通过本发明的算法来获取,例如通过步骤101至115来获取簇ID。
簇ID划分为两个以上层次,k比特代表一个层次,一个簇ID的最大层次L如公式(1)所示:
其中i表示簇ID的比特长度。
图3为本发明所述地址树初始化流程示意图。当无线传感器网络启动时,执行地址配置初始化操作,全功能新节点获取具有全球唯一性的IPv6地址并转化为簇首节点,同时构成地址树;部分功能新节点获取具有全球唯一性的IPv6地址并转化为簇内节点,同时构成簇;初始状态下,所有节点均为新节点,并且采用MAC地址作为临时链路地址;在新节点配置链路地址之前,由临时链路地址来标识。
在无线传感器网络中,新节点在一跳范围内定期广播信标帧,新节点源地址为其临时链路地址;全功能新节点通过接收邻居全功能新节点广播的信标帧获取与邻居全功能新节点的角度和距离。
如果全功能新节点X与邻居全功能新节点Y的相对角度大于等于0度且小于等于180度,则全功能新节点X将邻居全功能新节点Y的权值设置为0;接入路由器与所有的邻居全功能新节点之间的相对角度均大于180且小于360。
如果接入路由器或者全功能新节点X与邻居全功能新节点Y1的相对角度αX-Y1大于180度且小于360度,距离为dX-Y1,接入路由器或者全功能新节点X与邻居全功能新节点Y2的相对角度αX-Y2大于180度且小于360度,距离为dX-Y2,那么接入路由器或者全功能新节点X通过下述算法来比较邻居全功能新节点Y1和邻居全功能新节点Y2的权重。
4)如果αX-Y1<αX-Y2,那么接入路由器或者全功能新节点X判定邻居全功能新节点Y1的权值大于邻居全功能新节点Y2;
5)如果αX-Y1=αX-Y2且dX-Y1>dX-Y2,那么接入路由器或者全功能新节点X判定邻居全功能新节点Y1的权值大于邻居全功能新节点Y2;
6)如果αX-Y1=αX-Y2且dX-Y1=dX-Y2,那么接入路由器或者全功能新节点X判定邻居全功能新节点Y1和邻居全功能新节点Y2的位置重叠,接入路由器或者全功能新节点X通知其中任意一个节点进入休眠状态。
本发明所述方法中,地址树中的每个节点保存一个簇ID层次表,该表包含L个表项,每个表项包括两个域:层次值l以及第l层已分配最大值cl,1≤l≤L,初始状态下,cl为0;
地址树初始化由接入路由器发起,地址树的建立过程包括如下步骤:
步骤101:开始;
步骤102:接入路由器将自己标记为根节点,其簇ID的最大层数簇ID为1,第1层已分配的最大值设置为1,然后向权值最大的邻居全功能新节点发送初始化消息,消息负载为接入路由器的簇ID的最大层数值l以及第l层已分配的最大值cl;如果有两个以上权值最大且相同的邻居全功能新节点,则随机选择一个权值最大的邻居全功能新节点;
步骤103:邻居全功能新节点收到初始化消息后,执行赋值操作cl=cl+1,同时将自己簇ID的第l层值设置为cl,将簇ID的前l-1层的值设置为初始化消息源地址的前l-1层的值,将自己标记为簇首节点,并用获得的簇ID更新自己簇ID层次表,将发送初始化消息的节点作为父节点,簇首节点一跳范围内的部分功能新节点收到簇首节点的信标帧后,将自己标记为簇内节点;
步骤104:判断簇首节点一跳范围内的全功能新节点的所有邻居部分功能新节点是否都转变为簇内节点,如果是,进行步骤105,否则进行步骤106;
步骤105:簇首节点一跳范围内的全功能新节点进入休眠状态;
步骤106:簇首节点判断是否有处于活跃状态且权值为非0的邻居全功能新节点,如果是,进行步骤107,否则进行步骤109;
步骤107:判断簇首节点的簇ID是否满足以下两个条件之一,如果是,进行步骤109,否则进行步骤108;
条件1:所在第l层等于L,且第L值已分配最大值为2k-1;
条件2:所在第l层小于L且第l+1层的已分配最大值为2k-1;
步骤108:簇首节点向处于活跃状态的权值最大的邻居全功能新节点发送初始化消息,消息负载为层数值l以及第l层已分配最大值cl,返回步骤103;
步骤109:簇首节点向父节点返回一个初始化确认消息,消息负载为簇首节点的簇ID的最大层次值l以及第l层已分配最大值cl,父节点根据初始化确认中的负载更新簇ID层次表;
步骤110:判断父节点是否为接入路由器,如果是,进行步骤114,否则进行步骤111;
步骤111:判断父节点是否有处于活跃状态的权值为非0的邻居全功能新节点,如果是,进行步骤112,否则进行步骤109;
步骤112:判断父节点的簇ID是否满足以下两个条件之一,如果是,进行步骤109,否则进行步骤113;
条件1:所在层l等于L且第L值已分配最大值为2k-1;
条件2:所在层l小于L且第l+1层的已分配最大值为2k-1;
步骤113:父节点向处于活跃状态的权值最大的邻居全功能新节点发送初始化消息,消息负载为层数值l以及第l层已分配最大值cl,返回步骤103;
步骤114:判断父节点是否有处于活跃状态的权值为非0的邻居全功能新节点,如果是,进行步骤112,否则进行步骤115;
步骤115:结束。
上述地址树建立过程中,在接入路由器和簇首节点获取地址的同时,也建立了地址树,通过地址树可以自动建立到达目的节点的路由路径,无需保存路由信息,也无需路由建立过程,因此提高了路由效率,减少了路有延迟,提高了通信质量。
在簇首节点获取簇ID后,簇首节点将簇ID与接入路由器的全局路由前缀相结合获得IPv6地址。
图4为本发明所述簇内节点获取IPv6地址的流程示意图。簇首节点保存一个簇内节点ID分配集合,该集合用于记录本簇内已分配的簇内节点ID值。
簇首节点获取IPv6地址后,它的簇内节点通过下述步骤获取IPv6地址:
步骤201:开始;
步骤202:簇内节点随机产生一个簇内节点ID,并向簇首节点发送请求簇内节点ID消息,消息负载为产生的簇内节点ID,消息的源地址为临时地址;
步骤203:簇首节点收到请求簇内节点ID消息后,判断消息中的簇内节点ID是否被分配,如果是,进行步骤205,否则进行步骤204;
步骤204:簇首节点向簇内节点返回一个响应簇内节点ID消息,消息负载为空,同时将簇内节点的簇内节点ID加入到簇内节点ID分配集合中,进行步骤206;
步骤205:簇首节点选择一个没有分配的簇内节点ID并向簇内节点返回一个响应簇内节点ID消息,消息负载为分配的簇内节点ID,同时将分配给簇内节点的簇内节点ID加入到簇内节点ID分配集合中;
步骤206:簇内节点收到响应簇内节点ID消息后,判断消息负载是否为空,如果是,进行步骤207,否则进行步骤208;
步骤207:簇内节点将自己产生的簇内节点ID设置为自己的簇内节点ID,进行步骤209;
步骤208:簇内节点将负载中的簇内节点ID设置为自己的簇内节点ID;
步骤209:簇内节点将自己的簇内节点ID与簇首节点的簇ID以及全局路由前缀相结合形成自己的IPv6地址;
步骤210:结束。
上述过程中,每个簇的簇内节点获取地址的过程相互独立,因此多个簇的簇内节点可以并行获取地址且无需地址重复检测,因此大幅度缩短了地址配置代价和延迟。
图5为本发明所述全功能新节点获取IPv6地址的流程示意图。初始化结束后,簇首节点在一跳范围内广播信标帧,如果簇首节点的簇ID最大层次l小于L,那么信标帧负载为最大层次l、第l+1层已分配最大值cl+1,以及已分配簇内节点的个数,否则信标帧负载只包含已分配簇内节点的个数。
全功能新节点X加入无线传感器网络后,如果检测到其所有邻居部分功能节点都是簇内节点,则进入休眠状态;否则,全功能新节点X选择簇ID层次最小的邻居簇首节点Y获取IPv6地址,假设簇首节点Y的簇ID层次为l,且第l+1层簇ID的簇ID已分配最大值cl+1小于2k-1,则全功能新节点从邻居簇首节点Y获取地址的步骤如下:
步骤301:开始;
步骤302:全功能新节点X执行赋值操作cl+1=cl+1+1,将自己簇ID的第l+1层值设置为cl+1,将簇ID的前l层的值设置为簇首节点Y前l层的值,然后向簇首节点Y发送簇ID请求消息,消息负载为全功能新节点X的簇ID的最大层l+1以及第l+1层已分配最大值cl+1;
步骤303:簇首节点Y收到全功能新节点X的簇ID请求消息后,将簇ID层次表中第l+1层已分配最大值更新为cl+1,然后向全功能新节点X返回簇ID响应消息;
步骤304:全功能新节点X收到簇首节点Y的簇ID响应消息后,将自己标记为簇首节点,并用获得的簇ID更新簇ID层次表,将簇首节点Y作为父节点;
步骤305:结束;
上述过程中,全功能新节点从邻居节点获取地址并且加入了地址树,不仅降低了地址配置代价和延迟而且提高了地址树的健壮性。
如果簇首节点Y同时接收到多个负载内容相同的全功能新节点的簇ID请求消息,它只回复第一个接收到的簇ID请求消息。
图6为本发明所述地址回收流程示意图。如果簇首节点能量低于预先设定的阈值(例如,阈值可以设定为初始能量的20%),则唤醒距离自己最近的全功能新节点,并向该全功能新节点发送一条失效消息,消息负载为自己的所有参数,然后转入休眠状态;全功能新节点收到簇首节点的失效消息后,采用簇首节点的IPv6并将自己标识为簇首节点,开始替代失效的簇首节点工作;
如果簇首节点X突然失效,其父节点F在设定时间(例如,设定时间可以设定为发送信标帧周期的两倍,即200ms)没有收到该簇首节点X的信标帧后,判断该簇首节点X失效;如果父节点F簇ID最大层次为l,那么父节点F根据其子节点的簇ID层次表来更新自己的簇ID层次表,更新步骤为:
步骤401:开始;
步骤402:父节点F将簇ID层次表中第l+1层的已分配最大值更新为所有子节点中第l+1层已分配最大值,将簇ID层次表中第l层的已分配最大值更新为所有子节点中第l层已分配最大值;
步骤403:父节点F判断所有子节点中第l层已分配最大值是否为0,如果是,进行步骤404,否则进行步骤405;
步骤404:父节点F将簇ID层次表中第l层的已分配最大值更新为自己的簇ID第l层的值;
步骤405:父节点F判断更新后的簇ID层次表中第l层已分配最大值是否与原来的值相同,如果是,进行步骤411,否则进行步骤406;
步骤406:父节点F向自己的父节点发送更新消息,消息负载为层次l以及第l层次的已分配最大值;
步骤407:当前父节点的父节点收到更新消息后,将簇ID层次表中第l层的已分配最大值更新为更新消息负载中的第l层的已分配最大值;
步骤408:当前的父节点判断自己是否为接入路由器,如果是,进行步骤411,否则进行步骤409;
步骤409:当前的父节点判断其簇ID最大层次是否为l,如果是进行步骤410,否则进行步骤411;
步骤410:当前的父节点向其父节点发送更新消息,消息负载为层次l以及第l层次的已分配最大值,进行步骤407;
步骤411:结束。
如果子节点没有收到父节点的信标帧,则认为父节点失效,将自己标记为全功能新节点,重新获取IPv6地址并转换为簇首节点。
如果簇内节点没有收到簇首节点的信标帧,则认为簇首节点失效,将自己标记为部分功能新节点,然后选择加入已分配簇内节点个数最少的簇首节点所在的簇,并重新获取地址并转换为簇内节点。
如果簇首节点没有收到簇内节点的信标帧,则认为簇内节点脱离本簇,将该簇内节点的簇内节点ID从已分配簇内节点ID集合中删除从而实现地址回收;簇内节点移动到新的簇后,放弃原来的IPv6地址,从新的簇首节点获取IPv6地址。
上述过程可以有效回收失效节点的地址,从而增加了地址配置的成功率,同时也确保了路由的正确性。
图7为本发明所述路由过程流程示意图。簇首节点在一跳范围内广播信标帧,如果簇首节点的簇ID的最大层次值为L1,那么信标帧负载包括从1至L1层的已分配最大值;
簇首节点地址配置完成后,形成了以接入路由器为根节点的地址树;根据目的节点的链路地址,地址树自动建立到达目的节点的路由路径;
如果簇内节点M位于与接入路由器AR1相连的无线传感器网络中,簇内节点M的簇首节点为H,簇内节点M的簇ID的最大层次为L2,当IPv6节点向簇内节点M发送数据消息时,该数据消息到达簇内节点M的路由过程为:
步骤501:开始;
步骤502:目的地址为簇内节点M的数据消息首先到达接入路由器AR1,接入路由器AR1首先抽取簇内节点M的簇ID,如果簇内节点M的簇ID的第一层值m1位于其个子节点的簇ID的第一层值v1以及第一层已分配最大值c1之间,那么接入路由器AR1将数据包发送给该子节点;
步骤503:子节点收到数据消息后,首先抽取簇内节点M的簇ID,判断它的簇ID的第l层值vl是否等于簇内节点M的簇ID的第l层值ml且l等于L2,如果是,进行步骤507,否则进行步骤504;
步骤504:判断子节点的簇ID的第l层值vl等于M的簇ID的第l层值ml且l小于L2,如果是进行步骤505,否则进行步骤506;
步骤505:子节点执行赋值操作l=l+1;
步骤506:子节点将数据消息发送给它的一个子节点,该子节点满足:簇内节点M的簇ID的第l层值ml位于该子节点的簇ID的第l层值vl以及第l层已分配最大值cl之间,进行步骤503;
步骤507:该子节点即为簇首节点H,簇首节点H将数据消息转发给簇内节点M,簇内节点M将返回的数据消息发给簇首节点H,簇首节点H再将数据消息发送给其父节点,父节点再将数据消息发送给自己的父节点,最终,数据消息到达接入路由器AR1,接入路由器AR1将数据消息在IPv6网络中路由给目的IPv6节点;
步骤508:结束。
上述过程中,通过地址树可以自动实现路由,无需保存路由信息也无需路由发现过程,因此有效提高了路由效率,降低了路由延迟,提高了通信质量。
综上所述,本发明提供了一种下一代无线传感器网络路由的实现方法,在所述***中,下一代无线传感器网络中的节点拥有全球唯一的IPv6地址,能够与IPv6网络中的节点实现点到点通信,同时,地址配置的过程可以构建成地址树,通过地址树可以自动实现路由,无需存储路由数据也无需路由建立过程,因此提高了路由效率,降低了路由延迟,提高了通信质量。本发明扩展了无线传感器网络的应用空间,可将本发明应用于农业现代化、医疗及环境保护等多个领域。
本发明提供了一种下一代无线传感器网络路由的实现方法的思路及方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部份均可用现有技术加以实现。
实施例1
基于表1的仿真参数,本实施例模拟了本发明中方法,性能分析如下:随着传输范围的增加,簇首节点通过初始化过程获取地址的代价趋于常量,而全功能新节点获取地址的代价随着传输范围的增加而增加。簇内节点从簇首节点获取地址,因此地址代价和延迟都趋于常量。下一代无线传感器网络中,每个簇首节点获取地址的平均代价为4,每个簇内节点获取地址的平均代价为3,每个簇首节点获取地址的平均延迟为35ms,每个簇内节点获取地址的平均延迟为30ms。
表1仿真参数