Docstoc

Introduction to NS

Document Sample
Introduction to NS Powered By Docstoc
					            Introduction to NS
                     Adam Greenhalgh
                a.greenhalgh@cs.ucl.ac.uk

                Dept. of Computer Science
                University College London



Useful links :
   NS web page : http://www.isi.edu/nsnam/ns/
   NAM web page : http://www.isi.edu/nsnam/nam/
   NS tutorial : http://www.isi.edu/nsnam/ns/tutorial/index.html
   NS Manual : http://www.isi.edu/nsnam/ns/ns­documentation.html
   These notes : 
         http://www.cs.ucl.ac.uk/staff/a.greenhalgh/teaching/
        Lecture Structure
●   Background reading
●   Introduction to NS
●   NS Features
●   Simple Case Study
●   Extending the Case Study
    Internet Research Needs 
         Better Models
●   Read this, it outlines what makes 
    a good model : 
    –   Internet Research Needs Better Models, 
        Sally Floyd and Eddie Kohler, 
        http://www.icir.org/models/hotnetsFinal.pdf
           History of NS
●   1989 : Real Network Simulator
●   1995: DARPA VINT project at LBL, 
    Xerox PARC, UCB, and USC/ISI
●   Present : DARPA : SAMAN project 
    and NSF COSNER project (and 
    various collaborations, including 
    ICIR)
                 NS Goals
●   Support networking research and 
    education
    –   Protocol design, traffic studies
    –   Protocol comparison
●   Collaborative environment
    –   Free
●   Multiple levels of detail in one 
    Simulator
                     NS Status
●   Platform support
    –   FreeBSD, Linux, Solaris, Windows and 
        MAC
●   Periodic Release
    –   ns­2.29 current latest
    –   http://www.isi.edu/nsnam/ns/
    –   ns­2.1b9a (July 2002),
         ●   ~200K LOC in C++ and OTcl
         ●   ~100 validation test suites
         ●   100+ examples
             Introduction to NS
●   NS is a discrete event Simulator
    –   World is modelled as a list of 
        events.
    –   Take one event, process it until it 
        is completed
    –   Uses simulated virtual time rather 
        than real time.
    –   Single threaded
         ●   No locking or race conditions
             Introduction to NS
●   Object oriented (OTCL and C++)
    –   Modular approach (normal reasons)
    –   OTCL (interpreted)
         ●   Control
         ●   Simulation configuration files
         ●   C++ manipulation
         ●   Periodic or triggered action
         ●   Easy to change
    –   C++ (compiled)
         ●   Core of NS – per packet processing, 
             protocol implementation, event loops , 
             FAST
              NS Functionality
●   Wired
    –   Routing
         ●   DV, LS, PIM­SM
    –   Transport
         ●   TCP and UDP
    –   Traffic
         ●   Web, ftp, telnet, cbr,stochastic
    –   Queuing
         ●   Drop­tail, RED, FQ, SFQ, DRR
    –   Emulation
         ●   Mix of real machines and ns simulation
              NS Functionality
●   Wireless
    –   Ad hoc routing
         ●   DSR, DSDV, AODV, GPSR, ZRP
    –   Mobile IP
    –   MAC protocols
         ●   802.11
    –   Node mobility
    –   Directed Diffusion
              NS Functionality
●   Trace file support
●   Animation
    –   NAM
Simple Case study ­ Outline

                    Bo t t le n eck
                                       ●   Simple Dumb­bell

          Flo w 1
                                       ●   The following 
     n0                           n4       code is the 
                                           dumbbell.tcl and 
           n2           n3                 the basis for 
                                           this case study.
    n1                           n5
          Flo w 2

dumbbell.tcl : 
http://www.cs.ucl.ac.uk/staff/a.greenhalgh/teaching/
          Case Study 
   Setting up the Simulator
# Cr ea t e a s im u la t o r o b ject
s et n s [n ew Sim u la t o r ]

# Defin e d iffer en t co lo r s fo r d a t a flo ws
$ n s co lo r 1 Blu e
$ n s co lo r 2 Red

# Op en t h e n a m t r a ce file
s et n f [o p en o u t .n am w]
$ n s n a m t r a ce- a ll $ n f

# Op en t h e t r a ce file
s et t r [o p en o u t .t r w]
$ n s t r a ce- a ll $ t r
             Simple Case Study
               Creating nodes
