随着互联网的普及,Internet对人们生活方式的影响越来越巨大,并将继续在未来的各领域持续发挥其影响力。集成了网络技术、嵌入式技术、微机电系统(MEMS)及传感器技术的无线传感器网络将Internet从虚拟世界延伸到物理世界,从而将逻辑上的信息世界与真实物理世界融合在一起,改变了人与自然交互的方式,满足了人们对“无处不在”的网络的需求。2000年12月IEEE成立了IEEE802.15.4工作组,致力于定义一种供廉价、固定、便携或移动设备使用的,复杂度、成本和功耗极低的低速率无线连接技术。产品的方便灵活、易于连接、实用可靠及可继承延续是市场的驱动力。一般认为短距离的无线低功率通信技术最适合传感器网络使用,传感器网络是IEEE802.15.4标准的主要市场对象。
一方面,无线传感器网络具有“无处不在”和节点数量庞大等特点,部署无线传感器网络需要数量巨大的IP地址资源;另一方面,由于无线传感器网络的应用领域往往对安全性要求较高,而无线传感器网络自组织的先天性缺乏应有的安全机制。IPv6作为下一代网络协议,具有地址资源丰富、地址自动配置、安全性高、移动性好等优点,可以满足无线传感器网络在地址和安全方面的需求。所以IETF于2004年11月成立了一个6LowPan(IPv6 over IEEE 802.15.4或IPv6 over LR_PAN)工作组。它规定了6LowPan技术在底层采取IEEE 802.15.4,MAC层以上采取IPv6协议栈,致力于如何将IPv6与IEEE802.15.4展开,实现IPv6数据包在IEEE 802.15.4上的传输,研究基于IPv6 over IEEE802.15.4的无线传感器网络的关键问题。目前这方面研究成为了一个很活跃的方向。其中,通过分析无线传感器网络对IPv6协议栈基本需求,借助协议工程学理论和软件工程的方法,设计并实现体积小、功能全、效率高,适用于IPv6无线传感器网络节点的嵌入式IPv6协议栈,已经成为一个很关键的问题。
1 无线传感器网络和IPv6 over IEEE 802.15.4的技术特点
1.1 无线传感器网络简介
无线传感器网络由大量低功耗、低速率、低成本、高密度的微型节点组成,节点通过自我组织、自我愈合的方式组成网络。图1给出了无线传感器网络的工作原理,图中分散的无线传感器节点通过自组织方式形成传感器网络。节点负责采集周围的相关信息,并采用多跳方式将这些信息通过Internet或其他网络传递到远端的监控设备。
图1 无线传感器网络工作原理
无线传感器网络由许多个功能相同或不同的无线传感器节点组成。每个传感器节点由数据采集模块(传感器、A/D转换器)、数据处理和控制模块(微处理器、存储器)、通信模块(无线收发器)以及供电模块(电池、DC/DC能量转换器)等组成。节点在网络中可以充当数据采集者、数据中转站或者簇头节点(cluster head node) 的角色。作为数据采集者,数据采集模块收集周围环境的数据(如温度和湿度),通过通信路由协议直接或间接将数据传输给远方基站(base station)或汇节点(sink node);作为数据中转站,节点除了完成采集任务外,还要接收邻居节点的数据,将其转发给距离基站更近的邻居节点或者直接转发到基站或汇节点;作为簇头节点,节点负责收集该类内所有节点采集的数据,经数据融合后,发送到基站或汇节点。与传统Ad Hoc网络相比,无线传感器网络具有一些明显的特征:
① 网络节点密度高,传感器节点数量众多,单位面积所拥有的网络节点数远大于传统的Ad Hoc网络;
② 传感器节点由电池供电,节点能量有限;
③ 网络拓扑变化频繁;
④ 网络应具备容错能力。
正是由于以上特点,IPv6与无线传感器网络的结合对IPv6提出了一些新的要求,如IPv6地址自动分配机制和IPv6包头压缩机制;另外,还有一些管理问题、与无线数据链路层接口问题等。因此,设计IPv6微型协议栈时,除了要实现功能完整、高效实用、占用的存储资源少以外,如上所述的一些新要求也应考虑进来。
1.2 IPv6 over IEEE 802.15.4的技术特点
IEEE 802.15.4是2004年提出的无线标准的安全网络技术,主要定义物理层和MAC层的协议,其余协议主要参照和采用现有的标准,主要应用场合是读表自动化、自动化控制和传感器网络。IEEE802.15.4针对的就是低复杂度、低功耗、低数据速率的短距离网络,目标是将普通小型电池的使用寿命延长到几年。当芯片批量生产时,每个802.15.4设备的销售价格最终不到3美元,将很好地满足无线传感器网络的要求。IEEE802.15.4定义了两个物理层标准,即2.4 GHz物理层和868/915 MHz物理层。这两个物理层都基于直接序列扩频DSSS(Direct Sequence Spread Spectrum),使用相同的物理层数据包格式;区别在于工作频率、调制技术、扩频码片长度和传输速率。2.4 GHz波段为全球统一、无须申请的ISM频段,有助于15.4设备的推广和生产成本的降低。2.4 GHz的物理层通过采用高阶调制技术能够提供250 kb/s的传输速率,有助于获得更高的吞吐量、更短的通信时延和工作周期,从而更加省电。868 MHz是欧洲的ISM频段,915 MHz是美国的ISM频段,这两个频段的引入避免了2.4 GHz附近各种无线通信设备的相互干扰。868 MHz的传输速率为20 kb/s,915 MHz是40 kb/s。由于这两个频段上无线信号传播损耗较低,因此可以降低对接收机灵敏度的要求,获得较远的有效通信距离,从而可以用较少的设备覆盖给定的区域,这些特点使其非常符合传感器网络的应用要求。如前所述,IEEE 802.15.4只规定了物理层和MAC层,并且其市场目标主要是无线传感器网络,所以在选择网络层标准时,考虑到无线传感器网络对地址和安全性等方面的要求,以及下一代互联网协议IPv6的不断发展和完善,在嵌入式设备中引入IPv6协议也将成为一种必然趋势。因此,6LowPan组织建议采取如图2所示的嵌入式IPv6协议栈,在设计时要充分考虑资源受限与功能相对完善之间的折中。
图2 嵌入式IPv6协议栈
2 嵌入式IPv6协议栈的设计
2.1 嵌入式IPv6协议栈的设计思想
由于无线传感器网络节点一般都是嵌入式设备,所以嵌入式IPv6协议栈的设计主要应突出“微型化”的思想。TCP/IP协议最先是在Unix系统里实现的,由于嵌入式系统与PC机的差别很大,在嵌入式系统中实现TCP/IP协议与在操作系统中的实现有很大不同,所以这是设计的核心环节。嵌入式系统的IPv6微型协议栈,直接面对硬件,没有一个多任务操作系统平台;MCU中的程序结构一般是顺序执行和硬件中断相配合的方式,与高级操作系统中多线程并发执行的方式截然不同。因为单片机上系统的各种资源是有限的,例如CPU的处理速度、字长,RAM、ROM存储器的容量以及接口的数量等与通用计算机相比有很大差距,所以如何使协议栈做到精细、通信可靠、功能相对完善,而且又能发挥单片机的特点成为IPv6微型协议栈设计的关键问题。“微型化”思想主要体现在设计方案核心应着眼于设计体积小,但又不影响运行的协议栈,所以要对协议栈的裁剪方面进行深入研究,去掉不必要的组件、传统的复杂调度机制和额外的扩展功能,甚至可以去除操作系统等。
综合研究以上多方面因素,提出了能够适用于无线传感器网络的嵌入式IPv6微型协议栈的设计要求。
① 协议栈运行于单片机系统上,具有较强的兼容性。可以在以太网上正确运行,同时在此基础上可以借助IEEE802.15.4 MAC的无线数据传输功能来传送数据包。
② 实现IPv6基本协议栈核心协议的最基本功能,包括IPv6基本描述协议、ND(邻居发现)协议、ICMPv6(因特网控制报文)协议和IPv6地址的自动配置协议等。
IPv6基本描述协议: IPv6数据包的发送、接收、处理等基本功能。
ND(邻居发现)协议: 邻居发现的地址解析功能,实现邻居请求和邻居通告。
ICMPv6(因特网控制报文)协议: 主要实现控制报文的消息处理,以及对网络诊断功能的回应请求和回应答复。
IPv6地址自动配置协议: 根据IPv6地址格式的要求,主要实现IPv6链路本地地址的配置和请求节点多播地址的配置。
③ 利用对校验和字段的计算与处理来提高ICMPv6、TCP等协议运行的正确性。
④ 实现简单的应用层协议(如TELNET/SNMP协议),利用远程终端可以登录到运行嵌入式IPv6协议栈的单片机系统,以及进行简单的控制和管理操作。
2.2 嵌入式IPv6协议栈的分层与模块化设计
嵌入式IPv6协议栈采用分层结构进行设计,将整个协议栈(包括TCP及上层应用)分为4个层次: 事件触发接口层、TCP/IP网络协议层、NIC网络接口核心层和网络设备驱动接口层。
图3是对整个协议栈的分层描述,在协议栈的工作过程中使用上层调用相邻层的函数来实现相应的功能。
图3 协议栈分层对象时序图
各层的功能简述如下:
事件触发接口层。该层对应于TCP/IP模型的应用层协议(OSI模型的高层协议),主要功能是定义网络数据的格式以及网络的应用。
TCP/IP网络协议层。该层对应于TCP/IP模型的传输层协议和网络层协议(OSI模型的3、4两层),主要功能是定义数据如何传输到目的地的。使用TCP协议在两台主机之间建立端到端的连接,保证可靠的传输;IP协议进行路由选择和基于IP的寻址。
NIC网络接口核心层。该层是整个网络接口的关键部位,其上层是具体的网络协议,下层是驱动程序。它为上层提供统一的发送接口,屏蔽各种各样的物理介质;同时负责把来自下层的包向合适的协议发送。
网络设备驱动接口层。该层是分层结构的最底层,其主要功能是控制具体物理介质,从物理介质接收和发送数据,并对物理介质进行诸如最大数据包之类的各种设置。
结合对嵌入式IPv6协议栈设计要求和分层结构的全面分析,将设计实现划分为4个模块,如图4所示。
图4 各功能模块及其关系示意图
各模块的功能简述如下:
网络接口核心模块。该模块为网络协议提供统一的发送接口,屏蔽各种各样的物理介质;同时负责把来自下层的包向合适的协议配送。
事件接口模块。嵌入式IPv6协议栈没有采用BSD套接口,而是采用了事件驱动接口。当特定TCP/IP事件发生时,将调用应用程序;而当应用程序产生输出数据时,也通过此接口发送出去。
SNMP网管模块。该模块负责获取IPv6无线传感器网络节点的相关MIB信息。
配置显示调试命令模块。该模块用于提供用户配置和调试的界面,包括配置IP地址、子网掩码、默认网关和MAC地址等。在程序正常运行前,由超级终端进入配置模式,由用户进行配置管理。
结语
基于IPv6 over IEEE802.15.4的无线传感器网络是一门新兴的网络技术,人们对它的研究尚处于起步阶段。本文针对基于IPv6 over IEEE802.15.4无线传感器网络自身特点,对其关键技术嵌入式IPv6协议栈进行了分析。笔者认为,现有的IPv6协议栈虽然在功能、性能等方面具有很大优势,但由于代码体积较大(几MB~几百MB),而无线传感器网络节点的存储资源只有不到200 KB,因而无法运行在计算能力和存储资源受限的无线传感器网络节点中。所以在设计适合传感器节点的嵌入式IPv6协议栈时,应充分分析和研究无线传感器网络对IPv6提出的新要求,考虑在性能和资源之间寻找一个折中的方案,充分运用协议工程学理论和软件工程的方法,设计一种合理、高效的嵌入式IPv6微型协议栈。这对推动无线传感器网络和IPv6的发展,以及改变人们的生活和工作方式,具有十分重要的意义。