刘 彬, 韩毅刚, 宿国防
(南开大学 电子信息与光学工程学院 天津市光电传感器与传感网络技术重点实验室,天津 300350)
随着IPv6互联网不断地成熟和发展,以及无线传感器网络(wireless sensor networks,WSNs)的应用也不断增长[1~6],无线传感器网络采用IPv6通信也成为一种趋势[7~9]。实现通信的关键技术就是无线传感器网络的IPv6地址配置。
目前,国内外研究人员提出了多种无线传感器网络IPv6地址配置方案[10~12]。实现IPv6自动配置的方法主要有两种,有状态地址分配和无状态地址分配[13]。有状态地址分配会通过服务器、客户端的形式来分配地址。无状态地址分配会采用多播的方式通过邻居发现协议,实现地址分配[14],但需要采用多播方式通过邻居发现协议对地址进行重复地址冲突检测,用以确保地址在网络中的唯一性。但单独的有状态地址依赖于服务器,会产生极大的能量消耗,对于无线传感器网络不适合。单独的无状态地址分配如6LoWPAN[15]虽然通过地址初始化过程可以实现分配一个全球的唯一地址,并且无需地址重复检测,降低了复杂度,但是没有考虑节点之间的层次性和关联性。此外,文献[16]提出了一种基于簇的全IP无线传感器网络配置方法,实现有状态地址分配与无状态地址分配相结合的方式,具有比较好的层次性,但仍然需要部分重复地址检测。
上述的地址配置方法为实现本文研究奠定了基础,为此,本文提出了在LEACH协议成簇[16~18]的同时,也实现分配IPv6地址的功能,并且地址分配仅由自身节点构成,而且具有很强的层次性,也无需要重复地址检测,具有较低的复杂度。
为了使LEACH协议下的无线传感器网络与IPv6网体系结构深度融合,将传感器节点分为3类,与IPv6的网络相连接的接入节点,簇首节点和簇内节点。其中,接入节点和簇首节点相当于IPv6网络中的路由器,具有路由和转发功能;簇内节点不具有路由和转发功能,仅负责采集数据,相当于IPv6中的主机。LEACH下的无线传感器网络结构分为2个层次:1)由接入节点和簇首节点构成的骨干网;2)由簇首节点与簇内节点构成的簇。骨干网由一个接入节点和若干个簇首节点构成。本文采用由接入节点出发,遍历所有簇首节点而形成一条通路的结构。具体的网络体系结构如图1所示。
图1 LEACH协议下无线传感器网络体系结构
针对簇的无线传感器网络,本文采用表1和表2地址结构。
表1 簇首节点地址结构
表2 簇内节点地址结构
IP地址中全局路由前缀会由接入节点(基站)向全局广播,这样每个节点都能接收到,减少在后续过程中的能量损耗。本文后续地址配置中,就仅阐述除路由前缀的后续部分。
本文采用簇首节点地址由其父节点ID+自身部分MAC地址+自身节点ID构成,这样一方面会使簇首节点具有层次结构,另一方面簇首节点可以通过最多一跳的方式获知下个簇首节点。簇内节点地址由簇首节点ID+自身部分MAC地址+自身节点ID构成,这样会直观地表现出其隶属于哪个簇。按照本文方法分配的地址,可以保证地址的唯一性。
在地址配置过程中,接入节点的IPv6地址需要预先设定。
1)簇首节点地址分配
接入节点会向全簇进行广播其全局路由前缀和自身节点ID,最先形成的簇首节点F1会根据接入节点的信息,构建自己的地址。其中全局路由前缀均一致,父节点ID为接入节点ID,MAC位为自身MAC地址的后2位,自身节点ID为在本网内的序号值,主机位设置为1。簇首节点F1会继续进行一跳传输,传输信息为自身节点ID,收到消息的下一个簇首节点F2会根据F1的信息,构建自己的地址。其中父节点ID为F1的ID,MAC位为自身MAC地址的后4位,自身节点ID为在本网内的序号值,主机位第一位设置为1,其他位置0。依次类推,直至所有簇首节点地址配置完成。
2)簇内节点分配
簇首节点会向本簇内广播其父节点ID,MAC位和自身节点ID信息,簇内成员节点将收到的信息作为自己地址的父节点ID、MAC位和自身节点ID,主机位由自己的MAC地址构成,不足的位置置0。依次类推,直至所有的簇内节点分配完地址。
为了评估本文方法的性能, 在NS—3仿真平台上对本文方法进行了仿真,参数设置如表3所示。并对正常分簇和边分簇边分配地址两者在能量损耗进行了对比分析。能量损耗差异在于边分簇边分配地址过程会传输比正常分簇更多的地址信息,会产生更多的能量损耗。
表3 仿真参数设置
当节点数量为50时,随着轮数的增加,能量损耗如图2所示。可以看出,在轮数比较少时,分配地址的LEACH算法和传统的LEACH算法能量损耗差距不大,但随着轮数的增加,性能就有一个明显的下降。原因在于,由于分配地址的LEACH算法传输的数据长度会比传统的LEACH算法更大,在轮数较少的初期,还不是很明显,但随着轮数增加,数据量就会累加很多,性能就与传统的LEACH算法相比差距逐渐变大。
图2 节点数为50时的平均能量损耗
通过对比图2~图4,可以看出,随着节点数的增加,分配地址的LEACH算法性能逐渐提升。通过观察,发现在其中出现了一个很明显的拐点,这个拐点出现的原因在于,当节点能量不断降低时,就无法进行正常通信。
图3 节点数为75时的平均能量损耗
图4 节点数为100时的平均能量损耗
由图2~图4可见,本文方法的优势在于:1)实现了一种在分簇过程中同时为节点分配IPv6地址的功能。2)提出了一种具有层次性的IPv6地址结构,针对簇首节点和簇内节点分别设计了地址结构。3)提出了一种基于分布式的IPv6地址分配,簇首节点采用有状态地址分配,并且仅需一跳就可以完成,簇内节点采用无状态地址分配,且无需冲突检测。所有的地址分配仅仅是由自身完成,仅仅需要接收父节点的ID信息。4)本文的方法与传统的LEACH算法相比,虽然能量损耗有所增加,但仅考虑轮数较少的情况下,二者大致相同。
本文提出了一种基于IPv6的无线传感器网络地址分配方法,采用传统的LEACH算法构造的簇结构,在分簇过程中也实现其分配地址的功能。地址分配采用了有状态与无状态结合的方式,并且所有节点地址仅由自身分配。仿真结果表明:与传统的LEACH算法分簇相比,该方法能耗虽然增加了一部分,但在轮数较低的情况下二者相差很小。