【学术论文】基于多个开源系统的6LoWPAN边界路由器的设计

摘要:

 在开源系统OpenWrt基础上,开发应用程序socket-support,并将6LBR移植到OpenWrt上。以TP-link的TL-WR703N芯片和TI公司生产的低功耗CC1310芯片作为核心硬件平台,基于Contiki、6LBR与OpenWrt系统设计了一种6LoWPAN边界路由器。同时采用CC1310芯片设计了两个6LoWPAN子节点,搭建了一个包含PC、子节点和边界路由器在内的物联网应用测试网络。测试结果表明,PC端可利用CoAP协议通过边界路由器实现对6LoWPAN子节点的数据采集与控制,可以应用于工业控制、环境检测、智能家居等多种场合,具有一定的应用价值。

0 引言

自从物联网概念的提出,6LoWPAN(IPv6 over Low Power Wireless Personal Area Network)边界路由器就是主要的研究内容之一。为实现Internet网络与无线传感器网络的互联,IETF工作组早在2004年就提出并制定了基于IPv6的以IEEE802.15.4作为底层标准的低功耗无线个域网6LoWPAN技术标准,其主要包括6LoWPAN适配层、IPv6报头压缩与解压、数据分片与重组、路由协议、IPv6网络接入和节点地址管理技术等[1]。

目前6LoWPAN协议已实现在多种开源系统上,例如6LBR、Contiki,本文采用开源的、高度可移植的6LBR和Contiki操作系统。其中,Contiki是一个开源的专门为需要联网、硬件资源严重受限的嵌入式设备而设计的事件驱动多任务操作系统[2],通过uIP协议栈提供了对IPv4和IPv6的TCP/IP协议的支持,还包含了一套轻量级的无线传感器网络协议栈Rime;同时在IPv6中还实现了6LoWPAN协议、RPL无线路由协议以及应用层协议CoAP。6LBR是为工业应用准备的6LoWPAN/RPL边界路由解决方案,它运行在低成本、开放的硬件平台和Linux主机上,因此6LBR更符合未来边界路由器的发展方向,其设计思路更能满足今后的应用需求[2]。

本文在Contiki和OpenWrt的基础上,将6LBR移植到嵌入式OpenWrt系统上,设计了一种实用的边界路由器。其能够完成IP协议栈和6LoWPAN协议栈之间的转换,使IP网络中的主机可以访问6LoWPAN传感网络中的节点[3]。

1 边界路由器实现方案

OpenWrt是一个基于Linux内核的路由器操作系统,支持各种处理器架构,对拥有ARM架构的TL-WR703N路由器有很好的支持。提供简单易用的环境框架以及模块化设计来构架自己的应用程序,这大大方便了开发应用程序和6LBR移植到OpenWrt系统中。本文在OpenWrt系统的基础上,提出了两种6LoWPAN边界路由器的解决方案,分别是6LBR-OpenWrt边界路由器方案和OpenWrt边界路由器解决方案。

2 6LBR-OpenWrt边界路由器

2.1 6LBR-OpenWrt边界路由器系统结构

6LBR用于将基于802.15.4与6LoWPAN的无线传感器网络和基于以太网的IPv6网络连接起来。6LBR设计灵活,它可以配置为支持各种网络拓扑结构用于连接无线传感器网络与IP世界。路由器TL-WR703N不能直接与6LoWPAN网络中的网络子节点进行无线通信,要采用运行Contiki程序的CC1310DK芯片,程序带有相关SLIP协议,系统框图如图1所示。

2.2 6LBR的运行模式

6LBR目前有两种运行方式:网桥模式和路由模式。在路由模式中,子节点构成的6LoWPAN无线传感器网络和以太网有不同的网络前缀;在网桥模式中,前缀则一样。文献[2]和文献[4]详细介绍了6LBR的几种模式,网桥模式不再赘述。在本文用到的路由器模式中,6LBR当作一个完整的IPv6路由器,用于连接以太网和6LoWPAN网络。6LoWPAN网络由RPL协议来管理,以太网端通过IPv6邻居发现协议管理。在这种模式下,通过数据包过滤器模块,6LBR向Contiki提供了一个虚拟的接口。路由器模式可以将传感器网络分隔成一个独立的子网,这样能清晰地分辨出无线传感器中的节点;由于网络前缀有切换功能,节点可以在不同的6LoWPAN网络中移动;节点会根据新的网络前缀获得一个新的地址,路由器模式结构如图2所示。

