Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Ns Tutorial Alhussein A. Abouzeid Elect. Eng. Dept./U. of Washington Parts of this educational presentation use examples available.

Similar presentations


Presentation on theme: "1 Ns Tutorial Alhussein A. Abouzeid Elect. Eng. Dept./U. of Washington Parts of this educational presentation use examples available."— Presentation transcript:

1 1 Ns Tutorial Alhussein A. Abouzeid Elect. Eng. Dept./U. of Washington hussein@ee.washington.edu Parts of this educational presentation use examples available from http://www.isi.edu/nsnam/ns/ns-documentation.html

2 2 Tutorial Goals Using NS (the Otcl world) Complete examples of its usage Wired Wireless Extending NS (the C++ world) Implementing new functionality

3 3 Schedule Day 1: Wired simulations Fundamentals Supporting tools Day 2: Wireless version of Day 1 Day 3: Extending ns capability ns internals Extending ns Lab Assignments

4 4 Overview What is ns? (the evolution) Status of the code Resources Documentation Remark!

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) Currently; DARPA; NSF; collaboration with researchers: ACIRI, UCB Daedelus, CMU, Sun Microsystems, NORTEL, Cisco, Me!

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 (rocky) (Emulation only for FreeBSD for now)

7 7 Resources http://www.isi.edu/nsnam/ns Installed on all machines in High Throughput Lab (EE/CSE 365) add to.cshrc: setenv TCL_LIBRARY /condor/ns-allinone-2.1b7a/tcl8.3.2 ns-users@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 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

9 9 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”.

10 10 Day 1 Schedule Architecture Basic Tcl/Otcl commands Elements of an 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 Example: Multicast routing nam Visualization

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

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

13 13 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%

14 14 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%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

30 30 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)

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

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

33 33 G2 time 1.3s G2 time 1.2s G1 G2 time 1.35s Example: Multicast Routing Dynamic group membership n0 n1 n2 n3 1.5Mb, 10ms G1 time 1.25s G2 1.5Mb, 10ms

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

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

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

37 37 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"

38 38 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"

39 39 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"

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


Download ppt "1 Ns Tutorial Alhussein A. Abouzeid Elect. Eng. Dept./U. of Washington Parts of this educational presentation use examples available."

Similar presentations


Ads by Google