[ns] How to generate a constant sent packet number for a same
simulation time ???
Valerie Alandzi
val_larim at yahoo.ca
Thu Apr 28 12:43:03 PDT 2005
Hi all,
How comes I never get the same sent packet number when
I run a same simulation script many times (same
trafic connection and scenario files, same simulation
time) with for example AODV ???? As the cbr rate is
defined, only the simulation time should influence the
number of sent packets. So what's happening here ?
My trafic connection file looks like this (I have
tried to set random to 0 but it didn't change
anything):
#
# 1 connecting to 44 at time 2.5568388786897245
#
set udp_(0) [new Agent/UDP]
$ns_ attach-agent $node_(1) $udp_(0)
set null_(0) [new Agent/Null]
$ns_ attach-agent $node_(44) $null_(0)
set cbr_(0) [new Application/Traffic/CBR]
$cbr_(0) set packetSize_ 64
$cbr_(0) set interval_ 0.25
$cbr_(0) set random_ 0
$cbr_(0) set maxpkts_ 10000
$cbr_(0) attach-agent $udp_(0)
$ns_ connect $udp_(0) $null_(0)
$ns_ at 2.5568388786897245 "$cbr_(0) start"
Here is my tcl script:
#
======================================================================
# Default Script Options
#
======================================================================
set opt(chan) Channel/WirelessChannel
set opt(prop) Propagation/TwoRayGround
#set opt(netif) NetIf/SharedMedia
set opt(netif) Phy/WirelessPhy
#set opt(mac) Mac/802_11
set opt(mac) Mac/802_11
set opt(ifq) Queue/DropTail/PriQueue
set opt(ll) LL
set opt(ant) Antenna/OmniAntenna
set opt(x) 670 ;# X dimension of the topography
set opt(y) 670 ;# on of the topography
set opt(cp) "../..//indep-utils/cmu-scen-gen/cbr6"
set opt(sc)
"../..//indep-utils/cmu-scen-gen/scen-nomov"
set opt(ifqlen) 50 ;# max packet in ifq
set opt(nn) 3 ;# number of nodes
set opt(seed) 0.0
set opt(stop) 2000.0 ;# simulation time
set opt(tr) out-test.tr ;# trace file
set opt(rp) dsr ;# routing
protocol script
set opt(lm) "off" ;# log
movement
Agent/GPSR set verbose_ 1
Agent/GPSR set use_peri_ 1
Agent/GPSR set use_planar_ 1
Agent/GPSR set bint_ 1.0
#
======================================================================
set AgentTrace ON
set RouterTrace ON
set MacTrace OFF
LL set mindelay_ 50us
LL set delay_ 25us
LL set bandwidth_ 0 ;# not used
Agent/Null set sport_ 0
Agent/Null set dport_ 0
Agent/CBR set sport_ 0
Agent/CBR set dport_ 0
Agent/TCPSink set sport_ 0
Agent/TCPSink set dport_ 0
Agent/TCP set sport_ 0
Agent/TCP set dport_ 0
Agent/TCP set packetSize_ 1460
Queue/DropTail/PriQueue set Prefer_Routing_Protocols
1
# unity gain, omni-directional antennas
# set up the antennas to be centered in the node and
1.5 meters above it
Antenna/OmniAntenna set X_ 0
Antenna/OmniAntenna set Y_ 0
Antenna/OmniAntenna set Z_ 1.5
Antenna/OmniAntenna set Gt_ 1.0
Antenna/OmniAntenna set Gr_ 1.0
# Initialize the SharedMedia interface with parameters
to make
# it work like the 914MHz Lucent WaveLAN DSSS radio
interface
Phy/WirelessPhy set CPThresh_ 10.0
Phy/WirelessPhy set CSThresh_ 1.559e-11
Phy/WirelessPhy set RXThresh_ 3.652e-10
Phy/WirelessPhy set Rb_ 2*1e6
Phy/WirelessPhy set Pt_ 0.2818
Phy/WirelessPhy set freq_ 914e+6
Phy/WirelessPhy set L_ 1.0
#
======================================================================
proc usage { argv0 } {
# puts "Usage: $argv0"
#puts "\tmandatory arguments:"
# puts "\t\t\[-x MAXX\] \[-y MAXY\]"
# puts "\toptional arguments:"
# puts "\t\t\[-cp conn pattern\] \[-sc scenario\]
\[-nn nodes\]"
# puts "\t\t\[-seed seed\] \[-stop sec\] \[-tr
tracefile\]\n"
}
proc getopt {argc argv} {
global opt
lappend optlist rp cp nn seed sc stop tr x y discv
for {set i 0} {$i < $argc} {incr i} {
set arg [lindex $argv $i]
if {[string range $arg 0 0] != "-"} continue
set name [string range $arg 1 end]
set opt($name) [lindex $argv [expr $i+1]]
}
}
proc cmu-trace { ttype atype node } {
global ns_ tracefd
if { $tracefd == "" } {
return ""
}
set T [new CMUTrace/$ttype $atype]
$T target [$ns_ set nullAgent_]
$T attach $tracefd
$T set src_ [$node id]
$T node $node
return $T
}
proc create-god { nodes } {
global ns_ god_ tracefd
set god_ [new God]
$god_ num_nodes $nodes
}
proc log-movement {} {
global logtimer ns_ ns
set ns $ns_
source ../mobility/timer.tcl
Class LogTimer -superclass Timer
LogTimer instproc timeout {} {
global opt node_;
for {set i 0} {$i < $opt(nn)} {incr i} {
$node_($i) log-movement
}
$self sched 0.1
}
set logtimer [new LogTimer]
$logtimer sched 0.1
}
proc stop {} {
# global ns_ f nf
global ns_ tracefd
$ns_ flush-trace
# close $f
# close $nf
close $tracefd
}
#
======================================================================
# Main Program
#
======================================================================
getopt $argc $argv
#source ../../tcl/lib/ns-cmutrace.tcl\
source
/home/val/ns-allinone-2.27/ns-2.27/tcl/lib/ns-cmutrace.tcl
# do the get opt again incase the routing protocol
file added some more
# options to look for
getopt $argc $argv
if { $opt(x) == 0 || $opt(y) == 0 } {
usage $argv0
exit 1
}
#if {$opt(seed) > 0} {
# puts "Seeding Random number generator with
$opt(seed)\n"
# ns-random $opt(seed)
#}
#
# Initialize Global Variables
#
set ns_ [new Simulator]
set chan [new $opt(chan)]
set prop [new $opt(prop)]
set topo [new Topography]
#set tracefd [open $opt(tr) w]
# on ne trace que les envois de paquets de controle,
pas les receptions
set tracefd [open "|grep -v ^r.*$opt(rp) >$opt(tr)" w]
#set nf [open nam-out-test.nam w]
#set f [open trace-out-test.tr w]
#$ns_ namtrace-all-wireless $nf $opt(x) $opt(y)
$ns_ use-newtrace
$ns_ trace-all $tracefd
$topo load_flatgrid $opt(x) $opt(y)
$prop topography $topo
#
# Create God
#
create-god $opt(nn)
#
# log the mobile nodes movements if desired
#
if { $opt(lm) == "on" } {
log-movement
}
# configure node
$ns_ node-config -adhocRouting $opt(rp) \
-llType $opt(ll) \
-macType $opt(mac) \
-ifqType $opt(ifq) \
-ifqLen $opt(ifqlen) \
-antType $opt(ant) \
-propType $opt(prop) \
-phyType $opt(netif) \
-channelType $opt(chan) \
-topoInstance $topo \
-agentTrace ON \
-routerTrace ON \
-macTrace OFF \
-movementTrace OFF
#
# Create the specified number of nodes $opt(nn) and
"attach" them
# the channel.
# Each routing protocol script is expected to have
defined a proc
# create-mobile-node that builds a mobile node and
inserts it into the
# array global $node_($i)
#
for {set i 0} {$i < $opt(nn) } {incr i} {
set node_($i) [$ns_ node]
$node_($i) random-motion 0 ;# disable random motion
# Access the corresponding Para routing agent
set ragent_($i) [$node_($i) agent 255]
}
#
# Source the Connection and Movement scripts
#
if { $opt(cp) == "" } {
puts "*** NOTE: no connection pattern specified."
set opt(cp) "none"
} else {
puts "Loading connection pattern $opt(cp)..."
source $opt(cp)
}
#
# Tell all the nodes when the simulation ends
#
for {set i } {$i < $opt(nn) } {incr i} {
$ns_ at $opt(stop).000000001 "$node_($i) reset";
}
$ns_ at $opt(stop).1 "puts \"NS EXITING...\" ; $ns_
halt"
$ns_ at $opt(stop) "stop"
if { $opt(sc) == "" } {
puts "*** NOTE: no scenario file specified."
set opt(sc) "none"
} else {
puts "Loading scenario file..."
source $opt(sc)
puts "Load complete..."
}
puts $tracefd "M 0.0 nn $opt(nn) x $opt(x) y $opt(y)
rp $opt(rp)"
puts $tracefd "M 0.0 sc $opt(sc) cp $opt(cp) seed
$opt(seed)"
puts $tracefd "M 0.0 prop $opt(prop) ant $opt(ant)"
puts "Starting Simulation..."
$ns_ run
Your help is really appreciated !!!!
Regards,
--
Valerie Alandzi,
Master student,
Mobile Computing and Networking Research Laboratory,
Ecole Polytechnique de Montréal
______________________________________________________________________
Post your free ad now! http://personals.yahoo.ca
More information about the Ns-users
mailing list