2.3 软件设计

本文采用路由器模式,CC1310上运行的Slip-radio程序可以实现6LBR Linux进程和802.15.4无线电的通信,通过串口收发数据。MAC(Medium Acess Control)层在6LBR里,驱动方式为载波侦听多路访问(Carrier Sense Multiple Acess,CSMA);RDC(Radio Duty Cycling)层在Slip-radio里,MAC层接收RDC层发来的数据,并通过RDC发送数据;如果RDC层检测到数据碰撞,MAC重发此数据。6LBR移植到TL-WR703N路由器上之后,需要在路由器上创建6lbr.conf文件,其主要内容如下:

MODE=ROUTER

RAW_ETH=0

BRIDGE=1

ETH_JOIN_BRIDGE=0

DEV_BRIDGE=br-lan

DEV_TAP=tap0

DEV_ETH=br-lan

RAW_ETH_FCS=0

DEV_RADIO=/dev/ttyUSB0  BAUDRATE=9600

CC1310DK与TL-WR703N串口连接,路由器上系统会根据串口生成一个虚拟网卡tap0,br-lan包括有线lan口和无线网;然后让tap0口和br-lan口相接。PC通过lan口把数据传给TL-WR703N,数据经过6LBR处理之后通过tap0即串口发送给CC1310,CC1310通过无线的方式将数据传给6LoWPAN传感器网络。

3 OpenWrt边界路由器

3.1 OpenWrt边界路由器系统结构

OpenWrt边界路由器也采用到CC1310DK芯片,与第一种方案不同的是,CC1310DK芯片不仅作为与6LoWPAN传感器网络连接的802.15.4接口,还作为无线传感器网络的RPL根节点,支持对网络的路由功能和管理RPL网络,集成了6LoWPAN适配层,并能完成IPv6协议和IEEE802.15.4协议的转换,使完整的6LoWPAN/RPL网络和OpenWrt边界路由器实现通信,因此真正起到6LoWPAN边界路由器功能的是CC1310DK。TP-WR703N通过以太网网口或者无线的方式与计算机主机连接,这样OpenWrt边界路由器便实现了处理来自IP网络和WSN的IPv6之间转发的数据。其系统框图如图3所示。

3.2 软件设计

CC1310DK通过USB接口与TL-WR703N连接,此时串口在路由器上生成/dev/ttyUSB0端口号,OpenWrt上的tunslip6软件包把端口号虚拟成tun0网卡。可以实现在TL-WR703N上ping通6LoWPAN传感器网络中的子节点,外部网络如PC通过lan口ping通边界路由器,但无法ping通6LoWPAN传感器网络中的子节点;为了实现IP网络与6LoWPAN传感器网络的通信,有两种方式,第一种是对OpenWrt里的firewall/files里添加如下配置:

config zone option input 'ACCEPT'

option forward 'REJECT'

option output 'ACCEPT'

option name '6lowpan'

option network 'lan6'

config forwarding   option dest 'lan'

option src '6lowpan'

config forwarding   option dest '6lowpan'

option src 'lan'

在socket-support软件包里加入如下脚本命令:

uci set network.lan6=interface

uci set network.lan6.proto=static

uci set network.lan6.ifname=tun0

uci set network.lan6.ip6assign=64

uci commit network

Uci命令行添加了一个tun0的网口,tun0是6LoWPAN传感器网络和边界路由器通信的接口,这个配置就是让lan口和tun0口相通,两者可以相互转发数据。

6LoWPAN子节点里运行带有CoAP协议的程序。CoAP协议(Constrained Application Protocol)是为物联网中资源受限设备制定的基于UDP的应用层传输协议,可让小型设备接入互联网世界。Libcoap是CoAP协议的C语言实现,它提供了server和client的功能。6LoWPAN子节点用作server端;OpenWrt提供了Libcoap软件包,TL-WR703N路由器可作client端,通过coap-client指令实现路由器对6LoWPAN无线传感器网络中子节点的数据通信。实际上目前的通信仅在TL-WR703N路由器和传感器网络构成的局域网实现。外部网络通过对路由器TL-WR703N的操作实现通信,因此本文第二种方式为在OpenWrt系统上开发了软件包socket-support,软件包主要基于socket程序在Linux下开发了服务器端,通信协议为TCP协议,计算机、手机等外部设备运行客户端。

