Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 ns-2 Tutorial Kumar Viswanath & Ignacio Solis UC Santa Cruz.

Similar presentations


Presentation on theme: "1 ns-2 Tutorial Kumar Viswanath & Ignacio Solis UC Santa Cruz."— Presentation transcript:

1 1 ns-2 Tutorial Kumar Viswanath & Ignacio Solis UC Santa Cruz

2 2 What is NS Discrete event simulator Packet-level Link layer and up Wired and wireless

3 3 UC Santa Cruz History and Status Columbia NEST UCB REAL ns-1 ns-2 $ 100K lines of C++ $ 70K lines of OTcl $ 30K lines of test suite $ 20K lines of documentation

4 4 UC Santa Cruz Platforms Most UNIX and UNIX-like systems 1 FreeBSD or *BSD 2 Linux 3 Sun Solaris 4 HP, SGI Window 95/98/NT $ Some work, some does not (Emulation only for FreeBSD for now)

5 5 UC Santa Cruz Related Research Routing $ Unicast (DV, link state), multicast intserv/diffserv Transport $ TCP $ Congestion control $ Reliable multicast Application $ Web caching $ Multimedia

6 6 UC Santa Cruz Installation Getting the piecesTcl/TK 8.x (8.0.5 preferred): http://dev.scriptics.comhttp://dev.scriptics.com $ $ OTcl, TclCL, ns-2, nam-1: http://www.isi.edu/nsnam/dist http://www.isi.edu/nsnam/dist Other utilities $ http://www.isi.edu/nsnam/ns/ns-build.html http://www.isi.edu/nsnam/ns/ns-build.html  Tcl-debug, GT-ITM, xgraph, …

7 7 UC Santa Cruz Getting Help ns-2 build questions http://www.isi.edu/nsnam/ns /ns-build.html $ ns-users@isi.edu (previously ns- users@mash.cs.berkeley.edu ns-users@isi.eduns- users@mash.cs.berkeley.edu ) $ ns-users-request@isi.edu ns-users-request@isi.edu  “ subscribe ns-users ” in body $ Archive: http://www.isi.edu/nsnam/nshttp://www.isi.edu/nsnam/ns

8 8 UC Santa Cruz Resources Tcl (Tool Command Language) $ http://dev.scriptics.com/scripting 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 http://www.isi.edu/~salehi/ns_doc.ps.gz

9 9 UC Santa Cruz ns Architecture Object-oriented (C++, OTcl) Scalability + Extensibility  Control/ ” data ” separation $ Split C++/OTcl object Modular approach $ Fine-grained object composition

10 10 UC Santa Cruz Object-Oriented Reusability Maintenance Performance (speed and memory) Careful planning of modularity

11 11 UC Santa Cruz C++ and OTcl Separation C++ for “ data ” $ Per packet action OTcl for control $ Periodic or triggered action Compromise between composibility and speed Learning and debugging

12 12 UC Santa Cruz OTcl and C++: The Duality C++ OTcl Pure C++ objects Pure OTcl objects C++/OTcl split objects ns

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

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

15 15 UC Santa Cruz 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

16 16 UC Santa Cruz Creating Network: LAN LAN $ $ns make-lan $ : LL $ : Queue/DropTail, $ : MAC/802_3 $ : Channel

17 17 UC Santa Cruz Inserting 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

18 18 UC Santa Cruz Setup Routing Unicast $ $ns rtproto $ : Static, Session, DV, cost, multi- path Multicast $ $ns multicast (right after [new Simulator]) $ $ns mrtproto $ : CtrMcast, DM, ST, BST

19 19 UC Santa Cruz 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

20 20 UC Santa Cruz 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]

21 21 UC Santa Cruz 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

22 22 UC Santa Cruz 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

23 23 UC Santa Cruz Application/TcpApp Step 1: FullTcp connection set tcp1 [new Agent/TCP/FullTcp] set tcp2 [new Agent/TCP/FullTcp] $ns attach-agent $n1 $tcp1 $ns attach-agent $n2 $tcp2 $ns connect $tcp1 $tcp2 $tcp2 listen

