Network Modeling and Simulation with Network Simulator …difelice/sm/slides/ns2.pdf · Marco Di...

58
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]

Transcript of Network Modeling and Simulation with Network Simulator …difelice/sm/slides/ns2.pdf · Marco Di...

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

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

Marco Di Felice NS2: An Overview

Ns2: Analysis of Simulation Results

v Example: 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)  }