这两种方式的数据通信除了在PC端接收发送不同外,基本是一样的。PC通过以太网口将数据传递给路由器TL-WR703N,运行border-router程序的CC1310与路由器通信接口是虚拟网卡tun0。CC1310可以看作是6LoWPAN网关节点,网关节点通过SLIP协议从路由器收到数据包,数据包格式为IPv6,而无线传感网络通信标准为IEEE 802.15.4。所以网关节点利用6LoWPAN适配层对数据包进行报头压缩、数据分片,处理后的数据根据目的地址也就是6LoWPAN网络子节点的IPv6地址发送下去;子节点收到数据后进行数据重组,响应命令,将采集到的数据压缩、分片后传给网关节点,6LoWPAN网关节点对收到的数据重组通过tun0口传给路由器,路由器通过以太网口传到IPv6网络上。其通信过程如图4所示。

4 边界路由器功能验证

由于6LBR是作为软件包应用程序移植到OpenWrt上的,为了测试应用方便,可以在第二种方案的基础上选择6LBR应用程序包。这两种方案都需要边界路由器串口连接CC1310DK,TP-WR703N目前只提供一个端口,所以在调试时只能分开测试验证。

4.1 6LBR-Openwrt边界路由器连通性测试

连通性测试主要采取如下步骤:

(1)在PC端打开cmd.exe或者,执行如下命令ping-6 bbbb::100,测试PC到网关已通,如图5所示。

(2)在运行有Copper插件的火狐浏览器内输入coap://[子节点IPv6地址]:5683/,可以访问子节点的Web端程序,然后可以选择特定的资源使用GET/POST/PUT/DELETE来获取资源的具体内容,可以看出子以太网和无线网的IPv6地址前缀并不相同,因此工作方式为路由模式,如图6所示。

4.2 OpenWrt边界路由器连通性测试

(1)打开网络调试助手,选择TCP Client模式连接边界路由器,输入getip和getipall命令可得到边界路由器的IPv6地址以及子节点的IPv6地址,如图7所示。

(2)ping6子节点地址进行ping连通性测试,也可将子节点的IPv6地址输入到浏览器地址栏里访问子节点Web界面。既可在Web页面进行GET/POST/PUT/DELETE命令操作,也可在网络调试助手内输入coap命令进行对子节点控制,如:coap-client-m get coap://:[子节点IPv6地址]:5683/sen/batmon/tem-p(得到子节点芯片的温度值29)。因此可根据具体的实际应用选择Web端页面的方式还是网络调试助手,如图8所示。

5 结论

本文以Contiki、6LBR以及OpenWrt等多个开源系统为基础,从多方面设计研究了6LoWPAN边界路由器,提出了多种可实施的解决方案。从测试结果可看出,所设计的6LoWPAN边界路由器达到了预期的设计目标,可以根据具体无线传感网络应用场合选择合适的边界路由器,下一步将陆续完善边界路由器并应用到环境检测中。

参考文献

[1] 王国清.6LoWPAN的研究及在WSN节点中的实现[D].北京:北方工业大学,2014.

[2] 张岩.基于Contiki系统的物联网应用平台设计与实现[D].哈尔滨:哈尔滨工程大学,2013.

[3] 田广东,叶鑫.基于Contiki的6LoWPAN边界路由器的设计[J].电子技术应用,2016,42(3):61-63,70.

[4] SPANDAN.6LBRModes[EB/OL].(2016-5-20)[2017-12-31].https://Github.com/cetic/6lbr/wiki/6LBR Modes.

[5] HUI J,THUBERT P.Compression format for IPv6 datagrams over IEEE 802.15. 4-based networks[S].RFC 6282,2011.

[6] 杨勇.基于Contiki的6LoWPAN网关节点设计[D].武汉:华中师范大学,2013.

[7] 朱若鑫.基于多个开源系统的6LoWPAN技术在物联网应用中的研究[D].昆明:云南大学,2015.

[8] 常英亮.基于嵌入式Linux的物联网网关研究与实现[D].北京:北京交通大学,2014.

[9] 盛李立.基于Contiki操作系统的无线传感器网络节点的设计与实现[D].武汉:武汉工程大学,2012.

作者信息:

邬明彪1,2,吴桂清1,陈清华2

(1.湖南大学 电气与信息工程学院,湖南 长沙410082;2.浙江清华长三角研究院,浙江 嘉兴314006)

 

(0)

