集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1313|回复: 4

基于OpenWrt的6LoWPAN边界路由器的实现

[复制链接]
fpga_wuhan 发表于 2017-7-10 11:51:53 | 显示全部楼层 |阅读模式
摘  要: OpenWrt作为一个高度模块化、自动化的嵌入式Linux系统,拥有强大的网络组建和扩展性。基于该系统,提出了一种6LoWPAN边界路由器" title="6LoWPAN边界路由器" target="_blank">6LoWPAN边界路由器的设计方案。通过在边界路由器上分别搭建两种协议栈,实现对于IPv6和6LoWPAN网络的接入;之后在协议栈之间建立SLIP通道,实现两种异构网络之间的通信。借助OpenWrt系统强大的路由功能和包管理机制,该边界路由器可以直接接入IPv6网络,并具备极强的拓展性。

    关键词: OpenWrt;6LoWPAN边界路由器;6LoWPAN;IPv6

    中图分类号: TN923

    文献标识码: A

    DOI:10.16157/j.issn.0258-7998.2017.06.017


    中文引用格式: 吉福生,王亚琛,华磊. 基于OpenWrt的6LoWPAN边界路由器的实现[J].电子技术应用,2017,43(6):68-70,74.

    英文引用格式: Ji Fusheng,Wang Yachen,Hua Lei. The realize of border router in 6LoWPAN based on OpenWrt[J].Application of Electronic Technique,2017,43(6):68-70,74.

0 引言

    6LoWPAN作为WSN和IPv6技术结合的产物,既继承了IPv6巨大地址空间的优势,又满足了无线传感网低功耗的要求,受到了越来越多无线传感器网络使用者的喜爱[1]。就6LoWPAN网络自身特性而言,它应当和某些外部网络互连,使外部网络可以监测和控制6LoWPAN网络才具有更实际的意义。而IP网络作为目前的主流网络,如何实现该网络与6LoWPAN网络的连通,是目前亟待解决的问题。

    OpenWrt作为一个功能强大的开源路由器Linux系统,用户可以很方便地对其进行定制、优化,从而实现自己的功能需求[2]。本文设计的基于OpenWrt的6LoWPAN边界路由器,成功解决了6LoWPAN网络与IP网络之间异构网络互通的问题,对于无线传感网的发展及促进异构网络之间的无缝融合具有深远的意义。

1 系统架构

    6LoWPAN边界路由器作为连接IPv6网络和6LoWPAN网络的桥梁,需要同时提供两种网络的接入功能,以及数据包在两种不同网络之间的转发和路由。本文设计的6LoWPAN边界路由器的系统架构如图1所示,主要包括底层硬件、设备驱动、操作系统及上层应用等几部分。

qrs3-t1.gif

    该边界路由器通过自身的以太网接口与IPv6网络进行通信,而与6LoWPAN网络之间的通信,则通过基于IEEE802.15.4的射频模块来实现。系统拓扑如图2所示。

qrs3-t2.gif

2 系统硬件设计

    6LoWPAN边界路由器主要用来帮助一些能力受限的6LoWPAN节点接入IPv6网络,基于以上目的,该边界路由设备在硬件设计上需具备较好的协议执行能力和一定的处理能力[3]。本文设计的6LoWPAN边界路由器的硬件结构设计如图3所示,主要包括以太网接入部分和6LoWPAN网络接入部分,两部分之间通过串口连接。

qrs3-t3.gif

    以太网接入部分主控芯片选用的是台湾雷凌(Ralink)科技公司推出的一款高集成低成本SOC芯片RT5350F。该芯片是一颗高性能的MIPS 24Kc CPU内核,最高主频为360 MHz,较高的主频保证了一定的处理能力。除此之外,该部分采用16 MB Flash闪存作为程序存储器,采用32 MB的16 bit SDRAM作为内存,可以嵌入完整的TCP/IP网络协议,实现强大的网络通信功能,同时还能有足够的空间用于安装程序以及依赖库,满足用户的功能扩展需求。

    由于RT5350只提供了IEEE802.11协议的射频接口,而6LoWPAN协议目前是建立在IEEE802.15.4标准上,所以需要采用其他芯片来提供6LoWPAN网络接入的功能支持。本文采用以CC2530F256芯片为主的射频接入模块及其外部功能拓展电路,提供向6LoWPAN网络的接入。

3 系统软件设计

    为实现两种异构网络的互连,边界路由器必须同时具有IPv6和6LoWPAN标准。虽然6LoWPAN协议是由IPv6协议转变而来,但该协议具有自己的特殊性:它包含一个适配层来实现IP数据包在IEEE 802.15.4链路上的传输[4]。

    由于IPv6数据包的最大传输单元为1 280 B,而IEEE802.15.4定义MAC层的每一帧的长度为127 B,这样就会造成IPv6数据报和IEEE802.15.4帧在长度上的不匹配,许多IPv6数据包不能完整地放进一个IEEE802.15.4帧中进行传输[5]。为了解决这一问题,IPv6数据包需要在适配层进行分片和重组,同时还要对数据包的头部进行压缩,以适应IEEE802.15.4帧的大小[6]。

    根据以上情况,对6LoWPAN边界路由器协议栈部分进行了如图4所示的设计:先分别实现IPv6和6LoWPAN协议栈,然后通过SLIP(Serial Line Internet Protocol)协议在两种协议栈间建立一个串行通信链路,让两种异构网络能够通过该链路进行IP数据报的传输,从而实现两种异构网络之间的通信。

