Top Banner
5-Jul-14 1 S.Pushpalatha, Associate Professor, PSNACET
35

5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

Dec 14, 2015

Download

Documents

Raegan Rau
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: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

5-Jul-14 1S.Pushpalatha, Associate Professor,

PSNACET

Page 2: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

What is ns?• Object-oriented, discrete event-driven network simulator

• Written in C++ and OTcl • By VINT: Virtual InterNet Testbed

5-Jul-14 2S.Pushpalatha, Associate Professor,

PSNACET

Page 3: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

Extending ns– In OTcl– In C++

TK8.0 OTcl tclclTcl8.0 ns-2 nam-1

tcl

ex test lib

...

...

examples validation tests

C++ code

OTcl code

ns-allinone

mcast

5-Jul-14 3S.Pushpalatha, Associate Professor,

PSNACET

Page 4: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

ns Architecture• Separate data path and control path

implementations.

5-Jul-14 4S.Pushpalatha, Associate Professor,

PSNACET

Page 5: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

Hello World – Interactive mode

bash-shell$ ns% set ns [new Simulator]_o3% $ns at 1 “puts \“Hello World!\””1% $ns at 1.5 “exit”2% $ns runHello World!bash-shell$

5-Jul-14 5S.Pushpalatha, Associate Professor,

PSNACET

Page 6: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

Hello World – Batch mode

simple.tclset ns [new Simulator]

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

$ns at 1.5 “exit”

$ns run

bash-shell$ ns simple.tcl

Hello World!bash-shell$

5-Jul-14 6S.Pushpalatha, Associate Professor,

PSNACET

Page 7: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

Basic Tcl: ex-tcl.tcl

5-Jul-14 7S.Pushpalatha, Associate Professor,

PSNACET

Page 8: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

Basic OTclClass MomMom instproc greet {} {

$self instvar age_puts “$age_ years old mom: How are you doing?”

}

Class Kid -superclass MomKid instproc greet {} {

$self instvar age_puts “$age_ years old kid: What’s up, dude?”

}

set mom [new Mom]

$mom set age_ 45

set kid [new Kid]

$kid set age_ 15

$mom greet

$kid greet

5-Jul-14 8S.Pushpalatha, Associate Professor,

PSNACET

Page 9: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

NS-2 Generic Script Structure

1.1. Create Simulator objectCreate Simulator object2.2. Turn on tracingTurn on tracing3.3. Create topologyCreate topology4.4. Setup packet loss, link dynamicsSetup packet loss, link dynamics5.5. Create routing agentsCreate routing agents6.6. Create application and/or traffic sourcesCreate application and/or traffic sources7.7. Post-processing procedures (i.e. nam)Post-processing procedures (i.e. nam)8.8. Start simulationStart simulation

5-Jul-14 9S.Pushpalatha, Associate Professor,

PSNACET

Page 10: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

Step1: Create Simulator Object

• Create event schedulerset ns [new Simulator]

5-Jul-14 10S.Pushpalatha, Associate Professor,

PSNACET

Page 11: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

Step2: Tracing

• Insert immediately after scheduler!

• Trace packets on all links

set nf [open out.nam w] $ns namtrace-all $nf set nt [open out1.tr w] $ns trace-all $nt

5-Jul-14 11S.Pushpalatha, Associate Professor,

PSNACET

Page 12: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

Step2: Tracing

5-Jul-14 12S.Pushpalatha, Associate Professor,

PSNACET

Page 13: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

Step 3: Create network Two nodes, One link

n1

n0

5-Jul-14 13S.Pushpalatha, Associate Professor,

PSNACET

Page 14: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

Step 3: Create Network• Nodes

– set n0 [$ns node]– set n1 [$ns node]

• Links and queuing– $ns duplex-link $n0 $n1 1Mb 10ms RED

– $ns duplex-link $n0 $n1 <bandwidth> <delay> <queue_type>

– <queue_type>: DropTail, RED, etc.

n1

n0

5-Jul-14 14S.Pushpalatha, Associate Professor,

PSNACET

Page 15: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

Creating a larger topology for {set i 0} {$i < 7} {incr i} { set n($i) [$ns node] }for {set i 0} {$i < 7} {incr i} { $ns duplex-link $n($i) $n([expr ($i+1)%7]) 1Mb 10ms RED}

5-Jul-14 15S.Pushpalatha, Associate Professor,

PSNACET

Page 16: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

Step 4: Network Dynamics

• Link failures– Hooks in routing module to reflect routing changes

• $ns rtmodel-at <time> up|down $n0 $n1

• For example:

$ns rtmodel-at 1.0 down $n0 $n1$ns rtmodel-at 2.0 up $n0 $n15-Jul-14 16

S.Pushpalatha, Associate Professor, PSNACET

Page 17: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

Step 5: Creating UDP connectionset udp [new Agent/UDP]

set null [new Agent/Null]

$ns attach-agent $n0 $udp

$ns attach-agent $n1 $null

$ns connect $udp $null

n1

n0

udp

null

5-Jul-14 17S.Pushpalatha, Associate Professor,

PSNACET

Page 18: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

Step 6: Creating Traffic (On Top of UDP)

• CBR– set cbr [new Application/Traffic/CBR]

– $cbr set packetSize_ 500 – $cbr set interval_ 0.005

– $cbr attach-agent $udp

n1

n0

udp

