一种无线传感网络的IPv6地址无状态自动配置方法
技术领域
本发明涉及一种无线传感器网络的IPv6地址无状态自动配置方法,属于计算机网络技术领域。
背景技术
在IPv6无线传感器网络中,由于节点数量庞大,手动配置和管理静态IP地址是一件非常困难并且烦琐的工作,传统手动配置和管理IP地址在IPv6无线传感器网络中显然是不合适的。因而,研究适合于无线传感器网络的低功耗、可扩展的IPv6编址寻址技术,对于IPv6无线传感器的应用发展具有至关重要的作用。
在IPv6无线传感器网络中地址配置方式主要有两种,一种是全状态自动配置(Stateful Auto Configuration),另一种是无状态自动配置(Stateless Auto Configuration)。
全状态自动配置是利用一个可靠的办法提前分配出一块地址池,节点加入网络后在可用地址中进行选择。然而,在网络规模扩大到由上千个节点构成时,则会大大降低其实用性,可扩展性不好。如在传统IP网络中广泛应用的DHCP(Dynamic Host Configuration Protocol)协议,网络中DHCPv6服务器提前分配出一个地址池,主机从DHCPv6服务器申请IP地址并获得有关的配置信息(如缺省网关、DNS服务器等),从而自动设置主机IP地址。然而,DHCPv6属于应用层的协议,其功能丰富但复杂度高,在大规模无线传感器网络中却应用有限。无状态自动配置,最简单而直接的办法是利用节点的MAC地址,进行地址的自动配置。然而,这样配置的问题是,尽管可以保证其作为硬件地址的唯一性,但却不能保证其作为IPv6地址的唯一性。另外,由于硬件厂商可能会使用未曾注册过的MAC地址,由此过程会引发重复MAC地址的产生。尤其是在无线传感器网络中节点在硬件部分允许用户自己随意对MAC地址进行修改。所以简单地利用节点的MAC地址的办法是不恰当的。
无状态地址配置方式具有可扩展性,更符合无线传感器网络的节点数量庞大、节点能量和带宽受限等特点,然而,现有技术中的无状态地址配置方式尚不成熟。
发明内容
本发明的目的是提供一种无线传感器网络的IPv6地址自动配置的方法,其针对大规模的无线传感器网络,新节点在加入网络后会得到父节点分配的一个可用于全网通信的、全网唯一的IPv6地址,节点加入网络成功后可以利用这一IPv6地址进行全网通信,此IPv6地址中还包含有父节点IPv6地址信息,节点地址不只是节点的身份标识,也可以为数据包的路由提供服务。
为此,本发明提供了一种无线传感器网络的IPv6地址无状态自动配置方法,其特征在于,采用如下地址编码方案,128位的IPv6地址分为三部分:第1-80位为全局路由前缀,由网关获得,通过该网关连入全网进行通信的节点均从此网关取得该80位的全局路由前缀;第81-120位为可供分配的子网ID,各个子网内的所有节点的子网ID相同;第121-128位为节点ID,由节点的64位EUI-64bits长地址进行哈希映射而成,作为节点在子网内标识。
优选地,全局路由前缀由网关获取标识此IPv6无线传感器网络的唯一的全局路由前缀,一个IPv6无线传感器网络内的所有类型的传感器节点都使用相同的全局路由前缀。
优选地,可供分配的子网ID由各个子网内的路由器节点申请得到,并向子网内的传感器节点进行通告,在每一个子网内所有的节点均具有相同的子网ID;每个路由器节点给其它路由器节点分配子网ID时,都默认将其子网ID的后面四位进行分配,默认可进行分配的子网数为14个;当有超出了默认子网数目的子网申请时,路由器节点则进行相应的冲突处理,以实现接纳更多的子网加入。
优选地,节点ID每一个路由器节点的此段地址默认为01,而其它的传感器节点则将其EUI-64bits的长地址由哈希算法映射而成8bit的节点ID,作为其在子网内的唯一标识;地址为00和FF预留待用。
优选地,每个路由器节点和传感器节点均带有IPv6地址和相应的掩码,由其掩码与IPv6地址相与即可获得自己的子网信息。
优选地,包括下列步骤:
1)物联网网关GW启动后,发送路由器通告消息RoAM,其目的地址为多播地址FF02::1;在其功率所及范围内的IPv6微型传感路由器节点A收到RoAM后,向其发出地址请求报文ADRQ,进而网关GW向其发送地址响应报文ADRP,至此,路由器节点A获得自己的地址以及授权分配的地址池信息;
2)不在物联网网关功率范围内的IPv6微型传感路由器B加入网络时,首先探测请求包PRRQ,在路由器B范围内的路由器或网关收到地址探测包PRRQ之后发送探测响应包PRRP;在规定的系统时间到期后,路由器B会收到多个PRRP,根据接收到报文的链路质量LQI、深度信息,地址池容量等信息,选取最适合的路由器节点A作为自己的父节点,发送地址请求报文ADRQ,收到该确认报文的路由器节点A发送地址回复报文ADRP;路由器节点B从ADRP中提取出相关地址信息,配置出本节点的IPv6地址;
3)IPv6微型传感器节点MSN加入网络,获得IPv6地址的过程与步骤2)中的过程类似,选择离其最近的路由器节点B作为地址配置节点,进而配置出本节点的IPv6地址;
4)在地址配置信息的报文中,节点ID是由各个子网内的IPv6微型传感路由器根据地址请求的节点的EUI-64bits的长地址进行哈希映射,映射成子网内唯一的8bits的节点ID,进而通过地址配置信息的报文回复给各子网成员;各个IPv6微型传感器节点提取出相应的地址信息,生成全网唯一的IPv6地址;对于所有的路由器节点,规定它们的节点ID统一为0x01。
优选地,对于IPv6微型传感路由器进行地址请求时,找不到可用的父节点时,冲突解决的具体操作步骤如下:
1)IPv6微型传感路由器MSR E申请加入网络并发出探测请求包PRRQ,然而其周围的IPv6微型传感路由器C、D均无可供分配的地址池,此时需要对路由器C以及D的地址进行扩容;
2)MSR E首先选择深度较大的MSR D为父节点,请求MSR D进行冲突解决;MSR D进而进行地址变长操作,将自己所分配的子网部分右移一位,以获得更多的地址可供分配;MSR E再次向MSR D进行申请成功获得MSR D为其分配的地址时,向其子网内的所有节点发送路由器通告消息RoAM,使子网内的所有节点均变更为新地址,且掩码为原掩码加一。
优选地,网关启动或者进行地址更新时,向全网发送路由器通告消息RoAM;各个IPv6微型传感路由器节点与IPv6微型传感器节点在加入网络,请求全球单播地址时都需进行“四次握手”进行连接,进而通过接收到的地址回复报文配置出自己的全球单播地址;
所述“四次握手”过程如下:以MSR B进行地址请求为例,MSR B广播探测请求报文PRRQ,接收到PRRQ的路由器均回复PRRP,MSRB在一定时间内会收到多个PRRP,然后根据一定的策略选取MSR A作为父节点,并发送ADRQ进行地址请求;MSR A对进行地址请求的MSR B发送地址回复报文ADRP,MSR B据此配置出自己的全球单播地址。
优选地,子网ID部分采用的地址编码方案具体如下:
首先启动GW网关节点,其子网ID部分为全0,掩码为/80;
接着,路由器节点A、C顺序接入启动,成功接入网络,GW网关分配给A、C节点的子网ID依次为1000:0000:00/84,2000:0000:00/84;
路由器节点B向A节点申请加入网络,入网成功,A节点给B节点分配子网ID为1100:0000:00/88;路由器节点D向C节点申请加入网络,入网成功,C节点给D节点分配子网ID为2100:0000:00/88;
路由器节点E向邻近节点C和D发出申请,得到C和D的地址池容量已满的回复,则继续发送一轮地址申请,在系统规定时间内,E仍未找到合适的父节点,则向深度较大的节点D继续发送地址变长请求,节点D进而进行地址变长操作,以接纳更多的路由器节点的加入;节点D将自己所分配的子网部分右移一位,以获得更多的地址可供分配;MSR E再次向MSR D进行申请成功获得MSR D为其分配的地址时,向其子网内的所有节点发送路由器通告消息RoAM,使子网内的所有节点均变更为新地址,掩码为原掩码加一,使分配给MSR E的子网ID为2108:0000:00/89;
MSN F向距离最近的MSR B发出请求,节点B在判明F为普通传感器节点,不具有地址池分配功能时,则仅仅是将自己的子网ID告知节点F,作为节点F的子网ID,即1100:0000:00/88;所有的MSN节点向距离最近的MSR发出请求加入相应子网,并从MSR处获取相应的子网ID,该子网ID与MSR的子网ID相同,没有向下分配地址池的权限。
根据本发明,新节点在加入网络后,可进行全网通信,IPv6地址中还包含有父节点IPv6地址信息,节点地址不只是节点的身份标识,也可以为数据包的路由提供服务。
附图说明
图1为本发明节点的128位IPv6地址格式;
图2为本发明应用场景示意图;
图3为本发明中地址配置的简化流程图。
具体实施方式
本发明采用的地址编码方案具体如下:
1)128位的IPv6地址分为三部分:前80位为全局路由前缀,由网关获得,通过该网关连入全网进行通信的节点均从此网关取得该80位的全局路由前缀;第81位到120位为可供分配的子网ID,各个子网内的所有节点的子网ID相同;第121位到128位为节点ID,由节点的64位EUI-64bits长地址进行哈希映射而成,作为节点在子网内标识。如图1所示。
2)第1到80位为全局路由前缀,由网关获取标识此IPv6无线传感器网络的唯一的全局路由前缀。一个IPv6无线传感器网络内的所有类型的传感器节点都使用相同的全局路由前缀。
3)第81到120位为可供分配的子网ID,由各个子网内的路由器节点申请得到,并向子网内的传感器节点进行通告,在每一个子网内所有的节点均具有相同的子网ID。每个路由器节点给其它路由器节点分配子网ID时,都默认将其子网ID的后面四位进行分配,默认可进行分配的子网数为14个。当有超出了默认子网数目的子网申请时,路由器节点则进行相应的冲突处理,以实现接纳更多的子网加入。
4)第121位到128位为节点ID,每一个路由器节点的此段地址默认为01,而其它的传感器节点则将其EUI-64bits的长地址由哈希算法映射而成8bit的节点ID,作为其在子网内的唯一标识。地址为00和FF预留待用。
5)每个路由器节点和传感器节点均带有IPv6地址和相应的掩码,由其掩码与IPv6地址相与即可获得自己的子网信息。
有关本发明的技术内容及详细说明,现配合附图1-3说明如下:
本发明所适用的无线传感器网络由一个物联网网关(GateWay ofIoTs,GW)、多个IPv6微型传感路由器(Micro Sensor Router,MSR)和多个IPv6微型传感器节点(Micro Sensor Node,MSN)组成,如图2所示。
GW主要实现IPv6无线传感器网络与现有网络的接入、协议转换以及网络管理等功能;
MSR主要实现路由转发功能;
MSN主要实现对物理世界的信息感知和获取。
在网络初始状态,物联网网关GW具有一个地址池,每个MSR通过地址请求向GW申请地址分配权,同时获取其可以分配的地址集合;对每个新加入的MSN,通过向其距离最近的MSR申请地址。GW和MSR具有地址分配的功能,而网络内的所有MSN都只可以进行对数据的采集工作,不支持地址分配功能。
有关传感器网络节点的IPv6地址的自动配置,下面将对其具体的操作步骤进行详细描述:
(1)物联网网关GW启动之后,发送路由器通告消息(RouterAdvertisement Message,RoAM),其目的地址为多播地址FF02::1。在其功率所及范围内的IPv6微型传感路由器节点A,收到RoAM后,向其发出地址请求报文(Address Request Message,ADRQ),进而网关GW向其发送地址响应报文(Address Response Message,ADRP),至此,路由器节点A可获得自己的地址以及授权分配的地址池信息。
(2)不在物联网网关功率范围内的IPv6微型传感路由器B,加入网络时,首先探测请求包(Probe Request Message,PRRQ),在路由器B范围内的路由器或网关收到地址探测包PRRQ之后发送探测响应包(Probe Response Message,PRRP);在规定的系统时间到期后,路由器B会收到多个PRRP,根据接收到报文的链路质量(Link QualityIndicator,LQI)、深度信息,地址池容量等信息,选取最适合的路由器节点A作为自己的父节点,发送地址请求报文ADRQ,收到该确认报文的路由器节点A发送地址回复报文ADRP。路由器节点B从ADRP中提取出相关地址信息,配置出本节点的IPv6地址。
(3)IPv6微型传感器节点MSN加入网络,获得IPv6地址的过程与(2)中的过程类似,选择离其最近的路由器节点B作为地址配置节点,进而配置出本节点的IPv6地址。
(4)在地址配置信息的报文中,节点ID是由各个子网内的IPv6微型传感路由器根据地址请求的节点的EUI-64bits的长地址进行哈希映射,映射成子网内唯一的8bits的节点ID,进而通过地址配置信息的报文回复给各子网成员。各个IPv6微型传感器节点提取出相应的地址信息,生成全网唯一的IPv6地址。对于所有的路由器节点,我们规定它们的节点ID统一为0x01。
对于IPv6微型传感路由器进行地址请求时,找不到可用的父节点时,冲突解决的具体操作步骤如下(以图2为例):
(1)IPv6微型传感路由器MSR E申请加入网络,并发出探测请求包PRRQ,然而其周围的IPv6微型传感路由器C、D均无可供分配的地址池,此时需要对路由器C以及D的地址进行扩容。
(2)MSR E首先选择深度较大的MSR D为父节点,请求MSR D进行冲突解决。MSR D进而进行地址变长操作,将自己所分配的子网部分右移一位,因此,获得了更多的地址可供分配。MSR E可以再次向MSR D进行申请,此次成功获得了MSR D为其分配的地址。但由于MSR D进行了地址变长的操作,所以应向其子网内的所有节点发送路由器通告消息(RoAM),使子网内的所有节点均变更为新地址,且掩码为原掩码加一。
图2是关于节点的可聚集性全球单播地址配置的示意图。网关启动或者进行地址更新时,向全网发送路由器通告消息(RoAM)。各个IPv6微型传感路由器节点与IPv6微型传感器节点在加入网络,请求全球单播地址时都需进行“四次握手”进行连接,进而通过接收到的地址回复报文配置出自己的全球单播地址。“四次握手”过程如下:以MSR B进行地址请求为例,MSR B广播探测请求报文(PRRQ),接收到PRRQ的路由器均回复PRRP,MSR B在一定时间内会收到多个PRRP,然后根据一定的策略选取MSR A作为父节点,并发送ADRQ进行地址请求。MSR A对进行地址请求的MSRB发送地址回复报文(ADRP),MSR B据此配置出自己的全球单播地址。
本发明子网ID部分采用的地址编码方案具体如下:
首先启动GW网关节点,其子网ID部分为全0,掩码为/80。
接着,路由器节点A、C顺序接入启动,成功接入网络,GW网关分配给A、C节点的子网ID依次为1000:0000:00/84,2000:0000:00/84。
路由器节点B向A节点申请加入网络,入网成功,A节点给B节点分配子网ID为1100:0000:00/88。路由器节点D向C节点申请加入网络,入网成功,C节点给D节点分配子网ID为2100:0000:00/88。
路由器节点E向邻近节点C和D发出申请,得到C和D的地址池容量已满的回复。则继续发送一轮地址申请,在系统规定时间内,E仍未找到合适的父节点,则向深度较大的节点D继续发送地址变长请求。节点D进而进行地址变长操作,以接纳更多的路由器节点的加入。节点D将自己所分配的子网部分右移一位,因此,获得了更多的地址可供分配。MSR E可以再次向MSR D进行申请,此次成功获得了MSR D为其分配的地址。由于MSR D进行了地址变长操作,所以应向其子网内的所有节点发送路由器通告消息(RoAM),使子网内的所有节点均变更为新地址,掩码为原掩码加一。所以分配给MSR E的子网ID为2108:0000:00/89。
MSN F向距离最近的MSR B发出请求,节点B在判明F为普通传感器节点,不具有地址池分配功能时,则仅仅是将自己的子网ID告知节点F,作为节点F的子网ID,即1100:0000:00/88。所有的MSN节点向距离最近的MSR发出请求加入相应子网,并从MSR处获取相应的子网ID,该子网ID与MSR的子网ID相同,没有向下分配地址池的权限。
上述仅为本发明的较佳实施例而已,并非用来限定本发明实施范围。即凡依本发明申请专利范围所做的均等变化与修饰,皆为本发明专利范围所涵盖。