Top Banner
ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1
28

Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

Dec 14, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

ns-2 Tutorial (1)

Multimedia Networking Group,

The Department of Computer Science, UVA

Jianping Wang

Jianping Wang, 2002 cs757 1

Page 2: Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

Contents:

• Objectives of this week

• What is ns-2?

• Working with ns-2

• Tutorial exercise

• ns-2 internals

• Extending the C++ part of ns-2

• Hands-on: Wireless

• Other ns-2 related software

Jianping Wang, 2002 cs757 2

Today

Partly adopted from Nicolas’ slides.

Page 3: Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

Objectives of this week

• Get some exposure to one of the most useful tools in networking research and development.

• Understand and work with a popular network simulator.

• Get a better understanding of the networking dynamics.

• “Smooth the learning curve”.

Jianping Wang, 2002 cs757 3

Page 4: Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

What is ns-2?

• ns-2 stands for Newwork Simulator version 2.• ns-2:

• Is a discrete event simulator for networking research

• Work at packet level.

• Provide substantial support to simulate bunch of protocols like TCP, UDP, FTP, HTTP and DSR.

• Simulate wired and wireless network.

• Is primarily Unix based.

• Use TCL as its scripting language.

• ns-2 is a standard in research community.

Jianping Wang, 2002 cs757 4

Page 5: Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

tcl8.0

otcl

tclcl

UIEventScheduler

Netw

orkC

omponent

What is ns-2 (cont.) ?

• otcl: Object-oriented support• tclcl: C++ and otcl linkage• Discrete event scheduler• Data network (the Internet) components

Jianping Wang, 2002 cs757 5

C++

Page 6: Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

Other Network Simulators

