1 / 16

NS-2

NS-2. Shahin Shayandeh December 2004 Session 1. Ns-2, the Network Simulator. A discrete event simulator Simple model Focused on modeling network protocols Wired, wireless, satellite Network protocols TCP, UDP, multicast, unicast Traffic source behavior Web, telnet, ftp, CBR, VBR

oki
Download Presentation

NS-2

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 Shahin Shayandeh December 2004 Session 1

  2. Ns-2, the Network Simulator • A discrete event simulator • Simple model • Focused on modeling network protocols • Wired, wireless, satellite • Network protocols • TCP, UDP, multicast, unicast • Traffic source behavior • Web, telnet, ftp, CBR, VBR • Router queue management mechanism • Drop Tail, RED, CBQ • Ad hoc routing, sensor networks • Infrastructure: stats, tracing, error models, etc

  3. Simplified User's View of NS

  4. Discrete Event Simulation • Model world as events • Simulator has list of events • Process: take next one, run it, until done • Each event happens in an instant of virtual (simulated) time, but takes an arbitrary amount of real time • Ns uses simple model: single thread of control  no locking or race conditions to worry about (very easy) • Packet-handling delay • Timers

  5. A B Discrete Event Example t=1, A enqueues pkt on LAN t=1.01, LAN dequeues pkt and triggers B simple queuing model: Consider two nodes on an Ethernet:

  6. Ns Architecture • Object-oriented (C++, OTcl) • Modular approach • Fine-grained object composition • Reusability • Maintenance • Performance (speed and memory) • Careful planning of modularity

  7. C++ and OTcl Separation • “data” / control separation • C++ for “data”: • per packet processing, core of ns • fast to run, detailed, complete control • OTcl for control: • Simulation scenario configurations • Periodic or triggered action • Manipulating existing C++ objects • fast to write and change • running vs. writing speed • Learning and debugging (two languages)

  8. Basic Tcl variables: set x 10 puts “x is $x” functions and expressions: set y [pow x 2] set y [expr $x*$x] control flow: if {$x > 0} { return $x } else { return [expr -$x] } while { $x > 0 } { puts $x incr x –1 } procedures: proc pow {x n} { if {$n == 1} { return $x } set part [pow x [expr $n-1]] return [expr $x*$part] } Also lists, associative arrays, etc. => can use a real programming language to build network topologies, traffic models, etc.

  9. Basic otcl Class Person # constructor: Person instproc init {age} { $selfinstvar age_ set age_ $age } # method: Person instproc greet {} { $selfinstvar age_ puts “$age_ years old: How are you doing?” } # subclass: Class Kid -superclass Person Kid instproc greet {} { $selfinstvar age_ puts “$age_ years old kid: What’s up, dude?” } set a [new Person 45] set b [new Kid 15] $a greet $b greet

  10. Using ns Problem Result analysis Simulation model Modify ns Setup/run simulation with ns

  11. Hello World - Interactive Mode Interactive mode: $ ns % set ns [new Simulator] _o3 % $ns at 1 “puts \“Hello World!\”” 1 % $ns at 1.5 “exit” 2 % $ns run Hello World! Batch mode: simple.tcl set ns [new Simulator] $ns at 1 “puts \“Hello World!\”” $ns at 1.5 “exit” $ns run $ ns simple.tcl Hello World!

  12. How to start? • Create a simulator object set ns [new Simulator] • NAM trace data set nf [open out.nam w] $ns namtrace-all$nf • 'finish' procedure proc finish {} { global ns nf $ns flush-trace close $nf exec nam out.nam & exit 0 } • Execute the 'finish' procedure after 5.0 seconds $ns at 5.0 "finish“ • starts the simulation $ns run

  13. Creating Network • Nodes set n0 [$ns node] set n1 [$ns node] • Links and queuing $ns <link_type> $n0 $n1 <bandwidth> <delay> <queue_type> • <link_type>: duplex-link, simplex-link • <queue_type>: DropTail, RED, CBQ, FQ, SFQ, DRR queues

  14. Two nodes, one link set n0 [$ns node] set n1 [$ns node] $ns duplex-link $n0 $n1 1Mb 10ms DropTail

  15. Sending Data #Create a UDP agent and attach it to node n0 set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 #Create a CBR traffic source and attach it to udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0 • Null agent which acts as traffic sink set null0 [new Agent/Null] $ns attach-agent $n1 $null0 • Two agents have to be connected with each other $ns connect $udp0 $null0 • CBR agent when to send data and when to stop sending $ns at 0.5 "$cbr0 start“ $ns at 4.5 "$cbr0 stop"

  16. NAM

More Related