1.一种下一代无线传感器网络路由的实现方法,其特征在于,所述无线传感器网络包括四类节点:接入路由器,簇首节点,簇内节点和新节点;一个无线传感器网络只包含一个接入路由器,并通过接入路由器接入互联网,簇首节点为获取IPv6地址的全功能节点,簇内节点为获取IPv6地址的部分功能节点,新节点为没有获取IPv6地址的全功能节点或者部分功能节点;如果一个新节点是全功能节点即全功能新节点,且在一个簇首节点的一跳范围内,且没有邻居新节点是部分功能节点即部分功能新节点,它则转入休眠状态;
一个无线传感器网络划分为两个以上的簇,其中,簇首节点为固定的全功能节点,簇内节点为可移动的部分功能节点;接入路由器和所有簇首节点构建成一个树状结构,做为地址树,地址树的根节点为接入路由器;地址树能够自动实现路由;
无线传感器网络节点的IPv6地址由三部分组成,第一部分是全局路由前缀,一个无线传感器网络中所有节点的全局路由前缀都相同,所有节点的全局路由前缀的值等于同一个无线传感器网络中接入路由器的全局路由前缀;第二部分为簇ID,一个簇中所有簇内节点的簇ID都相同,其值等于相同簇簇首节点的簇ID;第三部分为簇内节点ID,其值在簇内具有唯一性;簇ID和簇内节点ID构成链路地址;接入路由器和簇首节点的簇内节点ID为0;
簇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通知其中任意一个节点进入休眠状态。
2.根据权利要求1所述的下一代无线传感器网络路由的实现方法,其特征在于,地址树中的每个节点保存一个簇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;
k
条件1:所在第l层等于L,且第L值已分配最大值为2-1;
k
条件2:所在第l层小于L且第l+1层的已分配最大值为2-1;
步骤108:簇首节点向处于活跃状态的权值最大的邻居全功能新节点发送初始化消息,消息负载为层数值l以及第l层已分配最大值cl,返回步骤103;
步骤109:簇首节点向父节点返回一个初始化确认消息,消息负载为簇首节点的簇ID的最大层次值l以及第l层已分配最大值cl,父节点根据初始化确认中的负载更新簇ID层次表;
步骤110:判断父节点是否为接入路由器,如果是,进行步骤114,否则进行步骤111;
步骤111:判断父节点是否有处于活跃状态的权值为非0的邻居全功能新节点,如果是,进行步骤112,否则进行步骤109;
步骤112:判断父节点的簇ID是否满足以下两个条件之一,如果是,进行步骤109,否则进行步骤113;
k
条件1:所在层l等于L且第L值已分配最大值为2-1;
k
条件2:所在层l小于L且第l+1层的已分配最大值为2-1;
步骤113:父节点向处于活跃状态的权值最大的邻居全功能新节点发送初始化消息,消息负载为层数值l以及第l层已分配最大值cl,返回步骤103;
步骤114:判断父节点是否有处于活跃状态的权值为非0的邻居全功能新节点,如果是,进行步骤112,否则进行步骤115;
步骤115:结束;
在簇首节点获取簇ID后,簇首节点将簇ID与接入路由器的全局路由前缀相结合获得IPv6地址。
3.根据权利要求2所述的下一代无线传感器网络路由的实现方法,其特征在于,簇首节点保存一个簇内节点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:结束。
4.根据权利要求2所述的下一代无线传感器网络路由的实现方法,其特征在于,初始化结束后,簇首节点在一跳范围内广播信标帧,如果簇首节点的簇ID最大层次l小于L,那么信标帧负载为最大层次l、第l+1层已分配最大值cl+1,以及已分配簇内节点的个数,否则信标帧负载只包含已分配簇内节点的个数;
全功能新节点X加入无线传感器网络后,如果检测到其所有邻居部分功能节点都是簇内节点,则进入休眠状态;否则,全功能新节点X选择簇ID层次最小的邻居簇首节点Y获取IPv6地址,假设簇首节点Y的簇ID层次为l,且第l+1层簇ID的簇ID已分配最大值cl+1小k于2-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请求消息。
5.根据权利要求4所述的下一代无线传感器网络路由的实现方法,其特征在于,如果簇首节点能量低于预先设定的阈值,则唤醒距离自己最近的全功能新节点,并向该全功能新节点发送一条失效消息,消息负载为自己的所有参数,然后转入休眠状态;全功能新节点收到簇首节点的失效消息后,采用簇首节点的IPv6并将自己标识为簇首节点,开始替代失效的簇首节点工作;
如果簇首节点X突然失效,其父节点F在设定时间没有收到该簇首节点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地址。
6.根据权利要求4所述的下一代无线传感器网络路由的实现方法,其特征在于,簇首节点在一跳范围内广播信标帧,如果簇首节点的簇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:结束。