0% found this document useful (0 votes)
258 views47 pages

Introduction To Ns-2: Zhibin WU WINLAB, ECE Dept. Rutgers U

1. Parameters such as packet size, interval, number of nodes, and simulation time are defined. 2. The wireless channel type, radio propagation model, and network interface are specified. 3. Nodes are created and configured with the specified wireless parameters. 4. A mobility model is defined to control node movement. 5. Traffic is generated and agents are attached to nodes to simulate communication. 6. The simulation is run and results can be analyzed.

Uploaded by

xbslinks
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
258 views47 pages

Introduction To Ns-2: Zhibin WU WINLAB, ECE Dept. Rutgers U

1. Parameters such as packet size, interval, number of nodes, and simulation time are defined. 2. The wireless channel type, radio propagation model, and network interface are specified. 3. Nodes are created and configured with the specified wireless parameters. 4. A mobility model is defined to control node movement. 5. Traffic is generated and agents are attached to nodes to simulate communication. 6. The simulation is run and results can be analyzed.

Uploaded by

xbslinks
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 47

Introduction to Ns-2

Zhibin WU
WINLAB, ECE Dept. Rutgers U.
[email protected]

1
Goals
 Understanding NS-2
 Hands-on Experience with NS2
 Ns-2 by Example
 Write your own scripts
 Extending NS2
 Implementing new functionality

2
Schedule
 Presentation (60 min)
 Group Assignments (10 min)
 Practices (1 Hr)
 Q & A session (~15 min)

3
Talk Overview
 What is ns-2? (the evolution)
 Architecture
 Basic Tcl/Otcl commands
 Elements of an ns-2 simulation
 Example
 Online Resources & Documentation

4
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)
 Ns-3 Project (Ongoing)

5
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 with Cygwin
 (Emulation only for FreeBSD for now)

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

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

8
OTcl and C++: The Duality

Pure C++ Pure OTcl


objects objects

C++/OTcl split objects


C++ OTcl

ns
9
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%

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

11
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
12
Basic OTcl
Class Mom set mom [new Mom]
Mom instproc greet {} { $mom set age_ 45
$self instvar age_ set kid [new Kid]
puts “$age_ years old $kid set age_ 15
mom: How are you doing?”
}
$mom greet
Class Kid -superclass Mom $kid greet
Kid instproc greet {} {
$self instvar age_
puts “$age_ years old
kid: What’s up, dude?”
}

13
SIMULATE WIRED NETWORK

14
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

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

16
Tracing
 Trace packets on all links
 $ns trace-all [open test.out w]
<event> <time> <from> <to> <pkt> <size> -- <fid> <src> <dst> <seq> <attr>
+ 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
17
Tracing
 Turn on tracing on specific links
 $ns trace-queue $n0 $n1
 $ns namtrace-queue $n0 $n1

18
Creating Network
 Nodes
 set n0 [$ns node]
 set n1 [$ns node]
 Links and queuing
 $ns duplex-link $n0 $n1 <bandwidth>
<delay> <queue_type>
 <queue_type>: DropTail, RED, CBQ, FQ,
SFQ, DRR

19
Creating Network: LAN
 LAN
 $ns make-lan <node_list> <bandwidth>
<delay> <ll_type> <ifq_type>
<mac_type> <channel_type>
 <ll_type>: LL
 <ifq_type>: Queue/DropTail,
 <mac_type>: MAC/802_3
 <channel_type>: Channel

20
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
21
Network Dynamics
 Link failures
 Hooks in routing module to reflect routing
changes
 Four models
$ns rtmodel-at <time> up|down $n0 $n1
$ns rtmodel Trace <config_file> $n0 $n1
$ns rtmodel Exponential {<params>} $n0 $n1
$ns rtmodel Deterministic {<params>} $n0 $n1
 Parameter list
[<start>] <up_interval> <down_interval> [<finish>]

22
Setup Routing
 Unicast
 $ns rtproto <type>
 <type>: Static, Session, DV, cost, multi-path
 Multicast
 $ns multicast (right after [new Simulator])
 or set ns [new Simulator –multicast on]
 $ns mrtproto <type>
 <type>: CtrMcast, DM, ST, BST (centralized,dense
mode, shared tree

23
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

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

25
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

26
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

27
Creating Traffic: Trace Driven
 Trace driven
 set tfile [new Tracefile]
 $tfile filename <file>
 set src [new Application/Traffic/Trace]
 $src attach-tracefile $tfile
 <file>:
 Binary format (native!)
 inter-packet time (msec) and packet size (byte)

28
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

29
Script Structure for Wired Scenario
# parameters and options
set ns [new Simulator]
# [Turn on tracing]
# Create topology
# Setup packet loss, link dynamics
# Create routing agents
# Create:
# - protocol agents
# - application and/or setup traffic sources
# Post-processing procs
# Start simulation

30
SIMULATE WIRELESS NETWORK

31
Script Structure: Wireless
# parameters and options
set ns [new Simulator]
# [Turn on tracing]
# create MobileNode object (PHY to layer 3
configured)
# Create topology
# create mobility
# Create Layer 4 and above
# - UDP/TCP agents
# - application and/or setup traffic sources
# Post-processing procedures
# Start simulation

32
Example: Wireless Scenario
 4x4 grid

11
240m
13 14
8 11
4 7

2 3

33
Example: Step 1
 Define Parameters
set cbr_size 500
set cbr_interval 0.002
set num_row 4
set time_duration 100