# Defin e a 'fin is h ' p r o ced u r e
p r o c fin is h {} {
        glo b a l n s n f t r
        $ n s flu s h - t r a ce
       # Clo s e t h e t r a ce file
        clo s e $ n f
        clo s e $ t r
        exit 0
}
                                          n1   n2   n3
# Cr eat e s ix n o d es
s et n 0 [$ n s n o d e]
s et n 1 [$ n s n o d e]                  n0   n4   n5
(et c fo r t h e o t h er 4 n o d es )
                 Simple Case Study
                      Creating Links
# Cr ea t e lin k s b et ween t h e n o d es
$ n s d u p lex- lin k $ n 0 $ n 2 1 Mb 1 0 m s Dr o p Tail
$ n s d u p lex- lin k $ n 3 $ n 2 1 Mb 1 0 m s SFQ

                          n0                              n4


                                   n2             n3

                                    Mo n it o r
                          n1                             n5
# La yo u t t h e lin k s fo r p r es en t a t io n in NAM
$ n s d u p lex- lin k - o p $ n 0 $ n 2 o r ien t r igh t - d o wn
$ n s d u p lex- lin k - o p $ n 2 $ n 3 o r ien t r igh t

# Mo n it o r t h e q u eu e fo r t h e lin k b et ween n 2 a n d n 3
$ n s d u p lex- lin k - o p $ n 2 $ n 3 q u eu ePo s 0 .5
                 Simple Case Study
                  Creating Traffic
# Cr ea t e a UDP a gen t a n d a t t a ch it t o n o d e n 0
s et u d p 0 [n ew Agen t / UDP]
$ u d p 0 s et clas s _ 1
$ n s a t t a ch - a gen t $ n 0 $ u d p 0
                                                    n0                          n4

                cb r 0           udp0
                                                            n2             n3

                                                             Mo n it o r
                                                   n1                           n5
# Cr ea t e a CBR t r a ffic s o u r ce a n d a t t ach it t o u d p 0
s et cb r 0 [n ew Ap p lica t io n / Tr a ffic/ CBR]
$ cb r 0 s et p a ck et Siz e_ 5 0 0
$ cb r 0 s et in t er va l_ 0 .0 0 5
$ cb r 0 a t t a ch - a gen t $ u d p 0
                   Simple Case Study
                      More traffic
# Cr ea t e a UDP a gen t a n d at t ach it t o n o d e n 1
s et u d p 1 [n ew Agen t / UDP]
$ u d p 1 s et cla s s _ 2
$ n s a t t ach - a gen t $ n 1 $ u d p 1

                 cb r 0           udp0           n0                             n
                                                                                4
                                                         n                 n3
                                                         2
                                  udp1                       Mo n it o r
                 cb r 1                         n1                              n5
# Cr eat e a CBR t r a ffic s o u r ce a n d a t t a ch it t o
udp1
s et cb r 1 [n ew Ap p lica t io n / Tr a ffic/ CBR]
$ cb r 1 s et p ack et Siz e_ 5 0 0
$ cb r 1 s et in t er val_ 0 .0 0 5
$ cb r 1 at t a ch - a gen t $ u d p 1
             Simple Case Study – 
                Connecting up
# Co n n ect t h e t r a ffic s o u r ces wit h t h e t r a ffic s in k
$ n s co n n ect $ u d p 0 $ n u ll0
$ n s co n n ect $ u d p 1 $ n u ll1

# Sch ed u le even t s fo r t h e CBR a gen t s
$ n s a t 0 .5 "$ cb r 0 s t a r t "              cb r 0
$ n s a t 1 .0 "$ cb r 1 s t a r t "                                      n u ll0
                                      udp0
$ n s a t 4 .0 "$ cb r 1 s t o p "
$ n s a t 4 .5 "$ cb r 0 s t o p "             n0                            n
# Ca ll t h e fin is h p r o ced u r e a ft er                               4
# 5 s eco n d s o f s im u la t io n t im e
$ n s a t 5 .0 "fin is h "                            n             n3
                                                      2
# Ru n t h e s im u la t io n        udp1               Mo n it o r
                                               n1                           n5
$ns run                              cb r 1
                                                                          n u ll1
               Simple Case Study 
                   Running NS
●   To run the simulation
     ●   bash$ ~/work/ns­2.27/ns dumbbell.tcl
