Ns2 by khan

Preview:

DESCRIPTION

Easy way to learn ns2

Citation preview

Introduction To NS-2Introduction To NS-2

ByArshad Ahmad Khan Mohammad

Part Time Research Scholar (CNIS) 

KL University, Andhra PradeshIndia,

.

Outline Of PresentationOutline Of Presentation

IntroductionIntroduction InstallationInstallation ArchitectureArchitecture Tcl & Otcl ExamplesTcl & Otcl Examples Simulation StepsSimulation Steps Examples (Wired)Examples (Wired) Examples (Wireless)Examples (Wireless)

IntroductionIntroduction

About NS2About NS2 Advantages of NS2Advantages of NS2 NS2 Supported Protocols(Wired & NS2 Supported Protocols(Wired &

Wireless)Wireless)

Arshad KhanArshad Khan 44

Network Simulation *Network Simulation *

Motivation:Motivation: Learn fundamentals of Learn fundamentals of

evaluating network evaluating network performance via performance via simulationsimulation

Overview:Overview: fundamentals of fundamentals of

discrete event discrete event simulationsimulation

ns-2 simulationns-2 simulation

Arshad KhanArshad Khan 55

Why Simulation? *Why Simulation? *

real-system not real-system not available, is complex/costly or available, is complex/costly or dangerousdangerous ( (eg: space simulations, flight eg: space simulations, flight simulations)simulations)

quickly evaluate design quickly evaluate design alternativesalternatives (eg: (eg: different system configurations)different system configurations)

evaluate evaluate complex functionscomplex functions for which closed for which closed form formulas or numerical techniques not form formulas or numerical techniques not availableavailable

Arshad KhanArshad Khan 66

Simulation: advantages/drawbacks*Simulation: advantages/drawbacks*

advantages:advantages:• sometimes cheapersometimes cheaper• find bugs (in design) in advancefind bugs (in design) in advance• generality:generality: over analytic/numerical techniques over analytic/numerical techniques• detail:detail: can simulate system details at arbitrary can simulate system details at arbitrary

levellevel drawbacks:drawbacks:

• caution: does model reflect realitycaution: does model reflect reality• large scale systems: lots of resources to large scale systems: lots of resources to

simulate (especially accurately simulate)simulate (especially accurately simulate)• may be slow (computationally expensive – 1 may be slow (computationally expensive – 1

min real time could be hours of simulated time)min real time could be hours of simulated time)• art: determining right level of model complexityart: determining right level of model complexity• statistical uncertainty in resultsstatistical uncertainty in results

OverviewOverview

Ns2 is event simulator where the advance Ns2 is event simulator where the advance of time depends on the timing of events of time depends on the timing of events which are maintained by a scheduler.which are maintained by a scheduler.

Event – an object in C++ hierarchy. Event – an object in C++ hierarchy.

unique ID, Scheduled time, unique ID, Scheduled time,

pointer to an objectpointer to an object Scheduler – maintains ordered data Scheduler – maintains ordered data

structure with the events to be executed structure with the events to be executed and fires them one by one, invoking the and fires them one by one, invoking the handler of the event. handler of the event.

Arshad KhanArshad Khan

Discrete event simulatorDiscrete event simulator

ns-2 is an discrete event driven simulationns-2 is an discrete event driven simulation• Physical activities are translated to eventsPhysical activities are translated to events• Events are queued and processed in the order of their Events are queued and processed in the order of their

scheduled occurrencesscheduled occurrences• Time progresses as the events are processedTime progresses as the events are processed

1 2

Time: 1.5 sec Time: 1.7 sec

Time: 1.8 secTime: 2.0 sec

99

Event Driven SimulationEvent Driven Simulation

TX Pkt Event @ 1.5sec

Node 1 Module

Node 2 Module

TX Pkt Event @ 1.5sec

RX Pkt Event @ 1.7sec

RX Pkt Event @ 1.7sec

TX Ack Event @ 1.8sec

TX Ack Event @ 1.8sec

