ns-2 tutorial Karthik Sadasivam Banuprasad Samudrala CSCI 5931 Network Security Instructor : Dr. T. Andrew Yang
Introduction Ns-2 is a discrete event simulator targeted at network research focused on modeling network protocols wired, wireless, satellite TCP, UDP, multicast, unicast web, telnet, ftp ad hoc routing, sensor networks infrastructure: stats, tracing, error models, etc
Goals of ns support networking research and education protocol design, traffic studies, etc. protocol comparison provide a collaborative environment freely distributed, open source share code, protocols, models, etc. allow easy comparision of similar protocols increase confidence in results models provide useful results in several situations multiple levels of detail in one simulator
ns status platforms: basically all Unix and Windows size: about 200k loc each C++ and Tcl, 350 page manual user-base: >1k institutions, >10k users releases about every 6 months, plus daily snapshots
Components of ns ns, the simulator itself nam, the Network AniMator visualize ns (or other) output GUI input simple ns scenarios pre-processing: traffic and topology generators post-processing: simple trace analysis, often in Awk, Perl, or Tcl
ns Software Structure: C++ and Otcl Uses two languages C++ for packet-processing fast to run, detailed, complete control OTcl for control simulation setup, configuration, occasional actions fast to write and change pros: trade-off running vs. writing speed, powerful/documented config language cons: two languages to learn and debug in
oTcl and C++: The Duality OTcl (object variant of Tcl) and C++ share class hierarchy TclCL is glue library that makes it easy to share functions, variables, etc. C++ otcl
Installation and documentation download ns-allinone includes Tcl, OTcl, TclCL, ns, nam, etc. mailing list: documentation (see url above) Marc Gries tutorial ns manual
Steps to set up the simulation Initialize the simulator Define files for output (tracing) Set up the topology Set up the “agents” Set up the traffic between the nodes Start the simulation Analyze the trace files to compute the parameters of interest
Example : TCP set ns [new Simulator] set n0 [$ns node] set n1 [$ns node] n0n1 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 nam set nf [open out.nam w] $ns namtrace-all $nf proc finish {} { global ns nf $ns flush-trace close $nf exec nam out.nam & exit 0 } # your code goes in here $ns at 12.0 "finish" # 12.0 is the simulation time in secs
Screenshots Project B.1 Project B.2
References [ 1] slides by John Heidemann ass_slides_sp2003.ppt [2] ns2 website: [3] ns-2 Tutorial: [4] Tcl/Tk tutorial : noplugin/ noplugin/