130 likes | 331 Views
ns-2 tutorial. CSCI 5931 Network Security Instructor : Dr. T. Andrew Yang . Karthik Sadasivam Banuprasad Samudrala. Introduction. Ns-2 is a discrete event simulator targeted at network research focused on modeling network protocols wired, wireless, satellite TCP, UDP, multicast, unicast
E N D
ns-2 tutorial CSCI 5931 Network Security Instructor : Dr. T. Andrew Yang Karthik Sadasivam Banuprasad Samudrala
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 • http://www.isi.edu/nsnam/ns/ • download ns-allinone • includes Tcl, OTcl, TclCL, ns, nam, etc. • mailing list: ns-users@isi.edu • 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 n0 n1 set ns [new Simulator] set n0 [$ns node] set n1 [$ns node] 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.2 Project B.1
References [1] slides by John Heidemann http://sce.cl.uh.edu/yang/teaching/csci5931netSecuritySpr05/johnh_class_slides_sp2003.ppt [2] ns2 website: http://www.isi.edu/nsnam/ns [3] ns-2 Tutorial: http://www.isi.edu/nsnam/ns/tutorial/nsindex.html [4] Tcl/Tk tutorial : http://hegel.ittc.ukans.edu/topics/tcltk/tutorial-noplugin/