24 24 UC Santa Cruz Summary: Generic Script Structure set ns [new Simulator] # [Turn on tracing] # Create topology # Setup packet loss, link dynamics # Create routing agents # Create: # - multicast groups # - protocol agents # - application and/or setup traffic sources # Post-processing procs # Start simulation

25 25 UC Santa Cruz ns – Wired World Basic ns A complete example $ Multicast routing Visualization

26 26 UC Santa Cruz Sample Nam

27 27 UC Santa Cruz Nam Running (1)

28 28 UC Santa Cruz Nam Running (2)

29 29 UC Santa Cruz 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

30 30 UC Santa Cruz G2 time 1.3s G2 time 1.2s G1 G2 time 1.35s Example: Multicast Routing Dynamic group membership under Dense Mode n0 n1 n2 n3 1.5Mb, 10ms G1 time 1.25s G2 1.5Mb, 10ms

31 31 UC Santa Cruz Multicast: Step 1 Scheduler, tracing, and topology # Create scheduler set ns [new Simulator] # Turn on multicast $ns multicast # Turn on Tracing set fd [new “ m cast.nam” w] $ns namtrace-all $fd

32 32 UC Santa Cruz Multicast: Step 2 Topology # Create nodes set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node] # Create links $ns duplex-link $n0 $n1 1.5Mb 10ms DropTail $ns duplex-link $n0 $n2 1.5Mb 10ms DropTail $ns duplex-link $n0 $n3 1.5Mb 10ms DropTail

33 33 UC Santa Cruz Multicast: Step 3 Routing and group setup # Routing protocol: let’ s run distance vector $ns mrtproto DM # Allocate group addresses set group1 [Node allocaddr] set group2 [Node allocaddr]

34 34 UC Santa Cruz Multicast: Step 4 Sender 0 # Transport agent for the traffic source set udp0 [new Agent/UDP] $ns attach-agent $n1 $udp0 $udp0 set dst_addr_ $group1 $udp0 set dst_port_ 0 # Constant Bit Rate source #0 set cbr0 [new Application/Traffic/CBR] $cbr0 attach-agent $udp0 # Start at time 1.0 second $ns at 1.0 "$cbr0 start"

35 35 UC Santa Cruz Multicast: Step 5 Sender 1 # Transport agent for the traffic source set udp1 [new Agent/UDP] $ns attach-agent $n3 $udp1 $udp1 set dst_addr_ $group2 $udp1 set dst_port_ 0 # Constant Bit Rate source #0 set cbr1 [new Application/Traffic/CBR] $cbr1 attach-agent $udp1 # Start at time 1.1 second $ns at 1.1 "$cbr1 start"

36 36 UC Santa Cruz Multicast: Step 6 Receiver with dynamic membership # Can also be Agent/Null set rcvr [new Agent/LossMonitor] # Assign it to node $n2 $ns at 1.2 "$n2 join-group $rcvr $group2" $ns at 1.25 "$n2 leave-group $rcvr $group2" $ns at 1.3 "$n2 join-group $rcvr $group2" $ns at 1.35 "$n2 join-group $rcvr $group1"

37 37 UC Santa Cruz Multicast: Step 7 End-of-simulation wrapper (as usual) $ns at 2.0 "finish" proc finish {} { global ns fd close $fd $ns flush-trace puts "running nam..." exec nam out.nam & exit 0 } $ns run

38 38 UC Santa Cruz Other Examples Available in the Lab this afternoon Web traffic model Multicast routing RED Queueing

39 39 UC Santa Cruz ns – Wired World Basic ns Two examples $ TCP, multicast routing Visualization

40 40 UC Santa Cruz Visualization Tools nam-1 (Network AniMator Version 1) $ Packet-level animation $ Well supported by ns xgraph $ Conversion from ns trace to xgraph format

41 41 UC Santa Cruz nam Basic visualization $ Topology layout $ Animation control $ Synchronous replay Fine-tune layout TCP/SRM visualization Editor: generate ns simulation scripts