RX Ack Event @ 2.0sec

RX Ack Event @ 2.0sec

Event Queue

Simulation Finished!

1010

Discrete Event ExamplesDiscrete Event Examples

Consider two nodeson an Ethernet:

A B

simplequeuingmodel:

t=1, A enqueues pkt on LANt=1.01, LAN dequeues pkt

and triggers B

detailedCSMA/CDmodel:

t=1.0: A sends pkt to NICA’s NIC starts carrier sense

t=1.005: A’s NIC concludes cs,starts tx

t=1.006: B’s NIC begins reciving pktt=1.01: B’s NIC concludes pkt

B’s NIC passes pkt to app

1111

ns-2 Environmentns-2 EnvironmentSimulation Scenario

Tcl Script

C++ Implementation

1 2

set ns_ [new Simulator]

set node_(0) [$ns_ node]

set node_(1) [$ns_ node]

class MobileNode : public Node {

friend class PositionHandler;public: MobileNode();

••

}

1212

LanguagesLanguages

C++ for C++ for datadata• Per-packet processing, the core of Per-packet processing, the core of nsns• Fast to run, detailed, complete controlFast to run, detailed, complete control

OTcl for OTcl for controlcontrol• Simulation descriptionSimulation description• Periodic or triggered actionsPeriodic or triggered actions• Manipulating existing C++ objectsManipulating existing C++ objects• Faster to write and changeFaster to write and change

(a matter of opinion)(a matter of opinion)

Working with NSWorking with NS

NSNS

an OTcl interpreter with network librariesan OTcl interpreter with network libraries

InvocationInvocation Interactive modeInteractive mode

nsns

% (This is the ns prom)% (This is the ns prom) Batch modeBatch mode

ns tclfile.tclns tclfile.tcl

““Hello World” Example (Interactive)Hello World” Example (Interactive)

nsns % puts "Hello World!!!"% puts "Hello World!!!" Hello World!!!Hello World!!! % puts "Hello NS newbie"% puts "Hello NS newbie" Hello NS newbieHello NS newbie %exit%exit

““Hello World” Example (Batch)Hello World” Example (Batch)

Hello.tclHello.tcl

puts "Hello World!!!"puts "Hello World!!!"

puts "Hello NS newbie"puts "Hello NS newbie" InvocationInvocation

ns hello.tclns hello.tcl

"Hello World!!!“"Hello World!!!“

"Hello NS newbie""Hello NS newbie"

OTclOTcl

NS is an interpreter of OtclNS is an interpreter of Otcl

We communicate with NS by OtclWe communicate with NS by Otcl

We need to know how to use OTclWe need to know how to use OTcl

Its syntaxIts syntax

Basic commandsBasic commands

OTcl BasicsOTcl Basics

set: Assign a value to a variableset: Assign a value to a variable $x: The value of variable x$x: The value of variable x [ … ]: Run command and return result[ … ]: Run command and return result [expr …]: Calculate the value of expression[expr …]: Calculate the value of expression set x $a: Assign value of a to variable xset x $a: Assign value of a to variable x puts … : print outputs … : print out proc: Define a procedureproc: Define a procedure gets stdin x: Read variable x from stdingets stdin x: Read variable x from stdin

Be careful about spacesBe careful about spaces

OTcl: Example 1OTcl: Example 1

puts "Enter 1th operand"puts "Enter 1th operand"

gets stdin agets stdin a

puts "Enter 2th operand"puts "Enter 2th operand"

gets stdin bgets stdin b

set sum [expr $a + $b]set sum [expr $a + $b]

set diff [expr $a - $b]set diff [expr $a - $b]

puts "$a + $b = $sum" puts "$a + $b = $sum"

puts "$a - $b = $diff"puts "$a - $b = $diff"

1919

Basic TclBasic Tcl# Variables:# Variables:setset x 10 x 10set set xxputsputs “x is $x” “x is $x”

