Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Introduction to Ns-2 Zhibin WU WINLAB, ECE Dept. Rutgers U.

Similar presentations


Presentation on theme: "1 Introduction to Ns-2 Zhibin WU WINLAB, ECE Dept. Rutgers U."— Presentation transcript:

1 1 Introduction to Ns-2 Zhibin WU WINLAB, ECE Dept. Rutgers U. zhibinwu@winlab.rutgers.edu

2 2 Goals Understanding NS-2 Hands-on Experience with NS2 Ns-2 by Example Write your own scripts Extending NS2 Implementing new functionality

3 3 Schedule Presentation (60 min) Group Assignments (10 min) Practices (1 Hr) Q & A session (~15 min)

4 4 Talk Overview What is ns-2? (the evolution) Architecture Basic Tcl/Otcl commands Elements of an ns-2 simulation Example Online Resources & Documentation

5 5 What is ns? A discrete event, packet-level simulator Targeted at networking research Supports the simulation of intserv/diffserv, Multicast, Transport, Applications, Wireless (fixed, mobile, satellite) REAL variant (1989)  DARPA (LBL, Xerox PARC, UCB, and USC/ISI) (1995) Ns-3 Project (Ongoing)

6 6 Status ns-2 100K lines of C++ 70K lines of OTcl 50K+ lines of test suite, examples, docs Platforms Most UNIX and UNIX-like systems (FreeBSD, Linux, Sun Solaris) Window 95/98/NT with Cygwin (Emulation only for FreeBSD for now)

7 7 Remember! A simulator model of a real-world system is necessarily a simplification. For example, in simulating TCP No SYN/FIN Equal size segments No variable window advertisement Bugs: “Users of ns are responsible for verifying for themselves that their simulations are not invalidated by bugs”.

8 8 Architecture: Object-Oriented C++ for “data” Per packet action OTcl for control Periodic or triggered action Modularity (+), re-usability(+), scalability(+) Speed(-), memory(-)

9 9 OTcl and C++: The Duality C++ OTcl Pure C++ objects Pure OTcl objects C++/OTcl split objects ns

10 10 Script in interactive mode linux21% ns % set ns [new Simulator] _o3 % $ns at 1 “puts \“Hello World!\”” 1 % $ns at 1.5 “exit” 2 % $ns run Hello World! linux21%

11 11 A script in batch mode #simple.tcl set ns [new Simulator] $ns at 1 “puts \“Hello World!\”” $ns at 1.5 “exit” $ns run linux21% ns simple.tcl Hello World! linux21%

