《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 基于Contiki的6LoWPAN边界路由器的设计
基于Contiki的6LoWPAN边界路由器的设计
2016年电子技术应用第3期
田广东,叶 鑫
重庆邮电大学 通信与信息工程学院,重庆400065
摘要: 以TI公司的CC2538 SoC作为核心硬件平台,基于Contiki开源操作系统设计了一种6LoWPAN边界路由器,同时搭建了一个包含一台接入有线网络的PC、2个6LoWPAN节点以及一个6LoWPAN边界路由器的测试网络。测试结果表明,所设计的6LoWPAN边界路由器成功实现了6LoWPAN节点和PC之间数据的转发功能,可以应用于智能家居、环境监控等多种场合,具有一定的应用价值。
中图分类号: TN923
文献标识码: A
DOI:10.16157/j.issn.0258-7998.2016.03.017
中文引用格式: 田广东,叶鑫. 基于Contiki的6LoWPAN边界路由器的设计[J].电子技术应用,2016,42(3):61-63,70.
英文引用格式: Tian Guangdong,Ye Xin. Design of 6LoWPAN border router based on Contiki[J].Application of Electronic Technique,2016,42(3):61-63,70.
Design of 6LoWPAN border router based on Contiki
Tian Guangdong,Ye Xin
School of Communication and Information Engineering, Chongqing University of Posts and Telecommunications, Chongqing 400065,China
Abstract: This paper chooses CC2538 SoC as the core hardware platforms, relying on Contiki, to design a 6LoWPAN border router. Meantime, a temporarily network, including a PC connected to the Internet, 2 6LoWPAN nodes and a 6LoWPAN border router is created to evaluate the performance of the 6LoWPAN border router. The result shows that the 6LoWPAN border router can forward the data packets between the PC and 6LoWPAN nodes. This 6LoWPAN border router can be applied to some scenario such as smart home, environment monitor and so on.
Key words : 6LoWPAN;Contiki;border router

0 引言

    6LoWPAN(IPv6 over Low Power Wireless Personal Area Network)是一种基于IEEE 802.15.4的无线通信协议,旨在为嵌入式设备,如无线传感节点提供IPv6连接[1]。6LoWPAN的出现以全IP的方式真正解决了无线传感器网络与IPv6网络的互联互通。6LoWPAN已经得到了Google、Cisco、Honeywell等公司的高度重视,有望取代ZigBee标准,成为事实上的标准,当前已经有很多关于6LoWPAN的应用[2]。6LoWPAN网络底层使用IEEE 802.15.4标准,在MAC层和IPv6网络层之间引入适配层,主要提供包分片与重组、头部压缩和链路层转发等功能。

qrs4-t1.gif

    目前已经有多种开源或商业的6LoWPAN协议栈的实现[3],其中基于Contiki的SICSlowpan以其开源、可移植性好、超轻量级、长期维护等优势得到了广泛关注。SICSlowpan符合RFC4944标准,实现了头部编码压缩、分片、地址分配等功能,具有较好的互操作性。

    6LoWPAN边界路由器是连接6LoWPAN传感网和IP网络的桥梁,使两者的互操作成为可能。6LoWPAN边界路由器的基本功能有:完成IP协议栈和6LoWPAN协议栈之间的转换,使IP网络中的主机可以访问6LoWPAN传感网络中的节点。本文的目标就是在Contiki的基础下,设计一种实用的6LoWPAN边界路由器,为进一步研究6LoWPAN奠定基础。典型的基于Contiki实现的6LoWPAN协议栈如图1所示。

1 系统组成和目标

    6LoWPAN边界路由器也可以看成是一种网关或服务器,可连接传统IP网络和6LoWPAN传感网络并自动完成网络协议的转换。为了验证6LoWPAN边界路由器在网络协议转换中的作用,本文设计了一个包含1个6LoWPAN边界路由器、2个6LoWPAN节点,1台PC的测试网络,整体测试网络的结构图如图2所示。

qrs4-t2.gif

    本文设计的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所示。

qrs4-t3.gif

    为了便于后续的功能扩展及满足各种需求,本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节点返回应答。边界路由器主要完成压缩、解压缩、分片及重组等工作。

qrs4-t4.gif

    类似的,IPv4主机和6LoWPAN网络之间的消息流程可以从图5中看出。同样可将其看成两个阶段:IPv4主机发送命令给6LoWPAN节点以及6LoWPAN节点返回应答。这里边界路由器更像是一个服务器,等待IPv4来连接特定的端口,所有来自IPv4主机的命令都被转交给边界路由器而不是6LoWPAN节点。这些命令包含目的节点或节点ID号以及要执行的动作。它们被压缩在IPv4数据包中并被递交给IPv4/IPv6适配器,适配器会执行相应的动作。当发现命令是无效的,边界路由器会发送一个错误消息给IPv4主机,避免再同6LoWPAN节点通信这一多余过程。

qrs4-t5.gif

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命令测试的最终结果,可以看出数据包的往返时间较小,证明连通性较好。

qrs4-t6.gif

qrs4-t7.gif

4.2 数据通信测试

    在确定了6LoWPAN边界路由器和PC之间较好的连通性后,就可以测试6LoWPAN节点和PC之间的数据交换。测试过程中,利用sokit软件,设定从PC上向6LoWPAN节点发送“Hello World?鄞”字符串数据,利用抓包软件wireshark进行抓包,整个过程如图8和图9所示。

qrs4-t8.gif

qrs4-t9.gif

    从图中可以看出,在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.

此内容为AET网站原创,未经授权禁止转载。