在OpenWrt上实现6lowpan边缘路由器的方法

2017-03-21 03:16罗思欣周有平惠州永弘昌科技有限公司惠州56006佛山市微讯电子科技有限公司佛山58000惠州学院惠州56007
环境技术 2017年1期
关键词:路由器串口路由

罗思欣,周有平,肖 东(.惠州永弘昌科技有限公司,惠州 56006; . 佛山市微讯电子科技有限公司,佛山 58000;. 惠州学院,惠州 56007)

在OpenWrt上实现6lowpan边缘路由器的方法

罗思欣1,周有平2,肖 东3
(1.惠州永弘昌科技有限公司,惠州 516006; 2. 佛山市微讯电子科技有限公司,佛山 528000;3. 惠州学院,惠州 516007)

边缘路由器是指将局域网汇接到广域互联网的一种路由设备。研究和实现的是将运行OpenWrt的路由器增加对6lowpan的支持,使其成为6lowpan网络的边缘路由器,并通过制作和构建的zigbee传感器网络节点上实现传感器网络节点能够直接通过IPv6访问到互联网的方法。

6LoWPAN;传感网络;边缘路由器

引言

OpenWrt是一个功能强大的开源路由器linux系统。用户可以很方便地对其进行定制、优化,在国内外已经建立起了一个很活跃的生态圈[1,2]。国内市场火爆的极路由就是基于OpenWrt系统制作的。6lowpan是当前无线传感器网络研究的热门领域,通过对IPv6数据包头进行压缩、解压缩,以及在IP层从添加适用于无线自组网的路由协议RPL。实现了在无线传感器网络中也能直接使用IPv6协议。目前支持6lowpan协议比较好的开源系统有Contiki-os和Tinyos,本文采用Contki-os。 边缘路由器又称“接入路由器”,是位于网络外围(边缘)的路由器。位于网络中心的路由器叫核心路由器。边缘路由器和核心路由器是相对概念,它们都属于路由器,但是有不同的大小和容量,某一层的核心路由器是另一层的边缘路由器。边缘路由器的定位是将用户由局域网汇接到广域网,在局域网和广域网技术尚有很大差异的今天,边缘路由器肩负着多种重任,简单地说就是要满足用户的多种业务需求,从简单的联网到复杂的多媒体业务和VPN业务等。这需要边缘路由器在硬件和软件上都要有过硬的实现能力。各设备提供商因此展开了激烈的竞争,派生出各种新鲜的技术手段[3]。因此,边缘路由器是指将局域网汇接到广域互联网的一种路由设备。本文研究和实现的是将运行OpenWrt的路由器增加对6lowpan的支持,使其成为6lowpan网络的边缘路由器,并通过制作和构建的Zigbee传感器网络节点上实现传感器网络节点能够直接通过IPv6访问到互联网的方法。

1 系统硬件配置

为了实现本文在OpenWrt上实现6lowpan边缘路由器的方法,选择TP-link的路由器,型号为703N,硬件系统为8 M的FLASH和64 M的RAM。为了提升无线网络的通信距离,在制作上特意增加外置天线。首先安装(其实就是对现有的TP-link的路由器刷机)OpenWrt官方编译的固件处下载[4]。由于需要安装Python,系统的8 M FLASH不够,因此通过USB hub连接了一个U盘,把需要安装的软件都装在U盘上了。同时,为了后面实施在OpenWrt增加IPv6和6lowpan支持,系统硬件配置增加一个USB接口设计的Zigbee模块根节点,如图1所示,其中右边的盒子为USB HUB。

USB接口设计的Zigbee模块节点是为了实现本文在OpenWrt上实现6lowpan边缘路由器的方法而研究和制作的,是基于可运行contiki系统CC2530无线传感器节点模块[5],并采用USB接口进行供电和通信,设计和制作的模块如图2所示。传感器节点模块上两个芯片分别是CC2530和CP210x USB转串口芯片,并预留了下载口,方便升级和调试程序。模块上同时提供了一个复位按键和两个用户按键。另外为这个小板提供的抓包固件,可以用于捕获分析802.15.4的空中数据包,便于对无线网络的协议和数据进行分析。