12 12 Basic Tcl set a 43 set b 27 proc test { a b } { set c [expr $a + $b] set d [expr [expr $a - $b] * $c] for {set k 0} {$k < 10} {incr k} { if {$k < 5} { puts “k < 5, pow = [expr pow($d, $k)]” } else { puts “k >= 5, mod = [expr $d % $k]” } test 43 27

13 13 Basic OTcl Class Mom Mom instproc greet {} { $self instvar age_ puts “$age_ years old mom: How are you doing?” } Class Kid -superclass Mom Kid 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

14 SIMULATE WIRED NETWORK 14

15 15 Elements of ns-2 Simulation Create the event scheduler [Turn on tracing] Create network Setup routing Insert errors Create transport connection Create traffic Transmit application-level data

16 16 Creating Event Scheduler Create event scheduler set ns [new Simulator] Schedule events $ns at : any legitimate ns/tcl commands Start scheduler $ns run

17 17 Tracing Trace packets on all links $ns trace-all [open test.out w] -- -- + 1 0 2 cbr 210 ------- 0 0.0 3.1 0 0 - 1 0 2 cbr 210 ------- 0 0.0 3.1 0 0 r 1.00234 0 2 cbr 210 ------- 0 0.0 3.1 0 0 Trace packets on all links in nam format $ns namtrace-all [open test.nam w] Must appear immediately after creating scheduler

18 18 Tracing Turn on tracing on specific links $ns trace-queue $n0 $n1 $ns namtrace-queue $n0 $n1

19 19 Creating Network Nodes set n0 [$ns node] set n1 [$ns node] Links and queuing $ns duplex-link $n0 $n1 : DropTail, RED, CBQ, FQ, SFQ, DRR

20 20 Creating Network: LAN LAN $ns make-lan : LL : Queue/DropTail, : MAC/802_3 : Channel

21 21 Inserting Packet Errors Creating Error Module set loss_module [new ErrorModel] $loss_module set rate_ 0.01 $loss_module unit pkt $loss_module ranvar [new RandomVariable/Uniform] $loss_module drop-target [new Agent/Null] Inserting Error Module $ns lossmodel $loss_module $n0 $n1

22 22 Network Dynamics Link failures Hooks in routing module to reflect routing changes Four models $ns rtmodel-at up|down $n0 $n1 $ns rtmodel Trace $n0 $n1 $ns rtmodel Exponential { } $n0 $n1 $ns rtmodel Deterministic { } $n0 $n1 Parameter list [ ] [ ]

23 23 Setup Routing Unicast $ns rtproto : Static, Session, DV, cost, multi-path Multicast $ns multicast (right after [new Simulator]) or set ns [new Simulator –multicast on] $ns mrtproto : CtrMcast, DM, ST, BST (centralized,dense mode, shared tree

24 24 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

25 25 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]

26 26 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

27 27 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

28 28 Creating Traffic: Trace Driven Trace driven set tfile [new Tracefile] $tfile filename set src [new Application/Traffic/Trace] $src attach-tracefile $tfile : Binary format (native!) inter-packet time (msec) and packet size (byte)

29 29 Application-Level Simulation Features Build on top of existing transport protocol Transmit user data, e.g., HTTP header Two different solutions TCP: Application/TcpApp UDP: Agent/Message

30 30 Script Structure for Wired Scenario # parameters and options set ns [new Simulator] # [Turn on tracing] # Create topology # Setup packet loss, link dynamics # Create routing agents # Create: # - protocol agents # - application and/or setup traffic sources # Post-processing procs # Start simulation

31 SIMULATE WIRELESS NETWORK 31

32 32 Script Structure: Wireless # parameters and options set ns [new Simulator] # [Turn on tracing] # create MobileNode object (PHY to layer 3 configured) # Create topology # create mobility # Create Layer 4 and above # - UDP/TCP agents # - application and/or setup traffic sources # Post-processing procedures # Start simulation

33 33 Example: Wireless Scenario 4x4 grid 240m 4 7 8 11 13 14 2 3 11

34 34 Example: Step 1 Define Parameters set cbr_size 500 set cbr_interval 0.002 set num_row 4 set time_duration 100

35 35 Example: Step 2 Protocol Options set val(chan) Channel/WirelessChannel ;# channel type set val(prop) Propagation/TwoRayGround ;# radio- propagation model set val(netif) Phy/WirelessPhy ;# network interface type set val(mac) Mac/802_11 ;# MAC type set val(ifq) Queue/DropTail/PriQueue ;# interface queue type set val(ll) LL ;# link layer type set val(ant) Antenna/OmniAntenna ;# antenna model set val(ifqlen) 50 ;# max packet in ifq set val(rp) DSDV ;# routing protocol

36 36 Example: Step 3 Scheduler, Trace, Topo, God # # Initialize ns # set ns_ [new Simulator] set tracefd [open simple.tr w] $ns_ trace-all $tracefd # set up topography object # set up topography object set topo [new Topography] set topo [new Topography] $topo load_flatgrid 1000 1000 $topo load_flatgrid 1000 1000 create-god [expr $num_row * $num_row ] create-god [expr $num_row * $num_row ]

37 37 Example: Step 4 Create Node Object with protocols $ns_ node-config -adhocRouting $val(rp) -llType $val(ll) \ -macType $val(mac) -ifqType $val(ifq) \ -macType $val(mac) -ifqType $val(ifq) \ -ifqLen $val(ifqlen) -antType $val(ant) \ -ifqLen $val(ifqlen) -antType $val(ant) \ -propType $val(prop) -phyType $val(netif) \ -propType $val(prop) -phyType $val(netif) \ -channel $chan1 -topoInstance $topo \ -channel $chan1 -topoInstance $topo \ -agentTrace ON -routerTrace OFF\ -agentTrace ON -routerTrace OFF\ -macTrace ON \ -macTrace ON \ -movementTrace OFF -movementTrace OFF for {set i 0} {$i < [expr $num_row*$num_row]} {incr i} { set node_($i) [$ns_ node] }

38 38 Example: Step 5 Create Topology set k 0; while {$k < $num_row } { for {set i 0} {$i < $num_row } {incr i} { for {set i 0} {$i < $num_row } {incr i} { set m [expr $i+$k*$num_row]; set m [expr $i+$k*$num_row]; $node_($m) set X_ [expr $i*240]; $node_($m) set X_ [expr $i*240]; $node_($m) set Y_ [expr $k*240+20.0]; $node_($m) set Y_ [expr $k*240+20.0]; $node_($m) set Z_ 0.0 $node_($m) set Z_ 0.0 } incr k; incr k;};

39 Example: Step 6 Create Mobility #Move node 11 from its original place to top-right corner $ns_ at 60.0 "$node_(11) setdest 990.0 990.0 15.0”

40 40 Example: Step 7 Set up transport layer (UDP) for {set i 0} {$i < $num_row } {incr i} { for {set i 0} {$i < $num_row } {incr i} { set udp_($i) [new Agent/UDP] set udp_($i) [new Agent/UDP] set null_($i) [new Agent/Null] set null_($i) [new Agent/Null] } $ns_ attach-agent $node_(8) $udp_(0) $ns_ attach-agent $node_(8) $udp_(0) $ns_ attach-agent $node_(4) $udp_(1) $ns_ attach-agent $node_(4) $udp_(1) $ns_ attach-agent $node_(13) $udp_(2) $ns_ attach-agent $node_(13) $udp_(2) $ns_ attach-agent $node_(14) $udp_(3) $ns_ attach-agent $node_(14) $udp_(3) $ns_ attach-agent $node_(11) $null_(0) $ns_ attach-agent $node_(11) $null_(0) $ns_ attach-agent $node_(7) $null_(1) $ns_ attach-agent $node_(7) $null_(1) $ns_ attach-agent $node_(2) $null_(2) $ns_ attach-agent $node_(2) $null_(2) $ns_ attach-agent $node_(3) $null_(3) $ns_ attach-agent $node_(3) $null_(3) for {set i 0} {$i < $num_row } {incr i} { for {set i 0} {$i < $num_row } {incr i} { $ns_ connect $udp_($i) $null_($i) $ns_ connect $udp_($i) $null_($i) }

41 41 Example: Step 8 Define Traffic Scenario for {set i 0} {$i < $num_row } {incr i} { set cbr_($i) [new Application/Traffic/CBR] $cbr_($i) set packetSize_ $cbr_size $cbr_($i) set interval_ 0.5 $cbr_($i) attach-agent $udp_($i)} $ns_ at 11.0234 "$cbr_(0) start" $ns_ at 10.4578 "$cbr_(1) start" $ns_ at 12.7184 "$cbr_(2) start" $ns_ at 12.2456 "$cbr_(3) start"

42 42 Example: Step 9 End-of-simulation wrapper (as usual) # Tell nodes when the simulation ends # for {set i 0} {$i < [expr $num_row*$num_row] } {incr i} { $ns_ at [expr $time_duration +10.0] "$node_($i) reset"; } $ns_ at [expr $time_duration +10.0] "finish" $ns_ at [expr $time_duration +10.01] "puts \"NS Exiting...\"; $ns_ halt" proc finish {} { global ns_ tracefd $ns_ flush-trace close $tracefd } puts "Starting Simulation..." $ns_ run

43 43 Auxiliary Tools setdest used to generate the positions of nodes and their moving speed and moving directions. setdest -v 1 -n 50 -p 0 -M 20 -t 900 -x 1500 -y 300 cbrgen.tcl ns cbrgen.tcl [-type cbr|tcp] [-nn nodes] [-seed seed] [-mc connections] [-rate rate] Use “source.tcl” to add the generated file to scipts

44 44 Resources http://www.isi.edu/nsnam/ns http://www.winlab.rutgers.edu/~zhibinwu Tutorials: Marc Greis’s Tutorial (http://www.isi.edu/nsnam/ns/tutorial/index.html)http://www.isi.edu/nsnam/ns/tutorial/index.html Ns by example (http://nile.wpi.edu/NS/)http://nile.wpi.edu/NS/ Wireless Tutorial (http://www.isi.edu/nsnam/ns/ns- tutorial/wireless.ppt )http://www.isi.edu/nsnam/ns/ns- tutorial/wireless.ppt

45 45 Documentation Tcl (Tool Command Language) http://dev.scriptics.com/scripting OTcl (MIT Object Tcl) ~otcl/doc/tutorial.html (in distribution) ns manual Included in distribution: ~ns/doc http://www.isi.edu/~salehi/ns_doc.ps.gz

46 Advanced Topics Trace analysis Architecture of Mobilenode Object Extending NS-2 with new protocols and algorithms More complex changes: Hybrid Node A node with multiple interfaces 46

47 Group Assignments Download simple.tcl http://www.winlab.rutgers.edu/~zhibinwu/simple.tcl Modifications Node-Configure changes Random topology generation 40-node within 1000x1000 area Random Node Mobility Changeprotocol from UDP to TCP Dynamic Traffic change 47


Download ppt "1 Introduction to Ns-2 Zhibin WU WINLAB, ECE Dept. Rutgers U."

Similar presentations


Ads by Google