omnet-tutorial - edited
Download
Report
Transcript omnet-tutorial - edited
Introduction
1
A Simulator
Modular (Component-based)
Open-architecture
For Discrete Event Networks
Various simulation models and frameworks
For Specific Application Areas
Mostly Open Source
Developed Independently of OMNeT++
3
Simulation Frameworks Based on OMNeT++:
Mobility Framework
Mobile & Wireless Simulations
INET Framework
Wired & Wireless TCP/IP Based Simulations
Castalia
Wireless Sensor Networks
MiXiM
Mobile & Wireless Simulations
OverSim
Overlay and Peer-to-Peer Networks (INET-based)
NesCT
OS simulations
Consensus Positif and MAC Simulator
for sensor networks
CDNSim
content distribution networks, youtube
PAWiS
Power Aware Wireless Sensor Networks Simulation
Framework
Other:
FIELDBUS, ACID SimTools, X-Simulator
5
Flexibility
Programming model
Model management
Debugging, tracing, and experiment specifications
Simulation Modes
6
Core framework for discrete event simulation.
Different add-ons for specific purposes.
Fully implemented in C++.
Functionality added by deriving classes following
specified rules.
7
Simulated objects are represented by modules
• Simple or Compound
• Communicate by messages (directly or via gates)
• Consists of
• Interface description (.NED file)
• Behavior description (C++ class)
Modules, gates and links can be created:
• Statically - at the beginning of the simulation (NED file)
• Dynamically – during the simulation
Clear separation among simulation kernel and
developed models.
Easiness of packaging developed modules for reuse.
No need for patching the simulation kernel to install a
model.
Build models and combine
like KOONESAZI blocks
9
Supports
Recording data vectors and scalars in output files
Random numbers with several distributions and
different starting seeds
displaying info about the module’s activity, snapshots,
breakpoints
Easy to configure using .ini file
Batch execution of the same simulation for
different parameters is also included
Command line
Interactive GUI
Tcl/Tk windowing, allows view what’s
happening and modify parameters at
run-time.
11
The topology of a model is specified using the NED
language.
Edit it with GNED or other text editor.
Import directives
Channel definitions
Simple and compound module definitions
Network definitions
import "ethernet"; // imports ethernet.ned
import
"Router",
"StandardHost",
"FlatNetworkConfigurator";
channel LeasedLine
delay 0.0018 // sec
error 1e-8
datarate 128000 // bit/sec
endchannel
simple TrafficGen
Application Layer
parameters:
interarrivalTime,
TrafficGen
numOfMessages : const,
address : string;
MAC Layer
gates:
in: fromPort, fromHigherLayer;
out: toPort, toHigherLayer;
endsimple
module CompoundModule
parameters: //...
gates: //...
submodules: //...
connections: //...
endmodule
module CompoundModule
//...
submodules:
submodule1: ModuleType1
parameters: //...
gatesizes: //...
submodule2: ModuleType2
parameters: //...
gatesizes: //...
endmodule
module CompoundModule
parameters:
param1: numeric,
param2: numeric,
useParam1: bool;
submodules:
submodule1: Node
parameters:
p1 = 10,
p2 = param1+param2,
p3 = useParam1==true ? param1 : param2;
//...
endmodule
module CompoundModule
parameters: //...
gates: //...
submodules: //...
connections:
node1.output --> node2.input;
node1.input <-- node2.output;
//...
endmodule
network wirelessLAN: WirelessLAN parameters:
numUsers=10, httpTraffic=true, ftpTraffic=true,
distanceFromHub=truncnormal(100,60);
endnetwork
//
// Ethernet Modeling//
simple EtherMAC {
parameters: string address; // others omitted for brevity
gates:
input phyIn;
// to physical layer or the network
output phyOut; // to physical layer or the network
input llcIn;
// to EtherLLC or higher layer
output llcOut; // to EtherLLC or higher layer
}
//
// Host with an Ethernet interface
//
module EtherStation {
parameters: ...
gates: ...
input in; // connect to switch/hub,
etc
output out;
submodules:
network EtherLAN {
app: EtherTrafficGen;
submodules: EtherStation;
llc: EtherLLC;
…
mac: EtherMAC;
}
connections:
app.out --> llc.hlIn;
app.in <-- llc.hlOut;
llc.macIn <-- mac.llcOut;
llc.macOout --> mac.llcIn;
mac.phyIn <-- in;
mac.phyOut --> out;
}
To run the executable, you need
an omnetpp.ini file.
[General]
network = etherLAN
*.numStations = 20
**.frameLength = normal(200,1400)
**.station[0].numFramesToSend = 5000
**.station[1-5].numFramesToSend = 1000
**.station[*].numFramesToSend = 0
NED files define the topology of network/modules
A part of the model description
Ini files define
Simulation parameters
Results to collect
Random seeds
This separation allows to change parameters without
modifying the model
E.g. no need to recompile, experiments can be executed
as a batch
Add behavior
for (int i=0;i<10;i++) {
}
...
[General]
network=test_disk
Analyze
Run
[Parameters]
...
Set up parameters
Model
structure
Compile
26
Network
description
nedtool
compiler
Generated C++
code
Module
behavior C++
code
C++ compiler
C++ compiler
Linker
Simulation
program
Simulation
kernel
libraries
User
interface
libraries
The capability to record simulation results
by explicitly programming into the simple modules
Output Vector
omnetpp.vec
Output Scalar Files
omnetpp.sca
Series of pairs timestamp, value
Can store:
queue length over time
end-to-end delay of received packets
packet drops or channel throughput
…
Can be configured from omnetpp.ini
Enable or disable recording individual output vectors
Limit recording to a certain simulation time interval
Capture behaviour over time
29
Contain summary statistics
number of packets sent
number of packet drops
average end-to-end delay of received packets
peak throughput
…
30
Installation
33