42 42 UC Santa Cruz ns 0 nam Interface Color Node manipulation Link manipulation Topology layout Protocol state Misc

43 43 UC Santa Cruz nam Interface: Color Color mapping $ns color 40 red $ns color 41 blue $ns color 42 chocolate Color  flow id association $tcp0 set fid_ 40;# red packets $tcp1 set fid_ 41;# blue packets

44 44 UC Santa Cruz nam Interface: Nodes Color $node color red Shape (can ’ t be changed after sim starts) $node shape box;# circle, box, hexagon Marks (concentric “ shapes ” ) $ns at 1.0 “ $n0 add-mark m0 blue box ” $ns at 2.0 “ $n0 delete-mark m0 ” Label (single string) $ns at 1.1 “ $n0 label \ ” web cache 0\ ””

45 45 UC Santa Cruz nam Interfaces: Links Color $ns duplex-link-op $n0 $n1 color "green" Label $ns duplex-link-op $n0 $n1 label "abced" Dynamics (automatically handled) $ns rtmodel Deterministic {2.0 0.9 0.1} $n0 $n1 Asymmetric links not allowed

46 46 UC Santa Cruz nam Interface: Topo Layout “ Manual ” layout: specify everything $ns duplex-link-op $n(0) $n(1) orient right $ns duplex-link-op $n(1) $n(2) orient right $ns duplex-link-op $n(2) $n(3) orient right $ns duplex-link-op $n(3) $n(4) orient 60deg If anything missing 0 automatic layout

47 47 UC Santa Cruz nam Interface: Protocol State Monitor values of agent variables $ns add-agent-trace $srm0 srm_agent0 $ns monitor-agent-trace $srm0 $srm0 tracevar C1_ $srm0 tracevar C2_ # … … $ns delete-agent-trace $tcp1

48 48 UC Santa Cruz nam Interface: Misc Annotation $ Add textual explaination to your sim $ns at 3.5 "$ns trace-annotate \ “ packet drop\" “ Set animation rate $ns at 0.0 "$ns set-animation-rate 0.1ms"

49 49 UC Santa Cruz Multicast Example: nam-Enhanced Packet coloring Node color Node label Link label Annotation Manual layout Queueing

50 50 UC Santa Cruz Multicast: Step 1.1 Define nam color # Colors for packets from two mcast groups $ns color 10 blue $ns color 11 red # Prune packets (predefined) $ns color 30 purple # Graft packets $ns color 31 green

51 51 UC Santa Cruz Multicast: Step 2.1 Layout topology # Manual layout: order of the link is significant! $ns duplex-link-op $n0 $n1 orient right $ns duplex-link-op $n0 $n2 orient right-up $ns duplex-link-op $n0 $n3 orient right-down # Show queue on simplex link n0->n1 $ns duplex-link-op $n0 $n1 queuePos 0.5

52 52 UC Santa Cruz Multicast: Step 4.1, 5.1 Source coloring # Group 0 $udp0 set fid_ 10 $n1 color blue $n1 label “ Source for group 0 ” # Group 1 $udp1 set fid_ 11 $n3 color red $n3 label “ Source for group 1 ”

53 53 UC Santa Cruz Multicast: Step 6.1 Receiver coloring $n2 label “ Receiver ” $ns at 1.2 "$n2 join-group $rcvr $group2; \ $n2 add-mark m0 red" $n2 add-mark m0 red" $ns at 1.25 "$n2 leave-group $rcvr $group2; \ $n2 delete-mark m0" $n2 delete-mark m0" $ns at 1.3 "$n2 join-group $rcvr \ $group2; \ $n2 add-mark m1 red" $ns at 1.35 "$n2 join-group $rcvr $group1; \ $n2 add-mark m2 blue"

54 54 UC Santa Cruz Multicast: Step 7.1 One final tweak # Animation was too fast... $ns set-animation-rate 0.8ms

55 55 UC Santa Cruz Outline Overview Worlds of ns Simulation $ Wired $ Wireless $ Emulation Supporting Tools Extending ns in OTcl

