基于基于Contiki的的6LoWPAN边界路由器的设计
边界路由器的设计
以TI公司的CC2538 SoC作为核心硬件平台,基于Contiki开源操作系统设计了一种6LoWPAN边界路由器,同时
搭建了一个包含一台接入有线网络的PC、2个6LoWPAN节点以及一个6LoWPAN边界路由器的测试网络。测试
结果表明,所设计的6LoWPAN边界路由器成功实现了6LoWPAN节点和PC之间数据的转发功能,可以应用于智
能家居、环境监控等多种场合,具有一定的应用价值。
0 引言引言
[1]。6LoWPAN的出现以全IP的方式真正解决了无线传感器网络与IPv6网络的互联互通。6LoWPAN已经得到了Google、
Cisco、Honeywell等公司的高度重视,有望取代ZigBee标准,成为事实上的标准,当前已经有很多关于6LoWPAN的应用[2]。
6LoWPAN网络底层使用IEEE 802.15.4标准,在MAC层和IPv6网络层之间引入适配层,主要提供包分片与重组、头部压缩和链路
层转发等功能。
目前已经有多种开源或商业的6LoWPAN协议栈的实现[3],其中基于
6LoWPAN
1 系统组成和目标
系统组成和目标
6LoWPAN边界路由器也可以看成是一种网关或服务器,可连接传统IP网络和6LoWPAN传感网络并自动完成网络协议的转
换。为了验证6LoWPAN边界路由器在网络协议转换中的作用,本文设计了一个包含1个6LoWPAN边界路由器、2个
6LoWPAN节点,1台PC的测试网络,整体测试网络的结构图如图2所示。
本文设计的6LoWPAN边界路由器在实现无缝连接IP网络和6LoWPAN传感网络的过程中具有下列特点:(1)遵循6LoWPAN
标准协议,链路层基于ContikiMac,采用RDC机制,有效降低功耗,路由协议采用Router Over方式,基于ContikiRPL,支持
RPL协议[4];(2)兼容IPv4网络,即能实现IPv4客户端和6LoWPAN传感网之间的通信[5];(3)无缝连接IPv6网络,支持
6LoWPAN标准的邻居发现协议6LoWPAN ND[6];(4)支持ping等简单的常用网络管理命令,方便网络的调试。
2 硬件设计
硬件设计
6LoWPAN边界路由器是6LoWPAN网络的核心,处理能力要求较高,但从性能和成本两方面考虑,边界路由器的主控并没
有采用高性能ARM芯片,而是采用了TI公司的片上系统解决方案CC2538芯片,CC2538基于ARM Cortex-M3架构,内部资源
丰富,性能强劲,能很好地支持最新的Contiki3.x版本,完全可以满足本文的设计要求。以太网模块采用ENC28J60芯片及
HR911105A网络变压器。为了调试方便,本文设计了USB转串口模块,用于在PC上打印信息,其驱动芯片采用cp2102。边
界路由器的整体硬件结构图如图3所示。
为了便于后续的功能扩展及满足各种需求,本6LoWPAN传感器节点的硬件结构设计基本与6LoWPAN边界路由器相同,不
同之处在于去掉了以太网模块,其他部分设计与边界路由器相同。
3 软件设计
软件设计
6LoWPAN边界路由器的软件实现主要基于Contiki协议栈,Contiki以函数指针结构体的形式在每一层定义了很多钩子函数,
或者称为服务接入点。每一层不同的实现可以很容易连接到这些钩子函数,紧接着就可以通过函数指针访问。具体来说,首先
要深入分析Contiki内核的结构,然后根据本文需求对Contiki原有的协议栈进行相应的修改,增添所需的额外功能,本设计要
求至少要兼容IPv4网络的通信。
由于6LoWPAN是为支持IPv6而设计的,但当前仍有大量的设备只能运行IPv4协议,因此,本文在应用层定义了一个
IPv6/IPv4适配器,其作用就是兼容IPv4协议同时还能验证客户端输入指令的有效性。当边界路由器初始化完毕后,该应用层
适配器会创建一个IPv4套接字接口用于监听IPv4连接。IPv4主机收到的命令会被适配器提取出来经分析并判定是否需要转发到
6LoWPAN网络。如果命令无效或者目的节点失效,将会返回一个错误消息给IPv4主机。经过这一确认过程,包含该命令的
IPv6数据包就被转发给相应的6LoWPAN节点。与此同时,适配器还会启动一个定时器,如果该命令的应答没有在规定的时间
内返回,同样会返回一个错误信息给主机端;如果正常,适配器会收到6LoWPAN节点的数据,该数据会被提取出来,压缩在
IPv4报文中并发送给IPv4主机端。
图4描述了报文经由边界路由器在IPv6客户端和6LoWPAN网络之间交换的通信过程。该通信过程分为两个阶段:IPv6客户
端发送命令给6LoWPAN节点以及6LoWPAN节点返回应答。边界路由器主要完成压缩、解压缩、分片及重组等工作。
类似的,IPv4主机和6LoWPAN网络之间的消息流程可以从图5中看出。同样可将其看成两个阶段:IPv4主机发送命令给
6LoWPAN节点以及6LoWPAN节点返回应答。这里边界路由器更像是一个服务器,等待IPv4来连接特定的端口,所有来自
IPv4主机的命令都被转交给边界路由器而不是6LoWPAN节点。这些命令包含目的节点或节点ID号以及要执行的动作。它们被
压缩在IPv4数据包中并被递交给IPv4/IPv6适配器,适配器会执行相应的动作。当发现命令是无效的,边界路由器会发送一个
错误消息给IPv4主机,避免再同6LoWPAN节点通信这一多余过程。
4 边界路由器功能验证
边界路由器功能验证
为了验证6LoWPAN边界路由器确实发挥了应有的作用,让两个6LoWPAN节点和6LoWPAN边界路由器彼此相距10 m
远,6LoWPAN边界路由器经以太网接口以有线方式接入Internet,6LoWPAN节点和6LoWPAN边界路由器之间则通过无线方
式连接。设定让6LoWPAN节点以一定时间间隔循环向PC发送ASCII码字节数据流,为了便于观察效果,设定让串口打印出相
关信息,利用串口助手可以很方便地看到相关的数据。
4.1 连通性测试
连通性测试
联通性测试主要利用ping命令来测试PC和6LoWPAN边界路由器的连通性。图6所示为6LoWPAN边界路由器启动时获取到
的IPv4地址,其IPv4地址为172.23.10.177,PC的IPv4地址为172.23.10.134。图7所示为在PC上利用ping命令测试的最终结
果,可以看出数据包的往返时间较小,证明连通性较好。
4.2 数据通信测试
数据通信测试
在确定了6LoWPAN边界路由器和PC之间较好的连通性后,就可以测试6LoWPAN节点和PC之间的数据交换。测试过程
中,利用sokit软件,设定从PC上向6LoWPAN节点发送“Hello World?鄞”字符串数据,利用抓包软件wireshark进行抓包,整个
过程如图8和图9所示。
从图中可以看出,在PC向6LoWPAN节点发送数据包的过程中,传输层的承载协议是UDP,成功抓取到了数据包的转发过
程。也从侧面说明6LoWPAN边界路由器发挥了协议转换的作用。
5 结束语结束语
本文选取了CC2538 SoC作为6LoWPAN边界路由器的硬件平台的核心,在Contiki协议栈的基础上,完成了6LoWPAN边界
路由器的设计,测试结果表明达到了预期的设计目标。所设计的6LoWPAN边界路由器可以应用于无线传感网络应用中的多种
场合,下一步计划是将所设计的6LoWPAN边界路由器应用到无线抄表上。
参考文献
参考文献
[1] Chen Yibo,Hou KunMean,Zhou Haiying,et al.6LoWPAN stacks:a survey[C].IEEE Conference Publications,2011.
[2] YoungKi Park,Ngoc-Thanh Dinh.A network monitoring system in 6LoWPAN networks[C].IEEE Conference
Publications,2012.
[3] Dhananjay Singh,U.S.Tiwary.Global healthcare monitoring system using 6lowpan networks[C].IEEE Conference
Publications,2009.
[4] Olfa Gaddour,Anis Koubaa.RPL in a nutshell:a survey[J].Computer Networks,2012,56(14).
[5] B.da Silva Campos,RODRIGUES J J,OLIVEIRA L M,et al.Design and construction of wireless sensor network
gateway with IPv4/IPv6 support[C].2011 IEEE International Conference on Communications,Kyoto,Japan,2011.
[6] SHELBY Z,CHAKRABARTI S,NORDMARK E,et al.Neighbor discovery optimization for IPv6 over low-power
wireless personal area networks(6LoWPANs),RFC 6775,2012.