# Functions and expressions:# Functions and expressions:setset y [pow x 2] y [pow x 2]setset y [expr x*x] y [expr x*x]

# Control flow:# Control flow:ifif {$x > 0} { {$x > 0} { returnreturn $x } $x } elseelse { {

returnreturn [expr -$x] } [expr -$x] }whilewhile { $x > 0 } { { $x > 0 } {

putsputs $x $xincrincr x –1 x –1

}}for for {{set set i 0} {$i<10} {i 0} {$i<10} {incr incr i} {i} {

puts puts “$\i == $i”“$\i == $i”}}

# Procedures:# Procedures:

procproc pow {x n} { pow {x n} {

ifif {$n == 1} { {$n == 1} { returnreturn $x } $x }

setset part [ part [powpow x [ x [exprexpr $n-1]] $n-1]]

returnreturn [ [exprexpr $x*$part] $x*$part]

}}

# Files:# Files:

setset file [ file [open “open “nstrace.txt” w]nstrace.txt” w]

set set line [line [gets gets $file]$file]

puts –nonewline puts –nonewline $file “hello!”$file “hello!”

close close $file$file

2020

Basic OTclBasic OTclClass Person

# constructor:Person instproc init {age} {

$self instvar age_set age_ $age

}

# method:Person instproc greet {} {

$self instvar age_puts “age $age_: Hello!”

}

# subclass:# subclass:

ClassClass Child - Child -superclasssuperclass PersonPerson

Child Child instprocinstproc greet {} { greet {} {

$$selfself instvarinstvar age_ age_

putsputs “age $age_ kid: “age $age_ kid: Wassup!”Wassup!”

}}

setset a [ a [newnew Person 45] Person 45]

setset b [ b [newnew Child 15] Child 15]

$a greet$a greet

$b greet$b greet

What NS2 Can SimulateWhat NS2 Can Simulate • • Wired networkWired network Traffic model and applicationsTraffic model and applications Transport protocolTransport protocol Routing and QueuingRouting and Queuing QoSQoS LANsLANs • • Wireless networkWireless network Ad hoc routing and mobile IPAd hoc routing and mobile IP Sensor networkSensor network Propagation model/Energy modelPropagation model/Energy model WLAN (802.11)WLAN (802.11) • • SatelliteSatellite • • Error modulesError modules • • Tracing, visualization, emulation, various Tracing, visualization, emulation, various

NS2 Supported Protocols(Wired)NS2 Supported Protocols(Wired)

• • ApplicationApplication

HTTP, web cachingHTTP, web caching

telnet, FTP, RealAudiotelnet, FTP, RealAudio

CBR, on-off sourceCBR, on-off source

• • TransportTransport

UDP, TCP (almost all variants of TCP), RTPUDP, TCP (almost all variants of TCP), RTP

SRM, PLM, LMS, PGMSRM, PLM, LMS, PGM

• • RoutingRouting

Unicast (DV, LM, etc) and multicast routing (PIM etc)Unicast (DV, LM, etc) and multicast routing (PIM etc)

Hierarchical routingHierarchical routing

Manual routingManual routing

BroadcastingBroadcasting

MPLSMPLS

• • QueuingQueuing

RED, FIFO, FQ, SFQ, DRR, CBQRED, FIFO, FQ, SFQ, DRR, CBQ

Diffserv and IntServDiffserv and IntServ

ECNECN

NS2 Supported Protocols(Wireless)NS2 Supported Protocols(Wireless)

Ad-hoc network routingAd-hoc network routing

AODV, DSR, TORA, DSDVAODV, DSR, TORA, DSDV

• • Mobile IPMobile IP

• • ARPARP

• • Radio propagation modelRadio propagation model

Friss-space attenuationFriss-space attenuation

Two-ray ground reflection modelTwo-ray ground reflection model

Shadowing modelShadowing model

• • Sensor networkSensor network

Direct diffusionDirect diffusion

SMACSMAC

• • WLANWLAN

Ad-hoc modeAd-hoc mode