34
Example: Step 2
 Protocol Options
set val(chan) Channel/WirelessChannel ;# channel
type
set val(prop) Propagation/TwoRayGround ;# radio-
propagation model
set val(netif) Phy/WirelessPhy ;# network interface
type
set val(mac) Mac/802_11 ;# MAC type
set val(ifq) Queue/DropTail/PriQueue ;# interface
queue type
set val(ll) LL ;# link layer type
set val(ant) Antenna/OmniAntenna ;# antenna model
set val(ifqlen) 50 ;# max packet in ifq
set val(rp) DSDV ;# routing protocol

35
Example: Step 3
 Scheduler, Trace, Topo, God
#
# Initialize ns
#
set ns_ [new Simulator]
set tracefd [open simple.tr w]
$ns_ trace-all $tracefd

# set up topography object


set topo [new Topography]
$topo load_flatgrid 1000 1000

create-god [expr $num_row * $num_row ]

36
Example: Step 4
 Create Node Object with protocols
$ns_ node-config -adhocRouting $val(rp) -llType $val(ll) \
-macType $val(mac) -ifqType $val(ifq) \
-ifqLen $val(ifqlen) -antType $val(ant) \
-propType $val(prop) -phyType $val(netif) \
-channel $chan1 -topoInstance $topo \
-agentTrace ON -routerTrace OFF\
-macTrace ON \
-movementTrace OFF

for {set i 0} {$i < [expr $num_row*$num_row]} {incr i} {


set node_($i) [$ns_ node]
}

37
Example: Step 5
 Create Topology
set k 0;
while {$k < $num_row } {
for {set i 0} {$i < $num_row } {incr i} {
set m [expr $i+$k*$num_row];
$node_($m) set X_ [expr $i*240];
$node_($m) set Y_ [expr $k*240+20.0];
$node_($m) set Z_ 0.0
}
incr k;
};

38
Example: Step 6
 Create Mobility

#Move node 11 from its original place to top-right corner


$ns_ at 60.0 "$node_(11) setdest 990.0 990.0 15.0”
Example: Step 7
 Set up transport layer (UDP)
for {set i 0} {$i < $num_row } {incr i} {
set udp_($i) [new Agent/UDP]
set null_($i) [new Agent/Null]
}
$ns_ attach-agent $node_(8) $udp_(0)
$ns_ attach-agent $node_(4) $udp_(1)
$ns_ attach-agent $node_(13) $udp_(2)
$ns_ attach-agent $node_(14) $udp_(3)
$ns_ attach-agent $node_(11) $null_(0)
$ns_ attach-agent $node_(7) $null_(1)
$ns_ attach-agent $node_(2) $null_(2)
$ns_ attach-agent $node_(3) $null_(3)
for {set i 0} {$i < $num_row } {incr i} {
$ns_ connect $udp_($i) $null_($i)
}

40
Example: Step 8
 Define Traffic Scenario
for {set i 0} {$i < $num_row } {incr i} {
set cbr_($i) [new Application/Traffic/CBR]
$cbr_($i) set packetSize_ $cbr_size
$cbr_($i) set interval_ 0.5
$cbr_($i) attach-agent $udp_($i)
}
$ns_ at 11.0234 "$cbr_(0) start"
$ns_ at 10.4578 "$cbr_(1) start"
$ns_ at 12.7184 "$cbr_(2) start"
$ns_ at 12.2456 "$cbr_(3) start"

41
Example: Step 9
 End-of-simulation wrapper (as usual)
# Tell nodes when the simulation ends
#
for {set i 0} {$i < [expr $num_row*$num_row] } {incr i} {
$ns_ at [expr $time_duration +10.0] "$node_($i) reset";
}
$ns_ at [expr $time_duration +10.0] "finish"
$ns_ at [expr $time_duration +10.01] "puts \"NS Exiting...\"; $ns_ halt"

proc finish {} {
global ns_ tracefd
$ns_ flush-trace
close $tracefd
}

puts "Starting Simulation..."


$ns_ run

42
Auxiliary Tools
 setdest
 used to generate the positions of nodes
and their moving speed and moving
directions.
setdest -v 1 -n 50 -p 0 -M 20 -t 900 -x 1500 -y
300
 cbrgen.tcl
ns cbrgen.tcl [-type cbr|tcp] [-nn nodes] [-seed
seed] [-mc connections] [-rate rate]
 Use “source <filename>.tcl” to add the
generated file to scipts

43
Resources
 http://www.isi.edu/nsnam/ns
 http://www.winlab.rutgers.edu/~zhibinwu
 Tutorials:
 Marc Greis’s Tutorial (
http://www.isi.edu/nsnam/ns/tutorial/index.html)
 Ns by example (http://nile.wpi.edu/NS/)
 Wireless Tutorial (
http://www.isi.edu/nsnam/ns/ns-tutorial/wireless.ppt )

44
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

45
Advanced Topics
 Trace analysis
 Architecture of Mobilenode Object
 Extending NS-2 with new protocols and
algorithms
 More complex changes:
 Hybrid Node
 A node with multiple interfaces

46
Group Assignments
 Download simple.tcl
 http://www.winlab.rutgers.edu/~zhibinwu/simple.tcl
 Modifications
 Node-Configure changes

 Random topology generation 40-node within

1000x1000 area
 Random Node Mobility

 Changeprotocol from UDP to TCP

 Dynamic Traffic change

47

You might also like