[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