Sie sind auf Seite 1von 58

Network Modeling and Simulation

with Network Simulator 2 (ns2)

Department of Computer Science and Engineering


University of Bologna. Italy
difelice@cs.unibo.it

Marco Di Felice
Marco Di Felice NS2: An Overview
Outline

NS2: Use Cases and Features

NS2: Architecture and Design

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


An example: Early Collision
Need to evaluate the performance Detection Systems In VANETs
of a (possibly large-scale) network
infrastructure or network application.
Use an existing testbed BUT

Q1. What is the cost of setting up


the experiments?

Q2. Are the experiments easily


reproducible?

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
An example: Proposing a new
of a new network protocol, TCP variant for wireless LANs.
architecture, or application.

1. A real deployment might not be


feasible, or might be too costly.

2. Analytical models might be too


complex to model all the components
of the scenario under study.

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. (1/ n logn)


THROUGPUT
EXPERIMENTS ANALYTICAL

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: ns-users@isi.edu


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 )
OTHER SIMULATION TOOLS

OMNET++
OPNET
JiST
NS3
GLOMOSIM

Q. WHY should I use NS2 for my research?
Marco Di Felice NS2: An Overview
Ns2: WHY

NS2 includes a vast model library of network components.

Link Models:
Wired Links,
Wireless Links,
Satellite Links,

Application Layer FTP, Telnet, HTTP, Multimedia, Exponential traffic,

Transport Layer UDP, TCP (Reno, NewReno, Vegas, SACK),

Network Layer Wired routing (RIP), Ad Hoc Routing (AODV, OLSR, DSR),

MAC Layer Ethernet, 802.11 (WIFI), 802.15.4, Bluetooth, 802.16 (WIMAX),

Marco Di Felice NS2: An Overview


Ns2: WHY

NS2 is distributed with GNU General Public Licence (GPL)

v Collaborative deployment environment


possibility to freely modify the existing NS2 code based
on each users 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,
Marco Di Felice NS2: An Overview
Ns2: WHY

NS2 is a popular tool, widely adopted by researchers


working on the field of computer networks.

Number of Users: 10K

Institutes: 1K

% Papers: 44.4%

MOBIHOC Conference: Statistics on tools used to produce a simulation study


within the papers submitted at the ACM MOBIHOC conference (2000-2006).

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.

CPU time
Architectural issues ?
Not really a modular architecture,
difficult to share the code of
#nodes
network models.

Evaluation issues
No support for the trace analysis. NS2
TRACE

Marco Di Felice NS2: An Overview


NS2: HOW

Two programming languages: C++ and OTCL.

OTCL for simulation setup and execution


Quickly define the simulation environment
C++ for model deployment
Implement the behaviour of a network component

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

Packet sent NS2 Object


Packet Timer + function name
Packet received that should be
Events Events
invoked once the
Packet dropped event is fired.

Simulation time of the event

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.

SIMULATION
E1 E2 E3 E4 E5 E6 TIME:
TIME:
E1.time
t

At each simulation step: 1 TYPE TIME HANDLER

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.
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.

SIMULATION
E2 E3 E4 E5 E6 E7 TIME:
TIME:
E1.time
t

At each simulation step: E1.HANDLER


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)

Marco Di Felice NS2: An Overview


NS2: HOW

Lets make an example on a network scenario

NODE A NODE B

APPLICATION APPLICATION
MAC ETHERNET MAC
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

Lets make an example on a network scenario

NODE A NODE B

APPLICATION APPLICATION
MAC ETHERNET MAC
LINK

SIMULATION
E1 TIME: 0
EVENT LIST
1 Send 4 A.APPLICATION

A timer event is scheduled at time 4 by node A


Marco Di Felice NS2: An Overview
NS2: HOW

Lets make an example on a network scenario

NODE A NODE B

APPLICATION APPLICATION
MAC ETHERNET MAC
LINK

SIMULATION
E2 E3 TIME: 4
EVENT LIST
2 Recv 4.5 A.MAC

3 Send 8 A.APPLICATION

Marco Di Felice NS2: An Overview


NS2: HOW

Lets make an example on a network scenario

NODE A NODE B

APPLICATION APPLICATION
MAC ETHERNET MAC
LINK

SIMULATION
E4 E3 TIME: 4.5
EVENT LIST
4 Recv 5.0 B.MAC

3 Send 8 A.APPLICATION

Marco Di Felice NS2: An Overview


NS2: HOW

Lets make an example on a network scenario

NODE A NODE B

APPLICATION APPLICATION
MAC ETHERNET MAC
LINK

SIMULATION
E5 E3 TIME: 5
EVENT LIST
5 Recv 5.2 B.APPLICATION

3 Send 8 A.APPLICATION

Marco Di Felice NS2: An Overview


NS2: HOW