Infrastructure modeInfrastructure mode

• • SatelliteSatellite

GeostationaryGeostationary

LEOLEO

• • Energy modelEnergy model

• • Omni-directional antenna with unity gainOmni-directional antenna with unity gainnsns

InstallationInstallation

This Work is available at explanation This Work is available at explanation timetime

©Arshad Khan©Arshad Khan 2525

NS-2 Directory Structure

sim

tk8.0 otcl Tcltcl8.0 ns-2 nam-1

tcl

ex test lib

...

...

tcl code

example

validation test

C++ code

tcl code core

ArchitectureArchitecture

LanguagesLanguages Internal StructureInternal Structure Architecture (User view)Architecture (User view)

2727

App1

Agent1

App2

Agent2

Node

From Network to SimulationFrom Network to SimulationApplication,

Agent & Node

Link

Node

App1

Agent1

App2

Agent2

Node

App1

Agent1

App2

Agent2

Node

App1

Agent1

App2

Agent2

Node

Node Node Node

Link

Link

Link Link

Link

Link

Link

Link

App1

Agent1

App2

Agent2

Node

App1

Agent1

App2

Agent2

Node

puts "$a + $b = $sum"

2828

Class Hierarchy (partial)Class Hierarchy (partial)TclObject

NsObject

Connector Classifier

Queue Delay Agent Trace

Enq Deq Drop

AddressClassifier

TCP

SACKReno

DropTail RED Table of n slots each pointing to a TclObject classify() identifies destination slot for packet AddressClassifier, PortClassifier found within Nodes

Receive packets and transmit to target_ Basis for Agents and Links (~Queue + Delay)

Arshad KhanArshad Khan 2929

What is NS2?What is NS2?

Network SimulatorNetwork Simulator A package of tools that simulates A package of tools that simulates

behavior of networksbehavior of networks• Create Network TopologiesCreate Network Topologies• Log events that happen under any loadLog events that happen under any load• Analyze events to understand the Analyze events to understand the

network behavior network behavior

Arshad KhanArshad Khan 3030

Creating TopologiesCreating Topologies

n1

n4

n2

n5

n6

n3

5Mbps,10ms

2Mbps,20ms

300Kbps,100ms

300Kbps,100ms

500Kbps,50ms

Arshad KhanArshad Khan 3131

Creating TopologiesCreating Topologies

NodesNodes• Set properties like queue length, Set properties like queue length,

locationlocation• Protocols, routing algorithmsProtocols, routing algorithms

LinksLinks• Set types of link – Simplex, duplex, Set types of link – Simplex, duplex,

wireless, satellitewireless, satellite• Set bandwidth, latency etc.Set bandwidth, latency etc.

Done through tcl ScriptsDone through tcl Scripts

Arshad KhanArshad Khan 3232

Observing Network BehaviorObserving Network Behavior

Observe behavior by tracing Observe behavior by tracing “events”“events”• Eg. packet received, packet drop etc. Eg. packet received, packet drop etc.

time

Src Dst IP Address, Port

Step2: TracingStep2: Tracing

Basic Simulation StepsBasic Simulation Steps

1.1. Creating Simulation ObjectCreating Simulation Object

2.2. Opening a file for network animatorOpening a file for network animator

3.3. Finish ProcedureFinish Procedure

4.4. Execution Time for Simulation Execution Time for Simulation Procedure (Calling finish Procedure)Procedure (Calling finish Procedure)

5.5. Start The SimulationStart The Simulation

Basic Simulation StepsBasic Simulation Steps

Creating Simulation ObjectCreating Simulation ObjectCommandCommand

*set ns [new Simulator]**set ns [new Simulator]*1.1. Set ns -Set ns -Declare The New Variable Name Declare The New Variable Name nsns Using The Using The setset Command. Command.

2.2. [new Simulator]-[new Simulator]-is indeed The Instantiation of The Class is indeed The Instantiation of The Class SimulatorSimulator Using The Using The Keyword Keyword newnew