相关推荐

  • 路由器基础知识科普与家庭网络升级指南

    本文来自#千兆网络有什么用#征稿活动,不断提速的网络给你的生活带来了什么变化?快来参与活动,聊聊你玩转互联网,高速网上冲浪的经历! 之前写的双十一mesh路由器选购和组网指南,就有值友抱怨看不懂是什么 ...

  • 免费好用的IPv6之DDNS服务

    概述:本文主要介绍了dynv6在OpenWrt上的配置及使用,对于有IPv6地址的用户,可以按照本文自行探索更多玩法 针对近期dynv6网站的更新,本文于2020.2.13更新. 参考dynv6网站推 ...

  • route-over VS mesh-under

    近期在网上看到一篇专门介绍route-over和Mesh-under的论文,介绍的比較具体: Route-over vs Mesh-under Routing in 6LoWPAN 基于IP的物联网架 ...

  • N1如何刷入OpenWrt路由器系统

    N1如何刷入OpenWrt路由器系统

  • 基于6LoWPAN设计并实现传感网边界路由器

    无线传感器网络是实现万物互联的基石.在低功耗模式下,基于IPv6实现以太网与传感器网络之间的连接与通信是目前学术界及工业界的研究热点. 本文针对传感器网络与以太网之间的连接问题,使用开源的Contik ...

  • 【学术论文】红外成像组件中小型化处理板的设计

    摘要: 在小型化红外成像组件中,处理板是核心.详细介绍了小型化处理板设计过程中的各项工作,包括:总体方案设计.主要器件选型.电源分配系统(PDS)设计.信号完整性和电源完整性设计方面的各项措施和LPD ...

  • 【学术论文】一种新型的12位SAR ADC设计

    摘要: 设计了一种12位精度,200 kS/s采样率的逐次逼近型模数转换器(SAR ADC).针对传统的电容开关切换算法的大电容面积和高功耗,采用一种新型的电容开关切换算法,提高了转换精度,降低了功耗 ...

  • 【好设计论文】基于Contiki的6LoWPAN边界路由器的设计

    摘要:以TI公司的CC2538 SoC作为核心硬件平台,基于Contiki开源操作系统设计了一种6LoWPAN边界路由器,同时搭建了一个包含一台接入有线网络的PC.2个6LoWPAN节点以及一个6Lo ...

  • 【学术论文】激光点云解算的软硬件协同设计与实现

    摘要 机载激光雷达在测绘.勘探等领域有广泛的应用,其数据处理联合激光雷达测距数据和姿态位置信息,解算获得扫描目标的三维坐标并形成三维点云图.为了满足机载激光雷达点云解算的实时性要求,采用基于软硬件协同 ...

  • 【学术论文】Stratus HLS工具在高性能双精度浮点乘法设计中的应用流程

    摘要: 双精度浮点乘法部件是高性能CPU的核心运算部件之一.描述了使用Cadence Stratus HLS工具设计和实现双精度浮点乘法部件,探索新设计方法学在关键路径延时调整.数据路径优化以及低功耗 ...

  • 【学术论文】一种新型弹载综合控制计算机的设计

    摘要: 弹载计算机作为精确制导武器的核心单元,是实现武器系统制导与控制的关键部件.随着武器装备发展水平的提高,弹载控制计算机除控制接口复杂.对计算性能要求高外,对综合化也提出了更高的要求.提供了一种新 ...

  • 【学术论文】基于FPGA加速的卷积神经网络识别系统

       摘 要 : 针对卷积神经网络(CNN)在通用CPU以及GPU平台上推断速度慢.功耗大的问题,采用FPGA平台设计了并行化的卷积神经网络推断系统.通过运算资源重用.并行处理数据和流水线设计,并利用 ...

  • 【学术论文】基于电能计量器具检定系统的生产调度与协调

       摘 要 : 针对电能计量器具自动化检定"四线一库"系统信息交互和数据融合不足,影响设备利用率和生产效率的问题,提出了一种基于生产全过程实时监控.在线诊断.动态评估.优化调整的 ...

  • 【学术论文】基于嵌入式系统的电力无线专网远程通信终端研制

       摘 要 : 国家电网公司全面推进泛在电力物联网建设,其中,电力无线专网是其重要的无线接入网络,新型智能终端研发应用是其重要建设内容.针对泛在电力物联网业务需求,基于嵌入式系统研发了电力无线专网远 ...