1 ns fundamentals. usc information sciences institute 2 otcl and c++: the duality c++ otcl pure c++...
TRANSCRIPT
11
NS Fundamentals
22USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
OTcl and C++: The Duality
C++ OTcl
Pure C++objects
Pure OTclobjects
C++/OTcl split objects
ns
33USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
NS input & output
44USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
Basic TclDefining a variable.
set var1 1 set var2 “Hello“
Variable Reference
puts "var1=$var1, var2=$var2"
Assign the results of a function
set var3 [expr 5*10]
55USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
Basic TclFor Loop
for {set i 0} {$i < 100} {incr i} { puts “I = $i "
}While Loop
set i 0 while {$i < 10} { set n($i) [new Node] incr i }
Procedureproc proc1 {} { puts "in procedure proc1" }
proc1
66USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
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
77USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
Simple Simulation Example
88USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
Summary: Generic Script Structure
set ns [new Simulator]set ns [new Simulator]
# [Turn on tracing]# [Turn on tracing]
# Create topology# Create topology
# Setup packet loss, link dynamics# Setup packet loss, link dynamics
# Create routing agents# Create routing agents
# Create: # Create:
# - multicast groups# - multicast groups
# - protocol agents# - protocol agents
# - application and/or setup traffic sources# - application and/or setup traffic sources
# Post-processing procs# Post-processing procs
# Start simulation# Start simulation
99USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
Creating Event Scheduler
Create event scheduler set ns [new Simulator]
Schedule events $ns at <time> <event> <event>: any legitimate ns/tcl
commands
Start scheduler $ns run
1010USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
TracingTrace packets on all links $ns trace-all [open out.tr w]
+ 0.112731 1 3 tcp 512 ------- 0 0.1 3.1 0 0 - 0.112731 1 3 tcp 512 ------- 0 0.1 3.1 0 0 r 0.125461 1 3 tcp 512 ------- 0 0.1 3.1 0 0
1111USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
Creating Network
Nodes set n0 [$ns node] set n1 [$ns node]
Links and queuing $ns duplex-link $n0 $n1
<bandwidth> <delay> <queue_type>
<queue_type>: DropTail, RED, CBQ, FQ, SFQ, DRR
1212USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
Setup Routing
Unicast $ns rtproto <type> <type>: Static, Session, DV, cost,
multi-path
Multicast $ns multicast (right after [new
Simulator]) $ns mrtproto <type> <type>: CtrMcast, DM, ST, BST
1313USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
Creating Connection: UDP
UDP set udp [new Agent/UDP] set null [new Agent/Null] $ns attach-agent $n0 $udp $ns attach-agent $n1 $null $ns connect $udp $null
1414USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
Creating Traffic: On Top of UDP
CBR set src [new Application/Traffic/CBR]
Exponential or Pareto on-off set src [new
Application/Traffic/Exponential] set src [new
Application/Traffic/Pareto]
1515USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
Creating Connection: TCP
TCP set tcp [new Agent/TCP] set tcpsink [new Agent/TCPSink] $ns attach-agent $n0 $tcp $ns attach-agent $n1 $tcpsink $ns connect $tcp $tcpsink
1616USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
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 $tcp
1717USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
Simple Simulation Example
1818USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
TCL Script Step 1#Create a simulator objectset ns [new Simulator]
#Define different colors for data flows (for NAM)$ns color 1 Blue$ns color 2 Red
#Open the NAM trace fileset nf [open out.nam w]$ns namtrace-all $nf
#Open the All trace fileSet f [open out.tr w]$ns trace-all $f
1919USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
TCL Script Step 2
#Create four nodes
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
#Create links between the nodes
$ns duplex-link $n0 $n2 2Mb 10ms DropTail
$ns duplex-link $n1 $n2 2Mb 10ms DropTail
$ns duplex-link $n2 $n3 1.7Mb 20ms DropTail
2020USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
TCL Script Step 3
#Set Queue Size of link (n2-n3) to 10$ns queue-limit $n2 $n3 10 #Give node position (for NAM)$ns duplex-link-op $n0 $n2 orient right-down$ns duplex-link-op $n1 $n2 orient right-up$ns duplex-link-op $n2 $n3 orient right #Monitor the queue for link (n2-n3). (for NAM)$ns duplex-link-op $n2 $n3 queuePos 0.5
2121USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
TCL Script Step 4#Setup a TCP connection
set tcp [new Agent/TCP]
$ns attach-agent $n0 $tcp
set sink [new Agent/TCPSink]
$ns attach-agent $n3 $sink
$ns connect $tcp $sink
$tcp set fid_ 1
#Setup a FTP over TCP connection
set ftp [new Application/FTP]
$ftp attach-agent $tcp
2222USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
TCL Script Step 5#Setup a UDP connectionset udp [new Agent/UDP]$ns attach-agent $n1 $udpset null [new Agent/Null]$ns attach-agent $n3 $null$ns connect $udp $null$udp set fid_ 2 #Setup a CBR over UDP connectionset cbr [new Application/Traffic/CBR]$cbr attach-agent $udp$cbr set packet_size_ 1000$cbr set rate_ 1mb
2323USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
TCL Script Step 6
#Schedule events for the CBR and FTP agents$ns at 0.1 "$cbr start"$ns at 1.0 "$ftp start"$ns at 4.0 "$ftp stop"$ns at 4.5 "$cbr stop" #Call the finish procedure after 5 seconds of
simulation time$ns at 5.0 "finish" #Print CBR packet size and intervalputs "CBR packet size = [$cbr set packet_size_]"puts "CBR interval = [$cbr set interval_]"
2424USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
TCL Script Step 7
#Define a 'finish' procedureproc finish {} { global ns nf $ns flush-trace #Close the NAM trace file close $nf #Execute NAM on the trace file exec nam out.nam & exit 0} #Run the simulation$ns run
2525USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
NS Directory map
2626USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
ns Primer – Wired World
Basic nsA complete example Multicast routing
Visualization
2727USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
G2time1.3s G2time1.2s
G1G2
time1.35s
Example: Multicast Routing
Dynamic group membership under Dense Mode
n0 n1
n2
n3
1.5Mb, 10ms
1.5Mb, 10ms
G1time1.25s
G2
1.5Mb, 10ms
2828USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
Multicast: Step 1
Scheduler, tracing, and topology
# Create scheduler# Create scheduler
set ns [new Simulator]set ns [new Simulator]
# Turn on multicast# Turn on multicast
$ns multicast$ns multicast
# Turn on Tracing# Turn on Tracing
set fd [new “mcast.nam” w]set fd [new “mcast.nam” w]
$ns namtrace-all $fd$ns namtrace-all $fd
2929USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
Multicast: Step 2
Topology
# Create nodes# Create nodes
set n0 [$ns node]set n0 [$ns node]
set n1 [$ns node]set n1 [$ns node]
set n2 [$ns node]set n2 [$ns node]
set n3 [$ns node]set n3 [$ns node]
# Create links# Create links
$ns duplex-link $n0 $n1 1.5Mb 10ms DropTail$ns duplex-link $n0 $n1 1.5Mb 10ms DropTail
$ns duplex-link $n0 $n2 1.5Mb 10ms DropTail$ns duplex-link $n0 $n2 1.5Mb 10ms DropTail
$ns duplex-link $n0 $n3 1.5Mb 10ms DropTail$ns duplex-link $n0 $n3 1.5Mb 10ms DropTail
3030USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
Multicast: Step 3
Routing and group setup
# Routing protocol: let’s run distance vector# Routing protocol: let’s run distance vector
$ns mrtproto DM$ns mrtproto DM
# Allocate group addresses# Allocate group addresses
set group1 [Node allocaddr]set group1 [Node allocaddr]
set group2 [Node allocaddr]set group2 [Node allocaddr]
3131USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
Multicast: Step 4
Sender 0
# Transport agent for the traffic source# Transport agent for the traffic sourceset set udp0udp0 [new Agent/UDP] [new Agent/UDP]$ns attach-agent $$ns attach-agent $n1n1 $ $udp0udp0$$udp0udp0 set dst_addr_ $ set dst_addr_ $group1group1$$udp0udp0 set dst_port_ 0 set dst_port_ 0
# Constant Bit Rate source #0 # Constant Bit Rate source #0 set set cbr0cbr0 [new Application/Traffic/CBR] [new Application/Traffic/CBR]$$cbr0cbr0 attach-agent $ attach-agent $udp0udp0# Start at time 1.0 second# Start at time 1.0 second$ns at 1.0 "$$ns at 1.0 "$cbr0cbr0 start" start"
3232USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
Multicast: Step 5
Sender 1
# Transport agent for the traffic source# Transport agent for the traffic sourceset set udp1udp1 [new Agent/UDP] [new Agent/UDP]$ns attach-agent $$ns attach-agent $n3n3 $ $udp1udp1$$udp1udp1 set dst_addr_ $ set dst_addr_ $group2group2$$udp1udp1 set dst_port_ 0 set dst_port_ 0
# Constant Bit Rate source #0 # Constant Bit Rate source #0 set set cbr1cbr1 [new Application/Traffic/CBR] [new Application/Traffic/CBR]$$cbr1cbr1 attach-agent $ attach-agent $udp1udp1# Start at time 1.1 second# Start at time 1.1 second$ns at 1.1 "$$ns at 1.1 "$cbr1cbr1 start" start"
3333USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
Multicast: Step 6
Receiver with dynamic membership
# Can also be Agent/Null# Can also be Agent/Null
set rcvr [new Agent/LossMonitor]set rcvr [new Agent/LossMonitor]
# Assign it to node $n2# Assign it to node $n2
$ns at $ns at 1.21.2 "$n2 join-group $rcvr $ "$n2 join-group $rcvr $group2group2""
$ns at $ns at 1.251.25 "$n2 leave-group $rcvr $ "$n2 leave-group $rcvr $group2group2""
$ns at $ns at 1.31.3 "$n2 join-group $rcvr $ "$n2 join-group $rcvr $group2group2""
$ns at $ns at 1.351.35 "$n2 join-group $rcvr $ "$n2 join-group $rcvr $group1group1""
3434USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
Multicast: Step 7
End-of-simulation wrapper (as usual)
$ns at 2.0 "finish"$ns at 2.0 "finish"proc finish {} {proc finish {} {
global ns fdglobal ns fdclose $fdclose $fd$ns flush-trace$ns flush-traceputs "running nam..."puts "running nam..."exec nam out.nam &exec nam out.nam &exit 0exit 0
}}$ns run$ns run
3535USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
ns Primer – Wired World
Basic nsTwo examples TCP, multicast routing
Visualization
3636USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
Visualization Tools
nam-1 (Network AniMator Version 1) Packet-level animation Well supported by ns
xgraph Conversion from ns trace to xgraph
format
3737USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
nam Interface: Color
Color mapping$ns color 40 red$ns color 40 red
$ns color 41 blue$ns color 41 blue
$ns color 42 chocolate$ns color 42 chocolate
Color flow id association$tcp0 set fid_ 40$tcp0 set fid_ 40 ;# red packets;# red packets
$tcp1 set fid_ 41$tcp1 set fid_ 41 ;# blue packets;# blue packets
3838USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
Multicast:
Define nam color
# Colors for packets from two mcast groups# Colors for packets from two mcast groups$ns color 10 blue$ns color 10 blue$ns color 11 red$ns color 11 red
# Prune packets (# Prune packets (predefinedpredefined))$ns color 30 purple$ns color 30 purple# Graft packets# Graft packets$ns color 31 green$ns color 31 green
3939USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
Tracefile for cwnd, rtt
# trace file for RTTset f3 [open rtt.tr w]set tcp0 [new Agent/TCP]$tcp0 attach $f3$tcp0 trace rtt_
# trace file for Congestion Window Sizeset f4 [open cwnd.tr w]set tcp0 [new Agent/TCP]$tcp0 attach $f4$tcp0 trace cwnd_
4040USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE
GNUPLOT
#simple.gnuset term x11set xrange [0:200]set yrange [0:0.4]set xlabel 'Time (s)'set ylabel 'Throughput (Mbit/s)'plot 'blm.tr' title 'blm' with l 1, 'tcp.tr' title 'tcp' with l 5set term postscriptset output 'blm.ps'rep
%gnuplot simple.gnu
4141USC INFORMATION SCIENCES INSTITUTEUSC INFORMATION SCIENCES INSTITUTE