3.3. So So nsns is The is The SimulatorSimulator Object Object

4.4. Now Using Now Using nsns Variable We Can Access All The Methods of Class Variable We Can Access All The Methods of Class SimulatorSimulator

Basic Simulation StepsBasic Simulation Steps Opening a File for Network AnimatorOpening a File for Network Animator

or (Opening a NAM Trace File)or (Opening a NAM Trace File)

CommandCommand

** set tracefile1 [open out.nam w]set tracefile1 [open out.nam w]

$ns namtrace-all $tracefile1 *$ns namtrace-all $tracefile1 *1.1. Open a Trace file Open a Trace file out.namout.nam for writng and give it to file handler for writng and give it to file handler

tracefile1tracefile1..

2.2. We Are Telling Simulator Object We Are Telling Simulator Object nsns To We Have Created a file To Write To We Have Created a file To Write all The Data Related to Network animator on That Fileall The Data Related to Network animator on That File

3.3. With in a TCL Script file is not called by its name(With in a TCL Script file is not called by its name(out.namout.nam) but Using ) but Using Pointer ( Pointer ( tracefile1tracefile1 ) . ) .

Cont….Cont….

namtrace-all-namtrace-all-It is a It is a SimulatorSimulator method method which takes the parameter as file which takes the parameter as file name (name (tracefile1tracefile1)where trace will go.)where trace will go.

Basic Simulation StepsBasic Simulation Steps

Finish ProcedureFinish Procedure

CODECODEproc finish {} { proc finish {} {

global ns tracefile1 global ns tracefile1

$ns flush-trace $ns flush-trace

close $tracefile1close $tracefile1

exec nam out.nam & exec nam out.nam &

exit 0exit 0

}}

CONT…CONT…

proc finish {}- proc finish {}- The word The word procproc declares a declares a procedure name procedure name finishfinish without any without any argumentsarguments

global ns tracefile1- global ns tracefile1- The word global is The word global is used to tell we are using the variable used to tell we are using the variable which has declared outside the procedure which has declared outside the procedure ((finishfinish) i.e.,) i.e.,ns, tracefile1 ns, tracefile1

$ns flush-trace- $ns flush-trace- flush-traceflush-trace is a is a SimulatorSimulator method which is used to dump the traces method which is used to dump the traces on the respective files.on the respective files.

Cont..Cont..

close $tracefile1- close $tracefile1- which close the which close the tracefile1tracefile1

exec nam out.nam &- exec nam out.nam &- exeexe exicute exicute the the namnam for visualation for visualation

exit 0- exit 0- normal termination of normal termination of procedureprocedure

Basic Simulation StepsBasic Simulation Steps

Execution Time for Simulation Procedure Execution Time for Simulation Procedure (Calling finish Procedure)(Calling finish Procedure)

Command Command

*$ns at 5.0 "finish“**$ns at 5.0 "finish“* We are telling the simulator object (We are telling the simulator object (nsns) to ) to

execute theexecute the finish finish procedure after 5 procedure after 5 second of second of simulationsimulation time time

Basic Simulation StepsBasic Simulation Steps

Start the simulationStart the simulation

CommandCommand

*$ns run**$ns run*

Which is start the simulationWhich is start the simulation

Simplified SceniroSimplified Sceniro

Creating Nodes & LinksCreating Nodes & Links

1.1. Creating NodesCreating Nodes

2.2. Creating LinksCreating Links

Creating NodesCreating Nodes

CommandCommand

*set n0 [$ns node]*set n0 [$ns node]

set n1 [$ns node]*set n1 [$ns node]* A new node object is created with A new node object is created with

the command the command '$ns node''$ns node'. . The above code creates two nodes The above code creates two nodes

and assigns them to the handles and assigns them to the handles 'n0''n0' and and 'n1''n1'..

4646

Ns Node

n0 n1

Addr Classifier

Port Classifier

classifier_

dmux_

entry_

0

1

Addr Classifier

Port Classifier

classifier_

