Marco Di Felice NS2: An Overview Marco Di Felice Network Modeling and Simulation with Network Simulator 2 (ns2) Department of Computer Science and Engineering University of Bologna. Italy [email protected]
Marco Di Felice NS2: An Overview
Marco Di Felice
Network Modeling and Simulation with Network Simulator 2 (ns2)
Department of Computer Science and Engineering
University of Bologna. Italy
Marco Di Felice NS2: An Overview
Outline
NS2: Architecture and Design
NS2: Use Cases and Features
NS2: Building simple network models
NS2: Demo & Analysis
Marco Di Felice NS2: An Overview
Ns2: An Overview
NS2: A (discrete event) network simulator tool.
Generally speaking, a network simulator is a dedicated software that allows to:
Ø Model the behaviour of network protocols/applications (e.g. TCP protocol).
Ø Reproduce the behaviour of a computer network as a whole (e.g. a wireless LAN).
Ø Quantify the network performance, through well-defined network metrics (e.g. system throughput).
Marco Di Felice NS2: An Overview
Ns2: WHAT
Q. When may I use a network simulator?
Case 1: Network planning
Ø Need to build a network infrastructure, with coverage and Quality of Service (QoS) issues.
Q1. Where to place the network gateways?
Q2. How many gateways do I really need?
Marco Di Felice NS2: An Overview
Ns2: WHAT
Q. When may I use a network simulator?
Case 2: Network Evaluation
Ø Need to evaluate the performance of a (possibly large-scale) network infrastructure or network application.
Ø Use an existing testbed à BUT …
Q2. Are the experiments easily reproducible?
Q1. What is the cost of setting up the experiments?
An example: Early Collision Detection Systems In VANETs
Marco Di Felice NS2: An Overview
Ns2: WHAT
Q. When may I use a network simulator?
Case 3: Research on Networking Systems
Ø Need to evaluate the performance of a new network protocol, architecture, or application.
2. Analytical models might be too complex to model all the components of the scenario under study.
1. A real deployment might not be feasible, or might be too costly.
An example: Proposing a new TCP variant for wireless LANs.
Marco Di Felice NS2: An Overview
Ns2: WHAT
Ø Network simulators might be used to model several kinds of networking systems (wired, wireless, optical, etc).
Ø In practice, simulation constitutes the main evaluation technique for wireless systems.
² Possibility to build reproducible experiments (hard to guarantee with wireless testbeds).
² Possibility to reproduce wireless propagation phenomena in an accurate way through probabilistic models (e.g. fading)
² Possibility to model large-scale wireless networks composed by several interacting nodes.
Marco Di Felice NS2: An Overview
Ns2: WHAT
Ø Simulation is a meaningful evaluation approach only when it produces “trustable” results.
Ø Validation is needed to certify that the simulation models reproduce correctly the characteristics and dynamics of the system under study.
Ø HOW to VALIDATE a NETWORK MODEL?
² Compare Simulation vs Analytical Model
² Compare Simulation vs Real Measurements
SIM. THROUGPUT
Θ(1 / n ⋅ logn)ANALYTICAL EXPERIMENTS
Marco Di Felice NS2: An Overview
Ns2: WHAT
NS2: A network simulation tool
Ø Discrete Event simulator (details later …)
NS2 allows to model and evaluate several IP networking systems (LAN/WAN). It includes:
² Network protocols model (e.g. MAC, routing, …)
² Network applications model (e.g. CBR, FTP, …)
² Queue management algorithms (e.g. FIFO, RED, …)
² Network link models (e.g. lossy link) ² …
Marco Di Felice NS2: An Overview
Ns2: WHERE
v http://www.isi.edu/nsnam/ns
v http://sourceforge.net/projects/nsnam
Ø download ns-allinone
Ø includes several tools (ns2, nam, awk, otcl, …)
v mailing list: [email protected]
v documentation:
Ø Reference manual and Tutorials on the website
Ø Other tutorials on the Web
Marco Di Felice NS2: An Overview
Ns2: WHEN
v The project started from REAL project in 1989 Ø ns-1 by Floyd and McCanne at Lawrance Berkeley National Laboratory (LBNL).
Ø ns-2 by Steve McCanne, within the VINT project involving a consortium of US universities (LBL, PARC,USC, ...)
Ø currently maintained at USC/ISI (University of Southern California), but several forks available.
v NS3 relased in 2008 (now NS3.25) Ø Deployed by a team lead by Tom Henderson and Sally Floyd (University of Washington)
Ø A completely new tool, not a mere extension of Ns2 !
Marco Di Felice NS2: An Overview
Ns2: WHY
NS2: A network simulation tool
Ø Discrete Event simulator (details later …)
² OMNET++ ² OPNET ² JiST ² NS3 ² GLOMOSIM ² …
OTHER SIMULATION TOOLS
Q. WHY should I use NS2 for my research?
Marco Di Felice NS2: An Overview
Ns2: WHY
MAC Layer
Network Layer
Transport Layer
Application Layer
Ethernet, 802.11 (WIFI), 802.15.4, Bluetooth, 802.16 (WIMAX), …
Wired routing (RIP), Ad Hoc Routing (AODV, OLSR, DSR), …
UDP, TCP (Reno, NewReno, Vegas, SACK), …
FTP, Telnet, HTTP, Multimedia, Exponential traffic, …
Link Models:
Ø Wired Links, Ø Wireless Links, Ø Satellite Links, …
Ø NS2 includes a vast model library of network components.
Marco Di Felice NS2: An Overview
Ns2: WHY
v Collaborative deployment environment
Ø possibility to freely modify the existing NS2 code based on each user’s needs.
Ø possibility to share network models for research/education purposes (e.g. a new implementation of TCP).
Ø possibility to compare his/her own model with models implemented by other research teams.
v Multi-platform support Ø GNU/Linux, MAC OSX, Solaris, Windows, …
Ø NS2 is distributed with GNU General Public Licence (GPL)
Marco Di Felice NS2: An Overview
Ns2: WHY
MOBIHOC Conference: Statistics on tools used to produce a simulation study within the papers submitted at the ACM MOBIHOC conference (2000-2006).
Number of Users: 10K
Institutes: 1K
% Papers: 44.4%
Ø NS2 is a popular tool, widely adopted by researchers working on the field of computer networks.
Marco Di Felice NS2: An Overview
Ns2: WHY
Q. WHY NOT to use NS2 for my research?
Ø Performance issues ² Monolithic (basic) scheduler,
scalability constitutes a big issue. Ø Architectural issues
² Not really a modular architecture, difficult to share the code of network models.
Ø Evaluation issues
² No support for the trace analysis.
#nodes
CP
U ti
me
?
NS2 TRACE
Marco Di Felice NS2: An Overview
NS2: HOW
Ø OTCL for simulation setup and execution Ø Quickly define the simulation environment
Ø C++ for model deployment Ø Implement the behaviour of a network component
Ø Two programming languages: C++ and OTCL.
Marco Di Felice NS2: An Overview
NS2: HOW
Ø The core of the NS2 simulator is the Scheduler
² Discrete-event scheduler. ² Basic implementation, few optimization.
Event in NS2 ID TYPE TIME HANDLER
Timer Events
Packet Events
NS2 Object + function name
that should be invoked once the
event is fired.
Simulation time of the event
Packet sent
Packet received
Packet dropped
Marco Di Felice NS2: An Overview
NS2: HOW
Ø The Scheduler manages the simulation event list.
² The elements are the events of the simulation. ² The list is ordered on the basis of the time field.
E1 E2 E3 E4 E5 E6 SIMULATION
TIME: t
At each simulation step: 1. The head element of the list is removed 2. The simulation time is set to E1.time 3. The event handler (E1.handler) is executed.
1 TYPE TIME HANDLER
SIMULATION TIME: E1.time
Marco Di Felice NS2: An Overview
NS2: HOW
Ø The Scheduler manages the simulation event list.
² The elements are the events of the simulation. ² The list is ordered on the basis of the time field.
E2 E3 E4 E5 E6 E7 SIMULATION
TIME: t
At each simulation step:
Ø E1.handler is executed, and it might generate new events (e.g. E7), that are inserted into the event list (at a position denoted by E7.time)
SIMULATION TIME: E1.time
E1.HANDLER
Marco Di Felice NS2: An Overview
NS2: HOW
Ø Let’s make an example on a network scenario …
NODE A NODE B
APPLICATION
MAC
APPLICATION
MAC ETHERNET LINK
SIMULATION TIME: 0
EVENT LIST
Ø At t=0, the Application module of node A is invoked
Marco Di Felice NS2: An Overview
NS2: HOW
Ø Let’s make an example on a network scenario …
NODE A NODE B
APPLICATION
MAC
APPLICATION
MAC ETHERNET LINK
SIMULATION TIME: 0
EVENT LIST
Ø A timer event is scheduled at time 4 by node A
1 Send 4 A.APPLICATION
E1
Marco Di Felice NS2: An Overview
NS2: HOW
Ø Let’s make an example on a network scenario …
NODE A NODE B
APPLICATION
MAC
APPLICATION
MAC ETHERNET LINK
SIMULATION TIME: 4
EVENT LIST 2 Recv 4.5 A.MAC
E2 E3
3 Send 8 A.APPLICATION
Marco Di Felice NS2: An Overview
NS2: HOW
Ø Let’s make an example on a network scenario …
NODE A NODE B
APPLICATION
MAC
APPLICATION
MAC ETHERNET LINK
SIMULATION TIME: 4.5
EVENT LIST 4 Recv 5.0 B.MAC
E4 E3
3 Send 8 A.APPLICATION
Marco Di Felice NS2: An Overview
NS2: HOW
Ø Let’s make an example on a network scenario …
NODE A NODE B
APPLICATION
MAC
APPLICATION
MAC ETHERNET LINK
SIMULATION TIME: 5
EVENT LIST 5 Recv 5.2 B.APPLICATION
E5 E3
3 Send 8 A.APPLICATION
Marco Di Felice NS2: An Overview
NS2: HOW
Ø Let’s make an example on a network scenario …
NODE A NODE B
APPLICATION
MAC
APPLICATION
MAC ETHERNET LINK
SIMULATION TIME: 5.2
EVENT LIST
E3
3 Send 8 A.APPLICATION
Ø The message is processed by Node B at time 5.2
Marco Di Felice NS2: An Overview
Ns2: HOW
v Two ways of interactions: Ø Modify/Create a new network model
- Network models: network protocols, applications, queue policies, network architecture models, etc.
- Coding in C++
- Recompile at the end.
Ø Configure/Run a network simulation
- Coding in OTCL
- Executed by an interpreter, no need to recompile.
QUITE EASY
NOT EASY
Marco Di Felice NS2: An Overview
Ns2: HOW
v Running an OTCL script:
ns script-‐file.tcl [parameters]
Ø Initialize the scheduler
Ø Define the simulation parameters (e.g. start time)
Ø Build the network topology
Ø Generate the traffic load
Ø Define the protocol stack used by each node
v OTCL à scripting language, OO-extension of TCL à
Marco Di Felice NS2: An Overview
Ns2: OTCL inside
v Assign a value to a variable set x 0
v Keyword $ returns the value of a variable set y $x
v Selection Statements if (if < expr > ... else ...) if {$x == $y } { puts “Hello world” }
v Iterative Statements
for {set i 0; $i < $x ; incr i}{puts “Hello world” }
v Function Declaration proc name_FUNCTION {par1, ...parn} {... return $x}
OTCL Overview
Marco Di Felice NS2: An Overview
Ns2: HOW
v Running an OTCL script:
ns script-‐file.tcl [parameters]
Ø Initialize the scheduler
Ø Define the simulation parameters (e.g. start time)
Ø Build the network topology
Ø Generate the traffic load
Ø Define the protocol stack used by each node
v OTCL à scripting language, OO-extension of TCL à
Marco Di Felice NS2: An Overview
Ns2: Initialize the Scheduler v Creating the Event Scheduler
set ns [new Simulator]
v Starting the simulation $ns run
v Initializing the random number generator
$ns-‐random SEED
v Scheduling the events $ns at <time> <event>
v Stopping the simulation at time 300 $ns at 300 "finish“
SEED=0 à current timestamp
All the random variable used by the current simulation are initialized with this SEED.
Marco Di Felice NS2: An Overview
Ns2: HOW
v Running an OTCL script:
ns script-‐file.tcl [parameters]
Ø Initialize the scheduler
Ø Define the simulation parameters (e.g. start time)
Ø Build the network topology
Ø Generate the traffic load
Ø Define the protocol stack used by each node
v OTCL à scripting language, OO-extension of TCL à
Marco Di Felice NS2: An Overview
Ns2: Building the network (WIRED)
v Define the nodes of the network
set n0 [$ns node] set n1 [$ns node]
v Define the Links among nodes #Nodes connected with an Ethernet cable, 10 Mb/s $ns duplex-‐link $n0 $n1 10Mb 100ms DropTail
Specifies bandwidth, delay, and queue policy: DropTail, RED, CBQ, FQ, SFQ, DRR
CASE 1. Modeling a wired network.
Marco Di Felice NS2: An Overview
Ns2: Building the network (WIRED)
v Define the error model on wired links
set loss_module [new ErrorModel] $loss_module set rate_ 0.1 $loss_module ranvar [new RandomVariable/Uniform] $loss_module drop-‐target [new Agent/Null] $ns lossmodel $loss_module $n0 $n1
Lossy link between node 0 and node 1, with
error rate equal to 0.1. Packets with errors are sent to Agent/Null, i.e. they are discarded.
CASE 1. Modeling a wired network.
Marco Di Felice NS2: An Overview
Ns2: Building the network (WIRED)
v Define the nodes of the network
set n0 [$ns node] set n1 [$ns node]
v Define the position set topograpy [new Topography]
$topography load_flatgrid 400 400
v Define the position
$n0 set X_ 300 $n0 set Y_ 400 $n0 set Z_ 0
CASE 1. Modeling a wireless network.
Set node 0 at position <300,400,0>
Set simulation area to 400mx400m
Marco Di Felice NS2: An Overview
Ns2: Building the network (WIRED)
v Define the mobility of wireless nodes
NS_OBJ at TIME “NODE setdest X_COOR Y_COOR SPEED” $ns at 10.5 “$node(0) setdest 100 100 5.0”
CASE 1. Modeling a wireless network.
At time 10.5, node 0 will move toward position (100,100) with speed equal to 5 m/s (constant speed)
v Utilize the General Object Director (GOD)
set $god [new God] Object that stores global information about the state of the environment (e.g. the matrix of connectivity among nodes)
Marco Di Felice NS2: An Overview
Ns2: Building the network (WIRED)
v The mobility traces of wireless nodes can be pre-generated by using the setdest tool (random waypoint model)
./setdest [-‐n num_of_nodes] [-‐p pausetime] [-‐maxspeed] [-‐t simtime] [-‐x][-‐y] > [fileOutput]
In the TCL script: source “fileOutput”
CASE 1. Modeling a wireless network.
v Any mobility simulator can be used for trace generation.
MOB. TRACE
MOBILITY SIMULATOR
OTCL SCRIPT
NS2
e.g. SUMO SOURCE
Marco Di Felice NS2: An Overview
Ns2: HOW
v Running an OTCL script:
ns script-‐file.tcl [parameters]
Ø Initialize the scheduler
Ø Define the simulation parameters (e.g. start time)
Ø Build the network topology
Ø Generate the traffic load
Ø Define the protocol stack used by each node
v OTCL à scripting language, OO-extension of TCL à
Marco Di Felice NS2: An Overview
Ns2: Creating connections (UDP/TCP)
v Define the end-points of the communication TCP Connections:
set src [new Agent/TCP] set dst [new Agent/TCPSink] UDP Connections:
set src [new Agent/UDP] set dst [new Agent/Null]
v Connect sender and receiver $ns attach-‐agent $n0 $src $ns attach-‐agent $n1 $dst $ns connect $src $dst
Several TCP variants:
Ø TCP Tahoe Ø TCP Reno Ø TCP NewReno Ø TCP Vegas Ø TCP SACK …
Marco Di Felice NS2: An Overview
Ns2: Attaching Applications
v Define the application and attach it to the sender FTP Agent
set ftp [new Application/FTP] $ftp attach-‐agent $src $ns at TIME “$ftp start”
CBR Agent
set cbr [new Application/Traffic/CBR] $cbr attach-‐agent $src $ns at TIME “$cbr start” Exponential Traffic Generator
set exp [new Application/Traffic/Exponential]
Marco Di Felice NS2: An Overview
Ns2: HOW
v Running an OTCL script:
ns script-‐file.tcl [parameters]
Ø Initialize the scheduler
Ø Define the simulation parameters (e.g. start time)
Ø Build the network topology
Ø Generate the traffic load
Ø Define the protocol stack used by each node
v OTCL à scripting language, OO-extension of TCL à
Marco Di Felice NS2: An Overview
Ns2: HOW
v A wireless environment can be modeled by configuring the protocol stack of each node.
$ns_ node-‐config –phyType $val(netif) -‐propType $val(prop) -‐antType $val(type) -‐llType $val(ll)
-‐macType $val(mac) -‐ifqType $val(ifq)
-‐ifqLen $val(ifqlen) -‐adhocRouting $val(rp) -‐topoInstance $topo -‐channel $chan_ PHY LAYER
ANTENNA PROPAGATION
MAC LAYER
NET LAYER QUEUE
LL LAYER
Marco Di Felice NS2: An Overview
Ns2: HOW
v A wireless environment can be modeled by configuring the protocol stack of each node.
$ns_ node-‐config –phyType $val(netif) -‐propType $val(prop) -‐antType $val(type) -‐llType $val(ll)
-‐macType $val(mac) -‐ifqType $val(ifq)
-‐ifqLen $val(ifqlen) -‐adhocRouting $val(rp) -‐topoInstance $topo -‐channel $chan_ PHY LAYER
ANTENNA PROPAGATION
MAC LAYER
NET LAYER QUEUE
LL LAYER
Marco Di Felice NS2: An Overview
Ns2: HOW
v Configuring the PHY Layer set val(netif) Phy/WirelessPhy[Ext]
² Some parameters to be tuned: Phy/WirelessPhy set Pt 2.07983391e-‐01 Phy/WirelessPhy set RXThresh 2.591168e-‐08 Phy/WirelessPhy set CSThresh 3.497734e-‐09
² Functionalities offered by the PHY Layers Ø Signal capture Ø Modulation & Bit-rate setting Ø Modeling of collision/transmission errors Ø …
Marco Di Felice NS2: An Overview
Ns2: HOW
v A wireless environment can be modeled by configuring the protocol stack of each node.
$ns_ node-‐config –phyType $val(netif) -‐propType $val(prop) -‐antType $val(type) -‐llType $val(ll)
-‐macType $val(mac) -‐ifqType $val(ifq)
-‐ifqLen $val(ifqlen) -‐adhocRouting $val(rp) -‐topoInstance $topo -‐channel $chan_ PHY LAYER
ANTENNA PROPAGATION
MAC LAYER
NET LAYER QUEUE
LL LAYER
Marco Di Felice NS2: An Overview
Ns2: HOW
v Configuring the Propagation model set val(prop) Propagation/TwoRayGround set val(prop) Propagation/FreeSpace
FREE SPACE
TWORAY
SENDER RECEIVER
v Configuring the Antenna model set val(antType) Antenna/OmniAntenna set val(antType) Antenna/Directional
DIRECTIONAL OMNIDIRECTIONAL
Marco Di Felice NS2: An Overview
v A wireless environment can be modeled by configuring the protocol stack of each node.
$ns_ node-‐config –phyType $val(netif) -‐propType $val(prop) -‐antType $val(type) -‐llType $val(ll)
-‐macType $val(mac) -‐ifqType $val(ifq)
-‐ifqLen $val(ifqlen) -‐adhocRouting $val(rp) -‐topoInstance $topo -‐channel $chan
Ns2: HOW
PHY LAYER ANTENNA PROPAGATION
MAC LAYER
NET LAYER QUEUE
LL LAYER
Marco Di Felice NS2: An Overview
Ns2: HOW
v Configuring the LL layer set val(ll) LL
v Configuring the MAC model set val(mac) Mac/802_11
Include ARP protocol
Select a MAC protocol: Ø 802.11 (Wifi) Ø 802.15.4 (Sensors) Ø 802.16 (WiMax) Ø …
v Configuring the Queue Layer set val(ifq) Queue/DropTail/PrimaryQueue set val(ifqlen) 50
Define the queue policy: Ø PrimaryQueue Ø RED Queue …
Set the queue length
Marco Di Felice NS2: An Overview
Ns2: HOW
v A wireless environment can be modeled by configuring the protocol stack of each node.
$ns_ node-‐config –phyType $val(netif) -‐propType $val(prop) -‐antType $val(type) -‐llType $val(ll)
-‐macType $val(mac) -‐ifqType $val(ifq)
-‐ifqLen $val(ifqlen) -‐adhocRouting $val(rp) -‐topoInstance $topo -‐channel $chan PHY LAYER
ANTENNA PROPAGATION
MAC LAYER
NET LAYER QUEUE
LL LAYER
Marco Di Felice NS2: An Overview
Ns2: HOW
v Configuring the routing protocol set val(adhocrouting) AODV
Select a routing protocol for multi-hop networks: Ø AODV, DSDV, DSR, TORA, ….
SOURCE
DESTINATION ROUTING PATH
Marco Di Felice NS2: An Overview
Ns2: HOW
v Two ways of interactions: Ø Modify/Create a new network model
- Network models: network protocols, applications, queue policies, network architecture models, etc.
- Coding in C++
- Recompile at the end.
Ø Configure/Run a network simulation
- Coding in OTCL
- Executed by an interpreter, no need to recompile.
QUITE EASY
NOT EASY
Marco Di Felice NS2: An Overview
Ns2: HOW
v In C++, each model extends the class NSObject.
v Each NSObject has a correspective in OTCL.
Marco Di Felice NS2: An Overview
Ns2: HOW
v When creating a new model in C++:
Ø Extend the NSObject class
Ø Create the corresponding OTCL class
Ø Implement these methods
recv(Packet* p, Handler* h) à Callback once a packet is received from the upper layer.
command(int argc, const char*const* argv) à Binding between C++ and OTCL for the parameter passing from the TCL script.
Marco Di Felice NS2: An Overview
Ns2: Simulation Output (TRACE)
v The output of the simulation is a trace file, containing the description of the events occurred during the simulation. s 10.00000 0 MAC --- 0 RTS 44 [253e 1 0 0] r 10.00041 1 MAC --- 0 RTS 44 [253e 1 0 0] s 10.00042 1 MAC --- 0 CTS 38 [2404 0 0 0] r 10.00075 0 MAC --- 0 CTS 38 [2404 0 0 0] s 10.00076 0 MAC --- 100 cbr 1112 [13a 1 0 800] r 10.00982 1 MAC --- 100 cbr 1112 [13a 1 0 800]
Simulation Time
Event Type
Node Packet
ID
Traffic type
Packet size
MAC Header
Marco Di Felice NS2: An Overview
Ns2: Simulation Output (TRACE)
v Depending on the length of the simulation, the trace file might occupy lots of bytes on the disk.
$ns_ node-‐config –agentTrace ON/OFF -‐routerTrace ON/OFF -‐macTrace ON/OFF -‐mobilityTrace ON/OFF
Configure the granularity of the tracing process …
s 10.00078 1 AGT --- 100 cbr 1112 [13a 1 0 800] s 10.00078 1 MAC --- 100 cbr 1112 [13a 1 0 800] r 10.00078 0 MAC --- 100 cbr 1112 [13a 1 0 800] r 10.00078 0 AGT --- 100 cbr 1112 [13a 1 0 800]
Marco Di Felice NS2: An Overview
Ns2: Simulation Output (NAM)
v The output of the simulation can be visualized by using the Network Animator (NAM) tool.
Marco Di Felice NS2: An Overview
Ns2: Analysis of Simulation Results
v NS2 does NOT provide any specific support for the data analysis/validation and for the computation of performance metrics (e.g. throughput, delay).
v Run multiple simulations with different seeds
v Remove the transient phase from the trace file
v Extract the performance metrics from the trace file
v Compute the average and confidence intervals
v Plot the results
v External data processing tools must be used.
AWK, PERL, … GNUPLOT