56 56 UC Santa Cruz ns – Wireless World Ad hoc routing Mobile IP Satellite networking

57 57 UC Santa Cruz Ad Hoc Routing – An Example Scenario $ 3 mobile nodes $ moving within 670mX670m flat topology $ using DSDV ad hoc routing protocol $ Random Waypoint mobility model $ TCP and CBR traffic ns-2/tcl/ex/wireless-demo-csci694.tcl

58 58 UC Santa Cruz An Example – Step 1 # Define Global Variables # create simulator set ns [new Simulator] # create a topology in a 670m x 670m area set topo [new Topography] $topo load_flatgrid 670 670

59 59 UC Santa Cruz An Example – Step 2 # Define standard ns/nam trace # ns trace set tracefd [open demo.tr w] $ns trace-all $tracefd # nam trace set namtrace [open demo.nam w] $ns namtrace-all-wireless $namtrace 670 670

60 60 UC Santa Cruz An Example – Step 3 # Create God set god [create-god 3] $ns at 900.00 “ $god setdist 2 3 1 ” God : store an array of the smallest number of hops required to reach one node to an other Optimal case against which to compare routing protocol performance Automatically generated by scenario file

61 61 UC Santa Cruz An Example – Step 4 # Define how a mobile node should be created $ns node-config \ -adhocRouting DSDV \ -llType LL \ -macType Mac/802_11 \ -ifqLen 50 \ -ifqType Queue/DropTail/PriQueue \ -antType Antenna/OmniAntenna \ -propInstance [new Propagation/TwoRayGround] \ -phyType Phy/WirelessPhy \ -channel [new Channel/WirelessChannel] \ -topoInstance $topo -agentTrace ON \ -routerTrace OFF \ -macTrace OFF

62 62 UC Santa Cruz An Example – Step 5 # Create a mobile node, attach it to the channel set node(0) [$ns node] # disable random motion $node(0) random-motion 0 Use “ for ” loop to create 3 nodes: for {set i < 0} {$i < 3} {incr i} { set node($i) [$ns node] }

63 63 UC Santa Cruz An Example – Step 6 # Define node movement model source movement-scenario-files # Define traffic model source traffic-scenario-files

64 64 UC Santa Cruz Scenario Generator: Movement Mobile Movement Generator setdest -n -p pausetime -s -t -x -y setdest -n -p pausetime -s -t -x -y Random movement $ $node start ns-2/indep-utils/cmu-scen- gen/setdest/  Source: ns-2/indep-utils/cmu-scen- gen/setdest/

65 65 UC Santa Cruz A Movement File $node_(2) set Z_ 0.000000000000 $node_(2) set Y_ 199.373306816804 $node_(2) set X_ 591.256560093833 $node_(1) set Z_ 0.000000000000 $node_(1) set Y_ 345.357731779204 $node_(1) set X_ 257.046298323157 $node_(0) set Z_ 0.000000000000 $node_(0) set Y_ 239.438009831261 $node_(0) set X_ 83.364418416244 $ns_ at 50.000000000000 "$node_(2) setdest 369.463244915743 170.519203111152 3.371785899154" $ns_ at 51.000000000000 "$node_(1) setdest 221.826585497093 80.855495003839 14.909259208114" $ns_ at 33.000000000000 "$node_(0) setdest 89.663708107313 283.494644426442 19.153832288917"

66 66 UC Santa Cruz Scenario Generator: Traffic Generating traffic pattern files $ CBR traffic ns cbrgen.tcl [-type cbf|tcp] [-nn nodes] [-seed seed] [-mc connections] [-rate rate] $ TCP traffic ns tcpgen.tcl [-nn nodes] [-seed seed] ns-2/indep-utils/cmu-scen-gen/  Source: ns-2/indep-utils/cmu-scen-gen/

