1 / 10

NS-2 Tutorial

NS-2 Tutorial. CS556 Jan 22th, 2004. Figure 1 :Simplified User's View of NS. OTCL. C++ and OTcl: The Duality. Export C++ class to OTcl. Reference: http://nile.wpi.edu/NS/linkage.html. Export C++ Object Control Commands to OTcl.

babu
Download Presentation

NS-2 Tutorial

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. NS-2 Tutorial CS556 Jan 22th, 2004

  2. Figure 1:Simplified User's View of NS

  3. OTCL

  4. C++ and OTcl: The Duality Export C++ class to OTcl Reference: http://nile.wpi.edu/NS/linkage.html Export C++ Object Control Commands to OTcl.

  5. For a complete NS class hierarchy, visit http://www-sop.inria.fr/rodeo/personnel/Antoine.Clerget/ns.

  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" • #Detach tcp and sink agents (not really necessary) • $ns at 4.5 "$ns detach-agent $n0 $tcp ; $ns detach-agent $n3 $sink" • #Call the finish procedure after 5 seconds of simulation time • $ns at 5.0 "finish" • #Print CBR packet size and interval • puts "CBR packet size = [$cbr set packet_size_]" • puts "CBR interval = [$cbr set interval_]" • #Run the simulation • $ns run #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 #Setup a TCP connection set tcp [new Agent/TCP] $tcp set class_ 2 $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 $ftp set type_ FTP #Setup a UDP connection set udp [new Agent/UDP] $ns attach-agent $n1 $udp set null [new Agent/Null] $ns attach-agent $n3 $null $ns connect $udp $null $udp set fid_ 2 #Setup a CBR over UDP connection set cbr [new Application/Traffic/CBR] $cbr attach-agent $udp $cbr set type_ CBR $cbr set packet_size_ 1000 $cbr set rate_ 1mb $cbr set random_ false #Create a simulator object set ns [new Simulator] #Define different colors for data flows (for NAM) $ns color 1 Blue $ns color 2 Red #Open the NAM trace file set nf [open out.nam w] $ns namtrace-all $nf #Open the Trace file set tf [open out.tr w] $ns trace-all $tf #Define a 'finish' procedure proc finish {} { global ns nf tf $ns flush-trace #Close the NAM trace file close $nf #Close the Trace file close $tf #Execute NAM on the trace file exec nam out.nam & exit 0 } #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

  7. Trace File Format

  8. #script: myflowcalcall.awk # a general script for computing throughput BEGIN { arguments = 2; if (ARGC < arguments || ARGC > arguments || flowtype == 0) { printf("error: wrong number of arguments.\nawk: usage - awk -f flowcalc.awk [-v graphgran=value] [-v fidfrom=value] [-v fidto=value] [-v fid=value] -v flowtype=\"type\" -v outdata_file=\"filename\" indata_file\n--%d",ARGC); exit; } measure_interval = 0.5; bits = 0; first_time = graphgran; } { if (($1 == "r") && ((fidfrom == 0 && fidto ==0) || (($8 == fid) && ($3 == fidfrom) && ($4 == fidto))) && (flowtype == "all" || flowtype == $5)) { if (($2 - first_time) > measure_interval) { first_time = first_time + measure_interval; rate = (bits/1000000)/first_time; print filename first_time, rate; } bits = bits + $6 * 8; } } END { measure_interval = 0.5; first_time = first_time + measure_interval; rate = (bits/1000000)/first_time; print filename first_time, rate; } #Script: computeall #compute throughput so far for a certain flow awk -f myflowcalcall.awk -v graphgran=0 -v fidfrom=2 -v fidto=3 -v fid=1 -v flowtype="tcp" -v outdata_file="nothing" out.tr >thr1 echo "Compute flow1 throughput all and output to thr1" awk -f myflowcalcall.awk -v graphgran=0 -v fidfrom=2 -v fidto=3 -v fid=2 -v flowtype="cbr" -v outdata_file="nothing" out.tr >thr2 echo "Compute flow2 throughput all and output to thr2"

  9. gnuplot #Filename: gscript # Before loading this file, # gnuplot>set term windows (x11 for unix) # Gnuplot script file for plotting data # in file "force.dat" # Gnuplot script file for plotting data in files # This file is called force.p set title "One CBR Competes with One FTP" set xlabel "Time in second" set ylabel "Throughput in Mbps" set key 3,1.8 # set label "Yield Point" at 0.003,260 # set arrow from 0.0028,250 to 0.003,280 set xr [0:5] set yr [0:2] plot "thr1" using 1:2 title 'CBR Flow' with lines, \ "thr2" using 1:2 title 'TCP Flow' with lines #Filename: saveplot #Before loading this file #gnuplot>set out myfig.ps (output file) # File name: saveplot - saves a plot as #a PostScript file # to save the current plot as a #postscript file issue the commands: # gnuplot> set out 'plotfile.ps' # gnuplot> load 'saveplot' set size 1.0, 0.4 set terminal postscript portrait \ enhanced mono lw 2 "Helvetica" 14 replot set terminal x11 set size 1,1

  10. Build NS http://www.isi.edu/nsnam/ns/ns-build.html Linux: first build and instal the source packages of tcl, tk and otcl. Then download a snapshot of ns-2 and build it. I used to try ns-allinone but failed. Cygwin: download the allinone package for Cygwin and build it. Reference: (where most of my materials come from) http://nile.wpi.edu/NS/ http://nile.wpi.edu/NS/Example/ns-simple-trace.tcl Good to look at ~/ns-2-root/tcl/lib/ns-default.tcl, which is the init file for ns.

More Related