SlideShare a Scribd company logo
NS­2 Tutorial



           Kameswari Chebrolu
Dept. of Computer Science and Engineering, 
               IIT Bombay
Motivation for Simulations
●
    Cheap ­­  does not require costly equipment
●
    Complex scenarios can be easily tested
●
    Results can be quickly obtained – more ideas can 
    be tested in a smaller timeframe
●
    The real thing isn't yet available
●
    Controlled experimental conditions
    –   Repeatability helps aid debugging
●
    Disadvantages: Real systems too complex to 
    model
Features of NS­2
●
    Protocols: TCP, UDP, HTTP, Routing algorithms, 
    MAC etc
●
    Traffic Models: CBR, VBR, Web etc
●
    Error Models: Uniform, bursty etc
●
    Misc: Radio propagation, Mobility models , Energy 
    Models
●
    Topology Generation tools
●
     Visualization tools (NAM), Tracing
NS Structure
●
    NS is an object oriented discrete­event simulator
    –   Simulator maintains list of events and executes one event after 
        another
    –   Single thread of control: no locking or race conditions
●
    Back end is C++ event scheduler
    –   Protocols mostly
    –   Fast to run, more control
●
    Front end is oTCL
    –   Creating scenarios, extensions to C++ protocols
    –   fast to write and change
TCL tutorial
                  set x 1
●
    Variables:    set y $x
●
    Arrays:     set a(0) 1

●
    Printing:   puts “$a(0) n”

●
    Arithmetic Expression:             set z = [expr $y + 5]

●
    Control Structures:  if {$z == 6} then { puts “Correct!”}
                                 for {set i =0} {$i < 5} {incr i }{
                                     puts “$i * $i equals [expr $i * $i]” 
                                 }

                             proc sum {a b} {
●
    Procedures:                 return [expr $a + $b]
                             }
NS programming Structure

●
    Create the event scheduler
●
    Turn on tracing
●
    Create network topology
●
    Create transport connections
●
    Generate traffic
●
    Insert errors
Creating Event Scheduler
●
    Create event scheduler: set ns [new simulator]
●
     Schedule an event: $ns at <time> <event>
    –   event is any legitimate ns/tcl function
             $ns at 5.0 “finish”      proc finish {} {
                                         global ns nf
●
    Start Scheduler                      close $nf
                                         exec nam out.nam &
                  $ns run
                                         exit 0
                                      }
Tracing
●
    All packet trace
      $ns trace­all [open out.tr w]
      <event> <time> <from> <to> <pkt> <size>

      ­­­­­­
      <flowid> <src> <dst> <seqno> <aseqno>

         + 0.51    0 1 cbr 500 ­­­­­­­ 0 0.0 1.0 0 2
         ­  0.51    0 1 cbr 500 ­­­­­­­ 0 0.0 1.0 0 2
         r  0.514  0 1 cbr 500 ­­­­­­­ 0 0.0 1.0 0 0
●
    Variable trace           set par [open output/param.tr w]
                             $tcp attach $par
                             $tcp trace cwnd_
                             $tcp trace maxseq_
                             $tcp trace rtt_
Tracing and Animation
●
    Network Animator


              set nf [open out.nam w]
              $ns namtrace­all $nf

               proc finish {} {
                  global ns nf
                  close $nf
                  exec nam out.nam &
                  exit 0
               }
Creating topology
●
    Two nodes connected by a link
●
    Creating nodes
          set n0 [$ns node]
          set n1 [$ns node]
●
    Creating link between nodes
    –   $ns <link_type> $n0 $n1 <bandwidth> <delay> 
        <queue­type>

$ns duplex­link $n0 $n1 1Mb 10ms DropTail
Sending data
●
    Create UDP agent
         set udp0 [new Agent/UDP]
         $ns attach­agent $n0 $udp0
●
    Create CBR traffic source for feeding into UDP agent
          set cbr0 [new Application/Traffic/CBR]
          $cbr0 set packetSize_ 500
          $cbr0 set interval_ 0.005
          $cbr0 attach­agent $udp0
●
    Create traffic sink
            set null0 [new Agent/Null]
            $ns attach­agent $n1 $null0
