OVERVIEW OF NS-2 Discrete Event Simulator Packet level Modeling Network protocols   Collection   of Various protocols ...
NS-2 : COMPONENTS NS– Simulator NAM – Network AniMator      visual demonstration of NS output Preprocessing   Handwri...
USER’S PERSPECTIVE From the user’s perspective, NS−2 is an OTcl interpreter that takes an OTcl script as input and produc...
DISCRETE EVENT SIMULATOR   ns-2 is an discrete event driven simulation     Physical activities are translated to events ...
Discrete Event Scheduler                         time_, uid_, next_, handler_  head_ ->  head_ ->                         ...
EVENT SCHEDULER Non-Real      time schedulers   Implementations   : List , Heap , Calender     Calender is default Rea...
NS-2 ENVIRONMENT  Simulation            1                        2   Scenario                     set ns_ [new Simulator] ...
TCL INTERPRETER WITH EXTENTS                Event            ns-2                Scheduler                         tclcl  ...
NS-2 Directory Structure                   simtcl8.0    tk8.0    otcl        Tcl         ns-2              nam-1          ...
NODE ARCHITECTURE                                 Node                                                                    ...
PacketsPACKET STRUCTURE        (events)    packet                  next_       Size    determined    accessdata( )        ...
Links                    Links: keeps track of “from” and “to” node objects.                        blockedLinkentry   Enq...
N1                                                                   N2Node                                               ...
NS-2 : C++ / OTCL   NS-2 Code contains two sets of languages, namely C++    and OTcl. C++ is used for the creation of ob...
Why two languages? (Tcl & C++)   C++: Detailed protocol simulations require    systems programming language     byte man...
Tcl or C++?   Tcl     Simple    Configuration, Setup, Scenario     If it’s something that can be done without      modi...
NS-2 Directory Structure                   simtcl8.0    tk8.0    otcl        Tcl         ns-2              nam-1          ...
Making Changes in C++ Space    Existing code      recompile    Addition      change   Makefile and recompile          ...
Making Changes in otcl Space   Existing code     recompile     source   Addition     source     change    Makefile (...
INSTALLATION   Unix variants     Download   NS-allinone-2.27 package     Contains        TCL/TK 8.4.5        oTCL 1.8...
CODE FOR SIMPLE TOPOLOGY Creating     a Simulator Object     set   ns [new Simulator]   Setting up files for trace & NA...
CODE FOR SIMPLE TOPOLOGY   Closing trace file and starting NAM     proc   finish { } {        global ns trace_nam trace...
CODE FOR SIMPLE TOPOLOGY   Creating LINK & NODE topology     Creating   NODES        set n1 [$ns node]        set n2 [...
CODE FOR SIMPLE TOPOLOGY   Creating LINKS     $ns duplex-link $N1 $R1 2Mb 5ms DropTail     set DuplexLink0 [$ns link $N...
CODE FOR SIMPLE TOPOLOGY   Orientation of links       $ns duplex-link-op $N1 $R1 orient right-down     $ns duplex-link-...
FINAL TOPOLOGY GENERATED                           26
TRAFFIC TOPOLOGY AIMED AT                            27
GENERATING TRAFFIC   Attaching AGENT TCP to NODE 1     set TCP1 [new Agent/TCP]     $ns attach-agent $N1 $TCP1   Attac...
GENERATING TRAFFIC   Attaching Application (FTP)     set FTP0 [new Application/FTP]     set FTP1 [new Application/FTP] ...
30
Upcoming SlideShare
Loading in …5
×

Ns2

1,756 views

Published on

basics of network simulator. Easy to understand the tcl and C++ linkages

Published in: Education
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,756
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
93
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide
  • This section talks about the discrete event schedulers of NS. As described in the Overview section, the main users of an event scheduler are network components that simulate packet-handling delay or that need timers. Figure shows each network object using an event scheduler. Note that a network object that issues an event is the one who handles the event later at scheduled time. Also note that the data path between network objects is different from the event path. Actually, packets are handed from one network object to another using send(Packet* p) {target_->recv(p)}; method of the sender and recv(Packet*, Handler* h = 0) method of the receiver
  • Ns2

    1. 1. OVERVIEW OF NS-2 Discrete Event Simulator Packet level Modeling Network protocols  Collection of Various protocols at multiple layers  TCP(reno, tahoe, vegas, sack)  MAC(802.11, 802.3, TDMA)  Ad-hoc Routing (DSDV, DSR, AODV, TORA)  Sensor Network (diffusion, gaf)  Multicast protocols, Satellite protocols, and many others 1
    2. 2. NS-2 : COMPONENTS NS– Simulator NAM – Network AniMator  visual demonstration of NS output Preprocessing  Handwritten TCL or  Topology generator Post analysis  Trace analysis using Perl/TCL/AWK/MATLAB 2
    3. 3. USER’S PERSPECTIVE From the user’s perspective, NS−2 is an OTcl interpreter that takes an OTcl script as input and produces a trace file as output. 3
    4. 4. DISCRETE EVENT SIMULATOR ns-2 is an discrete event driven simulation  Physical activities are translated to events  Events are queued and processed in the order of their scheduled occurrences  Time progresses as the events are processed Time: 1.5 sec Time: 1.7 sec 1 2 Time: 2.0 sec Time: 1.8 sec 4
    5. 5. Discrete Event Scheduler time_, uid_, next_, handler_ head_ -> head_ -> handler_ -> handle() insert time_, uid_, next_, handler_ Event Scheduler 5
    6. 6. EVENT SCHEDULER Non-Real time schedulers  Implementations : List , Heap , Calender  Calender is default Real time schedulers  Used for emulation for direct interaction with real NT. Basic use of an event scheduler:  schedule simulation events, such as when to start an FTP application, when to finish a simulation, or for simulation scenario generation prior to a simulation run. 6
    7. 7. NS-2 ENVIRONMENT Simulation 1 2 Scenario set ns_ [new Simulator] Tcl Script set node_(0) [$ns_ node] set node_(1) [$ns_ node] class MobileNode : public Node { C++ friend class PositionHandler; public:Implementation MobileNode(); • • } 7
    8. 8. TCL INTERPRETER WITH EXTENTS Event ns-2 Scheduler tclcl Component Network otcl tcl8.0 otcl: Object-oriented support tclcl: C++ and otcl linkage Discrete event scheduler Data network (the Internet) components 8
    9. 9. NS-2 Directory Structure simtcl8.0 tk8.0 otcl Tcl ns-2 nam-1 tcl code C++ code tcl ... example ex test lib ... validation test tcl code core 9
    10. 10. NODE ARCHITECTURE Node Agent Classifier Local Agent Classifier Node entry point Agent Port Classifiers: packet demultiplexers. Addr Link Link Link 10Agents are either protocol endpoints or related objects that generate/fill-in packet fields.
    11. 11. PacketsPACKET STRUCTURE (events) packet next_ Size determined accessdata( ) - packet size at simulation bits( ) Size - timestamp config time determined at cmn header compile time - type Size - UID determined at tcp header compile time - interface label Size determined at ip header compile time Size determined at trace header compile time 11
    12. 12. Links Links: keeps track of “from” and “to” node objects. blockedLinkentry Enq Trace Queue Deq Trace Delay TTL Rcv Tracepoint Drop head Drp Trace 12
    13. 13. N1 N2Node Node Classifier Classifier Local Local Agent Agent Classifier Classifier Application Application Port Port Addr Addr Link Link Enq Trace Queue Deq Trace Delay TTL Rcv Trace Drop head Drp Trace 13
    14. 14. NS-2 : C++ / OTCL NS-2 Code contains two sets of languages, namely C++ and OTcl. C++ is used for the creation of objects because of speed and efficiency. OTcl is used as a front-end to setup the simulator, configure objects and schedule events because of its ease of use. 14
    15. 15. Why two languages? (Tcl & C++) C++: Detailed protocol simulations require systems programming language  byte manipulation, packet processing, algorithm implementation  Run time speed is important  Turn around time (run simulation, find bug, fix bug, recompile, re-run) is slower Tcl: Simulation of slightly varying parameters or configurations  quickly exploring a number of scenarios  iteration time (change the model and re-run) is more important 15
    16. 16. Tcl or C++? Tcl  Simple Configuration, Setup, Scenario  If it’s something that can be done without modifying existing Tcl module. C++  Anything that requires processing each packet  Needs to change behavior of existing module 16
    17. 17. NS-2 Directory Structure simtcl8.0 tk8.0 otcl Tcl ns-2 nam-1 tcl code C++ code tcl ... example ex test lib ... validation test tcl code core 17
    18. 18. Making Changes in C++ Space  Existing code  recompile  Addition  change Makefile and recompile 18
    19. 19. Making Changes in otcl Space Existing code  recompile  source Addition  source  change Makefile (NS_TCL_LIB), tcl/ns- lib.tcl (source) and recompile 19
    20. 20. INSTALLATION Unix variants  Download NS-allinone-2.27 package  Contains  TCL/TK 8.4.5  oTCL 1.8  Tclcl 1.15  Ns2  Nam -1 20
    21. 21. CODE FOR SIMPLE TOPOLOGY Creating a Simulator Object  set ns [new Simulator] Setting up files for trace & NAM  set trace_nam [open out.nam w]  set trace_all [open all.tr w] Tracing files using their commands  $ns namtrace-all $trace_nam  $ns trace-all $trace_all 21
    22. 22. CODE FOR SIMPLE TOPOLOGY Closing trace file and starting NAM  proc finish { } {  global ns trace_nam trace_all  $ns flush-trace  close $trace_nam  close $trace_all  exec nam out.nam &  exit 0 } 22
    23. 23. CODE FOR SIMPLE TOPOLOGY Creating LINK & NODE topology  Creating NODES  set n1 [$ns node]  set n2 [$ns node]  set n3 [$ns node]  set n4 [$ns node]  set r1 [$ns node]  set r2 [$ns node] 23
    24. 24. CODE FOR SIMPLE TOPOLOGY Creating LINKS  $ns duplex-link $N1 $R1 2Mb 5ms DropTail  set DuplexLink0 [$ns link $N1 $R1]  $ns duplex-link $N2 $R1 2Mb 5ms DropTail  set DuplexLink1 [$ns link $N2 $R1]  $ns duplex-link $R1 $R2 1Mb 10ms DropTail  set DuplexLink2 [$ns link $R1 $R2]  $ns duplex-link $R2 $N3 2Mb 5ms DropTail  set DuplexLink3 [$ns link $R2 $N3]  $ns duplex-link $R2 $N4 2Mb 5ms DropTail  set DuplexLink4 [$ns link $R2 $N4] 24
    25. 25. CODE FOR SIMPLE TOPOLOGY Orientation of links  $ns duplex-link-op $N1 $R1 orient right-down  $ns duplex-link-op $N2 $R1 orient right-up  $ns duplex-link-op $R1 $R2 orient right  $ns duplex-link-op $R2 $N3 orient right-up  $ns duplex-link-op $R2 $N4 orient right-down 25
    26. 26. FINAL TOPOLOGY GENERATED 26
    27. 27. TRAFFIC TOPOLOGY AIMED AT 27
    28. 28. GENERATING TRAFFIC Attaching AGENT TCP to NODE 1  set TCP1 [new Agent/TCP]  $ns attach-agent $N1 $TCP1 Attaching AGENT TCP to NODE 2  set TCP2 [new Agent/TCP]  $ns attach-agent $N2 $TCP2 Attaching AGENT TCP to NODE 3  set TCP3 [new Agent/TCPSink]  $ns attach-agent $N2 $TCP3 Attaching AGENT TCP to NODE 4  set TCP4 [new Agent/TCPSink]  $ns attach-agent $N2 $TCP4 28
    29. 29. GENERATING TRAFFIC Attaching Application (FTP)  set FTP0 [new Application/FTP]  set FTP1 [new Application/FTP]  $FTP0 attach-agent $TCP0  $FTP1 attach-agent $TCP1 29
    30. 30. 30

    ×