cbr

null

5-Jul-14 18S.Pushpalatha, Associate Professor,

PSNACET

Page 19: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

Creating TCP connection

set tcp [new Agent/TCP]

set tcpsink [new Agent/TCPSink]

$ns attach-agent $n0 $tcp

$ns attach-agent $n1 $tcpsink

$ns connect $tcp $tcpsink

n1

n0

tcp

sink

5-Jul-14 19S.Pushpalatha, Associate Professor,

PSNACET

Page 20: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

Step 6: Creating Traffic (On Top of TCP)

• FTP– set ftp [new Application/FTP]– $ftp attach-agent $tcp

• Telnet– set telnet [new Application/Telnet]

– $telnet attach-agent $tcpn1

n0

tcp

ftp

sink

5-Jul-14 20S.Pushpalatha, Associate Professor,

PSNACET

Page 21: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

Post-Processing Procedures

• Add a 'finish' procedure that closes the trace file and starts nam.

proc finish {} { global ns nf$ns flush-trace close $nf exec nam out.nam & exit 0

} 5-Jul-14 21

S.Pushpalatha, Associate Professor, PSNACET

Page 22: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

Run Simulation• Schedule Events

$ns at <time> <event>– <event>: any legitimate ns/tcl commands

$ns at 0.5 "$cbr start"

$ns at 4.5 "$cbr stop“

• Call ‘finish’$ns at 5.0 "finish"

• Run the simulation$ns run

5-Jul-14 22S.Pushpalatha, Associate Professor,

PSNACET

Page 23: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

Recall: Generic Script Structure

1.1. set ns [new Simulator]set ns [new Simulator]2.2. [Turn on tracing][Turn on tracing]3.3. Create topologyCreate topology4.4. [Setup packet loss, link dynamics][Setup packet loss, link dynamics]5.5. Create routing agentsCreate routing agents6.6. Create application and/or traffic sourcesCreate application and/or traffic sources7.7. Post-processing procedures (i.e. nam)Post-processing procedures (i.e. nam)8.8. Start simulationStart simulation

Examples

5-Jul-14 23S.Pushpalatha, Associate Professor,

PSNACET

Page 24: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

Visualization Tools

• nam-1 (Network AniMator Version 1)– Packet-level animation– Well supported by ns

• xgraph– Simulation results

5-Jul-14 24S.Pushpalatha, Associate Professor,

PSNACET

Page 25: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

5-Jul-14 25S.Pushpalatha, Associate Professor,

PSNACET

Page 26: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

nam Interface: Nodes

• Color$node color red

• Shape (can’t be changed after sim starts)$node shape box (circle, box, hexagon)

• Label (single string)$ns at 1.1 “$n0 label \”web cache 0\””

5-Jul-14 26S.Pushpalatha, Associate Professor,

PSNACET

Page 27: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

nam Interfaces: Links• Color

$ns duplex-link-op $n0 $n1 color "green"

• Label$ns duplex-link-op $n0 $n1 label “backbone"

5-Jul-14 27S.Pushpalatha, Associate Professor,

PSNACET

Page 28: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

nam Interface: Topology Layout• “Manual” layout: specify everything

$ns duplex-link-op $n(0) $n(1) orient right$ns duplex-link-op $n(1) $n(2) orient right$ns duplex-link-op $n(2) $n(3) orient right$ns duplex-link-op $n(3) $n(4) orient 60deg

• If anything missing automatic layout

5-Jul-14 28S.Pushpalatha, Associate Professor,

PSNACET

Page 29: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

Simulation Example

5-Jul-14 29S.Pushpalatha, Associate Professor,

PSNACET

Page 30: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

OTcl and C++: The Duality

C++ OTcl

Pure C++objects

Pure OTclobjects

C++/OTcl split objects

ns5-Jul-14 30

S.Pushpalatha, Associate Professor, PSNACET

Page 31: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

TclObject: Hierarchy and Shadowing

TclObject

Agent

Agent/TCP

Agent/TCP OTcl shadow object

_o123Agent/TCP C++

object

*tcp

TclObject

Agent

TcpAgent

OTcl classhierarchy

C++ classhierarchy

5-Jul-14 31S.Pushpalatha, Associate Professor,

PSNACET

Page 32: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

Extending ns in OTcl

• If you don’t want to compile– source your changes in your sim scripts

• Modifying exisiting code– Recompile

• Adding new files– Change Makefile (NS_TCL_LIB), – Update tcl/lib/ns-lib.tcl– Recompile

5-Jul-14 32S.Pushpalatha, Associate Professor,

PSNACET

Page 33: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

Extending ns in C++

• Modifying code– `make depend`– Recompile

• Adding code in new files– Change Makefile– `make depend`– Recompile

5-Jul-14 33S.Pushpalatha, Associate Professor,

PSNACET

Page 34: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

OTcl Linkage

• Lets create a new agent “MyAgent” – Dummy agent– Derived from the “Agent” class

5-Jul-14 34S.Pushpalatha, Associate Professor,

PSNACET

Page 35: 5-Jul-141 S.Pushpalatha, Associate Professor, PSNACET.

Step 5: Compile Save above code as “ex-linkage.cc”

Open "Makefile", add "ex-linkage.o" at the end of object file list.

Re-compile NS using the "make" command.

5-Jul-14 35S.Pushpalatha, Associate Professor,

PSNACET