b. simuladorcooja -...

12
B. Simulador Cooja B.1. Introducción El sistema operativo Contiki incluye un potente simulador de red llamado Cooja. Permite simular motas que ejecutan aplicaciones Contiki y que se organizan en una red de sensores inalámbricos. Cooja brinda la posibilidad de emular cada mota a nivel hardware para poder observar de manera más precisa su comportamiento a la vez que facilita la comunicación con otros nodos que pertenecen a la misma red. En este apéndice se hace una introducción al uso de este simulador y de sus características más destacadas, presentando algunos ejemplos y explicando su funcionamiento. El objetivo principal de este documento es que el lector aprenda a usar Cooja y sea capaz de realizar sus propias simulaciones de WSN que incluyan nodos que ejecuten el sistema operativo Contiki. B.2. Instalación y primeros pasos Como ya se ha comentado, Cooja es un potente simulador que se distribuye junto al sistema operativo Contiki, gracias al cual se puede simular dicho sistema operativo y probar aplicaciones para unas determinadas plataformas sin tener que acceder al hardware real para testearlas. Para poder usar Cooja es necesario haber instalado satisfactoriamente Contiki. Existen dos opciones para ello: Usar un entorno virtual llamado “Instant Contiki”. Instant Contiki es un sistema Linux completo que contiene Contiki y todas las herramientas de desarrollo necesarias para implementar nuevas aplicaciones. Utilizando una herramienta de virtualización como puede ser VirtualBox o VMware, se puede ejecutar dicho sistema en cualquier ordenador, aunque es recomendable que el anfitrión disponga, al menos, de una CPU de 1.5 Ghz y 2 Gb de memoria RAM para su correcto funcionamiento. Sus ventajas son claras: independencia del sistema operativo anfitrión sobre el que se aloja, rapidez en la puesta en marcha del entorno, eludir posibles incompatibilidades con compiladores, versiones de Java, etc. Solo es necesario descargar el fichero (aproximadamente 1.7 Gb), descomprimirlo y ejecutar el entorno virtual. 165

Upload: trandien

Post on 03-Apr-2018

232 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: B. SimuladorCooja - bibing.us.esbibing.us.es/proyectos/abreproy/12099/fichero/Memoria%2FApendice_… · /contiki_version/examples/rime/example-broadcast.c Secompilaelprogramaysecrean3nodos,loscualessedebensituarcercanos

B. Simulador Cooja

B.1. Introducción

El sistema operativo Contiki incluye un potente simulador de red llamadoCooja. Permite simular motas que ejecutan aplicaciones Contiki y que se organizanen una red de sensores inalámbricos. Cooja brinda la posibilidad de emular cada motaa nivel hardware para poder observar de manera más precisa su comportamiento ala vez que facilita la comunicación con otros nodos que pertenecen a la misma red.

En este apéndice se hace una introducción al uso de este simulador y desus características más destacadas, presentando algunos ejemplos y explicando sufuncionamiento. El objetivo principal de este documento es que el lector aprenda ausar Cooja y sea capaz de realizar sus propias simulaciones de WSN que incluyannodos que ejecuten el sistema operativo Contiki.

B.2. Instalación y primeros pasos

Como ya se ha comentado, Cooja es un potente simulador que se distribuyejunto al sistema operativo Contiki, gracias al cual se puede simular dicho sistemaoperativo y probar aplicaciones para unas determinadas plataformas sin tener queacceder al hardware real para testearlas.

Para poder usar Cooja es necesario haber instalado satisfactoriamente Contiki.Existen dos opciones para ello:

Usar un entorno virtual llamado “Instant Contiki”. Instant Contiki es unsistema Linux completo que contiene Contiki y todas las herramientas dedesarrollo necesarias para implementar nuevas aplicaciones. Utilizando unaherramienta de virtualización como puede ser VirtualBox o VMware, se puedeejecutar dicho sistema en cualquier ordenador, aunque es recomendable que elanfitrión disponga, al menos, de una CPU de 1.5 Ghz y 2 Gb de memoria RAMpara su correcto funcionamiento. Sus ventajas son claras: independencia delsistema operativo anfitrión sobre el que se aloja, rapidez en la puesta en marchadel entorno, eludir posibles incompatibilidades con compiladores, versiones deJava, etc. Solo es necesario descargar el fichero (aproximadamente 1.7 Gb),descomprimirlo y ejecutar el entorno virtual.

165

Page 2: B. SimuladorCooja - bibing.us.esbibing.us.es/proyectos/abreproy/12099/fichero/Memoria%2FApendice_… · /contiki_version/examples/rime/example-broadcast.c Secompilaelprogramaysecrean3nodos,loscualessedebensituarcercanos

B. Simulador Cooja

Instalar Contiki desde cero en un sistema Linux. En principio, si posee unordenador con el sistema Linux instalado, no hay mayor problema para suinstalación. Con solo descargar el archivo y descomprimirlo, debe ser capaz decomenzar a poder probar sus funcionalidades.

Una vez se ha instalado y se encuentra operativo Contiki, se necesitan un parde herramientas adicionales para empezar a usar Cooja. La primera de ellas es tenerJava instalado en el sistema (versión 1.6 o superior). La otra, la utilidad “ant”1, quees el equivalente al “make” en Java.

Llegados a este punto y teniendo todo lo necesario, es posible ejecutar elsimulador. Dentro del árbol de directorios de Contiki, se puede encontrar en/contiki_version/tools/cooja (version corresponde a la versión utilizada deContiki).

Para su ejecución es necesario escribir las siguientes órdenes en una shell:

» cd /contiki_version/tools/cooja» ant run

La herramienta ant lo primero que hace es leer el archivo de configuración“build.xml”, situado en el directorio antes citado. Lleva a cabo una serie de accionesentre las que destacan compilar todos los códigos fuente, crear empaquetados .jarnecesarios, etc. Como último paso, carga una serie de parámetros relativos a lavisualización del simulador y lanza su interfaz gráfica. El resultado se puede apreciaren la figura 1.

1Desarrollada en lenguaje Java, facilita la realización de tareas repetitivas y mecánicas, comopor ejemplo, las fases de compilación y construcción del ejecutable. Se basa en archivos deconfiguración XML y clases Java, siendo ideal como solución multiplataforma.

166

Page 3: B. SimuladorCooja - bibing.us.esbibing.us.es/proyectos/abreproy/12099/fichero/Memoria%2FApendice_… · /contiki_version/examples/rime/example-broadcast.c Secompilaelprogramaysecrean3nodos,loscualessedebensituarcercanos

B.3 Crear una simulación

Figura 1: Ventana principal Cooja

Cooja tiene un menú sencillo e intuitivo que permite al usuario realizar unasimulación, personalizarla, abrir una ya existente, etc. Gracias a los plugins que llevaincorporado, se puede interactuar con dicha simulación.

En las siguientes secciones se pretende describir el manejo básico del simulador.Se comenzará por dar los pasos iniciales para crear una simulación y ejecutar unsencillo ejemplo, mostrando diferentes tipos de información a través de los plugins deCooja. Se mostrarán las características más destacadas y útiles que están disponibles,y se terminará con otro ejemplo algo más complejo que complete esta pequeñaintroducción didáctica al uso de Cooja.

B.3. Crear una simulación

Para crear una nueva simulación, en el menú File se escogerá NewSimulation (o, abreviadamente, CTRL+N). En ese momento aparece una ventanatal y como se muestra en la figura 2:

Figura 2: Creando una nueva simulación

En esta ventana se pueden modificar algunos parámetros generales de lasimulación, como el nombre de la simulación, el medio radio que se va a utilizar,etc. Una vez terminado, pulsando en el botón Create se crea la simulación. Elsimulador tendrá la apariencia mostrada en la figura 3:

167

Page 4: B. SimuladorCooja - bibing.us.esbibing.us.es/proyectos/abreproy/12099/fichero/Memoria%2FApendice_… · /contiki_version/examples/rime/example-broadcast.c Secompilaelprogramaysecrean3nodos,loscualessedebensituarcercanos

B. Simulador Cooja

Figura 3: Nueva simulación

Como se observa en la figura 3, aparecen una serie de subventanas máspequeñas. Cada una de ellas representa un plugin: una pequeña utilidad que permitecontrolar, visualizar acontecimientos acaecidos o cambiar determinados aspectos dela simulación. A continuación se hace una breve descripción de cada una de ellos:

Simulation Control: Tiene una serie de controles con los que es posibleiniciar la simulación, detenerla o avanzar en pequeños pasos de un milisegundo,mostrando además el tiempo total que ha transcurrido. Opcionalmente, sepuede configurar el tiempo total que se desea que dure la simulación o incluirun retraso para hacer que los resultados que se obtengan se aproximen más ala realidad.

Figura 4: Plugin Simulation Control

168

Page 5: B. SimuladorCooja - bibing.us.esbibing.us.es/proyectos/abreproy/12099/fichero/Memoria%2FApendice_… · /contiki_version/examples/rime/example-broadcast.c Secompilaelprogramaysecrean3nodos,loscualessedebensituarcercanos

B.3 Crear una simulación

Network: Gracias a este plugin, es posible ver ciertas características del nodoo nodos simulados. Por ejemplo, se puede mostrar el tipo de nodo, la posiciónespacial que ocupa, el rango de alcance de la radio y la zona de interferencias,así como el número de paquetes transmitidos y recibidos, el estado de los LED’sde la mota (si los tiene, de manera totalmente visual), la dirección IP o Rime,etc.

Figura 5: Plugin Network

Mote Output: Muestra determinados eventos relacionados con un nodo quesuceden en el transcurso de una simulación. Estos eventos son descritos pormensajes textuales que son enviados al puerto serie (USART) de la mota. Losmensajes pueden ser originados por el propio código que se está ejecutandoo por los diversos componentes del sistema operativo involucrados en dichasimulación.

Figura 6: Plugin Mote Output

Timeline: En este plugin se muestra una línea de tiempo por cada nodo en lasimulación. En dicha línea de tiempo se representan eventos que se producena lo largo de la simulación que pertenecen a alguno de los tipos siguientes:

169

Page 6: B. SimuladorCooja - bibing.us.esbibing.us.es/proyectos/abreproy/12099/fichero/Memoria%2FApendice_… · /contiki_version/examples/rime/example-broadcast.c Secompilaelprogramaysecrean3nodos,loscualessedebensituarcercanos

B. Simulador Cooja

• Estado de la radio del transceptor. En blanco si está apagada y en gris siestá encendida.

• Eventos relacionados con la radio, fundamentalmente transmisiones yrecepciones de paquetes. Pueden darse tres posibilidades: una pequeñamarca en azul indica un paquete transmitido, en verde uno recibido yen rojo una interferencia provocada porque ha habido dos paquetes omás, dirigidos al mismo nodo, que han coincidido en el tiempo o que elnodo se encuentra fuera del rango de cobertura del otro extremo de lacomunicación.

• Estado de los LEDS (en caso de que la plataforma en cuestión dispongade ellos, que no es el caso para AvrZigbit).

Este plugin vigila escrupulosamente el estado de la emulación del transceptorradio y el estado de los LED’s de todas y cada una de las motas. Representaen pantalla los eventos que se han producido que pertenecen a elementosseleccionados de entre los anteriores y lo va desplazando hacia la izquierdaconforme el tiempo de simulación va transcurriendo para que se muestre unaevolución temporal a medida que la simulación va avanzando.

En la figura 7 se puede ver un ejemplo de la apariencia de este plugin.

Figura 7: Plugin Timeline

Una vez que se han presentado los plugins que se cargan por defecto al iniciaruna nueva simulación, el siguiente paso es incorporar nodos a la simulación parapoder formar una WSN. A cada nodo se le cargará en memoria un programa queejecutará cuando se inicie la simulación. Para hacer todo esto paso a paso, primerose seleccionará un tipo de nodo entre todos los posibles; en este caso, AvrZigbit:

170

Page 7: B. SimuladorCooja - bibing.us.esbibing.us.es/proyectos/abreproy/12099/fichero/Memoria%2FApendice_… · /contiki_version/examples/rime/example-broadcast.c Secompilaelprogramaysecrean3nodos,loscualessedebensituarcercanos

B.3 Crear una simulación

Figura 8: Añadiendo nodos AvrZigbit a la simulación

Una vez elegido el tipo de nodo, se escoge el programa que va a ejecutar:

Figura 9: Seleccionando programa a cargar

En esta primera toma de contacto con Cooja, se selecciona un ejemplo sencillocomo es “Hello-World”2 y se procede a compilarlo para la plataforma elegida:

2Se encuentra en la ruta: /contiki_version/examples/hello-world

171

Page 8: B. SimuladorCooja - bibing.us.esbibing.us.es/proyectos/abreproy/12099/fichero/Memoria%2FApendice_… · /contiki_version/examples/rime/example-broadcast.c Secompilaelprogramaysecrean3nodos,loscualessedebensituarcercanos

B. Simulador Cooja

Figura 10: Compilación para la plataforma AvrZigbit

Al final de la compilación, como puede verse en la figura 10, se proporcionanalgunos datos de uso de memoria, como por ejemplo el tamaño del archivo resultanteo de cada una de las secciones que lo componen. Una vez compilado, se pulsaráel botón “Create” y el simulador preguntará cuantos nodos de este tipo debenañadirse (a todos ellos se les cargará el mismo programa compilado) y si se deseaubicarlos en una posición determinada. Se selecciona 1 solo nodo, posicionamientoarbitrario y se pulsa en “Add motes”:

Figura 11: Añadiendo 1 nodo AvrZigbit

Con esto hecho, se mostrará la ventana principal del simulador, con el nodosituado en la ventana Network.

Concluida la configuración previa, se puede comenzar a simular pulsando en“Start” dentro del control de la simulación. El programa “Hello-world” es muysimple: inicializa el hardware de la mota e imprime por el puerto serie el mensaje“Hello, world” por lo que, una vez pasados un par de segundos de simulación, sepuede detener. El resultado se puede ver en la figura 12:

172

Page 9: B. SimuladorCooja - bibing.us.esbibing.us.es/proyectos/abreproy/12099/fichero/Memoria%2FApendice_… · /contiki_version/examples/rime/example-broadcast.c Secompilaelprogramaysecrean3nodos,loscualessedebensituarcercanos

B.4 Guardar una simulación

Figura 12: Resultado de la simulación

En “Mote Output” se imprimen una serie de notificaciones que se refieren a lapropia carga del sistema operativo y configuración inicial de la mota. A parte de losanteriores, se encuentra el mensaje “Hello, world”, como cabía esperar.

Es posible seleccionar un evento contenido en “Mote Output” y, pulsandobotón derecho → Focus →in Timeline, nos sitúa en la línea de tiempo en la queha sucedido tal evento.

B.4. Guardar una simulación

Cuando un usuario lleva a cabo los pasos anteriores para crear una nuevasimulación, puede decidir continuar o almacenarla para, en un futuro, volverla acargar y ejecutar en el simulador a fin de examinar los resultados obtenidos conmayor detenimiento, por ejemplo. Cooja proporciona dos opciones para ello: laprimera es salvar la simulación en un archivo .csc que contiene todos los parámetrosde la simulación necesarios y que le servirá para cargarla en un momento posterior. Sise desea hacer esto, solo hay que ir al menú File →Save Simulation e indicar unnombre con el que guardar la simulación. La otra opción que se presenta es que existela posibilidad de exportarla como un archivo Java comprimido (JAR), que construiráun ejecutable de dicha simulación con objeto de poder usarla en cualquier otro

173

Page 10: B. SimuladorCooja - bibing.us.esbibing.us.es/proyectos/abreproy/12099/fichero/Memoria%2FApendice_… · /contiki_version/examples/rime/example-broadcast.c Secompilaelprogramaysecrean3nodos,loscualessedebensituarcercanos

B. Simulador Cooja

momento y ser cargada en otro ordenador diferente. En tal caso, se debe procederasí: File→Export simulation as executable JAR. En el momento en el que sedesee rescatar una simulación guardada anteriormente, solo hay que dirigirse al menúFile→Open simulation y seleccionar la que se desee recuperar. A partir de ahíse cargan todos los parámetros necesarios y el escenario con los nodos apropiados,quedando todo listo para comenzar a ejecutarla.

Figura 13: Cargando una simulación guardada

B.5. Un segundo ejemplo

Para acabar este apéndice, es interesante mostrar otro ejemplo algo máscomplejo que el anterior. En este caso se usará un programa que lleva a cabouna comunicación radio. En concreto, hace uso de una de las capas de la pila decomunicaciones por radio Rime y que consiste en el envío de paquetes de difusióncon el mensaje “Hello” en su interior.

Como se ha visto antes, en primer lugar, se crea una nueva simulación, se eligeel tipo de nodo y el programa que se cargará en los nodos, que se ubica en la ruta:/contiki_version/examples/rime/example-broadcast.c

Se compila el programa y se crean 3 nodos, los cuales se deben situar cercanosentre sí para que estén dentro del radio de cobertura de los demás y se puedancomunicar todos con todos (esto se puede hacer seleccionando un nodo concretodentro de Network, y una vez mostrada su cobertura radio se podrá arrastrar el

174

Page 11: B. SimuladorCooja - bibing.us.esbibing.us.es/proyectos/abreproy/12099/fichero/Memoria%2FApendice_… · /contiki_version/examples/rime/example-broadcast.c Secompilaelprogramaysecrean3nodos,loscualessedebensituarcercanos

B.5 Un segundo ejemplo

nodo hasta la posición apropiada si está fuera de alcance). En este momento, esinteresante comentar que existe un plugin bastante útil para las simulaciones dondese llevan a cabo transmisiones radio: “Radio Messages” (en el menú Tool). En élse puede ver los paquetes enviados/recibidos por un nodo, el momento en el que sehan producido y el contenido mismo del paquete, en hexadecimal y en caracteresASCII.

Una vez concluida la configuración de la simulación, se puede iniciar. Elresultado se puede ver en la figura 14:

Figura 14: Simulando example-broadcast para AvrZigbit

Esta simulación tiene un comportamiento distinto a la anterior, ya que si serecuerda, en el primer ejemplo, en el momento que se mandaba al puerto serie elmensaje “Hello, world” finalizaba el programa. En este ejemplo, un nodo mandaindefinidamente paquetes de difusión con un intervalo aleatorio entre 2 a 4 segundosy también se encuentra a la espera de recibir paquetes provenientes de los otrosnodos. En el plugin “Mote Output” se puede determinar el momento en el que seha producido cualquiera de estos sucesos. En “Radio Messages” se muestra másdetalladamente esta información y el contenido de dicho paquete. En “TimeLine” serepresentan los paquetes recibidos y enviados por cada nodo de la simulación.

Con toda la información proporcionada por los plugins, se puede hacerun estudio más pormenorizado de la ejecución del programa, verificando si el

175

Page 12: B. SimuladorCooja - bibing.us.esbibing.us.es/proyectos/abreproy/12099/fichero/Memoria%2FApendice_… · /contiki_version/examples/rime/example-broadcast.c Secompilaelprogramaysecrean3nodos,loscualessedebensituarcercanos

B. Simulador Cooja

comportamiento logrado es el deseado o si, por contra, se deben hacer modificacioneso correcciones para conseguir el funcionamiento que se había diseñado en unprincipio. Aquí es donde se demuestra la verdadera importancia de disponer deuna herramienta de simulación como Cooja.

176