Sending data
●
    Connect two agents
         $ns connect $udp0 $null0

●
    Start and stop of data
          $ns at 0.5 “$cbr0 start”
          $ns at 4.5 “$cbr0 stop”
Creating TCP Connections
●
    Create TCP agent and attach it to the node
       set tcp0 [new Agent/TCP]
       $ns attach­agent $n0 $tcp0
●
    Create a Null Agent and attach it to the node
       set null0 [new Agent/TCPSink]
       $ns attach­agent $n1 $null0
●
    Connect the agents
        $ns connect $tcp0 $null0
Traffic on top of TCP
●
    FTP
      set ftp [new Application/FTP]
      $ftp attach­agent $tcp0

●
    Telnet
       set telnet [new Application/Telnet]
       $telnet attach­agent $tcp0
Introducing Errors
●
    Creating Error Module
        set err [new ErrorModel]
        $err unit pkt_
        $err set rate_ 0.01
        $err ranvar [new RandomVariable/Uniform]
        $err drop­target [new Agent/Null]


●
    Inserting Error Module
         $ns lossmodel $err $n0 $n1
Examples
●
    UDP Script
●
    Tracing (wired,wireless,tcp)
●
    TCP without Loss
●
    TCP with Loss
NS Internals

                      n0                                                      n1

                    Port              Application/FTP                       Port 
                  Classifier      dst_=1.0                                Classifier       dst_=0.0
           Addr                Agent/TCP                           Addr                Agent/TCPSink
         Classifier        0                                     Classifier        0
                 0                                                       1
                                       Link n0­n1
entry_           1                                      entry_           0



                                       Link n1­n0
Summary
●
    Simulators help in easy verification of protocols 
    in less time, money
●
    NS offers support for simulating a variety of 
    protocol suites and scenarios
●
    Front end is oTCL, back end is C++
●
    NS is an on­going effort of research and 
    development
Reference Material
●
     http://www.isi.edu/nsnam/ns/
     ●
         Marc Greis' tutorial
     ●
         Jae Chung tutorial
     ●
         Ns manual

More Related Content

PPT
NS2: Binding C++ and OTcl variables
DOC
Study of aloha protocol using ns2 network java proram
PDF
Openstack taskflow 簡介
PDF
Openstack 簡介
PPTX
Ns2 ns3 training in mohali
PDF
Cs757 ns2-tutorial-exercise
ODP
DRb at the Ruby Drink-up of Sophia, December 2011
PDF
Reactive x
NS2: Binding C++ and OTcl variables
Study of aloha protocol using ns2 network java proram
Openstack taskflow 簡介
Openstack 簡介
Ns2 ns3 training in mohali
Cs757 ns2-tutorial-exercise
DRb at the Ruby Drink-up of Sophia, December 2011
Reactive x

What's hot (20)

PDF
Node.js extensions in C++
DOCX
Ejercicios
PDF
Extending Node.js using C++
PPTX
Dex and Uniswap
PDF
Minion pool - a worker pool for nodejs
ODP
To Infinity & Beyond: Protocols & sequences in Node - Part 2
DOCX
Constructor Overloading in java
PDF
C c++-meetup-1nov2017-autofdo
PDF
JavaSE7 Launch Event: Java7xGroovy
PPTX
Codable routing
PPTX
Hands on with smart contracts 2. Presentation for the Blockchain Applications...
DOCX
timingExercise
PDF
201801 CSE240 Lecture 12
PDF
Richard Salter: Using the Titanium OpenGL Module
PDF
PDF
ceph::errorator<> throw/catch-free, compile time-checked exceptions for seast...
PPTX
Richard Fridrich: Třesení stromem v JavaScriptu
PDF
Towards hasktorch 1.0
DOCX
Oop lab report
PPTX
CONFidence 2015: DTrace + OSX = Fun - Andrzej Dyjak
Node.js extensions in C++
Ejercicios
Extending Node.js using C++
Dex and Uniswap
Minion pool - a worker pool for nodejs
To Infinity & Beyond: Protocols & sequences in Node - Part 2
Constructor Overloading in java
C c++-meetup-1nov2017-autofdo
JavaSE7 Launch Event: Java7xGroovy
Codable routing
Hands on with smart contracts 2. Presentation for the Blockchain Applications...
timingExercise
201801 CSE240 Lecture 12
Richard Salter: Using the Titanium OpenGL Module
ceph::errorator<> throw/catch-free, compile time-checked exceptions for seast...
Richard Fridrich: Třesení stromem v JavaScriptu
Towards hasktorch 1.0
Oop lab report
CONFidence 2015: DTrace + OSX = Fun - Andrzej Dyjak
Ad

