基于cooja仿真器的无线传感器网络实验研究

2017-04-12 02:02方君丽张恩展
计算机教育 2017年3期
关键词:仿真器网络协议浏览器

郭 显,方君丽,张恩展

(兰州理工大学 计算机与通信学院,甘肃 兰州 730050)

基于cooja仿真器的无线传感器网络实验研究

郭 显,方君丽,张恩展

(兰州理工大学 计算机与通信学院,甘肃 兰州 730050)

分析无线传感器网络教学中采用集成开发环境对硬件平台的依赖性问题,提出基于cooja仿真实验平台和传感器网络标准协议6LoWPAN协议,设计无线传感器网络应用系统方法及分析网络协议的方法。

无线传感器网络;6LoWPAN;contiki操作系统;cooja

0 引 言

无线传感器网络课程是物联网及相关专业的核心专业课程,其内容涉及网络协议、通信技术、嵌入式系统开发等内容。基于无线传感器网络的应用系统开发有两种方法,一种是基于特定硬件的商业化集成开发环境开发应用系统,这种方法的好处是方便易学,缺点是依赖于特定硬件环境,开发系统不便于移植;传感器设备差异性较大,如果硬件环境改变,学习者需重新学习新的开发环境。另一种是基于开源工具搭建开发环境设计应用系统,这种方法对于初学者而言比较困难,但一旦掌握这些开发技术,即能以不变应硬件平台的万变。目前一些流行的无线传感器网络教学实验箱也都是基于集成开发环境设计的,不便于学生学习。在无线传感器网络课的教学中,我们基于流行的开源工具搭建仿真实验教学平台,使学生能够更好地把理论与实践相结合,学好无线传感器网络的相关理论技术和应用开发技术,为以后在不同环境下的应用系统开发打下坚实基础。

Contiki操作系统[1]是一个轻量级、开源的适合于资源受限环境的物联网操作系统,目前已广泛应用于物联网的各个领域。Contiki系统完全支持IETF推出的物联网协议6LoWPAN协议栈[2],支持资源受限应用层协议CoAP协议[3],contiki操作系统还支持Wireshark[4]网络协议分析工具。Cooja仿真器是contiki操作系统下无线传感器网络仿真工具,在cooja仿真器中可以仿真目前流行的多种传感器构成的不同传感器网络,在仿真环境中可以分析网络不同层的协议,cooja仿真工具还可以分析节点能量使用情况,接收信号强度、链路质量等。更重要的是,在cooja仿真环境中可以开发基于无线传感器网络的各种应用程序。

1 无线传感器网络

1.1 无线传感器网络模型

无线传感器节点通常部署在感知区域,如图1所示,这些分散的传感器节点具有采集数据并向终端用户传输路由数据的能力。因此,传感器节点承担数据源和路由器两种角色,传感器节点采集的数据通过多跳、无基础设施的自组织传感器网络到达网关,再由网关传输到终端用户。相反,用户可通过网关向传感器网络节点发送控制指令,如控制与节点连接的各种设备。网关与终端用户间的通信方式可以是以太网、互联网、卫星网络和无线网络等。

图1 无线传感器网络模型

1.2 无线传感器网络协议栈

6LoWPAN协议是IETF推出的物联网标准协议,其目的是在低功耗无线个域网上使用IPv6技术实现万物互联,该协议完全适合于资源受限传感器节点构成的无线传感器网络。在无线传感器网络教科书中,一般把6LoWPAN协议也称为无线传感器网络标准协议。6LoWPAN协议栈结构如图2所示。

图2 6LoWPAN协议栈结构

在使用6LoWPAN协议栈的传感器网络中,物理层和链路层使用IEEE 802.15.4协议,网络层使用RPL协议[5]组网,RPL协议是IETF专为低功耗有损网络LLN推出的路由协议。运输层一般使用传统TCP/IP协议簇运输层的UDP协议,应用层使用专为资源受限设备设计的类似于HTTP协议的无线传感器网络应用层协议CoAP协议。在目前流行的浏览器软件,如Firefox浏览器中安装插件copper[6]就可支持CoAP协议。

1.3 网络协议分析工具

Wireshark是一款开源、广泛使用的网络协议分析工具,允许对分组跟踪嗅探、捕获和分析,分组跟踪是对网络上某个位置的流量的记录,是对特定链路上传输的所有比特的快照。分组跟踪记录从协议栈低层到高层的每个分组的时间戳,以及构成分组的所有比特信息。该工具的使用能够让学生深入理解媒体介入、路由、可靠传输、拥塞控制等无线传感器网络原理,能够深入理解实现这些机制的方法,为设计新的网络协议和改进协议打下坚实基础。

1.4 无线传感器网络操作系统

Contiki操作系统是专为资源受限网络设计的无线传感器网络操作系统,它完全支持6LoWPAN协议及CoAP协议,支持Wireshark网络分析工具。我们选择contiki操作系统的原因是,contiki操作系统中包含一个功能丰富的无线传感器网络仿真工具cooja仿真器,它不仅能够仿真实现、分析网络协议,跟踪网络节点能量消耗情况等,还能够在仿真环境下设计无线传感器网络应用系统,如设计基于CoAP API的应用系统等。

2 无线传感器网络仿真实验

2.1 教学实验平台搭建

Contiki操作系统的安装有两种选择,可以直接在安装好ubuntu操作系统的计算机中安装contiki操作系统,也可以在Windows操作系统中安装虚拟机软件VMWare,然后下载安装contiki操作系统的虚拟机instant contiki,instant contiki是一个完整的contiki开发环境,包括contiki系统,各种开发工具、编译工具和仿真工具。Contiki操作系统的文件夹结构如图3所示。

Contiki对硬件的要求很低,移植十分方便,cpu文件夹中列出了支持的硬件平台,目前已经支持8051系列、AVR、MSP430、ARM、ARMCortex、X86等处理器,这样,方便在不同硬件平台上开发应用程序。Examples文件夹中包含了各种应用程序开发实例,这些应用程序可以在应用开发中使用,tools文件夹中包括cooja仿真工具等。

图3 contiki系统文件夹结构

另外,如果是在ubuntu下直接安装contiki系统,为了让ubuntu中的Fixfox浏览器支持CoAP协议,需要安装Copper插件,还需要安装Wireshark工具,以便网络协议分析。

2.2 CoAP API

Contiki操作系统中,CoAP协议的实现是基于contiki系统的低功耗REST引擎Erbium(Er)的,CoAP引擎在apps/rest-engine/er-coap-engine.c中实现,引擎接口由下面的结构体提供,我们把它称为CoAP 应用编程接口API:

可用下面的函数调用CoAP引擎:

REST.get_query_variable();

基本的REST设计使用了HTTP协议或CoAP协议的POST、GET、PUT和DELETE等方法,Web服务被看成是由URIs唯一标识的资源(resources)。在Web服务器上有多种可用的资源,每个资源都有REST层调用的处理函数,以便为客户请求提供服务,REST服务器通过向客户发送其请求的资源内容作为响应。要建立新的CoAP资源时,可以使用contiki系统中定义的基本“资源”类型:normal resource、parent resource、separate resource、event resource和periodic resource。文件apps/rest-engin/rest-engin.h中给出了这些资源的宏定义。如普通资源的宏定义如下:

普通资源(normal resource)由与资源处理函数相关的静态uri-path定义,它是所有其他资源类型的基础。父资源(parent resource)通过评价uri-path管理几个子资源。

一旦声明和实现了资源,需要通过使用以下函数初始化REST框架,启动HTTP或CoAP进程:

void rest_init_engine(void);

然后再用下面的函数激活每个声明的资源:

2.3 应用程序举例

通过简单应用程序可以说明CoAP API的使用方法,假设本例中的网络节点上有光敏传感器和执行器两个设备,光敏传感器向用户发送采集数据,执行器控制节点上红色led灯的开/关。Examples/er-rest-example/resource文件中的res_ light.c和res_toggle.c中分别定义了rest_light和rest_toggle两种资源,这两种资源与节点上的光敏传感器和执行器相对应,资源声明如下:

资源声明中指定资源名称为res_light,res_ toggle,与它们对应的回调处理分别是GET(res_get_handler)、POST(res_post_handler),即通过HTTP或CoAP协议的GET、POST方法就可获得传感器采集值或控制节点红色led灯的开/关。

激活这两种资源的函数如下:

其含义是资源分别在uri_path标识“sensors/ light”和“actuators/toggle”下可用,函数的功能是将资源存入资源表。

下面是rest_light和rest_toggle资源对应的静态处理函数,细节参见资源定义程序:

2.4 仿真实现过程

Contiki操作系统下进入tools/cooja文件夹,运行“ant run”命令启动cooja仿真器,在cooja仿真器中,我们建立如图5(a)所示的网络,网络中的节点是“sky”类型的传感器节点。节点1为传感器网络的网关,其上运行examples/ ipv6/rpl-border-router/border-router.c程序。在使用6LoWPAN协议栈的传感器网络中,每个节点都使用根据MAC地址自动生成的IPv6链路本地地址,所以节点的地址都是以“fe80”开头的地址。为了能够通过互联网上的远程用户终端访问传感器节点,需要将链路本地地址映射为IPv6的全球单播地址,这一工作由网关完成。首先通过仿真器的菜单项tools->serial scoket->sky1打开网关的侦听端口,然后打开新的ubuntu终端窗口,使用如下命令即可完成地址映射:

本例中除节点1外,其他节点上都运行服务器程序examples/er-rest-example/er-example-server.c,该程序主要是激活定义的各种资源。网络中节点使用RPL路由协议组网。现在,选择cooja仿真器的simulation->start simulation菜单项就可启动仿真过程。仿真运行过程中,远程用户通过浏览器访问网关节点1,浏览器窗口中就会列出网络拓扑信息,如网关节点的一跳邻居节点信息以及由路由协议RPL协议建立的从网关节点到各节点的路径信息,如图5(b)所示,显然该网络是多跳自组织网络。

图5 仿真实例

传感器网络中的节点类似于Web服务器,基于定义的各种“资源”向客户提供服务。在安装了copper插件的Firefox浏览器中连接网络节点,单击“discover”按钮后,就会在浏览器“discovering”区域列出在其上运行程序中激活的已定义资源,如前文中介绍的控制传感器节点led灯的res_toggle资源,该资源的uri-path为actuators/toggle。图6(a)显示了连接网络中节点4并单击“discovering”后的结果。

因为与res_light资源对应的处理函数是res_ get_()_handler(),所以通过浏览器上的“GET” 按钮就可获得光敏传感器采集的数据。同理,通过浏览器上的“POST”按钮就可远程控制传感器节点上的红色led灯。如图6(a)中选中“actuators/ toggle”,然后单击浏览器上“POST” 按钮就可控制节点4上的红色Led灯,图6(b)是单击之前的状态,图6(c)是单击“POST”按钮之后的状态。由图6(c)可知,节点1通过节点7向节点4发送控制指令控制节点4上的红色led灯打开。

图6 仿真结果

3 Wireshark网络协议分析

启动网络仿真程序之前,选择cooja仿真器的菜单项tools->radio messages打开radio messages对话框,在radio messages对话框中选择analyzer->6LoWPAN Analyzer with PCAP菜单项,则在仿真过程中会自动生成wireshark分组跟踪记录文件,该文件保存在contiki操作系统的tools/cooja/ build文件夹中,文件扩展名是.pcap。这样,可以在wireshark中打开这些文件进行网络协议分析。例如,图7显示了仿真开始时,节点间通过交换RPL协议的控制消息DIS(DODAG Information Solicitation),DIO(DODAG Information Object)和DAO (Destination Advertisment Object)消息建立以网关为根的有向无环图DODAG,节点进而加入RPL网络时的部分分组。图8显示了当单击浏览器上“POST”按钮(如图6(a)所示)时,节点1和节点4之间交换的部分CoAP分组。如果想观察分组的细节,可以双击相应分组对应的行,如双击图8中序号为293的分组,就会显示出该分组的详细信息,如图9所示,能够观察到6LoWPAN协议栈的完整信息。

图7 DODAG建立分组

图8 CoAP协议分组

图9 CoAP分组

4 结 语

无线传感器网络是物联网及相关专业的核心专业课程,内容涉及网络协议、通信技术、嵌入式系统开发等内容,内容多,学习难度较大。教学中,我们基于无线传感器网络操作系统contiki下的cooja仿真器构建仿真实验平台,便于学生把理论和实践相结合,在仿真实验平台上分析网络协议原理,设计应用系统程序。通过实例分析采用6LoWPAN协议的无线传感器网络仿真实验方法及应用程序的开发过程,并说明基于wireshark工具分析网络协议的方法。

[1] Contiki: 开源物联网操作系统[EB/OL]. [2016-11-13].http://www.contiki-os.org.

[2] Kushalnagar N, Montenegro G, Schumacher C. IPv6 over low-power wireless personal area networks (6LoWPANs): Overiew, assumptions, problem statement, and goals (RFC 4919)[EB/OL]. [2016-10-14]. https://datatracker.ietf.org/doc/rfc4919/.

[3] Shelby Z, Hartke K, Bormann C. Constrained application protocol (CoAP)(RFC 7252)[EB/OL]. [2016-06-28]. https://tools.ietf.org/ html/draft-ietf-core-coap-18.

[4] Wireshark: 开源网络包分析工具[EB/OL]. [2016-10-14]. https://www.wireshark.org/.

[5] Winter T, Thubert P. Rpl: Ipv6 routing protocol for low-power and lossy networks(RFC 6550)[EB/OL]. [2016-10-13]. https:// datatracker.ietf.org/doc/rfc6550/.

[6] Matthias K. Demo abstract: Human-CoAP interaction with copper[C]//Proceeding of the 7th IEEE International Conference on Distributed Computing in Sensor Systems and Workshops (DCOSS). Washington D C: IEEE, 2011:1-2.

(编辑:郭田珍)

1672-5913(2017)03-0167-06

G642

国家自然科学基金项目(61461027);甘肃省自然科学基金项目(145RJZA078)。

郭显,男,副教授,研究方向为物联网工程、网络安全,iamxg@63.com。

猜你喜欢
仿真器网络协议浏览器
AI仿真器将大大提高科学领域的仿真模拟速度
微软发布新Edge浏览器预览版下载换装Chrome内核
反浏览器指纹追踪
一种蓝牙多跳网络协议的设计与研究
基于载波技术的多点温度测量系统设计
基于DPI技术的语音视频流量监控系统设计与实现
车辆自组织网络的仿真趋势
浏览器