dmux_

entry_

1

0

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

Creating LinksCreating Links

CommandCommand*$ns duplex-link $n0 $n1 1Mb 10ms*$ns duplex-link $n0 $n1 1Mb 10ms

Drop Tail*Drop Tail* Code tells the simulator object to Code tells the simulator object to

connect the nodes connect the nodes n0n0 and and n1n1 with a with a duplex linkduplex link with the with the bandwidth bandwidth 1Megabit1Megabit, a , a delay of 10msdelay of 10ms and a and a Drop Tail queue.Drop Tail queue.

4848

Network Topology - Link

n0 n1

enqT_ queue_ deqT_

drophead_ drpT_

link_ ttl_

n1 entry_head_

$ns duplex-link $n0 $n1 1Mb 10ms DropTail

4949

Routing

n0 n1

Addr Classifier

Port Classifier

classifier_

dmux_

entry_

0

1

Addr Classifier

Port Classifier

classifier_

dmux_

entry_

1

0Link n0-n1

Link n1-n0

Creating AgentsCreating Agents

In ns, data is always being sent from In ns, data is always being sent from one 'agent' to anotherone 'agent' to another

1.1. UDPUDP

2.2. CBRCBR

3.3. TCPTCP

4.4. NULLNULL

5.5. Connecting AgentsConnecting Agents

6.6. Schedule The CBRSchedule The CBR

UDP AgentUDP Agent

CommandCommand

*set udp0 [new Agent/UDP]*set udp0 [new Agent/UDP]

$ns attach-agent $n0 $udp0*$ns attach-agent $n0 $udp0* These lines create a These lines create a UDP agent UDP agent

(udp0) (udp0) Attach Agent (Attach Agent (udp0udp0)to the node )to the node n0n0

TCP AgentTCP Agent

CommandCommand

*set tcp0 [new Agent/UDP]*set tcp0 [new Agent/UDP]

$ns attach-agent $n0 $tcp0*$ns attach-agent $n0 $tcp0* These lines create a These lines create a TCP agent (tcp0) TCP agent (tcp0) Attach Agent (Attach Agent (tcp0tcp0)to the node )to the node n0n0

5353

0

1

Transport

n0 n1

Addr Classifier

Port Classifier

classifier_

dmux_

entry_

0 Agent/TCP

agents_

Addr Classifier

Port Classifier

classifier_

dmux_

entry_

1

0Link n0-n1

Link n1-n0

0 Agent/TCPSink

agents_

dst_=1.0 dst_=0.0

set tcp [new Agent/TCP]$ns attach-agent $n0 $tcp

CBR AgentCBR Agent

CommandCommand*set cbr0 [new Application/Traffic/CBR]*set cbr0 [new Application/Traffic/CBR]

$cbr0 set packet Size_ 500$cbr0 set packet Size_ 500

$cbr0 set interval_ 0.005*$cbr0 set interval_ 0.005* CBRCBR stands for 'constant bit rate stands for 'constant bit rate First line create the First line create the CBRCBR Agent ( Agent (cbr0cbr0)) The packet Size is being set to 500 bytesThe packet Size is being set to 500 bytes packet will be sent every 0.005 secondspacket will be sent every 0.005 seconds

NULL AgentNULL Agent

CommandCommand

*set null0 [new Agent/Null]*set null0 [new Agent/Null]

$ns attach-agent $n1 $null0*$ns attach-agent $n1 $null0* These line Creates a Null Agent These line Creates a Null Agent

(null0) (null0) Which act as a traffic sink.Which act as a traffic sink. Attach Agent Attach Agent (null0)(null0) to the node to the node n1n1

TCP Sink AgentTCP Sink Agent

CommandCommand

set sink0 [new Agent/TCPSink]set sink0 [new Agent/TCPSink]

$ns attach-agent $n0 $sink0$ns attach-agent $n0 $sink0 These lines creates a These lines creates a TCPSink TCPSink