2 OpenWrt上实现6lowpan边缘路由器的方法

2.1 制作无线传感器网络的根节点固件

Contiki支持多个CPU平台,本文使用的CC2530平台。首先在Contiki官方下载最新稳定版源码,官方代码是在Linux下开发编译的,本文将其代码移植到IAR for 8051编译器下,移植到IAR可以直接仿真调试,移植完成后,为当前工程添加边缘路由器功能支持需添加border-router.c 和 slip-bridge.c 文件,并将其中一个节点设置为6lowpan网络中的根节点,接管其他所有无线传感器网络中向外部请求的IP数据包,通过串口方式传递给外部处理器(本文指的是OpenWrt系统)。不熟悉或者嫌移植麻烦的开发者,笔者建议下载Contiki官方提供好的虚拟机(ubuntu)镜像,然后参考官方提供的编译方法在Linux系统下编译CC2530目标平台的代码,同样可以生成相同功能的固件。在上述操作完成后将程序烧写至USB接口zigbee模块。此时将模块连接至电脑USB口,并打开串口调试助手(57600 8n1),调试窗口对应的节点开始不停的打印 “?P” ,它是用来向上级CPU请求网络地址的前缀信息。

图1 OpenWrt上实现6lowpan边缘路由器的系统硬件实物图

图2 运行Contiki系统的CC2530无线传感器节点模块

2.2 OpenWrt增加IPv6和6lowpan支持

将路由器连接上网络,同时将USB接口的无线Zigbee模块连接到路由器上,如图1实物图所示。这样可以通过ssh登录到路由器,并安装所需的软件包:opkg update和opkkg install kmod-usb-serial-cp210x kmod-ipv6 kmod-tun tunslip6 。安装完毕应该就能在/dev/ 目录下看到ttyUSB0这个设备了,说明USB接口的Zigbee模块已经成功被系统识别为串口了。通过安装的 tunslip6 程序,建立了6lowpan无线Zigbee传感器网络与真实广域网的桥梁。运行时,该程序创建一个虚拟网卡tun0,并打开串口利用Slip协议与Zigbee模块通信。这样tunslip6通过 tun0 ip packet<—>serial data packet实现了无线传感器网络Zigbee节点发过来的数据包进行解包,写入到tun网卡;同时tun网卡接收到了广域网的数据包,并将该数据包发送到串口上。

在shell上运行如下命令:tunslip6 aaaa:: 1/64 - s /dev/ ttyUSB0 -B 57600,指定网络前缀及串口、波特率。成功运行后,Zigbee模块会自动被分配到aaaa::/64的网络地址前缀。结合模块的64位mac地址形成小板的全球唯一128位IPv6地址。此时shell被tunslip6占用了,不能继续输入。打开另一个终端,输入ifconfig,可查看tun网卡是否成功生成:

由 于Zigbee模 块 的MAC地 址 固 化 成0× 0000000000000001,结合刚才已经设置的aaaa::/64前缀,则小板的IPv6地址应该是 aaaa::200:0:0:1 这里多的一个2 是IPv6协议规定的,因此,上述操作已经成功,可通过ping进行查看,也是该Zigbee节点能够在OpenWrt上直接ping通的,其它功能的Zigbee节点亦可以通过相同方法连接。

2.3 系统稳定性改进

以上的tunslip6程序运行中遇到错误会立即退出,改进的实现是其做成daemon形式在后台运行,遇到错误自动继续尝试重启服务,尽最大可能保证系统的稳定。本文通过设计Python脚本对tunslip6进行处理,规避了遇到错误立即退出的缺陷。该脚本是把自身变成系统的daemon进程,并调用tunslip6这个应用,监测其是否因为错误退出,若退出则继续调用,直到成功,脚本如下:

执行命令行,并等待tunslip6退出。实际上tunslip6没有遇到错误之前是不会退出的。

如果退出,则继续执行命令直到不再退出。

将以上脚本设置为开机启动,那么边缘路由器的功能就能系统启动而驱动了。通过上述方法在OpenWrt上实现6lowpan边缘路由器的基本方法,但无线传感器网络的节点(设备)要实现访问外部的IPv6网络,即实现无线节点也能直接访问互联网,其实仅仅按照本文上述的方法搭建起边缘路由器是不够的。上述设置tunslip6时用的前缀aaaa::是作者在实施环境下任意填的,因为作者网络没有IPv6环境,无法在路由上获得IPv6地址。因此上面系统中的路由没有访问IPv6网络的能力,6lowpan网络也就更不可能访问到了。如果有IPv6网络支持,并且通过网络管理员获得了一个全球唯一可识别的地址前缀,那么把这个前缀设置给tunslip6应该就可以使无线传感网的节点获得访问互联网的能力了。

3 结论

IPv6是最佳的物联网寻址技术,边缘路由器是指将局域网汇接到广域互联网的一种路由设备,是物联网与互联网连接的重要技术。本文通过研究和设计的USB接口无线zigbee模块,借助通用的TPLINK路由器,通过设计软件在运行OpenWrt的路由器上增加对6lowpan的支持,使其成为6lowpan网络的边缘路由器。通过构建Zigbee传感器网络环境,验证和实现了无线传感器网络节点直接通过IPv6接入互联网的方法。

[1] Binti Ismail N H A, Hassan R, Othman N E. LABC:Local Route Repai using Aritficial Bee Colony algorithm in 7LoWPAN network: Computational Science and Technology (ICCST), 2014 International Conference on, 2014[C]. 2014, 27-28 Aug. 2014.

[2] Luigi Atzori,Antonio Iera, Giacomo Morabito. The Internet of Things: A survey[J]. Computer Networks . 2010 (15).

[3] 钱志鸿,王义君. 面向物联网的无线传感器网络综述[J].电子与信息学报, 2013, 01: 215-227.

[4] 刘裕舸. 基于 Zigbee 无线传感器网络设计与实现[J]. 数字技术与应用, 2014, 12:47-49.

[5] 张琛,粟欣,王文清,等. 异构网络跨层协作传输技术研究[J].通信学报, 2014, 35(8):198-205.

罗思欣(1988.10-),女,大学,主要从事电子信息、物联网技术研究。

Method for Realizing 6LoWPAN Edge Router on OpenWrt

LUO Si-xin1, ZHOU You-ping2, XIAO Dong3
(1. Huizhou Yonghongchang Technology Co., Ltd., Huizhou 516006; 2. Foshan Weixun Electron Technology Co., Ltd., Foshan 528000; 3. Huizhou University, Huizhou 516007)

Edge router is a kind of routing equipment that transfers LAN to wide area Internet. The research and realization of the router’s increasing the support for 6lowpan by the running router for OpenWrt, which make it the edge router for 6LoWPAN network. In addition, the realization of sensor network node through the production and construction of ZigBee sensor network nodes can directly access to the Internet through IPv6 method.

6LoWPAN; sensor network; edge router

TP393

:A

1004-7204(2017)01-0036-04

本文得到佛山市产学研专项资金科项目(2012HC100031)、惠州市科技计划项目(2014B020004020)、广东省高等学校教学质量与改革工程本科类资助项目(粤高教函【2013】113号-113)等资助。

猜你喜欢
路由器串口路由
买千兆路由器看接口参数
维持生命
路由器每天都要关
路由器每天都要关
浅谈AB PLC串口跟RFID传感器的通讯应用
铁路数据网路由汇聚引发的路由迭代问题研究
多点双向路由重发布潜在问题研究
一种基于虚拟分扇的簇间多跳路由算法
路由重分发时需要考虑的问题
数字电源内部数据传输的串口通信方法实现