Viewers also liked (12)

PPT
Tagz & talezz new ppt
PDF
Investor presentation conference call fye 2013 final
DOCX
Managerial economics
PPT
PaperCut-MF Education Features
PDF
MBAC Investor Presentation Conference Call Q2 2014
PDF
Divorce
PPTX
General workshop agenda
PPTX
Presentation omnicomm service (possibilities omnicomm online)
PDF
4 bit manchester_adder
PPTX
Bpupki ppki
PPTX
Jamaica
DOC
Inventory types
Tagz & talezz new ppt
Investor presentation conference call fye 2013 final
Managerial economics
PaperCut-MF Education Features
MBAC Investor Presentation Conference Call Q2 2014
Divorce
General workshop agenda
Presentation omnicomm service (possibilities omnicomm online)
4 bit manchester_adder
Bpupki ppki
Jamaica
Inventory types
Ad

Similar to Ns tutorial (20)

PPT
NS2-tutorial.ppt
PDF
NS-2 Tutorial
PDF
NS2-tutorial.pdf
PPT
Ns 2 Network Simulator An Introduction
PPT
ns2-lecture.ppt
PPTX
Network Simulator overview and its working
PPT
Ns network simulator
PDF
Ns2: OTCL - PArt II
PDF
18CSL51 - Network Lab Manual.pdf
PPT
Tut hemant ns2
PPTX
Working with NS2
PPT
Network Simulator Tutorial
PPTX
DOCX
NS2 (1).docx
PPT
Venkat ns2
PPTX
NErwork Lab Simulation Introduction.pptx
PDF
Introduction to ns2
PPT
Network simulator 2
NS2-tutorial.ppt
NS-2 Tutorial
NS2-tutorial.pdf
Ns 2 Network Simulator An Introduction
ns2-lecture.ppt
Network Simulator overview and its working
Ns network simulator
Ns2: OTCL - PArt II
18CSL51 - Network Lab Manual.pdf
Tut hemant ns2
Working with NS2
Network Simulator Tutorial
NS2 (1).docx
Venkat ns2
NErwork Lab Simulation Introduction.pptx
Introduction to ns2
Network simulator 2

