⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test-suite-wpan.tcl

📁 ns-2的文件包。多多下载
💻 TCL
字号:
#! /bin/sh## Copyright (c) 2003-2004 Samsung Advanced Institute of Technology and# The City University of New York. All rights reserved.## Redistribution and use in source and binary forms, with or without# modification, are permitted provided that the following conditions# are met:# 1. Redistributions of source code must retain the above copyright#    notice, this list of conditions and the following disclaimer.# 2. Redistributions in binary form must reproduce the above copyright#    notice, this list of conditions and the following disclaimer in the#    documentation and/or other materials provided with the distribution.# 3. All advertising materials mentioning features or use of this software#    must display the following acknowledgement:#      This product includes software developed by the Joint Lab of Samsung #      Advanced Institute of Technology and The City University of New York.# 4. Neither the name of Samsung Advanced Institute of Technology nor of #    The City University of New York may be used to endorse or promote #    products derived from this software without specific prior written #    permission.## THIS SOFTWARE IS PROVIDED BY THE JOINT LAB OF SAMSUNG ADVANCED INSTITUTE# OF TECHNOLOGY AND THE CITY UNIVERSITY OF NEW YORK ``AS IS'' AND ANY EXPRESS # OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL SAMSUNG ADVANCED INSTITUTE OR THE CITY UNIVERSITY OF NEW YORK # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.Class TestSuiteClass Test/wpan -superclass TestSuiteproc usage {} {	global argv0	puts stderr "usage: ns $argv0 <test> "	exit 1}proc default_values {} {	global val	set val(chan)           Channel/WirelessChannel    ;# channel type	set val(prop)           Propagation/TwoRayGround   ;# radio-propagation model	set val(netif)          Phy/WirelessPhy/802_15_4	set val(mac)            Mac/802_15_4	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(nn)             21                         ;# number of mobilenodes	set val(rp)             AODV                       ;# routing	set val(x)              50	set val(y)              50	set val(tr)             temp.rands                 ;# trace file	set val(traffic)        mix                        ;# traffic (mix/cbr/poisson/ftp)	# For propagation model 'TwoRayGround'	set dist(5m)  7.69113e-06	set dist(9m)  2.37381e-06	set dist(10m) 1.92278e-06	set dist(11m) 1.58908e-06	set dist(12m) 1.33527e-06	set dist(13m) 1.13774e-06	set dist(14m) 9.81011e-07	set dist(15m) 8.54570e-07	set dist(16m) 7.51087e-07	set dist(20m) 4.80696e-07	set dist(25m) 3.07645e-07	set dist(30m) 2.13643e-07	set dist(35m) 1.56962e-07	set dist(40m) 1.20174e-07	Phy/WirelessPhy set CSThresh_ $dist(12m)	Phy/WirelessPhy set RXThresh_ $dist(12m)}TestSuite instproc topology {} {	global node_	$node_(0) set X_ 20.0 	$node_(0) set Y_ 25.0 	$node_(0) set Z_ 0.0 	$node_(1) set X_ 10.0 	$node_(1) set Y_ 25.0	$node_(1) set Z_ 0.0 	$node_(2) set X_ 10.0 	$node_(2) set Y_ 15.0 	$node_(2) set Z_ 0.0 	$node_(3) set X_ 10.0 	$node_(3) set Y_ 5.0 	$node_(3) set Z_ 0.0 	$node_(4) set X_ 0.0 	$node_(4) set Y_ 15.0 	$node_(4) set Z_ 0.0 	$node_(5) set X_ 0.0 	$node_(5) set Y_ 25.0 	$node_(5) set Z_ 0.0 	$node_(6) set X_ 0.0 	$node_(6) set Y_ 35.0 	$node_(6) set Z_ 0.0 	$node_(7) set X_ 10.0 	$node_(7) set Y_ 35.0 	$node_(7) set Z_ 0.0 	$node_(8) set X_ 10.0 	$node_(8) set Y_ 45.0 	$node_(8) set Z_ 0.0 	$node_(9) set X_ 20.0	$node_(9) set Y_ 35.0 	$node_(9) set Z_ 0.0 	$node_(10) set X_ 20.0 	$node_(10) set Y_ 45.0 	$node_(10) set Z_ 0.0 	$node_(11) set X_ 30.0 	$node_(11) set Y_ 35.0 	$node_(11) set Z_ 0.0 	$node_(12) set X_ 30.0 	$node_(12) set Y_ 45.0 	$node_(12) set Z_ 0.0 	$node_(13) set X_ 30.0 	$node_(13) set Y_ 25.0 	$node_(13) set Z_ 0.0 	$node_(14) set X_ 40.0 	$node_(14) set Y_ 25.0 	$node_(14) set Z_ 0.0 	$node_(15) set X_ 40.0 	$node_(15) set Y_ 35.0 	$node_(15) set Z_ 0.0 	$node_(16) set X_ 30.0 	$node_(16) set Y_ 15.0 	$node_(16) set Z_ 0.0 	$node_(17) set X_ 40.0 	$node_(17) set Y_ 15.0 	$node_(17) set Z_ 0.0 	$node_(18) set X_ 30.0 	$node_(18) set Y_ 5.0 	$node_(18) set Z_ 0.0 	$node_(19) set X_ 20.0 	$node_(19) set Y_ 15.0 	$node_(19) set Z_ 0.0 	$node_(20) set X_ 20.0 	$node_(20) set Y_ 5.0 	$node_(20) set Z_ 0.0}TestSuite instproc cbrtraffic { src dst interval starttime } {	global node_	$self instvar ns_	set udp_($src) [new Agent/UDP]	eval $ns_ attach-agent \$node_($src) \$udp_($src)	set null_($dst) [new Agent/Null]	eval $ns_ attach-agent \$node_($dst) \$null_($dst)	set cbr_($src) [new Application/Traffic/CBR]	eval \$cbr_($src) set packetSize_ 80	eval \$cbr_($src) set interval_ $interval	eval \$cbr_($src) set random_ 0	#eval \$cbr_($src) set maxpkts_ 10000	eval \$cbr_($src) attach-agent \$udp_($src)	eval $ns_ connect \$udp_($src) \$null_($dst)	$ns_ at $starttime "$cbr_($src) start"}TestSuite instproc poissontraffic { src dst interval starttime } {	global node_	$self instvar ns_	set udp($src) [new Agent/UDP]	eval $ns_ attach-agent \$node_($src) \$udp($src)	set null($dst) [new Agent/Null]	eval $ns_ attach-agent \$node_($dst) \$null($dst)	set expl($src) [new Application/Traffic/Exponential]	eval \$expl($src) set packetSize_ 70	eval \$expl($src) set burst_time_ 0	eval \$expl($src) set idle_time_ [expr $interval*1000.0-70.0/100]ms	;# idle_time + pkt_tx_time = interval	eval \$expl($src) set rate_ 100k	eval \$expl($src) attach-agent \$udp($src)	eval $ns_ connect \$udp($src) \$null($dst)	$ns_ at $starttime "$expl($src) start"}TestSuite instproc ftptraffic { src dst starttime } {	global node_	$self instvar ns_	set tcp($src) [new Agent/TCP]	eval \$tcp($src) set packetSize_ 60	set sink($dst) [new Agent/TCPSink]	eval $ns_ attach-agent \$node_($src) \$tcp($src)	eval $ns_ attach-agent \$node_($dst) \$sink($dst)	eval $ns_ connect \$tcp($src) \$sink($dst)	set ftp($src) [new Application/FTP]	eval \$ftp($src) attach-agent \$tcp($src)	$ns_ at $starttime "$ftp($src) start"}TestSuite instproc init {} {	global val tracefd topo	$self instvar ns_	set ns_		[new Simulator]	set tracefd     [open ./$val(tr) w]	$ns_ trace-all $tracefd	set topo       [new Topography]	$topo load_flatgrid $val(x) $val(y)}TestSuite instproc finish {} {	$self instvar ns_	global tracefd	$ns_ flush-trace	close $tracefd	exit 0}Test/wpan instproc init {} {	global val node_ god_ chan topo	$self instvar ns_ testName_	set testName_ wpan	$self next	set god_ [create-god $val(nn)]	set chan [new $val(chan)]	# configure node	$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) \			-topoInstance $topo \			-agentTrace OFF \			-routerTrace OFF \			-macTrace ON \			-movementTrace OFF \	                #-energyModel "EnergyModel" \	                #-initialEnergy 1 \	                #-rxPower 0.3 \	                #-txPower 0.3 \			-channel $chan	for {set i 0} {$i < $val(nn) } {incr i} {		set node_($i) [$ns_ node]		$node_($i) random-motion 0	}	$self topology	# === actual test begins here =======================	set appTime1         	10.3	set appTime2         	10.6	set stopTime            100	# start PAN coordinator (beacon enabled):	#  -- active channel scan and channel selection	#  -- PAN coordinator startup	#  -- beacon transmission	$ns_ at 0.0	"$node_(0) sscs startPANCoord 1"	;# startPANCoord <txBeacon=1> <BO=3> <SO=3>		# start non-beacon enabled coordinator:	#  -- active channel scan	#  -- channel selection and coordinator selection	#  -- association	#  -- beacon tracking and synchronization	$ns_ at 0.3	"$node_(1) sscs startDevice 1 1" 	;# startDevice <isFFD=1> <assoPermit=1> <txBeacon=0> <BO=3> <SO=3>	$ns_ at 1.3	"$node_(9) sscs startDevice 1 1"	$ns_ at 1.7	"$node_(13) sscs startDevice 1 1"	$ns_ at 2.3	"$node_(19) sscs startDevice 1 1"		# start beacon enabled coordinator:	#  -- active channel scan	#  -- channel selection and coordinator selection	#  -- association	#  -- beacon tracking and synchronization	#  -- beacon transmission	$ns_ at 3.3	"$node_(2) sscs startDevice 1 1 1"	$ns_ at 3.5	"$node_(7) sscs startDevice 1 1 1"	$ns_ at 3.6	"$node_(11) sscs startDevice 1 1 1"	$ns_ at 3.8	"$node_(16) sscs startDevice 1 1 1"		# start RFD (leaf node)	$ns_ at 4.3	"$node_(3) sscs startDevice 0 0"		# start non-beacon enabled coordinator	$ns_ at 4.5	"$node_(6) sscs startDevice 1 1"		# start FFD not supporting association	$ns_ at 4.8	"$node_(12) sscs startDevice 1 0"	$ns_ at 5.1	"$node_(17) sscs startDevice 1 0"		# start non-beacon enabled coordinator	$ns_ at 5.6	"$node_(20) sscs startDevice 1 1"	$ns_ at 5.8	"$node_(5) sscs startDevice 1 1"	$ns_ at 6.0	"$node_(10) sscs startDevice 1 1"	$ns_ at 6.3	"$node_(14) sscs startDevice 1 1"		# start FFD not supporting association	$ns_ at 6.8	"$node_(18) sscs startDevice 1 0"		# start RFD (leaf node)	$ns_ at 7.0	"$node_(4) sscs startDevice 0 0"	$ns_ at 7.3	"$node_(8) sscs startDevice 0 0"	$ns_ at 7.7	"$node_(15) sscs startDevice 0 0"		# stop beacon transmission (become non-beacon enabled coordinator)	$ns_ at $appTime1 "$node_(0) sscs stopBeacon"	$ns_ at $appTime1 "$node_(16) sscs stopBeacon"		# change beacon order and superframe order	$ns_ at $appTime1 "$node_(2) sscs startBeacon 4 4"	$ns_ at $appTime1 "$node_(7) sscs startBeacon 4 4"		# setup cbr/poisson/mix traffic flows between nodes:	#  -- LQD	#  -- CCA, CSMA/CA and slotted CSMA/CA	#  -- filtering	if { ("$val(traffic)" == "mix") || ("$val(traffic)" == "cbr") || ("$val(traffic)" == "poisson") } {	   if { "$val(traffic)" == "mix" } {	   	set trafficName "cbr + poisson"	   	set traffic1 cbr	   	set traffic2 poisson	   } else {	   	set trafficName $val(traffic)	   	set traffic1 $val(traffic)	   	set traffic2 $val(traffic)	   }	   $self ${traffic1}traffic 3 18 0.2 $appTime1	   $self ${traffic2}traffic 9 17 0.2 $appTime2	}		# setup ftp traffic flows between nodes:	#  -- LQD	#  -- CCA, CSMA/CA and slotted CSMA/CA	#  -- filtering	if { "$val(traffic)" == "ftp" } {	   $self ftptraffic 3 18 $appTime1	   $self ftptraffic 9 17 $appTime2	}		# failure handling	#  -- orphaning	#  -- coordinator realignment	#  -- reassociation	$ns_ at [expr $appTime1 + 2.0] "Mac/802_15_4 wpanCmd link-down 0 19"	$ns_ at [expr $appTime2 + 3.0] "$node_(2) node-down"	$ns_ at [expr $appTime1 + 8.0] "Mac/802_15_4 wpanCmd link-up 0 19"	$ns_ at [expr $appTime2 + 10.0] "$node_(2) node-up"	# begin to use indrect data transmission	$ns_ at [expr $appTime1 + 60.0] "Mac/802_15_4 wpanCmd txOption 4"	;# 0x02=GTS; 0x04=Indirect; 0x00=Direct (only for 802.15.4-unaware upper layer app. packet)	# tell nodes when the simulation ends	for {set i 0} {$i < $val(nn) } {incr i} {	    $ns_ at $stopTime "$node_($i) reset";	}	$ns_ at $stopTime.1 "$self finish"}Test/wpan instproc run {} {	$self instvar ns_	$ns_ run}proc runtest {arg} {	global quiet	set quiet 0	set b [llength $arg]	if {$b == 1} {		set test $arg	} elseif {$b == 2} {		set test [lindex $arg 0]		if {[lindex $arg 1] == "QUIET"} {			set quiet 1		}	} else {		usage	}	set t [new Test/$test]		$t run}global argv arg0default_valuesruntest $argv

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -