Cooja Simulator Manual
User Manual:
Open the PDF directly: View PDF .
Page Count: 26
Download | ![]() |
Open PDF In Browser | View PDF |
See discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/304572240 Cooja Simulator Manual Technical Report · July 2016 DOI: 10.13140/RG.2.1.4274.8408 CITATION READS 1 19,293 6 authors, including: Craig Thomson Imed Romdhani Edinburgh Napier University Edinburgh Napier University 2 PUBLICATIONS 3 CITATIONS 106 PUBLICATIONS 381 CITATIONS SEE PROFILE SEE PROFILE Ahmed Yassin Al-Dubai Mamoun Qasem Edinburgh Napier University Edinburgh Napier University 150 PUBLICATIONS 571 CITATIONS 13 PUBLICATIONS 30 CITATIONS SEE PROFILE SEE PROFILE Some of the authors of this publication are also working on these related projects: Next Generation Cryptography for Internet of Things (IoT) View project Mobile Internet of Things View project All content following this page was uploaded by Imed Romdhani on 30 June 2016. The user has requested enhancement of the downloaded file. Cooja Simulator Manual Version 1.0 Edited by: “IoT Networking Research Group” Edinburgh Napier University (C) 2015-2016 1 List of Contributors Craig Thomson Dr Imed Romdhani Dr Ahmed Al-Dubai Mamoun Qasem Barraq Ghaleb Isam Wadhaj Table of Contents 1. Introduction .................................................................................................................................... 4 2. The Cooja GUI – From the Beginning ........................................................................................... 5 1.1 Start-up and Initial Settings..................................................................................................... 5 1.2 Network Options ................................................................................................................... 12 1.3 Script Editor and Sensor Collect ........................................................................................... 15 1.4 IPv6 Routing ......................................................................................................................... 18 1.5 Adjusting Objective Functions.............................................................................................. 23 References ............................................................................................................................................. 25 Table of Figures Figure 1. Initial Cooja Screen [1]............................................................................................................ 5 Figure 2. Cooja Create new simulation [1] ............................................................................................. 6 Figure 3. Initial Cooja Simulation Screen [1] ......................................................................................... 7 Figure 4. Cooja Add Mote Dropdown [1]............................................................................................... 7 Figure 5. Cooja Locate Mote Firmware [1] ............................................................................................ 8 Figure 6. Contiki File Structure .............................................................................................................. 9 Figure 7. Cooja Mote Compilation ....................................................................................................... 10 Figure 8. Cooja Add Motes ................................................................................................................... 11 Figure 9. Cooja Initial Network ............................................................................................................ 11 Figure 10. Cooja View Dropdown ........................................................................................................ 12 2 Figure 11. Cooja View Options Utilised............................................................................................... 14 Figure 12. Cooja Simulation Script Editor............................................................................................ 15 Figure 13. Cooja Sensor Data Collect ................................................................................................... 16 Figure 14. Cooja Average Power Consumption Graph ........................................................................ 17 Figure 15. Cooja Sensor Collect Node Info .......................................................................................... 17 Figure 16. Cooja Border Router Demo ................................................................................................. 18 Figure 17. Cooja Border Router Demo with IPv6 Addressing ............................................................. 20 Figure 18. Border Router Routing Table .............................................................................................. 22 3 1. Introduction While Cooja has been proven to be an ideal tool for the simulation of RPL in WSNs, there are challenges involved in its use. This is particularly pertinent in regard to the lack of documentation available. The Contiki website [1] may be a first port of call in regard to Cooja, and provides an image of Instant Contiki which can then be used with the virtualisation tool VMware [2]. However, once Instant Contiki is successfully started, the Contiki website can then be referred to for nothing more than brief instructions regarding a simple network setup on Cooja. With this the sum total of any official documentation regarding Cooja, with the majority of support being provided within internet discussion boards. The aim of this tutorial, therefore, is to provide an extensive instruction set in the use of Cooja. This is based on the personal experience of the contributors involved, enabling the reader to avoid some of the pitfalls inherent in attempting to use Cooja with no or limited experience. This will firstly enable someone with no previous exposure to Cooja to be able to create network layouts, compile motes, examine output using the Sensor Data Collect plugin and also utilise scripts to produce more finegrained results. From this starting point we move onto more complex tasks including the manipulation of the Cooja code and the use of Cooja in physical nodes. This tutorial seeks to be both a reference point for a user seeking specific knowledge in a particular task, as well as a step by step instruction set for the new user. 4 2. The Cooja GUI – From the Beginning 1.1 Start-up and Initial Settings If this tutorial is a complete starting point in the use of Cooja you will first need to visit the Contiki website[1] in order to download Instant Contiki. Once the Instant Contiki image has been downloaded and unzipped it can be opened using VMware. Instant Contiki is an Ubuntu based operating system with Cooja already built in and ready to use. To start the simulation software open a terminal window and enter the following commands: cd contiki/tools/cooja ant run In the event that large, memory heavy simulations are to be run, the command ‘ant run_bigmem’ can alternatively be used. The Cooja software should now start, resulting in the screen as shown in Figure 1. The Contiki website now demonstrates how to set up a simple ‘Hello World’ simulation. However, this tutorial demonstrates how to set up a simple RPL network utilising a UDP Sink mote and several UDP Sender motes. Although Cooja can be extremely complex, by following a few simple instructions, very quickly data can be collected from motes as well as giving you the ability to observe radio communication, messages output from motes within the network and to alter the transmission and interference range of motes. Figure 1. Initial Cooja Screen [1] 5 Click on File and then New Simulation and the screen shown in Figure 2 is returned. The settings on this screen do not need to be changed, with deployment of the Unit Disk Graph Model (UDGM) covered in greater detail later. The Create button can now be clicked. This results in the initial simulation screen as shown in Figure 3. At the moment there is nothing to run as there are no motes in the network as of yet. These are added by clicking on Motes, Add motes, Create new mote type and then Sky mote from the resulting drop-down menu as demonstrated in Figure 4. The Sky mote is the most simple of motes for use within a WSN and ideal for initial configurations within a Cooja simulation. The resultant screen is displayed in Figure 5. It is here where the firmware for the mote is selected and this is also where these instructions diverge from the instructions on the Contiki website. Figure 2. Cooja Create new simulation [1] 6 Figure 3. Initial Cooja Simulation Screen [1] Figure 4. Cooja Add Mote Dropdown [1] 7 Figure 5. Cooja Locate Mote Firmware [1] It is advisable to change the description to something more relevant to the test to be performed. In this case, the network topology shall involve a sink node and several sender nodes, therefore the description is changed to ‘Sink’. A great advantage of Cooja is that the motes used in a Cooja simulation use the same firmware as actual physical devices. At this point the firmware to be used to create the simulated mote must be located in order to create and compile it. It should be noted that the location of the firmware is extremely important. When Instant Contiki 2.7 is used there are two paths created within the file structure, contiki and contiki-2.7, as shown in Figure 6. As all tests created within this dissertation are run from the contiki path, this is where the firmware should be located. This becomes more important when adjustments are made to the firmware of motes in order to create customised versions. If these are located within the contiki-2.7 path it will not cause an error. However, any further changes to source code would not be picked up as the motes are compiled every time a test is opened. 8 Figure 6. Contiki File Structure As can be seen in Figure 6 there is an ‘examples’ folder and this is where the firmware is located, with a great many options available. As this example involves the use of RPL the path selected is /home/user/contiki/examples/ipv6/rpl-collect/udp-sink.c. udp-sink.c is the actual C language firmware of the mote that will now be created. Click Clean to erase any previous compile of the mote and then Compile. This will result in output as in Figure 7 which shows the compilation output. There will always be some warning code in red, however, providing there are no red errors at the end of the output the mote has compiled successfully. 9 Figure 7. Cooja Mote Compilation Now click on Create to bring up the option to create the number of motes required. A box shall appear as in Figure 8. As this is a Sink mote only one is required, click Add motes and the mote is added. This process should be repeated for the Sender motes with the path for the mote firmware now /home/user/contiki/examples/ipv6/rpl-collect/udp-sender.c. In this example we shall be adding 5 Sender motes. 10 Figure 8. Cooja Add Motes Once the ‘Add motes’ button has been clicked a screen similar to Figure 9 is returned, showing the motes in the network with number 1 being the Sink mote. Figure 9. Cooja Initial Network 11 1.2 Network Options This is a good point to describe the various windows and their purpose, as well as the many other display options available before actually running the network test: The Timeline window at the bottom of Figure 9 shows events over a period of time such as layer 2 communication to motes to waken them up [1]. This view can be filtered using the drop down menu and the output can be saved to a file if necessary. The Mote Output window shows the output window will display any printouts from the motes. This can be extremely useful in more complex networks which require more fine-grained analysis of results, as the actual source code of the motes can be altered at various levels, with messages produced which can be observed in this window. This is also where any print messages used to ascertain the flow of code will appear. The Simulation Control window is where the simulation is started, paused and stopped. The simulation can also be completely reloaded from this window although there are other options in this regard. The Network window displays the layout of the network motes and can be greatly modified in order to more easily display various factors of the network, as well as network traffic. The View dropdown menu shows the various options as shown in Figure 10. Figure 10. Cooja View Dropdown 12 It should be noted that these options are best utilised selectively, as the window can become cluttered with too many options selected. As can be observed, ‘Mote relations’ and ‘Mote IDs’ are already ticked, showing the numbering for each mote. The rest of the options are detailed as follows: • The ‘Addresses: IP or Rime’ option displays the addresses, in this case IPv6, of each mote. Given the length of an IPv6 address it can be seen how this option should be used sparingly as in a fairly dense network the addresses simply will not be viewable. • ‘Log output: printf()’s’ displays printf messages from the mote code inside the actual view window. These messages also appear within the Mote Output window which could be argued as a better way of analysing and filtering results. • ‘LEDs’ is useful in order to observe the LED lights on the simulated motes. • The ‘Radio Traffic’ option is extremely useful in animating the network once the simulation is running. Using this option will display the exchange of messages between nodes allowing the observation of the selection of parents and how the DODAG is built. • ‘Positions’ displays the relative location of each node. • The ‘10m background grid’ is extremely useful to give a sense of scale to the network layout. This displays a grid of 100m2 squares rather than a blank background. • ‘Mote type’ employs a colour scheme to show the difference between motes of different types. In the case of this demonstration network two types of motes are employed – one sink and five senders. • ‘Mote attributes’ allows the use of code to alter the colourising of motes as well as other options and is not relevant to this discussion. • ‘Radio environment (UDGM)’ displays the transmission range of any particular mote and is extremely useful when deciding upon the optimal position of motes within a simulated network. • ‘Code’ merely displays code as it is being run and is not of relevance to this discussion. • In the case of this demonstration the following options are used: • Radio Traffic • 10m background grid • Mote type • Radio environment (UDGM) The motes have been reorganised into a tree formation and the Zoom option utilised in order to place them at a more realistic distance. In order to change the transmission range and interference range of the motes simply right click any mote and select ‘Change transmission ranges’. Once the range has been changed the simulation must be reloaded. An example of this network, paused during the exchange of Hello messages, with a transmission range of 50m and an interference range of 50m can be seen in Figure 11. These instructions allow the setup and execution of a simple network simulation using Cooja, 13 however, as can be clearly observed there are far more options than have been covered in this section. Two main areas of interest are in regard to utilising the script editor, primarily to limit the timing of a simulation, and the collection of sensor statistics. These shall be examined in greater detail in the next section. Figure 11. Cooja View Options Utilised 14 1.3 Script Editor and Sensor Collect In order to start the script editor within Cooja, select the ‘Tools’ dropdown menu and the ‘Simulation Script Editor’. If familiar with Java Script you can use this facility to perform fine-grained analysis of the network output. However, for simplicity, the Script Editor can be used merely to display messages and to set a timer on the simulation. In order to do this, within the Script Editor menu select the ‘File’ dropdown menu of which ‘Load example script’ is the only option. Then select ‘Just log all printf()’s and timeout’. This results in a simple script as in Figure 12, with the greatest point of interest being the TIMEOUT. This number is displayed in milliseconds therefore the 60000 shown is 60 seconds, or 1 minute. This can be adjusted accordingly. However, note that the changes only take effect once the ‘Run’ dropdown menu is clicked and ‘Activate’ selected. The script can now no longer be edited until the same process is repeated. Figure 12 also shows the simulation paused and how messages can be displayed within the Script Editor output pane. Figure 12. Cooja Simulation Script Editor Cooja has sophisticated tools for collecting data from motes, however, it is not immediately obvious how to enable this in a simulation. For data collection in a network with a sink and several senders the collection should be performed from the viewpoint of the sink. This will then display data for all the senders in the network. To enable the Sensor Data Collect view there are two options. Firstly, rightclick the sink mote, select ‘Mote tools for Sky 1’ and then ‘Collect View’. Alternatively use the ‘Tools’ 15 dropdown menu, then ‘Collect View’ and finally ‘Sky 1’. The result is a window as shown in in Figure 13. There are many details within this window which are for use with physical nodes as well as for simulation purposes. To quickly enable Sensor Collection for a Cooja Simulation simply click ‘Start Collect’. This will take a few seconds to respond at which point ‘Send command to nodes’ should be clicked. The simulation can now be started as in previous examples. It should be noted that all changes made regarding the Script Editor and Sensor Data Collect will be saved within the simulation providing the simulation is saved using the ‘File’ dropdown menu. It should also be noted that the simulation time must be long enough for the data collection to begin, with 1 minute not long enough. In this example a time of 5 minutes or 300000 milliseconds is used. Figure 13. Cooja Sensor Data Collect Once the simulation is complete a great amount of data will be available from the Sensor Collect View. Some of this information is displayed graphically as shown in Figure 14 which displays the average power consumption of the motes in the network. However, of potentially greater use is the Node Info as shown in Figure 15. This provides a significant amount of data which could then allow a user to produce their own analysis and graphs. It should be noted that in regard to Objective Functions, Contiki 16 defaults to the use of MRHOF with the ETX metric, however, OF0 can also be used. This shall be demonstrated later in this document. The ability to observe RPL routing is discussed in the next section. Figure 14. Cooja Average Power Consumption Graph Figure 15. Cooja Sensor Collect Node Info 17 1.4 IPv6 Routing In Cooja it is possible to demonstrate routing and interaction with and between the motes in a network, such as by pinging them. To do this we can set up a simple network simulation. This has a Border Router bridged to the RPL network in order to assign IPv6 addresses and routing within the network. Once this is established the routing table within the Border Router can be demonstrated in order to prove the establishment of routes. It is then possible to ping even the most remote nodes within the network and also demonstrate those outwith radio range and therefore excluded from the network. What should be noted, however, is that memory and processor constraints can provide erratic results with regard to establishing a bridge to the Border Router. The network setup for this demonstration can be seen in Figure 16. Mote 1 in this case is a Border Router mote which is compiled using firmware to be found in /contiki/examples/ipv6/rpl-borderrouter/border-router.c. To establish the bridge with the Border Router, first right click the Border Router mote 1 and select ‘Mote tools for Sky1’ then ‘Serial Socket (SERVER)’. This will create a serial port on the Border Router which is accessible via UDP port number 60001 on the local machine [3]. Figure 16. Cooja Border Router Demo 18 The simulation can now be started, however, a Terminal window should be open ready to enter the following commands which will establish the bridge to the Border Router: user@instant-contiki:~/contiki$ cd tools user@instant-contiki:~/contiki/tools$ make tunslip6 make: `tunslip6' is up to date. user@instant-contiki:~/contiki/tools$ sudo ./tunslip6 -a 127.0.0.1 aaaa::1/64 [sudo] password for user: This will the return the following, meaning a bridge has been established and IPv6 addresses assigned with prefix aaaa::/64. The Border Router’s IPv6 address of aaaa::212:7401:1:101 can be seen. slip connected to ``127.0.0.1:60001'' opened tun device ``/dev/tun0'' ifconfig tun0 inet `hostname` up ifconfig tun0 add aaaa::1/64 ifconfig tun0 add fe80::0:0:0:1/64 ifconfig tun0 tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:127.0.1.1 P-t-P:127.0.1.1 Mask:255.255.255.255 inet6 addr: fe80::1/64 Scope:Link inet6 addr: aaaa::1/64 Scope:Global UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:500 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) *** Address:aaaa::1 => aaaa:0000:0000:0000 Got configuration message of type P Setting prefix aaaa:: Server IPv6 addresses: aaaa::212:7401:1:101 fe80::212:7401:1:101 [3] 19 Figure 17 shows the network with IPv6 Addresses now established and traffic moving between all nodes and the Border Router. Figure 17. Cooja Border Router Demo with IPv6 Addressing While the simulation is running, the bridge can be used to Ping motes in the network as follows. Although not all are successful due to the volatility of the network: user@instant-contiki:~$ ping6 -c 5 -s 8 aaaa::212:7401:1:101 PING aaaa::212:7401:1:101(aaaa::212:7401:1:101) 8 data bytes 16 bytes from aaaa::212:7401:1:101: icmp_seq=1 ttl=64 time=26.8 ms 16 bytes from aaaa::212:7401:1:101: icmp_seq=2 ttl=64 time=21.2 ms 16 bytes from aaaa::212:7401:1:101: icmp_seq=3 ttl=64 time=19.1 ms 16 bytes from aaaa::212:7401:1:101: icmp_seq=4 ttl=64 time=31.8 ms 16 bytes from aaaa::212:7401:1:101: icmp_seq=5 ttl=64 time=15.9 ms --- aaaa::212:7401:1:101 ping statistics --20 5 packets transmitted, 5 received, 0% packet loss, time 4008ms rtt min/avg/max/mdev = 15.969/22.996/31.819/5.660 ms user@instant-contiki:~$ ping6 -c 5 -s 8 aaaa::212:7413:13:1313 PING aaaa::212:7413:13:1313(aaaa::212:7413:13:1313) 8 data bytes 16 bytes from aaaa::212:7413:13:1313: icmp_seq=1 ttl=59 time=4126 ms 16 bytes from aaaa::212:7413:13:1313: icmp_seq=2 ttl=59 time=7826 ms 16 bytes from aaaa::212:7413:13:1313: icmp_seq=3 ttl=59 time=6816 ms 16 bytes from aaaa::212:7413:13:1313: icmp_seq=4 ttl=59 time=5841 ms 16 bytes from aaaa::212:7413:13:1313: icmp_seq=5 ttl=59 time=5043 ms --- aaaa::212:7413:13:1313 ping statistics --5 packets transmitted, 5 received, 0% packet loss, time 4018ms rtt min/avg/max/mdev = 4126.973/5931.060/7826.502/1298.239 ms, pipe 5 user@instant-contiki:~$ ping6 -c 5 -s 8 aaaa::212:7404:4:404 PING aaaa::212:7404:4:404(aaaa::212:7404:4:404) 8 data bytes 16 bytes from aaaa::212:7404:4:404: icmp_seq=1 ttl=63 time=177 ms 16 bytes from aaaa::212:7404:4:404: icmp_seq=2 ttl=63 time=139 ms 16 bytes from aaaa::212:7404:4:404: icmp_seq=3 ttl=63 time=666 ms 16 bytes from aaaa::212:7404:4:404: icmp_seq=4 ttl=63 time=308 ms 16 bytes from aaaa::212:7404:4:404: icmp_seq=5 ttl=63 time=481 ms --- aaaa::212:7404:4:404 ping statistics --5 packets transmitted, 5 received, 0% packet loss, time 4005ms rtt min/avg/max/mdev = 139.917/354.555/666.296/196.464 ms Finally, tt is also possible to display the Border Router’s routing table by opening up a web page and entering the IPv6 address of the Border Router as in Figure 18. This shows a snapshot of routes established, however, these may be in a constant state of flux, especially with regard to motes on the fringes of the network. 21 Figure 18. Border Router Routing Table 22 1.5 Adjusting Objective Functions One of the key features of RPL is the use of different Objective Functions in the establishment of routes. Cooja can be manipulated to use either of MRHOF or OF0 quite easily, however, it involves careful manipulation of the source code. In order to swap between the two objective functions the following instructions must be followed. /home/user/contiki/core/net/rpl Change Makefile.rpl as follows: CONTIKI_SOURCEFILES += rpl.c rpl-dag.c rpl-icmp6.c rpl-timers.c \ rpl-mrhof.c rpl-ext-header.c This should be left unchanged to use MRHOF or changed to rpl-of0.c in the event that Objective Function Zero is to be used. Change rpl-conf.h as follows: /* * The objective function used by RPL is configurable through the * RPL_CONF_OF parameter. This should be defined to be the name of an * rpl_of object linked into the system image, e.g., rpl_of0. */ #ifdef RPL_CONF_OF #define RPL_OF RPL_CONF_OF #else /* ETX is the default objective function. */ #define RPL_OF rpl_mrhof #endif /* RPL_CONF_OF */ This should be left unchanged to use MRHOF or changed to rpl-of0.c in the event that Objective Function Zero is to be used. As you will no doubt be aware, the use of MRHOF brings the possibility of many different metrics. When using MRHOF in Cooja the metric will default to ETX unless the Metric Container is changed. 23 Currently, the only alternative to ETX available in Cooja is the Energy metric. To utilise this, change rpl-conf.h as follows: /* * Select routing metric supported at runtime. This must be a valid * DAG Metric Container Object Type (see below). Currently, we only * support RPL_DAG_MC_ETX and RPL_DAG_MC_ENERGY. * When MRHOF (RFC6719) is used with ETX, no metric container must * be used; instead the rank carries ETX directly. */ #ifdef RPL_CONF_DAG_MC #define RPL_DAG_MC RPL_CONF_DAG_MC #else #define RPL_DAG_MC RPL_DAG_MC_NONE #endif /* RPL_CONF_DAG_MC */ /* This should be left unchanged if ETX is to be used. In the event that the Energy metric is to be used this should be changed to RPL_DAG_MC_ENERGY. 24 References [1] Contiki, “Contiki: The Open Source Operating System for the Internet of Things,” 2015. [Online]. Available: http://www.contiki-os.org/. [Accessed: 09-Nov-2015]. [2] VMware, “VMware Virtualization for Desktop & Server, Application, Public & Hybrid Clouds,” 2016. [Online]. Available: http://www.vmware.com/uk. [Accessed: 19-Feb-2016]. [3] A. Sehgal, “Using the Contiki Cooja Simulator,” Jacobs University Bremen, 2013. [Online]. Available: http://cnds.eecs.jacobs-university.de/courses/iotlab-2013/cooja.pdf. [Accessed: 15Feb-2016]. 25 View publication stats
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.4 Linearized : No Language : en-GB Tagged PDF : Yes XMP Toolkit : Adobe XMP Core 5.6-c015 84.158975, 2016/02/13-02:40:29 Producer : Microsoft® Word 2013 Format : application/pdf Creator : Craig Thomson Creator Tool : Microsoft® Word 2013 Create Date : 2016:06:30 10:43:09+01:00 Modify Date : 2016:06:30 11:38:59+01:00 Metadata Date : 2016:06:30 11:38:59+01:00 Document ID : uuid:6D473055-1C98-4647-BD85-16BE05DF35AB Instance ID : uuid:2c79c075-f86f-4a1c-99f5-79e7a9ad0e1b Part : 1 Conformance : A Page Count : 26 Author : Craig Thomson Rgid : PB:304572240_AS:378630669651968@1467283994197EXIF Metadata provided by EXIF.tools