0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

已多个开源系统为基础,研究6LoWPAN边界路由器

SwM2_ChinaAET 来源:未知 作者:工程师郭婷 2018-07-26 19:21 次阅读

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

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

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

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协议。

2.2 6LBR的运行模式

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

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.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 、边界路由器功能验证

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

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

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

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

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

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

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

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

5 、结论

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


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2865

    文章

    41515

    浏览量

    358043
  • 路由器
    +关注

    关注

    22

    文章

    3476

    浏览量

    111312
  • 开源系统
    +关注

    关注

    0

    文章

    20

    浏览量

    13605

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

文章出处:【微信号:ChinaAET,微信公众号:电子技术应用ChinaAET】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    路由器桥接路由器怎样桥接 路由器桥接好还是中继好

    桥接 路由器桥接是指将一个路由器连接到另一个路由器上,通过无线或有线连接,将两个或多个网络连在一起,使其成为一个单一的网络。桥接可以扩大网络范围,同时保持原有网络的兼容性和功能。 桥接
    的头像 发表于 02-20 14:26 620次阅读

    Banana Pi BPI-R3开源路由器启动及性能评测

    Banana Pi BPI-R3开源路由器启动及性能评测
    发表于 02-01 16:32

    请问多个路由器如何组网呢?

    多个路由器组网是一个常见的方式,用于扩大无线覆盖范围或在家庭和办公室中创建更复杂的网络布局。
    的头像 发表于 01-29 11:45 700次阅读

    路由器是干什么用的 路由器怎样桥接另一个路由器

    路由器是一个网络设备,用于将数据包从一个网络传输到另一个网络。它通过控制数据包的路径来实现互联网上多个网络之间的通信。路由器在家庭、办公室和企业网络中被广泛使用,以便用户能够访问 Internet
    的头像 发表于 01-19 17:12 391次阅读

    即将推出的 OpenWrt One/AP-24.XY:OpenWrt 和 Banana Pi 合作路由器

    。OpenWrt One/AP-24.XY 路由器板预计将于 2024 年推出。原理图将在开源许可下公开。 OpenWrt 开发人员开始开发基于 MediaTek MT7981B (Filogic
    发表于 01-13 09:56

    三频路由器是什么?三频路由器和双频路由器的区别

    三频路由器是指工作在2.4GHz、5.1GHz以及5.8GHz三个频段的路由器。这种路由器适合多种应用场景,包括: 1. 需要多个设备同时上网:如果家中上网人数多,上网设备多,推荐购买
    的头像 发表于 12-22 17:19 1129次阅读

    基于6LoWPAN协议的智能小区设计方案

    电子发烧友网站提供《基于6LoWPAN协议的智能小区设计方案.pdf》资料免费下载
    发表于 10-19 11:34 0次下载
    基于<b class='flag-5'>6LoWPAN</b>协议的智能小区设计方案

    为什么有些路由器要安装openwrt系统

    路由器原来系统不好还是有其他原因,还有哪些路由器可以安装openwrt
    发表于 10-08 06:35

    Banana Pi BPI-R3开源路由器硬件原理图

    Banana Pi BPI-R3开源路由器硬件原理图 Banana Pi BPI-R3 是一款开源路由器,它是由 Banana Pi 团队开发的一款高性能
    发表于 09-04 16:59 20次下载

    Banana Pi BPI-R3开源路由器DXF结构文档

    Banana Pi BPI-R3开源路由器DXF结构文档
    发表于 09-04 16:49 10次下载

    Banana Pi BPI-Wifi6开源路由器,创耀科技方案可以自已DIY尽情折腾

    香蕉派BPI-Wifi6路由器设计采用了创耀科技TR6560 + TR5220 wifi无线芯片设计,是一款标准的wifi6路由器解决方案。内置高性能双核ARM Cortec A9处理
    发表于 08-21 16:31

    乐鑫Thread边界路由器解决方案

    边界路由器是一种能够帮助 Thread mesh 网络路由数据包的设备。这种路由是在 Thread 网络和其他支持 IP 协议的网络(如 Wi-Fi、以太网和蜂窝网络)之间进行的。
    发表于 08-06 11:41 372次阅读
    乐鑫Thread<b class='flag-5'>边界</b><b class='flag-5'>路由器</b>解决方案

    乐鑫Thread边界路由器解决方案

    边界路由器是一种能够帮助Threadmesh网络路由数据包的设备。这种路由是在Thread网络和其他支持IP协议的网络(如Wi-Fi、以太网和蜂窝网络)之间进行的。*Thread是一种
    的头像 发表于 08-05 08:04 810次阅读
    乐鑫Thread<b class='flag-5'>边界</b><b class='flag-5'>路由器</b>解决方案

    Banana Pi 推出带有 2 个 2.5GbE 端口的迷你路由器开源硬件开发板

    Banana Pi 今天推出了一款迷你路由器板,基于 MediaTek MT7986 无线网络片上系统,针对路由器进行了优化。Banana Pi BPI-R3 迷你路由器板还支持无线连
    发表于 07-29 12:42

    线程边界路由器i.mx6ull otbr-agent处于非活动状态是什么原因造成的?怎么解决?

    我关注 https://github.com/nxp-imx/meta-matter “如何在目标上设置 OpenThread 边界路由器”以在 i.mx6ull(定制板,非 EVK)上运行线程
    发表于 05-31 06:37