25
1 TOSSIM Răzvan Musăloiu-E.

1 TOSSIM Răzvan Musăloiu-E.. 2 What is TOSSIM? Discrete event simulator ns2

Embed Size (px)

Citation preview

Page 1: 1 TOSSIM Răzvan Musăloiu-E.. 2 What is TOSSIM? Discrete event simulator ns2

1

TOSSIMRăzvan Musăloiu-E.

Page 2: 1 TOSSIM Răzvan Musăloiu-E.. 2 What is TOSSIM? Discrete event simulator ns2

2

What is TOSSIM?

Discrete event simulatorns2

Page 3: 1 TOSSIM Răzvan Musăloiu-E.. 2 What is TOSSIM? Discrete event simulator ns2

3

Cycle-accurate simulatorsAvrora, MSPSim

Alternatives

Page 4: 1 TOSSIM Răzvan Musăloiu-E.. 2 What is TOSSIM? Discrete event simulator ns2

4

Two directions

Portmake PC a supported platform

Virtualizesimulate one of the supported platforms

4

TOSSIMin tinyos-2.x

TOSSIMin tinyos-1.x

Page 5: 1 TOSSIM Răzvan Musăloiu-E.. 2 What is TOSSIM? Discrete event simulator ns2

5

Features

• Simulates a MicaZ mote–ATmega128L (128KB ROM, 4KB RAM)

–CC2420• Uses CPM to model the radio noise

• Supports two programming interfaces:–Python–C++

Page 6: 1 TOSSIM Răzvan Musăloiu-E.. 2 What is TOSSIM? Discrete event simulator ns2

6

Anatomy

6

TOSSIM

tos/lib/tossimtos/chips/atm128/simtos/chips/atm128/pins/simtos/chips/atm128/timer/simtos/chips/atm128/spi/simtos/platforms/mica/simtos/platforms/micaz/simtos/platforms/micaz/chips/cc2420/sim

Application

Makefile*.nc*.h

Simulation Driver

*.py | *.cc

Page 7: 1 TOSSIM Răzvan Musăloiu-E.. 2 What is TOSSIM? Discrete event simulator ns2

7

Quick Overview

7

NesC

Glue

Python

C++

Application Simulation

Page 8: 1 TOSSIM Răzvan Musăloiu-E.. 2 What is TOSSIM? Discrete event simulator ns2

8

The Building Process

$ make micaz sim

1.Generate an XML schema

2.Compile the application

3.Compile the Python support

4.Build a share object

5.Copying the Python support

$ ./sim.py

8

pytossim.o tossim.o

c-support.o

sim.o

app.xml

_TOSSIMmodule.o

TOSSIM.py

Page 9: 1 TOSSIM Răzvan Musăloiu-E.. 2 What is TOSSIM? Discrete event simulator ns2

9

TOSSIM.py

Tossim

Radio

Mote

Packet

Mac

9

Page 10: 1 TOSSIM Răzvan Musăloiu-E.. 2 What is TOSSIM? Discrete event simulator ns2

10

TOSSIM.Tossim

.getNode() → TOSSIM.Mote

.radio() → TOSSIM.Radio

.newPacket() → TOSSIM.Packet

.mac() → TOSSIM.Mac

.runNextEvent()

.ticksPerSecond()

.time()

10

Page 11: 1 TOSSIM Răzvan Musăloiu-E.. 2 What is TOSSIM? Discrete event simulator ns2

11

10 seconds

from TOSSIM import *

t = Tossim([])

...

while t.time() < 10*t.ticksPerSecond():

t.runNextEvent()

11

Page 12: 1 TOSSIM Răzvan Musăloiu-E.. 2 What is TOSSIM? Discrete event simulator ns2

12

dbg

Syntaxdbg(tag, format, arg1, arg2, ...);

Exampledbg(“Trickle”, “Starting time with time

%u.\n”, timerVal);