67 67 UC Santa Cruz A Traffic Scenario set udp_(0) [new Agent/UDP] $ns_ attach-agent $node_(0) $udp_(0) set null_(0) [new Agent/Null] $ns_ attach-agent $node_(2) $null_(0) set cbr_(0) [new Application/Traffic/CBR] $cbr_(0) set packetSize_ 512 $cbr_(0) set interval_ 4.0 $cbr_(0) set random_ 1 $cbr_(0) set maxpkts_ 10000 $cbr_(0) attach-agent $udp_(0) $ns_ connect $udp_(0) $null_(0) $ns_ at 127.93667922166023 "$cbr_(0) start" …….

68 68 UC Santa Cruz An Example – Step 7 # Define node initial position in nam for {set i 0} {$i < 3 } { incr i} { $ns initial_node_position $node($i) 20 } # Tell ns/nam the simulation stop time $ns at 200.0 “ $ns nam-end-wireless 200.0 ” $ns at 200.0 “ $ns halt ” # Start your simulation $ns run

69 69 UC Santa Cruz Energy Extension Node is energy-aware Define node by adding new options: $ns_ node-config \ –e n ergyModel EnergyModel -initialEnergy100.0 -txPower0.6 -rxPower0.2

70 70 UC Santa Cruz nam Visualization Use nam to visualize: $ Mobile node position $ Mobile node moving direction and speed $ Energy consumption at nodes (color keyed)

71 71 UC Santa Cruz nam Visualization Replace $ns namtrace-all $fd with $ns namtrace-all-wireless $fd A A t the end of simulation, do $ns nam-end-wireless [$ns now] See an example:

72 72 UC Santa Cruz Summary Mac Layer: IEEE 802.11 Address Resolution Protocol (ARP) Ad hoc routing protocols: DSDV, DSR,TORA, AODV Radio Propagation Model $ Friss-space attenuation at near distances $ Two ray ground at far distances Antenna: an omni-directional antenna having unity gain

73 73 UC Santa Cruz Summary Energy consumption model for sensor networks Visualization of node movement, reachability, and energy Validation test suites

74 74 UC Santa Cruz A Brief on Satellite Networking Developed by Tom Henderson (UCB) Supported models $ Geostationary satellites: bent-pipe and processing-payload $ Low-Earth-Orbit satellites tcl/ex/sat-*.tcl Example: tcl/ex/sat-*.tcl Much in-development

75 75 UC Santa Cruz A Brief on MobileIP Support Developed by Sun $ Require a different Node structure than the MobileNode $ Co-exists with wired world in ns Standard MobileIP  Home Agent, Foreign Agent, MobileHosts … Example $ ~ns/tcl/ex/wired-cum-wireless.tcl

76 76 UC Santa Cruz Outline Overview Worlds of ns Simulation $ Wired $ Wireless $ Emulation Supporting Tools Extending ns in OTcl

77 77 UC Santa Cruz ns – Emulation Simulator ¥ real network $ Inject received packets into simulation $ Emit packets on to live network Usage $ Subject real implementations to controlled conditions in the simulator $ Subject simulations to real-world traffic Currently only works on FreeBSD

78 78 UC Santa Cruz Sample Environment Emulation Machine Internet Test Machine DHCP for address/routing Proxy ARP for Test Machine web server browser

79 79 UC Santa Cruz real network Emulation Machine BPF RAW IP Simulator Network objects Network/Pcap/LiveNetwork/IP Agent/Tap Scheduler/RealTime ns world

80 80 UC Santa Cruz Realtime Scheduler Extended from Scheduler/List Synchronizes simulation time to real time Fails when simulation time falls behind $ns use-scheduler RealTime

81 81 UC Santa Cruz Network Objects Abstraction of real traffic source/sink Base class for various network types $ Opened read-only, write-only, or read-write Raw IP and UDP/IP network object $ Send/receive raw IP packets or UDP/IP $ IP multicast support Pcap network object $ Send/receive link-layer frames $ Use BPF/libpcap filtering language

82 82 UC Santa Cruz Tap Agents network object Tap agent ns packets: to/from other nodes ns src dst … userdata IP packet payload real network IP/UDP packets