Agent(sink0)Agent(sink0) Attach agent Attach agent (sink0) (sink0) to the node to the node n0n0

Connect The AgentsConnect The Agents

Connect The Two Agents UDP & NULLConnect The Two Agents UDP & NULL

CommandCommand

*$ns connect $udp0 $null0**$ns connect $udp0 $null0* Which is used to connect the two Which is used to connect the two

agents agents udp0udp0 and and null0null0..

Connect The AgentsConnect The Agents

Connect The Two Agents TCP &TCP SINK Connect The Two Agents TCP &TCP SINK

CommandCommand

*$ns connect $tcp0 $sink0**$ns connect $tcp0 $sink0* Which is used to connect the two Which is used to connect the two

agents agents tcp0tcp0 and and sink0sink0..

5959

Application

0

1

n0 n1

Addr Classifier

Port Classifier

classifier_

dmux_

entry_

0 Agent/TCP

agents_

Addr Classifier

Port Classifier

classifier_

dmux_

entry_

1

0Link n0-n1

Link n1-n0

0 Agent/TCPSink

agents_

dst_=1.0 dst_=0.0Application/FTP

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

Schedule The CBRSchedule The CBR

To tell CBR to When to start & stopTo tell CBR to When to start & stop

the data sendingthe data sending

CommandCommand

$ns at 0.5 "$cbr0 start“$ns at 0.5 "$cbr0 start“

$ns at 4.5 "$cbr0 stop“$ns at 4.5 "$cbr0 stop“ After After 55 simulation seconds simulation seconds cbr0cbr0 start start

the sending packet and after the sending packet and after 4.54.5m it m it stopstop

6161

Packet Flow

0

1

n0 n1

Addr Classifier

Port Classifier

entry_

0 Agent/TCP Addr Classifier

Port Classifier

entry_

1

0Link n0-n1

Link n1-n0

0 Agent/TCPSink

dst_=1.0 dst_=0.0Application/FTP

Wired Example Program Wired Example Program (UDP Communication)(UDP Communication)

Two NodesTwo Nodes One LinkOne Link UDP CommunicationUDP Communication BandwidthBandwidth DelayDelay Drop tail QueueDrop tail Queue

Arshad KhanArshad Khan 6363

A simple Example – Creating the topologyA simple Example – Creating the topology

n1 n2

Bandwidth:1MbpsLatency: 10ms

Arshad KhanArshad Khan 6464

Adding trafficAdding traffic

n1 n21Mbps,10ms

udpnull

cbr

Packet Size: 500 bytesrate: 800Kbps

cbr traffic

0.00.5 5.04.5 time

node agent

source

link

All at One GlanceAll at One Glance

1.1. Create Simulator ObjectCreate Simulator Object

2.2. Open a Network Animator FileOpen a Network Animator File

3.3. Finish ProcedureFinish Procedure

4.4. Create a NodesCreate a Nodes

5.5. Create a LinkCreate a Link

6.6. Create & Attach UDP agent at One NodeCreate & Attach UDP agent at One Node

7.7. Create & Attach CBR agent to UDP AgentCreate & Attach CBR agent to UDP Agent

8.8. Attach NULL agent To another NodeAttach NULL agent To another Node

9.9. Connect The Agents ( UDP & NULL)Connect The Agents ( UDP & NULL)

10.10. Schedule The Start and Stop Time To CBR AgentSchedule The Start and Stop Time To CBR Agent

11.11. Call the Finish procedure (Schedule the Simulation)Call the Finish procedure (Schedule the Simulation)

12.12. Run The SimulationRun The Simulation

Wired Example Program Wired Example Program (TCP Communication)(TCP Communication)

Two nodesTwo nodes One linkOne link TCP CommunicationTCP Communication BandwidthBandwidth DelayDelay Drop tail QueueDrop tail Queue

All at One GlanceAll at One Glance

1.1. Create Simulator ObjectCreate Simulator Object

2.2. Open a Network Animator FileOpen a Network Animator File

3.3. Finish ProcedureFinish Procedure

