本文针对无线传感器网络与IPv6网络互联,在分析现有接入方式不足的基础上提出了一种基于IPv6的无线传感器网络边界路由器的设计方案。方案主要阐述了边界路由器的硬件和软件设计的实现,重点介绍了基于IPv6的无线传感器网络协议栈适配层的设计。通过数据包分片与重组机制以及报头压缩机制,协议栈适配层实现了IPv6数据包在IEEE 802.15.4链路中的传输。实验结果表明,该设计方案实现了无线传感器网络与IPv6网络的无缝融合,数据传输稳定可靠,具有实用性的应用价值。
0引言
无线传感器网络(Wireless Sensor Network,WSN)近年来发展迅速,在环境保护、工业设备监控、医疗监护、农田监测、智能家居、市政交通管理、军事侦察等领域具有广阔的应用前景。无线传感器网络的诸多应用都需要远程用户能够方便地对无线传感器网络资源进行访问、控制和使用。TCP/IP的广泛应用已经使其成为事实上的协议标准,加之IPv6的诸多优良特性,都使得实现无线传感器网络与IPv6网络的互联与融合是当前最现实的选择。
目前,无线传感器网络与IPv6网络互联主要有网关接入和直接接入两种方式。其中,网关接入是指利用网关在无线传感器网络和IP网络之间进行协议转换,实现数据的转发任务,但是网关接入还存在着网络结构复杂、成本较高等诸多问题;直接接入方式是指在无线传感器网络节点直接运行IPv6协议,能够实现无线传感器网络和Internet网络的无缝融合。无线传感器网络是低速率、低功耗的资源受限网络,在无线传感器节点上并不适合直接运行标准IPv6协议。
本文提出了一种基于JN5148模块的无线传感器网络边界路由器的设计方案,该方案能够实现无线传感器网络与IPv6网络的无缝融合,并通过实际测试证明了该方案的可行性。
1边界路由器硬件设计
边界路由器硬件包括射频模块、处理器模块和电源模块等部分。其中,射频模块负责IEEE 802.15.4数据帧的收发;处理器模块负责解析收到的数据帧,选择路径后进行转发处理;电源模块负责对其他模块供电。边界路由器的硬件结构如图1所示。
1.1射频模块
目前,无线传感器网络领域面向不同应用的协议栈众多,其中绝大部分协议栈都把IEEE 802.15.4作为物理层和数据链路层的无线通信标准。支持IEEE 802.15.4的射频模块主要有Jennic公司的JN5148、Ember250、MC13192、TI公司的CC2430和Digi公司的XBEE模块。
其中,JN5148模块将射频芯片与处理器集成一体,内置了IEEE 802.15.4协议,不需要自行设计无线射频天线接口,开发成本较低,本文设计中选用Jennic公司的JN5148模块作为边界路由器的处理器和射频模块。
JN5148模块集成了基于OpenRISC核的32位RISC处理器,拥有完全兼容2.4 GHz IEEE 802.15.4标准的无线收发器,128 KB的RAM运行应用程序,512 KB的FLASH能够满足包括存储应用程序在内的大部分需求。
1.2串行通信接口设计
无线传感器网络数据流量较小,对网络带宽要求不高,因此边界路由器与Internet网络之间可以采用UART串行总线连接。目前,各种网络设备中普遍应用USB接口,可以使用转换电路将USB接口转换为UART串行总线接口,本文选择FTDI232R芯片完成电平匹配和接口转换,FTDI232R是一款可编程的USB接口转UART接口的集成芯片,具有3.3 V电压输出,可编程显示数据收发状态。具体电路如图2所示。
2边界路由器软件设计
2.1协议栈框架设计
无线传感器网络协议栈是无线传感器网络软件设计的核心,是无线传感器网络组网、节点与边界路由器以及节点与节点之间数据通信的基础。为了满足无线传感器网络全IP互联,需要精简IPv6协议以及实现IPv6数据帧在IEEE 802.15.4帧中传输。本文设计的边界路由器采用基于IPv6的无线传感器网络协议栈。协议栈框架如图3所示。
IEEE 802.15.4物理层主要负责启动和关闭射频收发器、能量检测与信道扫描、清除信道评估以及无线电波信号的调制和解调等工作。IEEE 802.15.4 MAC层主要完成信道接入、链路的连接及断开以及数据通信的差错及流量控制等工作。轻量级操作系统Contiki负责协议栈各层任务调度及管理,保证协议栈工作的实时性。
协议栈包括的任务有自组网任务、适配层主任务、网络维护任务、IP层任务以及应用层任务,任务调度关系如图4所示。
本设计选用的JN5148模块内部集成了IEEE802.15.4的物理层和MAC层协议,因此,协议栈设计的重点是适配层、IP网络层和传输层。
2.2适配层设计
组建网络是边界路由器适配层需要完成的基本任务,系统启动后,自组网任务负责在选定信道和网络16位PAN_ID后建立网络。网络维护任务在网络建立后维持父节点与子节点之间的链路稳定,并在链路出现异常时进行上报并尝试修复链路。IEEE 802.15.4物理层数据单元最大为127 B,而IPv6要求链路支持的最小MTU(Maximum Transmission Unit,MTU)长度为1 280 B,明显不支持此长度MTU.适配层介于IEEE 802.15.4 MAC层和IP层之间,因此适配层主任务除了负责管理MAC层协议事件之外,主要完成节点自动地址配置、IP数据包的分片与重组和IP数据包头压缩与解压等功能以实现IP数据包在IEEE 802.15.4链路中的传输。
2.2.1地址映射机制
基于IPv6的无线传感器网络中每个节点都需要配置惟一的IPv6地址,但是手动配置繁琐并且难以保证地址惟一性。本文设计的无线传感器网络边界路由器采用无状态地址自动配置机制。IPv6地址由全局地址前缀和接口标识ID(Interface ID,IID)两部分组成。因为每一个射频模块都分配有一个全球惟一的IEEE EUI-64标识符,即64位MAC地址,因此可以利用EUI-64标识符获得一个IPv6地址接口标识ID来实现无状态地址自动配置。
2.2.2适配层分片与重组机制
为了减少适配层包头开销,适配层帧头分为不分片和分片两种格式,分别用于IP数据包长度小于MAC层MTU的报文和IP数据包长度大于MAC层MTU的报文。适配层不分片帧头格式与常规帧头相同,分片帧头又分为第一个分片和后续分片两种格式,如图5和图6所示。
节点适配层接收到适配层数据包时,首先检查该数据包是否分片,如果是一个分片的数据包,则在将所有数据分片重新组合成完整的IP数据包后,再传送到IP网络层处理;若某一个分片丢失,则丢弃该IP数据包的所有后续分片。对于IP层下发的数据包,节点适配层判断IP报文长度是否超过链路层MTU长度,若超过链路层MTU长度,则将此IP数据包分片后发送;若不超过链路层MTU长度,则按照不分片格式发送。
适配层的每一种数据帧都有调度编码位域(8位),不同的调度编码位域表示不同的解析方式,主要包括不分片、分片、IP包头压缩、UDP报头压缩以及预留功能等多种类型。其中,11000xxx表示本数据帧是已分片适配层数据帧的第一个分片,11100xxx则表示本数据帧是已分片适配层数据帧的后续分片。
datagram_size:11 b,表示链路层未分包之前的IP数据包的总长度,该IP数据包所有链路层分片的该字段的值都应该相同。
datagram_tag:16 b,分片标识,用来区分同一数据源节点的不同IP数据包。同一个IP数据包的所有链路层分片都具有相同的分片标识,数据源节点每成功发送一个完整的IP数据包都更新(加1)该字段的值。
datagram_offset:8 b,分片偏移量,表示该分片在所有分片中的偏移量(以8 B为单位),该字段只出现在第二个及后续分片中。2.2.3适配层报头压缩机制
标准IPv6网络层报文和UDP报文的报头分别有40 B和8 B,由此带来的数据传输报头开销极大,因此本文适配层对IP报文和UDP报文的包头格式进行了压缩处理。由于TCP报文并不适合无线传感器网络这种多跳、数据传输延迟较大的网络[11],故本文暂不考虑TCP报文。根据无线传感器网络的上下文信息,IPv6版本号和负载长度可以省略,通信流类型、流标签、下一包头、跳数限制以及源地址和目的地址设置压缩控制域进行部分压缩。IPv6网络层报文头部压缩格式如图7所示。
011xxxxx为调度编码位域,其中最右端5位用于报头压缩编码。各编码字段定义如下:
TF:2 b,通信流类型和流标签。其中通信流类型由查分服务代码点DSCP和显示拥塞反馈ECN,当TF=11时,通信流类型和流标签全都省略;当TF=00时,通信流类型和流标签都不压缩;当TF=01时,DSCP省略;当TF=10时,流标签省略。
NH:1 b,下一包头。NH=0,表示下一包头未压缩;NH=1时,下一包头已压缩。
HLIM:2 b,跳数限制。当HLIM等于00、01、10和11时,分别表示未压缩、1跳、64跳和255跳。
M:1 b,指示目的地址类型。当M=0时,目的地址不是多播地址;当M=1时,目的地址为多播地址。
SAC:1 b,表示源地址的压缩方式,当它为0时表示使用的是无状态头部压缩;为1时表示使用的是基于上下文的头部压缩。
SAM用来控制不同压缩方式下源地址压缩方式。
DAC与DAM的控制目的地址的压缩方式,具体含义与SAC和SAM相似。
传输层UDP报文紧跟在IPv6网络层包头后面,UDP包头压缩比较简单,是否压缩由前述NH字段指定。标准UDP报文头部中的长度域省略,源端口号、目的端口号以及校验和域的压缩方式由P和C字段表示,校验和域暂不压缩。UDP报文头部具体压缩格式如图8所示。
众所周知,TCP/IP端口号为16位,通常以0xf0和0xf0b开始,其压缩方式由P字段指定,具体如下:
00:不压缩;01:目的端口号前8位(0xf0)省略,其他部分和源端口号保留;10:源端口号前8位(0xf0)省略,其他部分和目的端口保留;11:目的端口和源端口的前12位(oxf0b)省略,其他部分保留。
2.3 IP网络层与传输层设计
标准TCP/IP协议占用资源较多,而无线传感器网络属于资源受限网络,因此边界路由器的设计要特别注意协议栈资源占用。uip IPv6(uIPv6)协议栈专为资源受限的设备设计,RAM的占用量只有1.7 KB,代码量只有[12]11.5 KB,因此选择移植uip IPv6协议栈作为基于IPv6的无线传感器网络协议的IP层和传输层。
uip IPv6协议栈的IP网络层和传输层使用同一个数据缓存区,因此可以将IP网络层和传输层统一处理。本设计中各功能模块由轻量级操作系统Contiki统一调度,因而设计一个IP网络层任务集中处理从适配层接收到的数据包和应用层需要发送的数据包。
3测试与分析
3.1测试平台搭建
边界路由器负责WSN网络与IPv6网络之间的通信,本文实验验证了边界路由器的工作性能。实验测试平台包括一个边界路由器、一个传感器节点和一台Linux主机,其中边界路由器通过UART接口与Linux主机的USB口连接,链路层运行slip协议。边界路由器和传感器节点的IPv6地址配置为aaaa::215:8d00:b:6840和aaaa::215:8d00:b:67d3,Linux主机端运行slip守护程序来监听USB口,其IPv6地址为aaaa::1.
3.2测试结果分析
通过在Linux主机上向传感器节点(IPv6地址为aaaa::215:8d00:b:67d3)发送ping6报文,来测试传感器节点的可达性,以验证边界路由器的正常工作,实验结果如图9所示。
实验对边界路由器的数据包转发率、平均传输延迟和传输稳定性进行了分析。其中,数据包转发率是指Linux主机收到的echo报文数量和发送的ping6报文数量之比;平均传输延迟是指Linux主机发送ping6报文和接收到echo报文之间的平均时间间隔;传输稳定性是指传输延迟的变化幅度,用算术平均差评定。分析结果如图10~图12所示。
如图10和图11所示,在发送不同长度ping6报文测试时,边界路由器均具有良好的数据转发成功率(大于90%),并且数据传输延迟较小。图12列举的是发送不同长度ping6报文测试时链路传输延迟的算术平均差,对于不同长度的测试报文传,输延迟算术平均差基本小于15 ms,网络链路传输延迟抖动较小,证明网络的链路稳定性较好。
4结论
本文针对无线传感器网络实际应用的现实需求,提出了基于IPv6的无线传感器网络边界路由器的设计方案。该设计方案实现了无线传感器网络与IPv6网络的无缝融合,降低了网络应用布置成本,提高了系统的灵活性。实验证明,该方案设计的边界路由器具有较低的数据传输延迟,网络的链路比较稳定,能够满足实际应用要求。