83 83 UC Santa Cruz Emulation Modes Protocol mode $ Simulator interpret/generate live traffic $ Existing agents: ICMP ECHO, ICMP Redirect, ARP, TCP NAT Opaque mode $ Simulator does not interpret network data  Operations: packet drop/reordering/delay …

84 84 UC Santa Cruz Protocol Mode: Ping Responder n2 n0 n1 100Mb, 1000ms ICMP ECHO responder Input tap agent Output tap agent real traffic real Ping application ns

85 85 UC Santa Cruz Ping: Step 1 Stage setup # Create simulator set ns [new Simulator] $ns use-scheduler RealTime # Emulator address set me [exec hostname] # Or an arbitrary one (may require ARP support) # set me “ 1 0.11.12.13”

86 86 UC Santa Cruz Ping: Step 2 Create I/O network objects # Packet input set bpf0 [new Network/Pcap/Live] $bpf0 set promisc_ true set nd0 [$bpf0 open readonly fxp0] set filt “ ( not ip host $me)” $bpf0 filter $filt # Packet output set ipnet [new Network/IP] $ipnet open writeonly

87 87 UC Santa Cruz Ping: Step 3 Agents # Input agent set pfa [new Agent/Tap] $pfa network $bpf0 # Output agent set ipa [new Agent/Tap] $ipa network $ipnet # ICMP ECHO agent set echoagent [new Agent/PingResponder]

88 88 UC Santa Cruz Ping: Step 4 Create network topology set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] $ns simplex-link $n0 $n2 100Mb 1000ms DropTail $ns simplex-link $n2 $n1 100Mb 1000ms DropTail $ns attach-agent $n0 $pfa $ns attach-agent $n1 $ipa $ns attach-agent $n2 $echoagent $ns simplex-connect $pfa $echoagent $ns simplex-connect $ipa $echoagent

89 89 UC Santa Cruz Ping: Step 5 Start # Wait for ping to come in... $ns run Result $ 2000.052ms ± 1.021ms

90 90 UC Santa Cruz Opaque Mode (TCP: 10 packet periodic drop) Dropped SYN ACK of SYN+ACK Retransmitted SYN Lost

91 91 UC Santa Cruz More Examples ~ns/emulate Example scripts $ Protocol mode: ~ns/emulate/empaper.tcl $ Opaque mode: ~ns/emulate/em3.tcl

92 92 UC Santa Cruz Outline Overview Worlds of ns Simulation $ Wired $ Wireless $ Emulation Supporting Tools Extending ns in OTcl

93 93 UC Santa Cruz ns – Supporting Tools Tcl debugger Topology generation Scenario generation Web cache trace converter

94 94 UC Santa Cruz Debugging Your ns Script tcl-debug 1.9 $ http://expect.nist.gov/tcl-debug/ http://expect.nist.gov/tcl-debug/ $ Works with Tcl 8.0.4 and below Installation $ [make distclean] in ns $./configure --with-tcldebug= $ make

95 95 UC Santa Cruz Debugging Your ns Script Using tcl-debug  Insert “ debug 1 ” into your scripts, e.g.: set tcp [new Agent/TCP] debug 1 $tcp set window_ 200  When “ debug 1 ” is executed, ns drops to: vint/ns-2(121):./ns t.tcl 2: lappend auto_path $dbg_library dbg2.0>