Pythont = Tossim([])t.addChannel(“Trickle”, sys.stdout)

12

Page 13: 1 TOSSIM Răzvan Musăloiu-E.. 2 What is TOSSIM? Discrete event simulator ns2

13

Useful Functions

13

char* sim_time_string()

sim_time_t

sim_time()

int sim_random()

sim_time_t

sim_ticks_per_sec()

typedef long long int sim_time_t;

Page 14: 1 TOSSIM Răzvan Musăloiu-E.. 2 What is TOSSIM? Discrete event simulator ns2

14

Radio Model

14

Closest-fit Pattern Matching (CPM)

Improving Wireless Simulation Through Noise ModelingHyungJune Lee, Alberto Cerpa, and Philip Levis

IPSN 2007

Page 15: 1 TOSSIM Răzvan Musăloiu-E.. 2 What is TOSSIM? Discrete event simulator ns2

15

Radio Model

15

Sender

Receiver

Page 16: 1 TOSSIM Răzvan Musăloiu-E.. 2 What is TOSSIM? Discrete event simulator ns2

16

Noise Level

16

Meyer Heavy Casino Lab

Signal

SNRSNR

Page 17: 1 TOSSIM Răzvan Musăloiu-E.. 2 What is TOSSIM? Discrete event simulator ns2

17

CC2420 SNR/PRR

17

Page 18: 1 TOSSIM Răzvan Musăloiu-E.. 2 What is TOSSIM? Discrete event simulator ns2

18

TOSSIM.Radio

.add(source, destination, gain)

.connected(source, destination) → True/False

.gain(source, destination)

18

Page 19: 1 TOSSIM Răzvan Musăloiu-E.. 2 What is TOSSIM? Discrete event simulator ns2

19

TOSSIM.Mote

.bootAtTime(time)

.addNoiseTraceReading(noise)

.createNoiseModel()

.isOn() → True/False

.turnOn()/.turnOff()

19

Page 20: 1 TOSSIM Răzvan Musăloiu-E.. 2 What is TOSSIM? Discrete event simulator ns2

20

Example

20

0 1

2

-50 dB

-10 dB

from TOSSIM import *

t = Tossim([])

r = t.Radio()

mote0 = t.getNode(0)

mote1 = t.getNode(1)

mote2 = t.getNode(2)

r.add(0, 1, -10)

r.add(1, 0, -10)

r.add(1, 2, -50)

r.add(2, 1, -50)

Page 21: 1 TOSSIM Răzvan Musăloiu-E.. 2 What is TOSSIM? Discrete event simulator ns2

21

Example (cont)

21

0 1

2

-50 dB

-10 dB

noise = file("meyer-short.txt")

lines = noise.readlines()

for line in lines:

str = line.strip()

if (str != ""):

val = int(str)

for m in [mote0, mote1, mote2]:

m.addNoiseTraceReading(val)

for m in [mote0, mote1, mote2]:

m.createNoiseModel()

Page 22: 1 TOSSIM Răzvan Musăloiu-E.. 2 What is TOSSIM? Discrete event simulator ns2

22

Other Features

• Injecting packets

• Inspecting internal variables

• C++ interface

• Debuging using gdb

22

Page 23: 1 TOSSIM Răzvan Musăloiu-E.. 2 What is TOSSIM? Discrete event simulator ns2

23

Improvements

• TossimLive–SerialActiveMessageC

• CC2420sim–Multiple channels–PacketLink–CC2420Packet: .getRSSI(), .getLQI()

–ReadRssi()–Flash support

23

Page 24: 1 TOSSIM Răzvan Musăloiu-E.. 2 What is TOSSIM? Discrete event simulator ns2

24

Future

Parametrized the PRR/SNR curve based on packet size

(in progress)

Support for multiple binary images (harder)

24

Page 25: 1 TOSSIM Răzvan Musăloiu-E.. 2 What is TOSSIM? Discrete event simulator ns2

2525

NextSafe TinyOS