●   This will generate
     ●   out.tr
         ●   The simulation trace
     ●   out.nam
         ●   The animation trace
    Simple Case Study ­ NAM
●   Running the network animator
    –   bash$ ~work/nam/nam out.nam
          Simple Case Study
             Trace Files
●   NS can generate trace information 
    at the following layers
    –   Agent
    –   Router
    –   MAC layer
    –   Movement (mobile only)
●   Analysis of the trace file can be 
    used to generate graphs and 
    tables of results
            Simple Case Study
               Trace Files
●   Example (source out.tr ) :
                          time dst traffic
●   Event                             size
                             src
    –   + : enqueue   +   1.14 0 2 cbr 500 ------- 1 0.0 4.0 128 157
    –   ­ : dequeue   -
                      r
                          1.14 0 2 cbr 500 ------- 1 0.0 4.0 128 157
                          1.14 2 3 cbr 500 ------- 2 1.0 5.0 14 128
    –   r : receive   +
                      -
                          1.14 3 5 cbr 500 ------- 2 1.0 5.0 14 128
                          1.14 3 5 cbr 500 ------- 2 1.0 5.0 14 128
                      r   1.142 3 4 cbr 500 ------- 1 0.0 4.0 112 125
    –   d : drop      -   1.142 2 3 cbr 500 ------- 2 1.0 5.0 16 132
                      r   1.144 1 2 cbr 500 ------- 2 1.0 5.0 26 152
                      +   1.144 2 3 cbr 500 ------- 2 1.0 5.0 26 152
                      r   1.144 0 2 cbr 500 ------- 1 0.0 4.0 126 153
                      +   1.144 2 3 cbr 500 ------- 1 0.0 4.0 126 153
                      d   1.144 2 3 cbr 500 ------- 1 0.0 4.0 126 153


    (further details : 
    http://www.isi.edu/nsnam/ns/doc/node267.html)
                    Simple Case Study
                      Trace Analysis
     ●   Here we expand the simple case study, 
         and run a further 5 experiments where :
         –   Bandwidth of link between Node 2 and 
             Node 3 is :
             1.0 Mbps , 1.1 Mbps, 1.2 Mbps, 1.3 
              ●

             Mbps, 1.4 Mbps, 1.5 Mbps
     ●   We extract from the trace files the 
         following information :
         –   Packets sent
         –   Packets received
         –   Packets dropped
(s cr ip t s u s ed a r e h er e :
h t t p :/ / www.cs .u cl.ac.u k/ s t aff/ a.gr een h a lgh / t ea ch in g/ )
Simple Case Study
  Trace Analysis
    Extending the case study
●   Possible extensions
    –   Change the traffic type to be TCP
    –   Change the queuing types
    –   Add more nodes
    –   Add more traffic
    –   Implement a new queuing scheme
    –   Implement more routing protocols
    –   Implement a new transport protocol
 Red Queue Monitor example
 ●   In this example we show how you 
     can modify a queue in a Router.
 ●   We monitor the RED, Random Early 
     Drop, queue by Floyd et al.
 ●   We show how you can post process 
     your data in the NS script after 
     you've finished the simulation.



(co d e fr o m h t t p :/ / n ile.wp i.ed u / NS/ , er r o r s fr o m m e)
Red Queue Monitor
              Red Queue Monitor




$ns   d u p lex- lin k   $ n o d e_(s 2 ) $ n o d e_(r 1 ) 1 0 Mb 3 m s Dr o p Tail
$ns   d u p lex- lin k   $ n o d e_(r 1 ) $ n o d e_(r 2 ) 1 .5 Mb 2 0 m s RED
$ns   q u eu e- lim it   $ n o d e_(r 1 ) $ n o d e_(r 2 ) 2 5
$ns   q u eu e- lim it   $ n o d e_(r 2 ) $ n o d e_(r 1 ) 2 5
              Red Queue Monitor
s et t cp 1 [$ n s cr ea t e- co n n ect io n TCP/ Ren o $ n o d e_(s 1 ) /
                                                   TCPSin k $ n o d e_(s 3 ) 0 ]
$ t cp 1 s et win d o w_ 1 5
s et t cp 2 [$ n s cr ea t e- co n n ect io n TCP/ Ren o $ n o d e_(s 2 ) /
                                                   TCPSin k $ n o d e_(s 3 ) 1 ]
$ t cp 2 s et win d o w_ 1 5
s et ft p 1 [$ t cp 1 a t t a ch - s o u r ce FTP]
s et ft p 2 [$ t cp 2 a t t a ch - s o u r ce FTP]

# Tr a cin g a q u eu e
s et r ed q [[$ n s lin k $ n o d e_(r 1 ) $ n o d e_(r 2 )] q u eu e]
s et t ch a n _ [o p en all.q w]
$ r ed q t r a ce cu r q _
$ r ed q t r a ce ave_
$ r ed q at t a ch $ t ch a n _
                  Red Queue Monitor
$ n s at 0 .0 "$ ft p 1 s t a r t "
$ n s at 3 .0 "$ ft p 2 s t a r t "
$ n s at 1 0 "fin is h "

# Defin e 'fin is h ' p r o ced u r e (in clu d e p o s t - s im u la t io n p r o ces s es )
p r o c fin is h {} {
    glo b a l t ch a n _
    s et awk Co d e {
     {
        if ($ 1 = = "Q" && NF> 2 ) {
         p r in t $ 2 , $ 3 > > "t em p .q ";
         s et en d $ 2
        }
...
Red Queue Monitor
            Adding a new Queue
 ●   Objective : Build a drop­tail 
     router queue.
     –   Use a round­robin dequeue 
         scheduling.
     –   Queues serviced in 1:1 ratio if both 
         queues have packets. 
 ●   Aim : To show it is easy to 
     extend ns.


(co d e fr o m h t t p :/ / n ile.wp i.ed u / NS/ , er r o r s fr o m m e)
How do you add a new queue ?
 ●   Create a C++ 
     –   Extend Queue object
     –   Create queueobject.cc / 
         queueobject.h
     –   Implement enque() and deque()
 ●   Add queueobject.o to OBJ_CC value 
     in Makefile.in
     –   e.g. queuedir/queueobject.o
 ●   Modify your scripts to use the 
     new queue. 
             Adding a new Queue
cla s s Dt Rr Qu eu e : p u b lic Qu eu e {
 p u b lic:
         Dt Rr Qu eu e() {
           q 1 _ = n ew Pa cket Qu eu e;
           q 2 _ = n ew Pa cket Qu eu e;
           p q _ = q 1 _;
           d eq _t u r n _ = 1 ;
     }

p r o t ect ed :
         vo id en q u e(Pa cket *);
      Pa ck et * d eq u e();

     Pa ck et Qu eu e *q 1 _; / / Fir s t FIFO q u eu e
     Pa ck et Qu eu e *q 2 _; / / Seco n d FIFO q u eu e
     in t d eq _t u r n _;  / / 1 fo r Fir s t q u eu e 2 fo r Seco n d
};
          Adding a new Queue
vo id Dt Rr Qu eu e::en q u e(Pa cket * p )
{
  h d r _ip * ip h = h d r _ip ::a cces s (p );

 / / if IPv6 p r io r it y = 1 5 en q u eu e t o q u eu e1
 if (ip h - > p r io _ = = 1 5 ) {
   q 1 _- > en q u e(p );
   if ((q 1 _- > len gt h () + q 2 _- > len gt h ()) > q lim _) {
     q 1 _- > r em o ve(p );
     d r o p (p );
   }
 }
 els e {
   q 2 _- > en q u e(p );
   if ((q 1 _- > len gt h () + q 2 _- > len gt h ()) > q lim _) {
     q 2 _- > r em o ve(p );
     d r o p (p );
   }}}
             Adding a new Queue
Pa ck et * Dt Rr Qu eu e::d eq u e()
{
  Pa cket *p ;
    if (d eq _t u r n _ = = 1 ) {
    p = q 1 _- > d eq u e();
    if (p = = 0 ) {
      p = q 2 _- > d eq u e();
      d eq _t u r n _ = 1 ; }
    els e
      d eq _t u r n _ = 2 ;
  } els e {
    p = q 2 _- > d eq u e();
    if (p = = 0 ) {
      p = q 1 _- > d eq u e();
      d eq _t u r n _ = 2 ;
    }
    els e { d eq _t u r n _ = 1 ; }
  }
    r et u r n (p ); }
Questions ?

				
DOCUMENT INFO
Shared By:
Categories:
Stats:
views:8
posted:3/28/2011
language:English
pages:37