96 96 UC Santa Cruz Debugging Your ns Script dbg2.0> h s [#] step into procedure n [#] step over procedure N [#] step over procedures, commands, and arguments c continue r continue until return to caller u [#] move scope up level d [#] move scope down level go to absolute frame if # is prefaced by "#" go to absolute frame if # is prefaced by "#" w show stack ("where") w -w [#] show/set width w -c [0|1] show/set compress b show breakpoints b [-r regexp-pattern] [if expr] [then command] b [-g glob-pattern] [if expr] [then command] b [[file:]#] [if expr] [then command] if pattern given, break if command resembles pattern if pattern given, break if command resembles pattern if # given, break on line # if # given, break on line # if expr given, break if expr true if expr given, break if expr true if command given, execute command at breakpoint if command given, execute command at breakpoint b -# delete breakpoint b - delete all breakpoints

97 97 UC Santa Cruz Topology Generation http://www.isi.edu/nsnam/ns/ns- topogen.html

98 98 UC Santa Cruz GT-ITM Installation $ Comes with ns-allinone  Require Knuth ’ s cweb and SGB Usage $ itm Three graph models $ Flat random: Waxman $ n-level hierarchy $ Transit-stub

99 99 UC Santa Cruz GT-ITM: Transit-Stub Model stub domains transit domains transit-transit link stub-stub link

100 100 UC Santa Cruz GT-ITM: Example Transit-stub network Config file (e.g., ts1) # [ ] # # # { [ ] [ ]} # (average!) number of nodes = 1x2x(1+3x4) = 26 ts 10 47# 10 graphs, init seed 47 3 0 0 # 2 stubs per transit nodes 1 20 3 1.0# n. of transit domains (pure random) 2 20 3 0.5# n. of nodes per transit domain 4 10 3 0.5# n. nodes in each stub domain

101 101 UC Santa Cruz GT-ITM: Example Run $ itm ts1 $ Result: ts1-{0-9}.gb Result files in SGB format

102 102 UC Santa Cruz Converters for GT-ITM sgb2ns $ Convert SGB format to ns config file $ sgb2ns $ sgb2ns  ts2ns  ts2ns : output lists of transit and stub nodes sgb2hier $ Convert transit-stub information into hierarchical addresses $ sgb2hierns $ sgb2hierns

103 103 UC Santa Cruz Converters for GT-ITM Format of generated ns config files proc create-topology {nsns node linkBW} { upvar $node n upvar $nsns ns # Create nodes, links,......} Usage source source create-topology ns nodes 1.5Mb

104 104 UC Santa Cruz See Your Topology Create an ns wrapper # Assume you’ v e done “ s gb2ns ts1-0.gb ts1.tcl” source ts1.tcl set ns [new Simulator] $ns namtrace-config [open ts1.nam w] create-topology ns node 1.5Mb $ns at 1.0 “ e xit 0” $ns run

105 105 UC Santa Cruz Outline Overview Worlds of ns Simulation $ Wired $ Wireless $ Emulation Supporting Tools Extending ns in OTcl

106 106 UC Santa Cruz ns Directory Structure TK8.0OTcltclclTcl8.0ns-2nam-1 tcl extest lib... examples validation tests C++ code OTcl code ns-allinone mcast

107 107 UC Santa Cruz Extending ns in OTcl If you don ’ t want to compile  source your changes in your sim scripts Otherwise $ Modifying code; recompile $ Adding new files - Change Makefile (NS_TCL_LIB), tcl/lib/ns-lib.tcl - Recompile

108 108 UC Santa Cruz Example: Agent/Message n0 n1 n4 n5 n2 n3 128Kb, 50ms 10Mb, 1ms CC cross traffic SR msg agent

109 109 UC Santa Cruz Agent/Message A UDP agent (without UDP header) Up to 64 bytes user message Good for fast prototyping a simple idea Usage requires extending ns functionalitySR pkt: 64 bytes of arbitrary string Receiver-side processing

110 110 UC Santa Cruz Agent/Message: Step 1 Define sender class Sender – s uperclass Agent/Message # Message format: “ A ddr Op SeqNo” Sender instproc send-next {} { $self instvar seq_ agent_addr_ $self send “$ a gent_addr_ send $seq_” incr seq_ global ns $ns at [expr [$ns now]+0.1] "$self send-next" }

111 111 UC Santa Cruz Agent/Message: Step 2 Define sender packet processing Sender instproc recv msg { $self instvar agent_addr_ set sdr [lindex $msg 0] set seq [lindex $msg 2] puts "Sender gets ack $seq from $sdr" }

112 112 UC Santa Cruz Agent/Message: Step 3 Define receiver packet processing Class Receiver – s uperclass Agent/Message Receiver instproc recv msg { $self instvar agent_addr_ set sdr [lindex $msg 0] set seq [lindex $msg 2] puts “R e ceiver gets seq $seq from $sdr” $self send “$ a ddr_ ack $seq” }

113 113 UC Santa Cruz Agent/Message: Step 4 Scheduler and tracing # Create scheduler set ns [new Simulator] # Turn on Tracing set fd [new “ m essage.nam” w] $ns namtrace-all $fd

114 114 UC Santa Cruz Agent/Message: Step 5 Topology for {set i 0} {$i < 6} {incr i} { set n($i) [$ns node] } $ns duplex-link $n(0) $n(1) 128kb 50ms DropTail $ns duplex-link $n(1) $n(4) 10Mb 1ms DropTail $ns duplex-link $n(1) $n(5) 10Mb 1ms DropTail $ns duplex-link $n(0) $n(2) 10Mb 1ms DropTail $ns duplex-link $n(0) $n(3) 10Mb 1ms DropTail $ns queue-limit $n(0) $n(1) 5 $ns queue-limit $n(1) $n(0) 5

115 115 UC Santa Cruz Agent/Message: Step 6 Routing # Packet loss produced by queueing # Routing protocol: let’ s run distance vector $ns rtproto DV

116 116 UC Santa Cruz Agent/Message: Step 7 Cross traffic set udp0 [new Agent/UDP] $ns attach-agent $n(2) $udp0 set null0 [new Agent/NULL] $ns attach-agent $n(4) $null0 $ns connect $udp0 $null0 set exp0 [new Application/Traffic/Exponential] $exp0 set rate_ 128k $exp0 attach-agent $udp0 $ns at 1.0 “ $ exp0 start”

117 117 UC Santa Cruz Agent/Message: Step 8 Message agents set sdr [new Sender] $sdr set packetSize_ 1000 set rcvr [new Receiver] $rcvr set packetSize_ 40 $ns attach $n(3) $sdr $ns attach $n(5) $rcvr $ns connect $sdr $rcvr $ns connect $rcvr $sdr $ns at 1.1 “ $ sdr send-next”

118 118 UC Santa Cruz Agent/Message: Step 9 End-of-simulation wrapper (as usual) $ns at 2.0 finish proc finish {} { global ns fd $ns flush-trace close $fd exit 0 }

119 119 UC Santa Cruz Agent/Message: Result Example output >./ns msg.tcl Receiver gets seq 0 from 0 Sender gets ack 0 from 1 Receiver gets seq 1 from 0 Sender gets ack 1 from 1 Receiver gets seq 2 from 0 Sender gets ack 2 from 1 Receiver gets seq 3 from 0 Sender gets ack 3 from 1 Receiver gets seq 4 from 0 Sender gets ack 4 from 1 Receiver gets seq 5 from 0

120 120 UC Santa Cruz Add Your Changes into ns TK8.0OTcltclclTcl8.0ns-2nam-1 tcl extest lib... examples validation tests C++ code OTcl code ns-allinone mcast mysrc msg.tcl

121 121 UC Santa Cruz Add Your Change into ns tcl/lib/ns-lib.tcl Class Simulator … source../mysrc/msg.tcl Makefile NS_TCL_LIB = \ tcl/mysrc/msg.tcl \ … make distclean./configure --enable-debug  Or: change Makefile.in, make distclean, then./configure --enable-debug

122 122 UC Santa Cruz Recap Overview Worlds of ns Simulation $ Wired $ Wireless $ Emulation Supporting Tools Extending ns in OTcl

123 123 UC Santa Cruz Further Information ns-2 build questions $ http://www.isi.edu/nsnam/ns/ns-build.html http://www.isi.edu/nsnam/ns/ns-build.html ns-users@isi.edu $ ns-users-request@isi.edu ns-users-request@isi.edu  “ subscribe ns-users ” in body $ Search the mailing list archive at http://www.isi.edu/nsnam/ns http://www.isi.edu/nsnam/ns


Download ppt "1 ns-2 Tutorial Kumar Viswanath & Ignacio Solis UC Santa Cruz."

Similar presentations


Ads by Google