• OPNET (http://www.opnet.com)• Commercial Software

• Support Windows and Unix

• Graphical Interface

• Not free

• GloMoSim (http://pcl.cs.ucla.edu/projects/glomosim)• Simulation enviroment for wireless network

• Scalable to support thousands of nodes

• Using layered approach to build different simulation layers

• Free for educational usersJianping Wang, 2002 cs757 6

Page 7: Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

Working with ns-2

Jianping Wang, 2002 cs757 7

Page 8: Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

Getting Started: Install ns-2

• Download software package from:

http://www.isi.edu/nsnam/ns/

- Easy installation way: all at once• The latest version is 2.1b9a released at July 3, 2002.

It contains:- Tk release 8.3.2

- Otcl release 1.0a8

- TclCL release 1.0b12

- Tcl release 8.3.2

- Ns release 2.1b9a

- Nam release 1.0a11a

- Xgraph version 12

- CWeb version 3.4g

- SGB version 1.0

- Gt-itm gt-itm and sgb2ns 1.1

- Zlib version 1.1.3

Jianping Wang, 2002 cs757 8

Page 9: Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

Running ns-2 program

ns-2 Program(Otcl Script)

$ns ns-2_file

. Otcl expretenter

. NS simulator libries

SimulationResults

(trace files)

AnalysisRun ns-2Program

. Read trace file

. Replay with nam

. Draw statistical pictures

Jianping Wang, 2002 cs757 9

Page 10: Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

Hello World - Interactive Mode

[jwang@iodine jwang]$ ns

% set ns [new Simulator]

_o4

% $ns at 1 “puts \“Hello World!\””

1

% $ns at 1.5 “exit”

2

% $ns run

Hello World!

[jwang@iodine jwang]$Jianping Wang, 2002 cs757 10

Page 11: Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

Hello World - Batch Mode

simple.tcl:set ns [new Simulator]

$ns at 1 “puts \“Hello World!\””

$ns at 1.5 “exit”

$ns run

[jwang@iodine jwang]$ ns simple.tcl

Hello World![jwang@iodine jwang]$

Jianping Wang, 2002 cs757 11

Page 12: Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

Basic tclproc test {} {

set a 43 ; a = 43

set b 27 ; b = 27

set c [expr $a + $b] ; c = a + b

set d [expr [expr $a - $b] * $c] ; d = (a – b) * c

for {set k 0} {$k < 10} {incr k} { ; for (k=0; k<10; k++)

puts “k = $k”

}

}

Jianping Wang, 2002 cs757 12

Page 13: Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

Basic otclClass mom

mom instproc greet {} {

$self instvar age_

puts “$age_ years old mom: How are you doing?”

}

Class kid -superclass mom

kid instproc greet {} {

$self instvar age_

puts “$age_ years old kid: What’s up, dude?”

}

set a [new mom]

$a set age_ 45

set b [new kid]

$b set age_ 15

$a greet

$b greet

Jianping Wang, 2002 cs757 13

Page 14: Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

Basic ns-2

• Create a new simulator object• [Turn on tracing]

– [Open your own trace files]

• Create network (physical layer)• Create link and queue (data-link layer)• Define routing protocol• Create transport connection (transport layer)• Create traffic (application layer)• Insert errors

Jianping Wang, 2002 cs757 14

Page 15: Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

Creating Simulator Instance

• Create simulator instanceset ns [new Simulator]- Usually the first non-comment statement in ns-

2 script- Initialize the packet format- Create a scheduler (default is a calendar

scheduler)- Create a “null agent”

Jianping Wang, 2002 cs757 15

Page 16: Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

Turning on a Tracefile

• Open file for NS tracing

set f [open out.tr w]

$ns trace-all $f

• Open file for nam tracing set nf [open out.nam w]

$ns namtrace-all $nf

• Open your own trace fileset my_f [open my_out.tr w]

puts $my_f “[$ns now] [expr $x(1) + $y(1)]”Jianping Wang, 2002 cs757 16

Page 17: Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

Creating a Network(1)

Jianping Wang, 2002 cs757 17

h1

h2

r1 r2

h3

h4

10Mb, 2ms

10Mb, 4ms10Mb, 2ms

10Mb, 3ms

1.5Mb, 20ms

host

router router

host

hosthost

• Network topology

Page 18: Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

Creating a Network (2)

• Creating nodes

set node_(h1) [$ns node]

set node_(h2) [$ns node]

set node_(r1) [$ns node]

set node_(r2) [$ns node]

set node_(h3) [$ns node]

set node_(h4) [$ns node]

Jianping Wang, 2002 cs757 18

Page 19: Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

Creating a Network(3)

• Creating Link and Queue$ns duplex-link $node_(h1) $node_(r1) 10Mb 2ms DropTail

$ns duplex-link $node_(h2) $node_(r2) 10Mb 3ms DropTail

$ns duplex-link $node_(r1) $node_(r2) 1.5Mb 20ms DropTail

$ns queue-limit $node_(r1) $node_(r2) 50

……

Jianping Wang, 2002 cs757 19

Page 20: Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

Creating a TCP connectionset tcp0 [$ns create-connection TCP/Reno $node_(s1)

TCPSink/DelAck $node_(s4) 0]

Jianping Wang, 2002 cs757 20

S1

S2

R1 R2

S2

S2

10Mb, 2ms

10Mb, 4ms

10Mb, 2ms

10Mb, 3ms

1.5Mb, 20ms

Page 21: Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

Creating traffic

• Attaching FTP traffic on the top of TCP set ftp0 [$tcp0 attach-app FTP]

Jianping Wang, 2002 cs757 21

S1

S2

R1 R2

S2

S2

10Mb, 2ms

10Mb, 4ms

10Mb, 2ms

10Mb, 3ms

1.5Mb, 20ms

FTP Server

FTP Client

Page 22: Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

Insert Errors

set loss_module [new ErrorModel]

$loss_module set rate_ 0.01

$loss_module unit pkt

$loss_module ranvar [new RandomVariable/Uniform]

$loss_module drop-target [new Agent/Null]

$ns lossmodel $loss_module $n0 $n1

Jianping Wang, 2002 cs757 22

Page 23: Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

Summary

Topology

Attach-agentAttach-agent

ProtocolStack

Application

Connection

Jianping Wang, 2002 cs757 23

Page 24: Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

Start/Stop ns• Schedule an event to start traffic at time 1.0

$ns at 1.0 "$ftp0 start“• Schedule an event to stop ns at time 17.0

$ns at 17.0 "$ftp0 stop“• Start ns

$ns run

- last statement• Stop ns

exit 0Jianping Wang, 2002 cs757 24

Page 25: Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

Visualization Tool: nam

• Replay events from a nam trace file

• The nam trace file can be huge when simulation time is long or events happen intensively. Be careful!

• Run nam:– $nam nam_trace_file.nam– In ns-2 script:

Proc finish{} {

……

exec nam nam_trace_file.nam &

exit

}Jianping Wang, 2002 cs757 25

Page 26: Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

Jianping Wang, 2002 cs757 26

Page 27: Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

Draw Plots Using Xgraph

• Create your own output files

• Collect statistical data synchronized.

• Run xgraph:– $xgraph out0.tr, out1.tr –geometry 800x400– In ns-2 script:

Proc finish{} {

……

exec xgraph out0.tr, out1.tr –geometry 800x400 &

exit

}

Jianping Wang, 2002 cs757 27

Page 28: Ns-2 Tutorial (1) Multimedia Networking Group, The Department of Computer Science, UVA Jianping Wang Jianping Wang, 2002 cs757 1.

Useful URLs

• http://www.isi.edu/nsnam/ns - the official ns homepage

• http://www.isi.edu/nsnam/ns/ns-documentation.html - ns manual

• http://jan.netcomp.monash.edu.au/ProgrammingUnix

/tcl/tcl_tut.html - Tcl tutorial

• http://bmrc.berkeley.edu/research/cmt/cmtdoc/otcl/ - oTcl tutorial

Jianping Wang, 2002 cs757 28