1 / 33

Introduction to NS-2

Introduction to NS-2. Tutorial overview of NS Create basic NS simulation Walk-through a simple example Model specification Execution and trace analysis. http://www-net.cs.umass.edu/~honggang/ns-cs653/. NS-2, the network simulator. Academic project over 10 years old

Download Presentation

Introduction to 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. Introduction to NS-2 • Tutorial overview of NS • Create basic NS simulation • Walk-through a simple example • Model specification • Execution and trace analysis http://www-net.cs.umass.edu/~honggang/ns-cs653/

  2. NS-2, the network simulator • Academic project over 10 years old • freely distributed, open source • Currently maintained by ISI (Information Sciences Institute) • DARPA + NSF projects • ~ 200K LoC, 403 page manual • Large user base • mostly academics • “de facto” standard in networking research • Main website: http://www.isi.edu/nsnam/ns

  3. NS Functionality • Discrete event simulator • Modeling Network Components • Traffic models and applications • Web, FTP, telnet, audio, sensor nets • Transport protocols • TCP (Reno, SACK, etc), UDP, multicast • Routing and queueing • static routing, DV routing, multicast, ad-hoc routing • queueing disciplines: drop-tail, RED, FQ • Link layer • wired, wireless, satellite • Providing Infrastructure • tracing, visualization, error models, etc • modify or create your own modules

  4. NS components • NS, the simulator itself (this is all we’ll have time for) • 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 • Tutorial: http://www.isi.edu/nsnam/ns/tutorial • NS by example: http://nile.wpi.edu/NS/

  5. NS Software Structure: C++ and OTCL • Uses two languages • C++ for the core of NS simulator • per packet processing • fast to run, detailed, complete control • OTCL for control [our focus] • simulation setup, configuration • fast to write and change

  6. Steps when using NS • Create OTCL script for your network model • nodes, links, traffic sources, sinks, etc. • Parameterize simulation objects • Links: queue sizes, link speeds, … • Transport Protocols: TCP flavor and parameters (more than 30), … • Collect statistics • dump everything to trace, post process it • gather stats during simulation within OTCL script • modify Ns source code • Run NS multiple times • confidence intervals

  7. Create a Basic NS Simulation • Create event scheduler • Create nodes and links • Create connections • Create traffic sources/sinks • Enable tracing

  8. Create a Basic NS Simulation • Create the event scheduler • Create nodes and links • Create connections • Create traffic sources/sinks • Enable tracing

  9. Step 1: Creating Event Scheduler • Create scheduler • set ns [new Simulator] • Schedule event • $ns at <time> <event> • <event>: any legitimate Ns/TCL commands • Start scheduler • $ns run

  10. Create a Basic NS Simulation • Create the event scheduler • Create nodes and links • Create connections • Create traffic sources/sinks • Enable tracing

  11. Step 2: Creating Network (Nodes + Links) • Nodes • set n0 [$ns node] • set n1 [$ns node] • Links: connect together two nodes • $ns duplex-link $n0 $n1 <bandwidth> <delay> <queue_type> • <delay> determines propagation delay • <queue_type> determines queueing policy • DropTail, RED, CBQ, FQ, SFQ, DRR

  12. Create a Basic NS Simulation • Create the event scheduler • Create nodes and links • Create connections • Create traffic sources/sinks • Enable tracing

  13. Step 3: Create Connections • Transports: • TCP, UDP, multicast, etc. • transport protocol instances attach to nodes

  14. Creating Transport Channels: UDP • source and sink • set u_src [new Agent/UDP] • set u_dst [new Agent/NULL] • attach them to nodes, then connect to each other • $ns attach-agent $n0 $u_src • $ns attach-agent $n1 $u_dst • $ns connect $u_src $u_dst

  15. Creating Transport Channels: TCP • source and sink • set t_src [new Agent/TCP/Newreno] • set t_dst [new Agent/TCPSink] • “Newreno” flavor of TCP • attach to nodes and each other • $ns attach-agent $n0 $t_src • $ns attach-agent $n1 $t_dst • $ns connect $t_src $t_dst

  16. Create a Basic NS Simulation • Create the event scheduler • Create nodes and links • Create connections • Create traffic sources/sinks • Enable tracing

  17. Step 4: Create Traffic Models • Traffic (applications): • Web, ftp, telnet, audio, etc. • application objects attach to transport protocol objects • generates traffic into transport protocol

  18. Creating Traffic over TCP Channels How to create a FTP session over TCP? • create traffic model • set ftp [new Application/FTP] • default is “infinite” file size • attach to TCP channel • $ftp attach-agent $t_src • schedule start time • $ns at <time> “$ftp start”

  19. Creating Traffic over UDP Channels How to create a CBR (Constant Bit Rate) model over UDP? • set cbr [new Application/Traffic/CBR] • $cbr set packetSize_ 512 • $cbr set interval_ 0.250 • $cbr attach-agent $u_src • $ns at <time> “$cbr start”

  20. Create a Basic NS Simulation • Create the event scheduler • Create nodes and links • Create connections • Create traffic sources/sinks • Enable tracing

  21. Tracing: dump everything into a file • Trace packets on individual link • Tracefile format: <event> <time> <from> <to> <pkt> <size>--<flowid> <src> <dst> <seqno> <aseqno> + 1 0 2 tcp 900 ------- 1 0.0 3.1 7 15 - 1 0 2 tcp 900 ------- 1 0.0 3.1 7 15 r 1.00234 0 2 tcp 900 ------- 1 0.0 3.1 7 15 enqueue Node 1 Node 0 time • + enqueue • dequeue • r receive • d drop nodes involved in this event receive dequeue drop

  22. Tracing: dump everything into a file • Trace packets on individual links • Tracefile format: <event> <time> <from> <to> <pkt> <size>--<flowid> <src> <dst> <seqno> <aseqno> + 1 0 2 tcp 900 ------- 1 0.0 3.1 7 15 - 1 0 2 tcp 900 ------- 1 0.0 3.1 7 15 r 1.00234 0 2 tcp 900 ------- 1 0.0 3.1 7 15 packet type packet flags seq number time packet ID • + enqueue • dequeue • r receive • d drop packet length flow ID source dest addresses nodes involved in this event

  23. Tracing via Monitors • Queue monitor: the queue to access a link • Flow monitor: particular flow within queue • to specify a link, we need: set link [$ns link $n0 $n1] • to create a flow monitor: set fmon [$ns makeflowmon Fid] $ns attach-fmon $link $fmon $ns at <time> “puts $fmon set pdrops_”

  24. Introduction to NS-2: • Tutorial overview of NS • Create basic NS simulation • Walk-through simple example • Model specification • Execution and trace analysis

  25. Walk-through example Node 2 Node 0 Node 1 acks acks full duplex full duplex

  26. Walk-through example 12 FTP dest One CBR source 10 FTP sources 2 FTP sources performance 2 TCP SACK W_max = 32 MSS = 1400 10 TCP NewReno W_max = 32 MSS = 1400 One UDP 12 TCP dest tracing Node 2 Node 0 Node 1 acks acks One UDP Two UDP dest 1 Mbps full duplex 10 msec prop delay 700 packet buffer Drop-tail policy 2 Mbps full duplex 5 msec prop delay 100 packet buffer Drop-tail policy One On-Off dest One CBR dest One On-Off Source (voice) thin link fat link

  27. Introduction to NS-2: • Tutorial overview of NS • Create basic NS simulation • Walk-through simple example • Model specification • Execution and trace analysis See handout for source code

  28. NS Trace file (link n1->n2): NS-trace.txt ... + 11.533441 1 2 tcp 1440 ------- 12 1.2 2.4 96 2092 r 11.535694 1 2 tcp 1440 ------- 12 1.2 2.4 65 1527 - 11.537214 1 2 exp 180 ------- 100 0.2 2.13 284 1528 - 11.538654 1 2 cbr 1440 ------- 101 1.11 2.14 155 1530 r 11.547214 1 2 tcp 1440 ------- 12 1.2 2.4 66 1529 + 11.54728 1 2 tcp 1440 ------- 12 1.2 2.4 97 2095 r 11.548654 1 2 exp 180 ------- 100 0.2 2.13 284 1528 + 11.55 1 2 cbr 1440 ------- 101 1.11 2.14 211 2096 - 11.550174 1 2 tcp 1440 ------- 12 1.2 2.4 67 1534 r 11.560174 1 2 cbr 1440 ------- 101 1.11 2.14 155 1530 - 11.561694 1 2 exp 180 ------- 100 0.2 2.13 285 1532 + 11.56222 1 2 tcp 1440 ------- 12 1.2 2.4 98 2097 - 11.563134 1 2 tcp 1440 ------- 12 1.2 2.4 68 1537 r 11.571694 1 2 tcp 1440 ------- 12 1.2 2.4 67 1534 r 11.573134 1 2 exp 180 ------- 100 0.2 2.13 285 1532 - 11.574654 1 2 exp 180 ------- 100 0.2 2.13 286 1536 ... 0.0114sec=180*8/(10^6)+0.01

  29. Flow Monitor (link n1->n2) Trace : packet-trace.txt ... 10 356 1394.6939635123624 1262 906 0 4 7 3 0 10.5 367 1575.3875777393503 1325 958 0 8 15 7 0 1 1 0 0 11 366 1759.8340061666161 1384 1018 0 8 15 7 0 1 1 0 0 11.5 370 1944.0583990191849 1448 1078 0 8 15 7 0 1 1 0 0 12 380 2131.710863713804 1512 1132 0 8 15 7 0 1 1 0 0 12.5 382 2325.178644727122 1558 1176 0 8 15 7 0 1 1 0 0 13 382 2516.7615454470124 1613 1231 0 8 15 7 0 1 1 0 0 13.5 395 2710.8647514290892 1676 1281 0 8 15 7 0 2 3 1 0 14 421 2912.3462186990751 1747 1326 0 16 31 15 0 2 3 1 0 14.5 432 3130.3858423193769 1805 1373 0 16 31 15 0 2 3 1 0 15 436 3344.5896974377333 1862 1426 016 31 15 02 3 1 0 15.5 462 3571.3811182311597 1937 1475 0 16 31 15 0 2 3 1 0 16 477 3804.653159658757 1995 1518 0 16 31 15 0 2 3 1 0 16.5 495 4049.5929326563519 2057 1562 0 16 31 15 0 2 3 1 0 17 531 4303.9211771379323 2136 1605 0 16 31 15 0 2 3 1 0 ...

  30. Results - Queue Statistics • Red - instantaneous • Green - running average • Blue - average w/o transient • Purple - packet drops

  31. Results - Flow Statistics • Red - TCP flow 1 • Green - TCP flow 2 • Number of packets in queue mimics TCP Window behavior

  32. Results - Flow Statistics • Congestion Windows of Flow 1 and Flow 2 • Cumulative dropped packets of Flow 1 and Flow 2

  33. Performance Queue Statistics • Multiple runs to obtain confidence intervals

More Related