Lets make an example on a network scenario

NODE A NODE B

APPLICATION APPLICATION
MAC ETHERNET MAC
LINK

SIMULATION
E3 TIME: 5.2
EVENT LIST

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 NOT EASY

- Network models: network protocols, applications, queue policies,


network architecture models, etc.
- Coding in C++
- Recompile at the end.

Configure/Run a network simulation QUITE EASY

- Coding in OTCL
- Executed by an interpreter, no need to recompile.

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
OTCL Overview
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}

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 SEED=0 current timestamp

v Scheduling the events All the random variable used


by the current simulation are
$ns at <time> <event> initialized with this SEED.

v Stopping the simulation at time 300


$ns at 300 "finish

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)

CASE 1. Modeling a wired network.

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

Marco Di Felice NS2: An Overview


Ns2: Building the network (WIRED)

CASE 1. Modeling a wired network.

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.

Marco Di Felice NS2: An Overview


Ns2: Building the network (WIRED)

CASE 1. Modeling a wireless network.


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 Set simulation area
to 400mx400m
v Define the position

$n0 set X_ 300


$n0 set Y_ 400 Set node 0 at position <300,400,0>
$n0 set Z_ 0
Marco Di Felice NS2: An Overview
Ns2: Building the network (WIRED)

CASE 1. Modeling a wireless network.


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

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)

CASE 1. Modeling a wireless network.


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

v Any mobility simulator can be used for trace generation.

MOBILITY MOB. OTCL


SIMULATOR NS2
TRACE SCRIPT
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:
Several TCP variants:
set src [new Agent/TCP]
TCP Tahoe
set dst [new Agent/TCPSink] TCP Reno
TCP NewReno
UDP Connections: TCP Vegas
TCP SACK
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

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)
NET LAYER -antType $val(type)
QUEUE -llType $val(ll)
-macType $val(mac)
LL LAYER -ifqType $val(ifq)
-ifqLen $val(ifqlen)
MAC
LAYER -adhocRouting $val(rp)
-topoInstance $topo
ANTENNA
PROPAGATION -channel $chan_
PHY 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)
NET LAYER -antType $val(type)
QUEUE -llType $val(ll)
-macType $val(mac)
LL LAYER -ifqType $val(ifq)
-ifqLen $val(ifqlen)
MAC
LAYER -adhocRouting $val(rp)
-topoInstance $topo
ANTENNA
PROPAGATION -channel $chan_
PHY 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)
NET LAYER -antType $val(type)
QUEUE -llType $val(ll)
-macType $val(mac)
LL LAYER -ifqType $val(ifq)
-ifqLen $val(ifqlen)
MAC
LAYER -adhocRouting $val(rp)
-topoInstance $topo
ANTENNA
PROPAGATION -channel $chan_
PHY 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


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)
NET LAYER -antType $val(type)
QUEUE -llType $val(ll)
-macType $val(mac)
LL LAYER -ifqType $val(ifq)
-ifqLen $val(ifqlen)
MAC
LAYER -adhocRouting $val(rp)
-topoInstance $topo
ANTENNA
PROPAGATION -channel $chan
PHY LAYER
Marco Di Felice NS2: An Overview
Ns2: HOW
v Configuring the LL layer
set val(ll) LL Include ARP protocol

v Configuring the MAC model Select a MAC protocol:


802.11 (Wifi)
set val(mac) Mac/802_11 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
Set the queue length RED Queue

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)
NET LAYER -antType $val(type)
QUEUE -llType $val(ll)
-macType $val(mac)
LL LAYER -ifqType $val(ifq)
-ifqLen $val(ifqlen)
MAC
LAYER -adhocRouting $val(rp)
-topoInstance $topo
ANTENNA
PROPAGATION -channel $chan
PHY 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

ROUTING PATH DESTINATION

Marco Di Felice NS2: An Overview


Ns2: HOW

v Two ways of interactions:


Modify/Create a new network model NOT EASY

- Network models: network protocols, applications, queue policies,


network architecture models, etc.
- Coding in C++
- Recompile at the end.

Configure/Run a network simulation QUITE EASY

- Coding in OTCL
- Executed by an interpreter, no need to recompile.

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
vWhen 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 Node Traffic Packet MAC Header


Time Packet size
type
ID
Event Type

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 GNUPLOT AWK, PERL,

v External data processing tools must be used.

Marco Di Felice NS2: An Overview


Ns2: Analysis of Simulation Results
vExample: Computing the system throughput in AWK.

BEGIN {
recvByte=sim_time=transient=0.0
}

($1==r) && ($4==AGT) && ($2>transient) {
recvByte+=$8
sim_time=$2
}

END {
print recvByte/(sime_time-transient)
}

Marco Di Felice NS2: An Overview

Das könnte Ihnen auch gefallen