Simulators for Sensor Networks

Download Report

Transcript Simulators for Sensor Networks

Simulators for Sensor
Networks
Sagnik Bhattacharya
9/12/2001
Overview
•
•
•
•
•
•
What we need?
How much effort should we put?
Some existing network simulators.
SensorSim.
NS-2 primer.
NS-2 issues and conclusion.
-The first 90% of project takes 90% of the time, the last 10% takes
the other 90% of the time.
What we want?
• It should perform simulations of our
algorithms. (obviously)
• It should have models for wireless
transmissions and battery models.
• It should be extremely scalable.
• It should be efficient for large simulations.
• There should be technical support.
-A bug in the code is worth two in the documentation.
How much effort should we
put in?
• Build battery and wireless models?
(Preferably no)
• Implement routing?
• How much learning is involved?
• Change basic modules or just add our own
modules?
-A computer scientist is someone who fixes things that aren't
broken.
JavaSim
• Pros
– Very modular
– Easy to use
• Cons
– Geared for wired internetworks
– No wireless support
-All computers wait at the same speed.
GlomoSim
• Specific for mobile wireless networks.
• Built as a set of libraries. The libraries are
built in Parsec( a C-based discrete event
simulation language).
• Layered architecture with easy plug-in
capability.
-Any program that runs right is obsolete.
GloMoSim Library
Data Plane
Application Processing
Modular, extensible library for
network models
Model each layer using
abstract or detailed model
Built-in statistics collection at
each layer
RTP Wrapper
TCP, UDP, RSVP
IP
OSPF, AODV, …
Packet Store/Forward
Cons :
Fixed protocol layers.
Transport
IP
Network
IEEE 802.11, 802.3, …
Link Layer
MAC Layer
EPLRS, WaveLAN, ...
Radio
Free space, TIREM
-Windows is NOT a virus. Viruses DO something.
Application
Propagation
model
NS - 2
•
•
•
•
•
De facto standard for network simulations
Discrete Event Simulator
Packet-level
Wired and Wireless
Size : (Current release adds around 10%)
•
•
•
•
100K lines of C++
70K lines of OTcl
30K lines of test suites
20K lines of documentation
-A program is never finished until the programmer dies.
NS Architecture
• Object-oriented (C++, OTcl)
• Scalability + Extensibility
– Control/”data” separation
– Split C++/OTcl object
• Modular approach
– Fine-grained object composition
– Reusability
-You are making progress if each mistake is a new one.
C++ and OTcl Separation
• C++ for “data”
– Per packet action
• OTcl for control
– Periodic or triggered action
+ Compromise between composibility and
speed
– Learning and debugging
-To err is human, but to really foul things up requires a computer.
OTcl and C++: The Duality
Pure OTcl
objects
Pure C++
objects
C++/OTcl split objects
C++
OTcl
ns
-There were computers in Biblical times. Eve had an Apple.
SensorSim
• Extension to NS - 2.
• Provides battery models, radio
propagation models and sensor channel
models.
• Provides a lightweight protocol stack.
• Has support for hybrid simulation.
• To be integrated with NS - 2.
-There can never be a computer language in which you cannot
write a bad program.
SensorSim Architecture
app
monitor and control
hybrid network
(local or remote)
real sensor apps on
virtual sensor nodes
app
GUI
app
socket
comm
GUI Interface
HS Interface
V
RS232
Ethernet
gateway
V
V
ns
serial
comm
R
V
R
Gateway Machine
modified event scheduler
Simulation Machine
Proxies for real
sensor nodes
Sensor Node Model in SensorSim
Node Function Model
Micro Sensor Node
Applications
Power Model
Middleware
Network
Protocol Stack
Sensor
Protocol Stack
Network Layer
Sensor Layer
MAC Layer
Physical Layer
Physical Layer
Wireless Channel
State
Change
(Energy Consumers and Providers)
Radio Model
CPU Model
Status
Check
Battery
Model
Sensor #1 Model
Sensor #2 Model
Sensor Channel
-There are two ways to write error-free programs; only the third
one works.
Power Management Model
BZR event
BZR
event
Transmit
Off
BZR event
BZR
event
Transmit
BZR
event
transmit
Idle
Off
Receive
transmit BZR event Receive
transmit
done
Idle
transmit
receive
done
receive
done
timeout
transmit
done
Sleep
Without Power Management
receive
timeout(3 sec)
With Power Management
-The program is absolutely right; therefore the computer must be
wrong.
SensorSim Problems
• Still at pre-release stage.
• No Documentation.
• The software currently has a very
specific application hard-coded.
• It caters to only one base station.
-The definition of an upgrade: Take old bugs out, put new ones in.
NS-2 primer
-Reference Manual: Object that raises the monitor to eye level.
Also used to compensate for that short table leg.
Hello World - Interactive
Mode
<prompt> % ns
% set ns [new Simulator]
_o3
% $ns at 1 “puts \“Hello World!\””
1
% $ns at 1.5 “exit”
2
% $ns run
Hello World!
<prompt> 72%
-One person's error is another person's data.
Hello World - Batch Mode
simple.tcl
set
$ns
$ns
$ns
ns [new Simulator]
at 1 “puts \“Hello World!\””
at 1.5 “exit”
run
74% ns simple.tcl
Hello World!
<prompt> 75%
<prompt>
-Maintenance-free: When it breaks, it can't be fixed...
Basic tcl
set a 43
set b 27
proc test { a b } {
set c [expr $a + $b]
set d [expr [expr $a - $b] * $c]
for {set k 0} {$k < 10} {incr k} {
if {$k < 5} {
puts “k < 5, pow = [expr pow($d, $k)]”
} else {
puts “k >= 5, mod = [expr $d % $k]”
}
}
}
test 43 27
-MACINTOSH stands for Most Applications Crash If Not The
Operating System Hangs.
Basic OTcl
Class Mom
Mom instproc greet {} {
$self instvar age_
puts “$age_ years old
mom: How are you
doing?”
}
set mom [new Mom]
$mom set age_ 45
set kid [new Kid]
$kid set age_ 15
$mom greet
$kid greet
Class Kid -superclass Mom
Kid instproc greet {} {
$self instvar age_
puts “$age_ years old
kid: What’s up, dude?”
}
-It works! Now if only I could remember what I did...
Elements of ns-2
•
•
•
•
•
•
•
•
Create the event scheduler
[Turn on tracing]
Create network
Setup routing
Create transport connection
Create traffic / Schedule events
Transmit application-level data
Start simulation
-It is easier to write an incorrect program than understand a
correct one.
Wireless simulation in NS-2
• Very different from wired simulation.
• Central object called GOD(General
Operations Director) contains global
state information.
• Nodes are inherently mobile.
-I finally made my stupid computer faster; I dropped it out of the
window, and it went really fast.
An Example – Step 1
# Define Global Variables
# create simulator
set ns [new Simulator]
# define traces
set tracefd [open simple.tr w]
$ns_ trace-all $tracefd
# create a topology in a 100m x 100m area
set topo [new Topography]
$topo load_flatgrid 100 100
-If at first you don't succeed, call it version 1.0.
An Example – Step 2
# Create God
create-god $val(nn)
# Create channel
set chan_1_ [new $val(chan)]
-For any problem there is a solution that is simple, quick, and
ultimately worse than the problem.
An Example – Step 3
$ns_ node-config -adhocRouting $val(rp) \
-llType $val(ll) \
-macType $val(mac) \
-ifqType $val(ifq) \
-ifqLen $val(ifqlen) \
-antType $val(ant) \
-propType $val(prop) \
-phyType $val(netif) \
-channel $chan_1_ \
-topoInstance $topo \
-agentTrace ON \
-routerTrace ON \
-macTrace OFF \
-movementTrace OFF
-energyModel "EnergyModel" \
-initialEnergy $val(initialenergy) \
-rxPower $val(receivepower) \
-txPower $val(transmitpower) \
-idlePower $val(idlepower)
\
-Excuse me for butting in, but I'm interrupt-driven.
An Example – Step 4
# Generating nodes
for {set i 0} {$i < $val(nn) } {incr i} {
set node_($i) [$ns_ node]
}
# Provide initial
for mobilenodes
$node_(0) set X_
$node_(0) set Y_
$node_(0) set Z_
$node_(1) set X_
:
:
(X,Y, for now Z=0) co-ordinates
94.85
12.75
0.0
60.79
-Computers can figure out all kinds of problems, except the things
in the world that just don't add up.
An Example – Step 5
#Create two ping agents and attach them
to the nodes n0 and n2
set p0 [new Agent/Ping]
$ns attach-agent $n0 $p0
set p1 [new Agent/Ping]
$ns attach-agent $n2 $p1
#Connect the two agents
$ns connect $p0 $p1
-Computer Science is no more about computers than astronomy is
about telescopes.
E. W. Dijkstra
An Example – Step 6
#Schedule events
$ns_ at 100.0 "puts \"hell-O\" "
$ns_ at 10.2 "$p0 send"
$ns_ at 10.4 "$p1 send"
:
:
#Run the Simulation
puts "Starting Simulation..."
$ns_ run
-Build a system that even a fool can use, and only a fool will use it.
Ping Protocol
• Check out the handout.
• To add a new protocol :
– Define packet header (PT_PING)
– Define new agent class as a subclass of
Agent in header file (ping.h)
– Implement at least the following functions:
• int command ( int argc, const char*const* argc)
• void recv ( Packet * pkt, Handler* h)
-To err is human, but to really foul things up requires a computer.
NS - 2 (contd.)
• Cons :
– Comparatively difficult to learn and use.
– Supposedly more useful for getting statistics
for lower level protocols.
– Originally built for wired networks, later
extended for wireless.
– Supposedly, does not work well for large
topologies.
-To err is human--and to blame it on a computer is even more so.
NS-2 problems and
workarounds
• Large memory footprint
100 nodes
1000 nodes
23MB
412 MB
• Solutions :
– Turn off tracing
-routerTrace OFF \
-macTrace OFF \
– Remove packet headers
remove-all-packet-headers
add-packet-header DSDV Agent/Ping Mac/802_11
-Bug? That's not a bug, that's a feature.
Scalability of NS-2
• Maximum number of nodes depends
upon the traffic.
• Should be able to up to 500 nodes with
reasonable(?) traffic.
• Running time?
-Every time I type 'win', I loose ...
To use NS…..
•
•
•
•
Don’t worry about Otcl. Its easy..
Forget about Nam traces.
Join the ns-user mailing list.
Get started as soon as possible…. learning to
use and modify it can take time.
• Just adding new protocols might not do. Some
internal changes might need to be made.
-A user friendly computer first requires a friendly user.
Conclusion
• Use SensorSim if you can.
• NS-2 can be used for simulation of the
order of hundreds of nodes…. Not
possible with motes.
• Can build more advanced protocols, for
future motes which might have more
memory.
-ASCII stupid question, get a stupid ANSI!
URL’s
• This presentation:
http://www.cs.virginia.edu/~sb2jb/research/ns
• NS-2 home:
http://www.isi.edu/nsnam/ns
-Every bug you find is the last one.
Questions?
-Computer Science: solving today's problems tomorrow.