ns2: introduction - part i

Post on 15-Mar-2018

91 Views

Category:

Engineering

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Ajit K Nayak, Ph.D.Dept of CSIT, ITER

An Introduction to NS2:

The Network Simulator

What is Simulation ?

Network simulation is a technique where a program models the behavior

of a network either by calculating the interaction between the different

network entities (hosts/, etc.) using mathematical formulas, or actually

capturing and playing back observations from a production network.

NS2 Architecture

Sample Input Script (Tcl)

set ns [new Simulator]

set n0 [$ns node]

set n1 [$ns node]

$ns at 0.0 "$n0 label Sender“

$ns at 0.0 "$n1 label Receiver“

set nf [open test.nam w]

$ns namtrace-all $nf

set f [open test.tr w]

$ns trace-all $f

$ns duplex-link $n0 $n1 0.2Mb 200ms DropTail

$ns duplex-link-op $n0 $n1 orient right

. . .

Sample output traces- 2.846272 0 2 ack 576 ------- 0 0.0 4.0 15545 61

r 2.851664 0 2 ack 576 ------- 0 0.0 4.0 14473 59

+ 2.851664 2 3 ack 576 ------- 0 0.0 4.0 14473 59

d 2.851664 2 3 ack 576 ------- 0 0.0 4.0 14473 59

r 2.854576 3 2 ack 40 ------- 1 4.0 0.0 3217 48

n -t * -s 0 -x 200 -y 30 -Z 0 -z 30 -v circle -c black

c -t * -i 8 -n red

c -t * -i 1 -n black

c -t * -i 2 -n orange

c -t * -i 6 -n tan

c -t * -i 7 -n purple

c -t * -i 3 -n green

+ -t 0.001635381 -s 0 -d -1 -p message -e 90 -c 2 -a 0 -i 0 -k MAC

- -t 0.001635381 -s 0 -d -1 -p message -e 90 -c 2 -a 0 -i 0 -k MAC

h -t 0.001635381 -s 0 -d -1 -p message -e 90 -c 2 -a 0 -i 0 -k MAC

r -t 0.002355848 -s 2 -d -1 -p message -e 32 -c 2 -a 0 -i 0 -k MAC

Output (NAM Trace)

Run the

NAM trace

using

Network

AniMator

package

Output (Packet Trace)

Extract required data from packet trace (shell, awk, perl, C, etc…)

Plot the data using gnuPlot, Xgraph, MsExcel etc.

Where to go?

Learn Tcl/OTcl

Write Tcl scripts for network simulation

Execute the simulation

Observe the result in NAM

Learn to extract Info from Packet trace

Plot using any plotting software

Measure the protocol/network performance

Tcl/OTcl - Basics Everything in Tool comand language(Tcl) is a command

followed by a number of arguments, which are separated by whitespace. command arg1 arg2 ... argn.

To Execute a Tcl script

Method 1:

Start the NS environment

$ ns (this will start the shell)

%

% puts stdout “Hello World”Hello World

%

Method 2:

Write the Tcl command(s) in a file and save it to <fileName>.tcl, then execute as follows in (OS shell)

$ ns <fileName>.tcl

Tcl/OTcl – I/O Commands Printing(output): puts

puts $<var>

puts <constant>

Reading(input): gets

gets stdin <var>

Comment: #

# This is my first tcl script

Tcl/OTcl - Variables Tcl is a dynamically typed language

Need not to declare variable types (datatypes).

A variable can store anything, irrespective of type and type checking is done at runtime.

Variable initialization.

Syntax: set <variable> <value>

Example:

% set intVar 10

% set a [expr 2.5*10]

% puts {intVar is $intVar}

% puts $a

Tcl/OTcl – control structure-IControl Structures:

if {$z == 6} then { puts “Correct!”}

for {set i =0} {$i < 5} {incr i } {

puts “$i * $i equals [expr $i * $i]”

}

Other branching-constructsswitch <string> {

<pattern_1> {

<body_1>

}

<pattern_2> {

<body_2>

}

. . .

<default> {

body

}

}

Tcl/OTcl – control structure-IIOther Loop constructs

while {<test>} {

<body>

}

foreach {<var1> <var2>} <var> {

<body>

}

Example:

set observations {Bhubaneswar 35 49 Cuttack 32 45 Bolangir 18 30}

foreach {town Tmin Tmax} $observations {

set Tavg [expr ($Tmin+$Tmax)/2.0]

puts “$town $Tavg"

}

break, continue

Tcl/OTcl – ArrayRequired to store multiple elements. These are

implemented as associative maps.

i.e. it associates an array index (key) with an array element. Unlike

‘C/C++’ arrays, the Tcl array index can be a string.

Exampleset myArray(0) 1

set myArray(1) 65

set Link(pktsize) 512

set Link(protocol) “IEEE 802.11"

puts $myArray(0)

puts $myArray(1)

puts $Link(pktsize)

puts $Link(protocol)

Tcl/OTcl – ProcedureThe ‘proc’ command creates a new command.

Syntax: proc <procName> <args> <body>

Example:

# procedure without args

proc myCommand {} {

puts “My first Tcl command"

}

myCommand #proc call

# procedure with args

proc avg {min max} {

return [expr ($min + $max) / 2]

}

set average [avg 10 20]; puts $average #proc call

Tcl – Practice Progs.Write Tcl scripts for the followings

to add two given numbers.

To find largest among three numbers

To print a day given a number (1-7) using switch

To add all odd numbers (1-100)

To read and print one array containing name and

roll numbers of some students.

Write a procedure to find the sum of the digits of a

given number. Use this procedure to find sum of

the digits for a given range of numbers.

End of NS2 Part I

Thank You

top related