4.4. Create a NodesCreate a Nodes

5.5. Create a LinkCreate a Link

6.6. Create & Attach TCP agent at One NodeCreate & Attach TCP agent at One Node

7.7. Create & Attach CBR agent to TCP AgentCreate & Attach CBR agent to TCP Agent

8.8. Attach TCPSINK agent To another NodeAttach TCPSINK agent To another Node

9.9. Connect The Agents ( TCP & TCPSINK)Connect The Agents ( TCP & TCPSINK)

10.10. Schedule The Start and Stop Time To CBR AgentSchedule The Start and Stop Time To CBR Agent

11.11. Call the Finish procedure (Schedule the Simulation)Call the Finish procedure (Schedule the Simulation)

12.12. Run The SimulationRun The Simulation

Wired Example Program Wired Example Program (TCP Communication)(TCP Communication)

Two nodesTwo nodes One linkOne link TCP CommunicationTCP Communication BandwidthBandwidth DelayDelay Drop tail QueueDrop tail Queue

Example : TCPExample : TCP

set ns [new Simulator]set n0 [$ns node]set n1 [$ns node]

n0 n1

set ftp [new Application/FTP]$ftp attach-agent $tcp$ns at 0.2 "$ftp start"$ns at 1.2 ”exit"$ns run

$ns duplex-link $n0 $n1 1.5Mb 10ms DropTail

set tcp [new Agent/TCP]set tcpsink [new

Agent/TCPSink]$ns attach-agent $n0 $tcp$ns attach-agent $n1 $tcpsink$ns connect $tcp $tcpsink

Script to start Script to start namnam

set nf [open out.nam w]set nf [open out.nam w]$ns namtrace-all $nf$ns namtrace-all $nfproc finish {} {proc finish {} { global ns nfglobal ns nf $ns flush-trace$ns flush-trace close $nfclose $nf exec nam out.nam &exec nam out.nam & exit 0exit 0}}# your code goes in here# your code goes in here$ns at 12.0 "finish" # 12.0 is the simulation time in secs$ns at 12.0 "finish" # 12.0 is the simulation time in secs

7171

Script CodeScript Code

# Create a topology# Create a topologySet ns [new Simulator]Set ns [new Simulator]set n0 [$ns node]set n0 [$ns node]set n1 [$ns node]set n1 [$ns node]$ns duplex-link $n0 $n1 1Mb 10ms DropTail$ns duplex-link $n0 $n1 1Mb 10ms DropTail

# Add Transport agents# Add Transport agentsset tcp [new Agent/TCP]set tcp [new Agent/TCP]$ns attach-agent $n0 $tcp$ns attach-agent $n0 $tcpset tcpsink [new Agent/TCPSink]set tcpsink [new Agent/TCPSink]$ns attach-agent $n1 $tcpsink$ns attach-agent $n1 $tcpsink$tcp connect $tcpsink$tcp connect $tcpsink

# Add application# Add applicationset ftp [new Application/FTP]set ftp [new Application/FTP]$ftp attach-agent $tcp$ftp attach-agent $tcp

# Create a schedule

$ns at 0.5 "$ftp start"$ns at 4.5 "$ftp stop"

#Run the simulation$ns run

n0 n11Mb

10ms

FTP

TCP

FTP

TCP

7272

Discrete Event-Driven Simulator

time_, uid_, next_, handler_

head_ ->

handler_ -> handle()

time_, uid_, next_, handler_insert

$ns at 0.5 “$ftp start”$ns at 4.5 “$ftp stop”$ns run

Packets Dropping from linkPackets Dropping from link

Cont…Cont…

Create 4 nodes with 3 links.Create 4 nodes with 3 links. Bandwidth 1mbps & Delay 10ms. Bandwidth 1mbps & Delay 10ms. UDP Agent at node n0,n1.UDP Agent at node n0,n1. NULL Agent at node n3.NULL Agent at node n3.

Thank you for your patientThank you for your patient

Recommended