Ns tutorial

  • 1. NS­2 Tutorial Kameswari Chebrolu Dept. of Computer Science and Engineering,  IIT Bombay
  • 2. Motivation for Simulations ● Cheap ­­  does not require costly equipment ● Complex scenarios can be easily tested ● Results can be quickly obtained – more ideas can  be tested in a smaller timeframe ● The real thing isn't yet available ● Controlled experimental conditions – Repeatability helps aid debugging ● Disadvantages: Real systems too complex to  model
  • 3. Features of NS­2 ● Protocols: TCP, UDP, HTTP, Routing algorithms,  MAC etc ● Traffic Models: CBR, VBR, Web etc ● Error Models: Uniform, bursty etc ● Misc: Radio propagation, Mobility models , Energy  Models ● Topology Generation tools ●  Visualization tools (NAM), Tracing
  • 4. NS Structure ● NS is an object oriented discrete­event simulator – Simulator maintains list of events and executes one event after  another – Single thread of control: no locking or race conditions ● Back end is C++ event scheduler – Protocols mostly – Fast to run, more control ● Front end is oTCL – Creating scenarios, extensions to C++ protocols – fast to write and change
  • 5. TCL tutorial set x 1 ● Variables: set y $x ● Arrays: set a(0) 1 ● Printing: puts “$a(0) n” ● Arithmetic Expression: set z = [expr $y + 5] ● Control Structures:  if {$z == 6} then { puts “Correct!”} for {set i =0} {$i < 5} {incr i }{ puts “$i * $i equals [expr $i * $i]”  } proc sum {a b} { ● Procedures:     return [expr $a + $b] }
  • 6. NS programming Structure ● Create the event scheduler ● Turn on tracing ● Create network topology ● Create transport connections ● Generate traffic ● Insert errors
  • 7. Creating Event Scheduler ● Create event scheduler: set ns [new simulator] ●  Schedule an event: $ns at <time> <event> – event is any legitimate ns/tcl function $ns at 5.0 “finish” proc finish {} { global ns nf ● Start Scheduler close $nf exec nam out.nam & $ns run exit 0 }
  • 8. Tracing ● All packet trace $ns trace­all [open out.tr w] <event> <time> <from> <to> <pkt> <size> ­­­­­­ <flowid> <src> <dst> <seqno> <aseqno> + 0.51    0 1 cbr 500 ­­­­­­­ 0 0.0 1.0 0 2 ­  0.51    0 1 cbr 500 ­­­­­­­ 0 0.0 1.0 0 2 r  0.514  0 1 cbr 500 ­­­­­­­ 0 0.0 1.0 0 0 ● Variable trace set par [open output/param.tr w] $tcp attach $par $tcp trace cwnd_ $tcp trace maxseq_ $tcp trace rtt_
  • 9. Tracing and Animation ● Network Animator set nf [open out.nam w] $ns namtrace­all $nf proc finish {} { global ns nf close $nf exec nam out.nam & exit 0 }
  • 10. Creating topology ● Two nodes connected by a link ● Creating nodes set n0 [$ns node] set n1 [$ns node] ● Creating link between nodes – $ns <link_type> $n0 $n1 <bandwidth> <delay>  <queue­type> $ns duplex­link $n0 $n1 1Mb 10ms DropTail
  • 11. Sending data ● Create UDP agent set udp0 [new Agent/UDP] $ns attach­agent $n0 $udp0 ● Create CBR traffic source for feeding into UDP agent set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach­agent $udp0 ● Create traffic sink set null0 [new Agent/Null] $ns attach­agent $n1 $null0
  • 12. Sending data ● Connect two agents $ns connect $udp0 $null0 ● Start and stop of data $ns at 0.5 “$cbr0 start” $ns at 4.5 “$cbr0 stop”
  • 13. Creating TCP Connections ● Create TCP agent and attach it to the node set tcp0 [new Agent/TCP] $ns attach­agent $n0 $tcp0 ● Create a Null Agent and attach it to the node set null0 [new Agent/TCPSink] $ns attach­agent $n1 $null0 ● Connect the agents $ns connect $tcp0 $null0
  • 14. Traffic on top of TCP ● FTP set ftp [new Application/FTP] $ftp attach­agent $tcp0 ● Telnet set telnet [new Application/Telnet] $telnet attach­agent $tcp0
  • 15. Introducing Errors ● Creating Error Module set err [new ErrorModel] $err unit pkt_ $err set rate_ 0.01 $err ranvar [new RandomVariable/Uniform] $err drop­target [new Agent/Null] ● Inserting Error Module $ns lossmodel $err $n0 $n1
  • 16. Examples ● UDP Script ● Tracing (wired,wireless,tcp) ● TCP without Loss ● TCP with Loss
  • 17. NS Internals n0 n1 Port  Application/FTP Port  Classifier dst_=1.0 Classifier dst_=0.0 Addr  Agent/TCP Addr  Agent/TCPSink Classifier 0 Classifier 0 0 1 Link n0­n1 entry_ 1 entry_ 0 Link n1­n0
  • 18. Summary ● Simulators help in easy verification of protocols  in less time, money ● NS offers support for simulating a variety of  protocol suites and scenarios ● Front end is oTCL, back end is C++ ● NS is an on­going effort of research and  development
  • 19. Reference Material ●  http://www.isi.edu/nsnam/ns/ ● Marc Greis' tutorial ● Jae Chung tutorial ● Ns manual