qrs3-t4.gif

3.1 IPv6接入模块

    该模块的建立主要采用OpenWrt操作系统来完成。该系统使用uClibc、busybox和shell解释器等,通过嵌入式Linux工具,提供硬件抽象层和软件包管理,系统的内部组成如图5所示。用户只需要重新编译uClibc和软件包以匹配目标架构,从而获得在不同嵌入式设备上相同的应用程序。鉴于OpenWrt嵌入式系统的诸多优点,它非常适合应用于IP网络接入模块。

qrs3-t5.gif

3.2 6LoWPAN接入模块

    6LoWPAN接入模块主要是基于Contiki操作系统实现,该系统作为一个可以高度移植、支持多任务环境并且开源免费的嵌入式操作系统,非常适合用于6LoWPAN接入模块的设计。该系统的软件结构如图6所示,主要由三部分组成:uIP协议栈、Rime协议栈和上层应用程序。

qrs3-t6.gif

    uIP是一个小型的符合RFC规范的TCP/IP协议栈,使得Contiki可以直接和Internet通信。uIP协议栈主要任务是处理由底层驱动收到的数据包,或者将需要转发的数据包交由底层设备驱动来实现数据包转发[7]。而其包含的网络层RPL(IPv6 Routing Protocol for Low-Power and Lossy Network)协议,则提供了6LoWPAN的组网功能。

    MAC层的Rime是一个轻量级的、为低功耗无线传感器网络设计的协议栈,该协议栈提供了大量的通信原语,能够实现从简单的一跳广播通信到复杂的可靠多跳数据传输等通信功能[8]。

    上层应用程序主要包括桥接程序和边界路由程序。前者用于通过SLIP串口实现数据包向RPL接口的转发,它是RPL数据收发转换的中间层。后者负责向IP接入模块请求本节点的子网前缀,初始化6LoWPAN接入模块,并定时维护组建的6LoWPAN网络。

3.3 两种协议栈之间通道的建立

    两个协议栈之间通道的建立主要借助tun虚拟网卡驱动和SLIP协议来实现。其中,tun虚拟网卡驱动主要用来接收来自TCP/IP协议栈的网络数据包并发送,或者反过来将接收到的网络数据包传给协议栈处理;同时该部分还要承担在点对点设备传输过程中,对数据包进行相应封装的任务。至于封装格式,主要由点对点设备传输方式决定,本文采用的是SLIP协议,是在链路层上传输的串行线路网际协议,主要对要传输的IP数据包进行简单的封装,即加上相应的头部和尾部,并对数据包进行适当的修改,防止头部和尾部的误判。

    以上通道的建立主要在OpenWrt系统上实现,通过一个tunslip6程序来建立相应的虚拟网卡和SLIP封装。具体的SLIP通道处理数据的流程可以用图7来描述。

qrs3-t7.gif

3.4 整个边界路由的运行过程

    当边界路由器的射频接口接收到了6LoWPAN子网发送来的比特流后, 先需要经过适配层对数据包进行分片整合,整合成一个完整的IPv6数据包。之后传递到网络层,经由RPL路由协议判定数据包的目的地址是否是在6LoWPAN网络中。如果是,则转发数据包到6LoWPAN网络中;如果不是,则继续判断数据包的目的地址前缀是否属于6LoWPAN网络。如果属于,则因为没有目的端的路由,丢弃;如果不属于,则转发到IPv6接入模块。在IPv6接入模块中,先判断是否存在目的地址的路由,如果存在,则直接发送到相应的IPv6主机;如果不存在目的端的路由,则应进行邻居发现操作,根据结果对数据包做出相应处理。整个过程如图8所示。

qrs3-t8.gif

    该边界路由器对以太网数据帧的处理流程与上述处理6LoWPAN数据包的过程相反,本文不再赘述。

4 测试

    为了验证本文设计的6LoWPAN边界路由器是否能够连通IPv6网络和6LoWPAN网络,进行了连通性测试。测试过程中除了边界路由器外,还包括两个6LoWPAN传感器节点和一台IPv6主机。

    首先放置两个传感器节点在离边界路由器10 m左右距离的位置,边界路由器通过LAN口和IPv6主机连接。由于实验室没有提供IPv6网络的接入,所以边界路由器的WAN口暂不使用。之后在IPv6主机上分别对两个传感器节点进行ping命令测试。从测试结果可以看出,响应时间在30 ms内,并且数据包无丢失,能够保证IPv6网络和6LoWPAN网络的数据的转发和路由。

5 结论

    本文提出了一种基于OpenWrt操作系统的6LoWPAN边界路由器的实现方法,通过在边界路由器上分别实现两种协议栈,并在协议栈之间建立SLIP通道来实现数据包在两种异构网络之间的转发和路由。通过对边界路由器进行ping命令的测试,证明该方案是可行的,能够实现6LoWPAN网络和IPv6网络主机之间的通信。而在现实应用中,可以作为物联网设备接入互联网的中间网关设备随着物联网设备的大量使用,该设备具有广阔的应用前景。
d643189658 发表于 2017-8-11 18:59:15 | 显示全部楼层
谢谢楼主的分享
小舍YZ 发表于 2017-12-27 16:30:07 | 显示全部楼层
基于OpenWrt的6LoWPAN边界路由器的实现
晓灰灰 发表于 2017-12-27 20:55:29 | 显示全部楼层

基于OpenWrt的6LoWPAN边界路由器的实现
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-4-26 04:57 , Processed in 0.070713 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表